Talaan ng mga Nilalaman:

Raspberry Pi Smart Scale: 10 Hakbang (na may Mga Larawan)
Raspberry Pi Smart Scale: 10 Hakbang (na may Mga Larawan)

Video: Raspberry Pi Smart Scale: 10 Hakbang (na may Mga Larawan)

Video: Raspberry Pi Smart Scale: 10 Hakbang (na may Mga Larawan)
Video: 10 Warning Signs of Cancer You Should Not Ignore 2024, Hulyo
Anonim
Image
Image

Sawa ka na ba sa pagtitig sa nakakasawa, luma, masamang sukat ng banyo ng balita tuwing umaga? Ang madalas mong sabihin na "I hate you" sa iyo na sa tuwing aapakan mo ito. Bakit hindi pa gumawa ang sinuman ng isang sukatan na talagang nakakatuwa o nag-uudyok na gamitin? Panahon na upang lumikha ng isang sukat na hindi lamang matalino ngunit may kaunting pagkatao upang lumiwanag ang iyong araw. Kami ay magtatayo ng aming sariling hackable, pagsubaybay sa timbang, sukat sa banyo ng pagmemensahe ng teksto na may kasamang built-in na katatawanan.

Ito ay isang masaya, madaling proyekto na pagsasama-sama ng isang Wii board ng balanse, isang Raspberry Pi, at isang online na platform ng analytics ng data upang lumikha ng isang sukat na konektado sa web na kinokontrol ng isang script ng Python na maaari mong i-hack.

Antas ng proyekto: NagsisimulaMalapit na oras upang makumpleto: 20 minutoFun factor: Hindi masusukat

Sa sunud-sunod na tutorial na ito, gagawin mo:

  • kumonekta sa isang board ng balanse ng Wii sa isang Raspberry Pi sa pamamagitan ng bluetooth patakbuhin ang isang script ng Python na sumusukat sa iyong timbang kapag umakyat ka sa balanse board
  • gumamit ng isang Raspberry Pi upang mai-stream ang iyong timbang sa isang cloud service (Initial State)
  • pag-set up ng isang notification sa SMS sa tuwing timbangin mo ang iyong sarili
  • bumuo ng isang dashboard ng pagsubaybay sa timbang na maaari mong ma-access sa iyong web browser

Hakbang 1: Kagamitan

Wii Scale ng Board ng Balanse
Wii Scale ng Board ng Balanse

Narito ang isang listahan ng lahat ng kagamitan na gagamitin namin sa tutorial na ito na may mga link sa kung saan maaari kang bumili ng bawat item.

  • Raspberry Pi 3 na may isang SD card at Power Supply (https://init.st/psuufmj)
  • Wii Balance Board (https://init.st/qg4ynjl)
  • Wii Fit Rechargeable Battery Pack (https://init.st/iyypz2i)
  • 3/8 "Felt Pads (https://init.st/8gywmjj)
  • Pencil (Hindi kita bibigyan ng isang link sa kung saan bibili ng isang lapis … dapat mong pagmamay-ari ang isa sa mga ito)

Tandaan: Kung mayroon kang isang Raspberry Pi 1 o 2, kakailanganin mo ang isang Bluetooth adapter (https://init.st/7y3bcoe)

Hakbang 2: Wii Scale ng Board ng Balanse

Bakit isang Wii Balance Board? Ito ay lumiliko na ito ay isang talagang maganda, matibay na sukat na may pagkakakonekta ng bluetooth. Papayagan kami nitong ikonekta ito sa isang solong board computer (Raspberry Pi) upang basahin ang iyong timbang sa isang script ng Python at ipadala ang mga sukat sa isang serbisyo sa online na data upang gumawa ng mga cool na bagay. Dagdag pa, may isang magandang pagkakataon na ikaw o ang isang kakilala mo ay mayroon ng isa na simpleng pagkolekta ng alikabok.

Kakailanganin naming gumawa ng isang pares ng mga simpleng pagbabago sa aming Wii Balance Board upang talagang gawing praktikal at maginhawa ang proyektong ito.

Hakbang 3: Pag-setup ng Bluetooth

Ang Raspberry Pi 3 ay may built in na bluetooth, lahat ng kailangan namin upang makipag-usap sa Wii Balance Board. Kung mayroon kang isang Raspberry Pi 1 o 2, kakailanganin naming gumamit ng isa sa aming mga USB port upang mag-plug sa isang adapter.

Lakas sa iyong Pi (Ipinapalagay kong na-install mo na ang Raspbian at naka-boot ito) at pumunta sa iyong window ng Raspberry Pi terminal. Maaari mong makita ang address ng iyong Bluetooth dongle gamit ang "hcitool dev" na utos:

$ hcitool devDevices: hci0 00: 1A: 7D: DA: 71: 13

I-install ang mga Bluetooth module na gagamitin namin sa aming mga script sa Python:

$ sudo apt-get install python-bluetooth

Matapos makumpleto ang pag-install, handa na kaming kumonekta at makipag-usap sa Wii Balance Board. Hindi namin permanenteng ipares ang aming Lupon sa aming Pi tulad ng ginagawa namin sa karamihan ng aming mga aparatong Bluetooth. Ang Wii Balance Board ay hindi inilaan na ipares sa anumang iba pa kaysa sa isang Wii, at ang permanenteng pagpapares ay napatunayan na nakalilito na hamon. Mangyayari ang pagpapares sa tuwing pinapatakbo namin ang aming script sa Python.

Hakbang 4: Pagbasa ng Iskala

Panahon na upang ikonekta ang aming Wii Balance Board sa aming Raspberry Pi. Gagawin namin ito sa pamamagitan ng pagbabago ng isang bersyon ng Stavros Korokithakis 'Gr8W8Upd8M8.py script (https://github.com/skorokithakis/gr8w8upd8m8). Ang python script na gagamitin namin para sa hakbang na ito ay matatagpuan dito. Maaari mong kopyahin ang mga nilalaman ng file na ito sa isang file na nilikha mo sa iyong Raspberry Pi o maaari mong i-clone ang lahat ng mga python file na gagamitin namin para sa buong proyekto. Gawin natin ang huli. I-type ang mga sumusunod na utos sa isang terminal sa iyong Raspberry Pi:

$ cd ~ $ git clone $ git clone https: github.com/initialstate/smart-scale.git cloning into 'smart-scale'… remote: Nagbibilang ng mga bagay: 14, tapos na. remote: Pag-compress ng mga bagay: 100% (12/12), tapos na. remote: Kabuuang 14 (delta 1), muling ginamit 8 (delta 0), pack-reuse 0 Pag-unpack ng mga bagay: 100% (14/14), tapos na. Sinusuri ang pagkakakonekta… tapos na.

pag-clone sa 'smart-scale' … remote: Nagbibilang ng mga bagay: 14, tapos na. remote: Pag-compress ng mga bagay: 100% (12/12), tapos na. remote: Kabuuang 14 (delta 1), muling ginamit 8 (delta 0), pack-reuse 0 Pag-unpack ng mga bagay: 100% (14/14), tapos na. Sinusuri ang pagkakakonekta… tapos na.

Dapat mong makita ang dalawang mga file ng sawa sa bagong direktoryo ng smart-scale - smartscale.py at wiiboard_test.py.

$ cd smart-scale $ lsREADME.md smartscale.py wiiboard_test.py

Patakbuhin ang wiiboard_test.py script upang subukan ang komunikasyon at kumuha ng mga pagbabasa ng timbang mula sa Wii Balance Board:

$ sudo python wiiboard_test.py

Makikita mo ang sumusunod na tugon:

Pagtuklas ng board … Pindutin ang pulang pindutan ng pag-sync sa board ngayon

Alisin ang takip ng baterya sa ilalim ng Lupon upang hanapin ang pulang pindutan ng pag-sync. Tiyaking pinindot mo ang pindutan sa loob ng ilang segundo ng pagpapatakbo ng script o magaganap ang isang pag-timeout. Kapag matagumpay, makakakita ka ng katulad sa sumusunod:

Natagpuan ang Wiiboard sa address 00: 23: CC: 2E: E1: 44 Sinusubukang kumonekta… Nakakonekta sa Wiiboard sa address 00: 23: CC: 2E: E1: 44Nagkonekta ang WiiboardACK sa isinulat na datos na natanggap84.9185297 lbs84.8826412 lbs84.9275927 lbs

Ang script na wiiboard_test.py ay kumukuha ng bilang ng mga pagsukat ng timbang na tinukoy sa linya 10 at inilalabas ang average:

# --------- Mga Setting ng Gumagamit --------- WEIGHT_SAMPLES = 500 # ----------------- --------

Maaari mong i-play ang numerong ito sa pamamagitan ng pagbabago ng halaga at muling pagpapatakbo ng script upang makita ang pagkakaiba-iba sa sinusukat na timbang at kinakailangan ng oras para sa bawat pagsukat. Timbangin ang iyong sarili, timbangin ang iyong aso, timbangin ang anuman at tingnan kung may katuturan ang mga sukat. Upang ihinto ang script, pindutin ang CTRL + C.

Matagumpay mong na-convert ang iyong Wii Balance Board sa isang sukat na konektado sa Raspberry Pi. Ngayon, gawin natin itong isang cool na sukat.

Hakbang 5: Mga Pagbabago ng Hardware

Mga Tweak ng Hardware
Mga Tweak ng Hardware

Ipinagpalagay ng Nintendo na palagi mong pinapalakas ang iyong Wii Balance Board na may apat na baterya ng AA at walang kasamang AC power adapter. Ang pagkakaroon lamang ng lakas ng baterya ay magiging abala sapagkat hindi namin permanenteng ipares ang aming Wii Board sa aming Pi sa pamamagitan ng Bluetooth. Kailangan naming i-sync ito, pagkatapos ay payagan itong manatiling naka-sync nang hindi pinatuyo ang mga baterya upang maaari lamang kaming makatuntong sa sukatan at timbangin. Sa kabutihang palad, maraming mga adapter ng third-party na ginawa para sa Wii Balance Board na maaari naming magamit upang magbigay ng patuloy na lakas mula sa isang outlet ng pader. Palitan ang mga baterya ng isang pack ng baterya at isaksak ang ad adapter sa isang outlet ng dingding.

Ang pagkakaroon ng ipares ang Wii Balance Board at Raspberry Pi sa tuwing pinapatakbo namin ang aming Python script ay nagpapakita ng isa pang abala dahil sa lokasyon ng pindutan ng pag-sync. Ang pindutan ng pag-sync ay nasa ilalim ng Wii Board, na nangangahulugang baligtarin namin ito sa tuwing kailangan naming mag-sync. Maaari naming ayusin ito sa pamamagitan ng paggawa ng isang maliit na pingga gamit ang isang lapis at tatlong 3/8 "nadama pad tulad ng ipinakita sa itaas. Ang rechargeable baterya pack ay inilalantad ang pindutan ng pag-sync sa ilalim ng ibabaw ng Lupon. Tape ng isang lapis (o katulad na bagay) na sumasaklaw mula sa pindutan ng pag-sync hanggang sa labas ng harap ng Lupon. Mag-stack ng tatlong 3/8 "nadama na pad (o katulad na katulad) sa gitna ng lapis upang lumikha ng isang nakatigil na pivot. Mag-ingat na huwag ilantad ang labis na lapis mula sa Lupon dahil hindi mo nais ang sinumang hindi sinasadyang palayasin ito. I-flip ang Lupon at maaari mong pindutin ang pindutan ng pag-sync sa pamamagitan ng simpleng pagpindot sa pingga. Medyo isang pag-hack ngunit epektibo.

Depende sa kung paano mo iniimbak ang iyong Wii Board, baka gusto mong alisin ang mga rubber grip pad mula sa mga paa ng Lupon (ang mga pad ay simpleng sticker na maaari mong i-pry off). 3/8 nadama pads ay maaaring ilagay sa mga paa ng Lupon para sa madaling pagdulas.

Hakbang 6: Paunang Estado

Paunang Estado
Paunang Estado

Nais naming i-stream ang aming timbang / data sa isang cloud service at gawin ang serbisyong iyon na ang aming data sa isang magandang dashboard na maaari naming ma-access mula sa aming laptop o mobile device. Ang aming data ay nangangailangan ng isang patutunguhan. Gagamitin namin ang Initial State bilang patutunguhan.

Hakbang 1: Magrehistro para sa Paunang Estadong Account Pumunta sa https://iot.app.initialstate.com at lumikha ng isang bagong account.

Hakbang 2: I-install ang ISStreamerInstall ang Initial State Python module sa iyong Pi: Sa isang prompt ng utos (huwag kalimutang SSH muna sa iyong Pi), patakbuhin ang sumusunod na utos:

$ cd / home / pi / $ / curl -sSL https://get.initialstate.com/python -o - | sudo bash

Hakbang 3: Gumawa ng ilang AutomagicAfter Hakbang 2 makikita mo ang isang bagay na katulad sa sumusunod na output sa screen:

pi @ raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: Simula ng ISStreamer Python Madaling Pag-install! Maaari itong tumagal ng ilang minuto upang mai-install, kumuha ng kape:) Ngunit huwag kalimutang bumalik, magkakaroon ako ng mga katanungan sa paglaon!

Natagpuan easy_install: setuptools 1.1.6

Natagpuan pip: pip 1.5.6 mula sa /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip pangunahing bersyon: 1 pip menor de edad na bersyon: 5 ISStreamer natagpuan, ina-update… Kinakailangan napapanahon na: ISStreamer sa /Library/Python/2.7/site-packages Nililinis … Nais mo bang awtomatikong makakuha ng isang halimbawa ng script? [y / N]

(ang output ay maaaring magkakaiba at magtatagal kung hindi mo pa na-install ang module ng Paunang Estado ng Python streaming bago)

Kapag na-prompt na awtomatikong makakuha ng isang halimbawa ng script, i-type ang y. Lilikha ito ng isang script ng pagsubok na maaari naming patakbuhin upang matiyak na maaari naming mai-stream ang data sa Paunang Estado mula sa aming Pi. Ipo-prompt ka:

Saan mo nais i-save ang halimbawa? [default:./is_example.py]:

Maaari kang mag-type ng isang pasadyang lokal na landas o pindutin ang enter upang tanggapin ang default. Sasabihan ka para sa iyong username at password na nilikha mo lamang noong nagrehistro ka sa iyong Initial State account. Ipasok ang pareho at makukumpleto ang pag-install.

Hakbang 4: Mga Access Key

Tingnan natin ang halimbawa ng script na nilikha.

$ nano ay_example.py

Sa linya 15, makikita mo ang isang linya na nagsisimula sa streamer = Streamer (bucket_…. Lumilikha ang mga linyang ito ng isang bagong bucket ng data na pinangalanang "Halimbawa ng Python Stream" at nauugnay sa iyong account. Nangyayari ang ugnayan na ito dahil sa access_key = "…" parameter sa parehong linya na iyon. Ang mahabang serye ng mga titik at numero ay ang iyong key sa pag-access sa Paunang Estado ng account. Kung pupunta ka sa iyong Initial State account sa iyong web browser, mag-click sa iyong username sa kanang tuktok, pagkatapos ay pumunta sa "Aking Mga Setting", mahahanap mo ang parehong access key sa ilalim ng pahina sa ilalim ng "Streaming Access Keys".

Sa tuwing lumilikha ka ng isang data stream, ididirekta ng access key na iyon ang data stream sa iyong account (kaya huwag ibahagi ang iyong susi sa sinuman).

Hakbang 5: Patakbuhin ang Halimbawa

Patakbuhin ang script ng pagsubok upang matiyak na makakalikha kami ng isang stream ng data sa iyong Initial State account. Patakbuhin ang sumusunod:

$ python ay_example.py

Hakbang 6: Kita

Bumalik sa iyong Initial State account sa iyong web browser. Ang isang bagong bucket ng data na tinawag na "Halimbawa ng Python Stream" ay dapat na lumabas sa kaliwa sa iyong log shelf (maaaring kailanganin mong i-refresh ang pahina). Maaari mong tingnan ang data sa Mga Tile upang makita ang parehong data sa form na dashboard.

Hakbang 7: Pangwakas na Script

Ipagpalagay na pinatakbo mo ang "git clone https://github.com/InitialState/smart-scale.git" utos sa Bahagi 2, ang pangwakas na script na pinagsasama ang lahat ay tinatawag na smartscale.py sa iyong direktoryo ng ~ / smart-scale. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Ang ilang mga setting ay kailangang itakda sa script bago mo ito patakbuhin. Buksan ang smartscale.py sa iyong paboritong text editor tulad ng nano.

$ cd ~ $ cd smart-scale $ nano smartscale.py

Malapit sa tuktok ng file na ito, mayroong isang seksyon ng Mga Setting ng User.

# --------- Mga Setting ng Gumagamit ----- BUCKET_NAME = ": apple: Aking Kasaysayan sa Timbang" BUCKET_KEY = "weight11" ACCESS_KEY = "ILAKI ANG IYONG INITIAL STATE ACCESS KEY DITO" METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7 # -----------------

  • Itinatakda ng BUCKET_NAME ang pangalan ng data ng Initial State bucket kung saan mai-stream ang iyong timbang / data. Maaari itong maitakda dito at mabago sa paglaon sa UI.
  • Ang BUCKET_KEY ay ang natatanging identifier ng bucket na tumutukoy kung saan dadalhin ang iyong data. Kung nais mong lumikha ng ibang bucket / dashboard, gumamit ng ibang pagkakakilanlan dito (* tandaan, kung nag-archive ka ng isang bucket, hindi mo maaaring magamit muli ang key nito sa isang bagong bucket).
  • Ang ACCESS_KEY ang iyong paunang account ng State account. Kung hindi mo inilalagay ang iyong ACCESS_KEY sa larangang ito, hindi lalabas ang iyong data sa iyong account.
  • Pinapayagan ka ng METRIC_UNITS na tukuyin ang iyong timbang sa kg kung nakatakda sa True o lb kung nakatakda sa Maling.
  • Tinutukoy ng WEIGHT_SAMPLES kung gaano karaming mga sukat ang kinuha at na-average na magkasama upang makuha ang iyong tunay na timbang. 500 pagsukat ay tumatagal ng tungkol sa 4-5 segundo at nagbibigay ng medyo tumpak na mga resulta.
  • Tinutukoy ng THROWAWAY_SAMPLES ang bilang ng mga sample na itinapon nang una kang umakyat sa pisara. Pinipigilan nito ang mga paunang hakbang at paglilipat mula sa pagtapon ng pangwakas na pagsukat. Ito ay dapat palaging mas mababa sa WEIGHT_SAMPLES.
  • Itinatakda ng WEIGHT_HISTORY ang bilang ng mga pagsukat na kinuha bago ipadala ang isang labis na pag-update. Ang mga sukat lamang na kinuha ng dalawang oras o higit na hiwalay ang nabibilang sa kasaysayan.

Kapag natukoy mo ang bawat parameter sa seksyong ito at nai-save ang iyong mga pagbabago, handa ka nang patakbuhin ang pangwakas na script. Bago natin patakbuhin ang script, pag-aralan muna natin kung ano ang gagawin nito.

  • Sa pagsisimula ng script, hihilingin sa iyo na ipares ang iyong Wii Balance Board sa iyong Raspberry Pi. Gamitin ang pingga na iyong na-hack nang magkasama sa seksyon Bahagi 2: Mga Tweak ng Hardware upang pindutin ang pindutan ng pag-sync kapag na-prompt.
  • Kapag ang script ay tumatakbo, hakbang sa Wii Board upang simulang sukatin ang iyong timbang. Pagkatapos ng 4-5 segundo, ang iyong timbang ay awtomatikong maipapadala sa iyong Initial State account.
  • Pagkatapos naming mai-set up ang mga notification sa SMS (sa ilang mga hakbang), makakatanggap ka ng isang text message kaagad pagkatapos ng iyong pagsukat.

Patakbuhin ang script upang simulan ang mahika.

$ sudo python smartscale.py

Hakbang 8: Dashboard

Dashboard
Dashboard

Pumunta sa iyong Initial State account at mag-click sa bagong data bucket na may pangalan na naaayon sa parameter na BUCKET_NAME (ibig sabihin, Aking Kasaysayan sa Timbang). Mag-click sa Mga Tile upang matingnan ang iyong dashboard ng kasaysayan ng timbang. Dapat mong makita ang tatlong mga tile sa unang pagkakataon na matingnan mo ang iyong data sa Mga Tile - Update, Petsa ng Timbang, at Timbang (lb). Maaari mong ipasadya ang iyong dashboard sa pamamagitan ng pagbabago ng laki at paglipat ng mga tile pati na rin ang pagbabago ng mga uri ng pagtingin at kahit na pagdaragdag ng mga tile. Binibigyan ka ng dashboard na ito ng kakayahang makita ang iyong kasaysayan ng timbang nang isang sulyap. Ito ay madaling gamitin sa mobile at maaari mo ring ibahagi ito sa ibang mga tao.

Maaari kang magdagdag ng isang imahe sa background sa iyong dashboard upang mabigyan ang iyong data ng higit na pagkatao at konteksto.

Hakbang 9: SMS

SMS
SMS

Lumikha tayo ng isang alerto sa SMS tuwing ang sukat ay tumatagal ng isang pagsukat ng timbang. Tiyaking na-load ang iyong bucket ng data ng kasaysayan ng timbang.

  1. Mag-click sa mga setting ng bucket (sa ilalim ng pangalan nito) sa window ng data bucket.
  2. Mag-click sa tab na Mga Trigger.
  3. Piliin ang stream ng data upang mag-trigger. Maaari mong gamitin ang listahan ng drop-down upang pumili mula sa mga umiiral nang stream sa sandaling na-load ang isang data bucket o maaari mong manu-manong i-type ang pangalan ng stream / key. Sa halimbawang screenshot sa itaas, napili ang "Update".
  4. Piliin ang kondisyunal na operator, sa kasong ito 'match'.
  5. Piliin ang halaga ng Trigger na magpapalitaw ng isang aksyon (manu-manong i-type ang nais na halaga). Mag-type sa lb kung hindi ka gumagamit ng mga unit ng sukatan o i-type ang kg kung gumagamit ka ng mga yunit ng sukatan. Tuwing ang stream na "Update" ay naglalaman ng "lb" (o "kg"), makakatanggap ka ng isang notification sa text message.
  6. I-click ang pindutang '+' upang idagdag ang kundisyon ng Trigger.
  7. Ipasok ang iyong email address o numero ng telepono sa patlang na "Mga contact upang ipaalam."
  8. I-click ang pindutang '+' upang idagdag ang impormasyon sa pakikipag-ugnay.
  9. Mag-input ng anumang verification code kung nagdaragdag ng isang bagong numero ng telepono upang makumpleto ang pag-set up.
  10. I-click ang Tapos na pindutan sa ibaba upang bumalik sa pangunahing screen. Ang iyong gatilyo ay live na ngayon at magpapaputok kapag natugunan ang kundisyon.

Kapag nakumpleto na ang pag-set up, makakakuha ka ng isang SMS sa bawat oras na timbangin mo ang iyong sarili na naglalaman ng iyong timbang, kung magkano ang nagbago ng iyong timbang mula noong huling pagsukat, at isang random na biro / insulto / papuri.

Hakbang 10: Konklusyon

Mayroong walang limitasyong mga pagpipilian para sa iyo na bumuo sa iyong nilikha ngayon. Narito ang ilang mga ideya para sa proyektong ito:

  • Maaari kang mag-stream ng data mula sa iba pang mga mapagkukunan sa parehong dashboard ng kasaysayan ng timbang (impormasyon) upang lumikha ng iyong sariling personal na dashboard ng kalusugan.
  • Maaari mong baguhin ang mga biro sa messageWeighFirst, messageWeighLess, messageWeighMore, at messageWeighSame na gumagana sa iyong sariling pagkamapagpatawa.
  • Maaari mong baguhin ang mga biro sa mga praktikal na mensahe o alisin ang mga ito at gamitin ang scale code upang subaybayan ang bigat ng isang bagay na mas mahalaga bukod sa iyong sariling timbang sa katawan.
  • Maaari kang lumikha ng iyong sariling matalinong refrigerator na fridge / alak gamit ang parehong diskarte. Mayroon nang isang kahanga-hangang tutorial na ginawa para dito.

I-hack ang layo at ipaalam sa akin kung ang tutorial na ito ay pumukaw sa iyo upang lumikha ng isang bagay na kamangha-manghang.

Inirerekumendang: