Satura rādītājs:

Raspberry Pi viedā skala: 10 soļi (ar attēliem)
Raspberry Pi viedā skala: 10 soļi (ar attēliem)

Video: Raspberry Pi viedā skala: 10 soļi (ar attēliem)

Video: Raspberry Pi viedā skala: 10 soļi (ar attēliem)
Video: Course Lesson 5 of 10: Controlling RGB LED WS2812B Using Raspberry Pi Pico 2024, Jūlijs
Anonim
Image
Image

Vai esat noguris katru rītu skatīties uz šo garlaicīgo, veco, slikto ziņu vannas istabas svaru? To, kuru tu bieži saki “es tevi ienīstu”, ikreiz, kad uzkāp uz tā. Kāpēc neviens nav izveidojis skalu, kas patiesībā ir jautra vai motivējoša lietošanai? Ir pienācis laiks izveidot skalu, kas ir ne tikai gudra, bet arī nedaudz personīgāka, lai padarītu jūsu dienu gaišāku. Mēs izveidosim savu uzlaužamo, svara izsekošanas, īsziņu vannas istabas skalu, kurai ir iebūvēta humora izjūta.

Šis ir jautrs, vienkāršs projekts, kas apvieno Wii līdzsvara dēli, Raspberry Pi un tiešsaistes datu analīzes platformu, lai izveidotu tīmeklim pievienotu skalu, ko kontrolē Python skripts, kuru varat uzlauzt.

Projekta līmenis: iesācējs Aptuvenais izpildes laiks: 20 minūtes Izklaides faktors: neizmērojams

Šajā soli pa solim apmācībā jūs:

  • savienojiet Wii līdzsvara dēli ar Raspberry Pi, izmantojot Bluetooth, palaidiet Python skriptu, kas mēra jūsu svaru, kad kāpjat uz līdzsvara dēļa
  • izmantojiet Raspberry Pi, lai straumētu savu svaru uz mākoņpakalpojumu (sākotnējais stāvoklis)
  • iestatiet SMS paziņojumu katru reizi, kad nosveraties
  • izveidojiet svara uzskaites informācijas paneli, kuram varat piekļūt savā tīmekļa pārlūkprogrammā

1. solis: aprīkojums

Wii līdzsvara dēļa skala
Wii līdzsvara dēļa skala

Šeit ir saraksts ar visu aprīkojumu, ko mēs izmantosim šajā apmācībā, ar saitēm, kur var iegādāties katru preci.

  • Raspberry Pi 3 ar SD karti un barošanas avotu (https://init.st/psuufmj)
  • Wii bilances padome (https://init.st/qg4ynjl)
  • Wii Fit uzlādējams akumulators (https://init.st/iyypz2i)
  • 3/8 collu filca spilventiņi (https://init.st/8gywmjj)
  • Zīmulis (es nedodu jums saiti uz zīmola iegādes vietu … jums vajadzētu būt vienam no šiem)

Piezīme. Ja jums ir Raspberry Pi 1 vai 2, jums būs nepieciešams Bluetooth adapteris (https://init.st/7y3bcoe)

2. darbība. Wii līdzsvara dēļa skala

Kāpēc Wii bilances dēlis? Izrādās, ka tā ir patiešām jauka, izturīga skala, kurai ir Bluetooth savienojums. Tas ļaus mums to savienot ar vienas plates datoru (Raspberry Pi), lai nolasītu jūsu svaru Python skriptā un nosūtītu šos mērījumus tiešsaistes datu pakalpojumam, lai veiktu interesantas lietas. Turklāt pastāv liela iespēja, ka jums vai kādam jūsu pazīstamam cilvēkam jau ir tāds, kas vienkārši vāc putekļus.

Mums būs jāveic dažas vienkāršas izmaiņas mūsu Wii bilances panelī, lai šis projekts patiešām būtu praktisks un ērts.

3. darbība: Bluetooth iestatīšana

Raspberry Pi 3 ir iebūvēts Bluetooth, viss, kas mums nepieciešams, lai sazinātos ar Wii Balance Board. Ja jums ir Raspberry Pi 1 vai 2, adaptera pievienošanai mums būs jāizmanto kāds no mūsu USB portiem.

Ieslēdziet savu Pi (pieņemu, ka esat jau instalējis Raspbian un tas sāk darboties) un dodieties uz savu Raspberry Pi termināļa logu. Bluetooth komandu var redzēt, izmantojot komandu "hcitool dev":

$ hcitool devIerīces: hci0 00: 1A: 7D: DA: 71: 13

Instalējiet Bluetooth moduļus, kurus izmantosim mūsu Python skriptos:

$ sudo apt-get instalēt python-bluetooth

Pēc instalēšanas pabeigšanas mēs esam gatavi izveidot savienojumu un sazināties ar Wii Balance Board. Mēs neatgriezeniski savienosim savu valdi ar mūsu Pi, kā tas notiek ar lielāko daļu mūsu Bluetooth ierīču. Wii Balance Board nekad nebija paredzēts savienot pārī ar neko citu kā Wii, un pastāvīga savienošana pārī izrādījās diezgan mulsinošs izaicinājums. Savienošana pārī notiks katru reizi, kad palaižam savu Python skriptu.

4. darbība: skalas lasīšana

Ir pienācis laiks savienot mūsu Wii Balance Board ar mūsu Raspberry Pi. Mēs to darīsim, mainot Stavros Korokithakis Gr8W8Upd8M8.py skripta versiju (https://github.com/skorokithakis/gr8w8upd8m8). Python skripts, ko mēs izmantosim šai darbībai, atrodas šeit. Jūs varat kopēt šī faila saturu failā, ko izveidojat savā Raspberry Pi, vai arī varat klonēt visus python failus, kurus mēs izmantosim šim visam projektam. Darīsim pēdējo. Raspberry Pi terminālī ierakstiet šādas komandas:

$ cd ~ $ git clone $ git clone https: github.com/initialstate/smart-scale.git klonēšana "viedā mērogā" … tālvadība: objektu skaitīšana: 14, darīts. tālvadība: objektu saspiešana: 100% (12/12), darīts. tālvadības pults: kopā 14 (delta 1), atkārtoti izmantots 8 (delta 0), iepakojumā atkārtoti izmantots 0 Objektu izpakošana: 100% (14/14), darīts. Savienojuma pārbaude… darīts.

klonēšana “viedā mērogā”… tālvadība: objektu skaitīšana: 14, darīts. tālvadība: objektu saspiešana: 100% (12/12), darīts. tālvadības pults: kopā 14 (delta 1), atkārtoti izmantots 8 (delta 0), iepakojumā atkārtoti izmantots 0 Objektu izpakošana: 100% (14/14), darīts. Savienojuma pārbaude… darīts.

Jaunajā viedo mērogu direktorijā vajadzētu redzēt divus python failus - smartscale.py un wiiboard_test.py.

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

Palaidiet skriptu wiiboard_test.py, lai pārbaudītu komunikāciju un ņemtu svarus no Wii Balance Board:

$ sudo python wiiboard_test.py

Jūs redzēsit šādu atbildi:

Discover board … Tagad nospiediet uz tāfeles sarkano sinhronizācijas pogu

Noņemiet akumulatora pārsegu zem paneļa, lai atrastu sarkano sinhronizācijas pogu. Noteikti nospiediet pogu dažu sekunžu laikā pēc skripta palaišanas, pretējā gadījumā notiks taimauts. Kad tas būs veiksmīgs, jūs redzēsit kaut ko līdzīgu šim:

Wiiboard atrasts pēc adreses 00: 23: CC: 2E: E1: 44 Mēģina izveidot savienojumu … Izveidots savienojums ar Wiiboard pēc adreses 00: 23: CC: 2E: E1: 44

Scenārijs wiiboard_test.py ņem 10. rindā norādīto svara mērījumu skaitu un parāda vidējo:

# --------- Lietotāja iestatījumi --------- WEIGHT_SAMPLES = 500# ------------------------- --------

Jūs varat spēlēt ar šo skaitli, mainot vērtību un atkārtoti palaižot skriptu, lai redzētu izmērītā svara izmaiņas un katram mērījumam nepieciešamo laiku. Nosveriet sevi, nosveriet suni, nosveriet visu un pārbaudiet, vai mērījumiem ir jēga. Lai apturētu skriptu, nospiediet taustiņu kombināciju CTRL+C.

Tagad esat veiksmīgi pārveidojis savu Wii Balance Board par Raspberry Pi savienoto skalu. Tagad padarīsim to par foršu skalu.

5. darbība. Aparatūras uzlabojumi

Aparatūras uzlabojumi
Aparatūras uzlabojumi

Nintendo pieņēma, ka jūs vienmēr darbināsit savu Wii Balance dēli ar četrām AA baterijām un bez maiņstrāvas adaptera. Tikai akumulatora enerģijas izmantošana būtu neērta, jo mēs nevaram pastāvīgi savienot pārī mūsu Wii dēli ar mūsu Pi, izmantojot Bluetooth. Mums tas ir jāsinhronizē, pēc tam ļaujiet tam palikt sinhronizētam, neiztukšojot baterijas, lai mēs varētu vienkārši uzkāpt uz svariem un nosvērt. Par laimi, Wii Balance Board ir izgatavoti vairāki trešo pušu adapteri, kurus mēs varam izmantot, lai nodrošinātu pastāvīgu strāvas padevi no sienas kontaktligzdas. Nomainiet baterijas ar akumulatoru un pievienojiet maiņstrāvas adapteri sienas kontaktligzdai.

Nepieciešamība savienot pārī Wii Balance Board un Raspberry Pi katru reizi, kad palaižam mūsu Python skriptu, rada citas neērtības sinhronizācijas pogas atrašanās vietas dēļ. Sinhronizācijas poga atrodas Wii tāfeles apakšā, kas nozīmē, ka mums tas būtu jāpārvērš katru reizi, kad nepieciešams sinhronizēt. Mēs to varam novērst, izveidojot nelielu sviru, izmantojot zīmuli un trīs 3/8 collu filca spilventiņus, kā parādīts iepriekš. Uzlādējams akumulators pakļauj sinhronizācijas pogu zem tāfeles virsmas. Līmējiet zīmuli (vai kaut ko līdzīgu), kas aptver no sinhronizācijas pogas līdz tāfeles ārējai priekšpusei. Novietojiet trīs 3/8 collu filca spilventiņus (vai kaut ko līdzīgu) zīmuļa centrā, lai izveidotu nekustīgu šarnīru. Esiet piesardzīgs, lai neatklātu pārāk daudz zīmuļa no tāfeles, jo nevēlaties, lai kāds to nejauši izsit. Apgrieziet dēli un varat nospiest sinhronizācijas pogu, vienkārši nospiežot sviru. Mazliet uzlauzts, bet efektīvs.

Atkarībā no tā, kā uzglabājat Wii dēli, iespējams, vēlēsities noņemt gumijas rokturu spilventiņus no tā paneļiem (spilventiņi ir vienkārši uzlīmes, kuras varat noņemt). Uz dēļa kājām var novietot 3/8 collu filca spilventiņus, lai tos varētu viegli bīdīt.

6. darbība: sākotnējais stāvoklis

Sākotnējais stāvoklis
Sākotnējais stāvoklis

Mēs vēlamies straumēt savu svaru/datus uz mākoņpakalpojumu, un šis pakalpojums pārvērš mūsu datus par jauku informācijas paneli, kuram varam piekļūt no klēpjdatora vai mobilās ierīces. Mūsu datiem ir nepieciešams galamērķis. Kā galamērķi mēs izmantosim sākotnējo valsti.

1. darbība. Reģistrējieties sākotnējā valsts kontam Dodieties uz vietni https://iot.app.initialstate.com un izveidojiet jaunu kontu.

2. solis: instalējiet ISStreamer Instalējiet sākotnējā stāvokļa Python moduli savā Pi: komandu uzvednē (vispirms neaizmirstiet SSH ievadīt savā Pi), izpildiet šādu komandu:

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

Pēc 2. darbības ekrānā redzēsit kaut ko līdzīgu šim izvadam:

pi@raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o -| sudo bashParole: Sākums ISStreamer Python vienkārša instalēšana! Tas var aizņemt pāris minūtes, lai to instalētu, paņemiet kafiju:) Bet neaizmirstiet atgriezties, man būs jautājumi vēlāk!

Atrasts easy_install: setuptools 1.1.6

Atrasts pip: pip 1.5.6 no /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip galvenā versija: 1 pip minor versija: 5 ISStreamer atrasts, tiek atjaunināts … Prasība jau atjaunināts: ISStreamer /Library/Python/2.7/site-packages Notīra … Vai vēlaties automātiski iegūt skripta piemēru? [y/N]

(izvade var būt atšķirīga un var aizņemt ilgāku laiku, ja nekad iepriekš neesat instalējis straumēšanas sākotnējā stāvokļa Python moduli)

Kad tiek prasīts automātiski iegūt skripta piemēru, ierakstiet y. Tādējādi tiks izveidots testa skripts, kuru mēs varam palaist, lai nodrošinātu, ka mēs varam straumēt datus sākotnējā stāvoklī no mūsu Pi. Jums tiks piedāvāts:

Kur vēlaties saglabāt piemēru? [noklusējums:./is_example.py]:

Jūs varat ierakstīt pielāgotu vietējo ceļu vai nospiest taustiņu Enter, lai pieņemtu noklusējuma iestatījumu. Jums tiks prasīts ievadīt savu lietotājvārdu un paroli, ko tikko izveidojāt, reģistrējot sākotnējās valsts kontu. Ievadiet abus, un instalēšana tiks pabeigta.

4. darbība: piekļuves atslēgas

Apskatīsim izveidotā skripta piemēru.

$ nano is_example.py

15. rindā redzēsit rindu, kas sākas ar streamer = Streamer (bucket_…. Šīs rindas izveido jaunu datu kopu ar nosaukumu “Python Stream Example” un ir saistīta ar jūsu kontu. Šī saistība notiek piekļuves atslēgas =”… dēļ” parametru tajā pašā rindā. Šī garā burtu un ciparu sērija ir jūsu sākotnējās valsts konta piekļuves atslēga. Ja savā tīmekļa pārlūkprogrammā dodaties uz sākotnējās valsts kontu, augšējā labajā stūrī noklikšķiniet uz sava lietotājvārda un pēc tam atveriet sadaļu “Mani iestatījumi”., to pašu piekļuves atslēgu atradīsit lapas apakšā sadaļā “Piekļuves straumēšanas straumes”.

Katru reizi, kad izveidojat datu straumi, šī piekļuves atslēga novirzīs šo datu straumi uz jūsu kontu (tāpēc nekopīgojiet savu atslēgu nevienam).

5. darbība: izpildiet piemēru

Palaidiet testa skriptu, lai pārliecinātos, ka varam izveidot datu straumi jūsu sākotnējā stāvokļa kontā. Izpildiet tālāk norādītās darbības.

$ python is_example.py

6. solis: peļņa

Tīmekļa pārlūkprogrammā atgriezieties sākotnējā valsts kontā. Jūsu žurnāla plaukta kreisajā pusē vajadzēja parādīt jaunu datu kopu ar nosaukumu “Python Stream Example” (iespējams, lapa būs jāatsvaidzina). Varat skatīt datus flīzēs, lai šos pašus datus redzētu informācijas paneļa formā.

7. darbība: galīgais skripts

Pieņemot, ka 2. daļā izpildījāt komandu "git klons https://github.com/InitialState/smart-scale.git", galīgo skriptu, kas visu saliek kopā, jūsu ~/smart-scale direktorijā sauc par smartscale.py. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Pirms skripta palaišanas ir jāiestata daži iestatījumi. Atveriet smartscale.py savā iecienītākajā teksta redaktorā, piemēram, nano.

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

Šī faila augšdaļā ir sadaļa Lietotāja iestatījumi.

# --------- Lietotāja iestatījumi --------- BUCKET_NAME = ": apple: Mana svara vēsture" BUCKET_KEY = "weight11" ACCESS_KEY = "IEVADIET SĀKOTNĒJĀS VALSTS PIEKĻUVES ŠEIT" METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7# ---------------------------------

  • BUCKET_NAME nosaka sākotnējā stāvokļa datu kopas nosaukumu, kurā tiks straumēts jūsu svars/dati. To var iestatīt šeit un vēlāk mainīt lietotāja saskarnē.
  • BUCKET_KEY ir unikālais segmenta identifikators, kas norāda, kur tiks straumēti jūsu dati. Ja vēlaties izveidot citu kopu/informācijas paneli, šeit izmantojiet citu identifikatoru (*piezīme, ja arhivējat kopu, tās atslēgu nevar atkārtoti izmantot jaunā grupā).
  • ACCESS_KEY ir jūsu sākotnējā statusa konta atslēga. Ja šajā laukā nenorādīsit savu ACCESS_KEY, jūsu dati netiks rādīti jūsu kontā.
  • METRIC_UNITS ļauj norādīt savu svaru kilogramos, ja tas ir iestatīts uz True vai lb, ja ir iestatīts uz False.
  • WEIGHT_SAMPLES norāda, cik mērījumu tiek veikti un aprēķināti kopā, lai iegūtu jūsu faktisko svaru. 500 mērījumi aizņem apmēram 4-5 sekundes un sniedz diezgan precīzus rezultātus.
  • THROWAWAY_SAMPLES norāda paraugu skaitu, kas tiek izmesti, kad jūs pirmo reizi uzkāpjat uz tāfeles. Tas novērš sākotnējos soļus un nobīdi no galīgā mērījuma. Tam vienmēr vajadzētu būt daudz mazākam par WEIGHT_SAMPLES.
  • WEIGHT_HISTORY iestata pirms papildu atjauninājuma nosūtīšanas veikto mērījumu skaitu. Vēsturē tiek ieskaitīti tikai tie mērījumi, kas veikti divu vai vairāku stundu intervālā.

Kad esat norādījis katru parametru šajā sadaļā un saglabājis izmaiņas, esat gatavs palaist galīgo skriptu. Pirms skripta palaišanas apskatīsim, ko tas darīs.

  • Skripta sākumā jums tiks lūgts savienot pārī savu Wii Balance dēli ar Raspberry Pi. Izmantojiet sviru, kuru esat uzlauzis kopā 2. daļā: Aparatūras uzlabojumi, lai pēc pieprasījuma nospiedtu sinhronizācijas pogu.
  • Kad skripts darbojas, dodieties uz Wii dēli, lai sāktu sava svara mērīšanu. Pēc 4-5 sekundēm jūsu svars tiks automātiski nosūtīts uz jūsu sākotnējās valsts kontu.
  • Pēc tam, kad būsim iestatījuši īsziņu paziņojumus (veicot pāris soļus), drīz pēc mērīšanas jūs saņemsit īsziņu.

Palaidiet skriptu, lai sāktu burvību.

$ sudo python smartscale.py

8. darbība. Informācijas panelis

Mērinstrumentu panelis
Mērinstrumentu panelis

Dodieties uz savu sākotnējā stāvokļa kontu un noklikšķiniet uz jaunā datu kopas ar nosaukumu, kas atbilst parametram BUCKET_NAME (t.i., mana svara vēsture). Noklikšķiniet uz Flīzes, lai skatītu sava svara vēstures informācijas paneli. Kad pirmo reizi skatāt datus flīzēs, jums vajadzētu redzēt trīs flīzes - atjauninājums, svara datums un svars (mārciņas). Varat pielāgot informācijas paneli, mainot un pārvietojot flīzes, kā arī mainot skatu veidus un pat pievienojot flīzes. Šis informācijas panelis sniedz jums iespēju uzreiz redzēt sava svara vēsturi. Tas ir piemērots mobilajām ierīcēm, un jūs pat varat to kopīgot ar citiem cilvēkiem.

Informācijas panelim varat pievienot fona attēlu, lai saviem datiem piešķirtu lielāku personību un kontekstu.

9. darbība: SMS

īsziņa
īsziņa

Izveidosim SMS brīdinājumu ikreiz, kad svari veic svara mērījumus. Pārliecinieties, vai jūsu svara vēstures datu kopa ir ielādēta.

  1. Datu kopas logā noklikšķiniet uz kopas iestatījumiem (zem tā nosaukuma).
  2. Noklikšķiniet uz cilnes Aktivizētāji.
  3. Atlasiet aktivizējamo datu straumi. Varat izmantot nolaižamo sarakstu, lai atlasītu no esošajām straumēm, kad datu kopa ir ielādēta, vai arī varat manuāli ievadīt straumes nosaukumu/atslēgu. Iepriekš redzamajā ekrānuzņēmuma piemērā ir atlasīts "Atjaunināt".
  4. Izvēlieties nosacīto operatoru, šajā gadījumā 'sakritību'.
  5. Atlasiet aktivizētāja vērtību, kas aktivizēs darbību (manuāli ierakstiet vēlamo vērtību). Ievadiet lb, ja neizmantojat metriskās vienības, vai kg, ja izmantojat metriskās vienības. Ikreiz, kad straumē "Atjaunināt" ir "lb" (vai "kg"), jūs saņemsit paziņojumu ar īsziņu.
  6. Noklikšķiniet uz pogas “+”, lai pievienotu aktivizētāja nosacījumu.
  7. Laukā "Paziņot kontaktpersonām" ievadiet savu e -pasta adresi vai tālruņa numuru.
  8. Noklikšķiniet uz pogas “+”, lai pievienotu kontaktinformāciju.
  9. Ievadiet jebkuru verifikācijas kodu, ja pievienojat jaunu tālruņa numuru, lai pabeigtu iestatīšanu.
  10. Apakšā noklikšķiniet uz pogas Gatavs, lai atgrieztos galvenajā ekrānā. Jūsu aktivizētājs tagad ir aktīvs un tiks aktivizēts, kad nosacījums būs izpildīts.

Kad iestatīšana ir pabeigta, katru reizi, kad nosveraties, jūs saņemsit īsziņu, kurā norādīts jūsu svars, cik daudz jūsu svars ir mainījies kopš pēdējā mērījuma, un nejaušs joks / apvainojums / kompliments.

10. solis: Secinājums

Jums ir neierobežotas iespējas balstīties uz to, ko esat izveidojis. Šeit ir dažas idejas šim projektam:

  • Jūs varat straumēt datus no citiem avotiem tajā pašā svara vēstures informācijas panelī (informācija), lai izveidotu savu personīgo veselības informācijas paneli.
  • Jūs varat mainīt jokus ziņojumāWeighFirst, messageWeighLess, messageWeighMore un messageWeighSame funkcijas atbilstoši savai humora izjūtai.
  • Jūs varat pārvērst jokus par praktiskiem ziņojumiem vai noņemt tos un izmantot skalas kodu, lai izsekotu svarīgāka svara svaru, izņemot jūsu ķermeņa svaru.
  • Izmantojot to pašu pieeju, varat izveidot savu viedo alus/vīna ledusskapi. Šeit jau ir izveidota satriecoša apmācība.

Uzlauziet un dariet man zināmu, vai šī apmācība iedvesmo jūs radīt kaut ko pārsteidzošu.

Ieteicams: