Cuprins:

Scală inteligentă Raspberry Pi: 10 pași (cu imagini)
Scală inteligentă Raspberry Pi: 10 pași (cu imagini)

Video: Scală inteligentă Raspberry Pi: 10 pași (cu imagini)

Video: Scală inteligentă Raspberry Pi: 10 pași (cu imagini)
Video: Logica fracturata in a doua despartire! - FIERTI PE INSULA #10 2024, Iulie
Anonim
Image
Image

Te-ai săturat să te uiți în fiecare dimineață la cântarul ăsta plictisitor, vechi, de veste proastă? Cel pe care îl spui adesea „Te urăsc” ca de fiecare dată când îl calci. De ce nu a făcut nimeni o scală care să fie de fapt distractivă sau motivantă pentru utilizare? Este timpul să creați o scară care nu numai că este inteligentă, dar are și ceva mai multă personalitate pentru a vă înveseli ziua. Vom construi propriul nostru cântar de baie pentru mesaje text, care poate fi urmărit cu greutatea, care vine cu un simț al umorului încorporat.

Acesta este un proiect ușor și distractiv care combină o placă de echilibru Wii, un Raspberry Pi și o platformă de analiză a datelor online pentru a crea o scară conectată la web controlată de un script Python pe care îl puteți hack.

Nivelul proiectului: Începător Timp aproximativ de finalizare: 20 de minute Factor de distracție: Incomensurabil

În acest tutorial pas cu pas, veți:

  • conectați o placă de echilibru Wii la un Raspberry Pi prin Bluetooth rulați un script Python care vă măsoară greutatea atunci când pășiți pe tabloul de echilibru
  • utilizați un Raspberry Pi pentru a vă transmite greutatea către un serviciu cloud (starea inițială)
  • configurați o notificare prin SMS de fiecare dată când vă cântăriți
  • construiți un tablou de bord de urmărire a greutății pe care îl puteți accesa în browserul dvs. web

Pasul 1: Echipament

Scala Wii Balance Board
Scala Wii Balance Board

Iată o listă cu toate echipamentele pe care le vom folosi în acest tutorial cu link-uri către unde puteți achiziționa fiecare articol.

  • Raspberry Pi 3 cu card SD și sursă de alimentare (https://init.st/psuufmj)
  • Wii Balance Board (https://init.st/qg4ynjl)
  • Pachet de baterii reîncărcabile Wii Fit (https://init.st/iyypz2i)
  • Plăcuțe de pâslă de 3/8 "(https://init.st/8gywmjj)
  • Creion (Nu vă dau un link de unde să cumpărați un creion … ar trebui să dețineți unul dintre acestea)

Notă: Dacă aveți un Raspberry Pi 1 sau 2, veți avea nevoie de un adaptor bluetooth (https://init.st/7y3bcoe)

Pasul 2: Scala Wii Balance Board

De ce un Wii Balance Board? Se pare că este o scară foarte frumoasă, durabilă, care are conectivitate bluetooth. Acest lucru ne va permite să îl conectăm la un computer cu o singură placă (Raspberry Pi) pentru a vă citi greutatea într-un script Python și a trimite aceste măsurători la un serviciu de date online pentru a face lucruri interesante. În plus, există șanse mari ca dvs. sau cineva pe care îl cunoașteți să aveți deja unul care pur și simplu colectează praful.

Va trebui să facem câteva modificări simple la Wii Balance Board pentru a face acest proiect practic și convenabil.

Pasul 3: Configurare Bluetooth

Raspberry Pi 3 vine cu Bluetooth încorporat, tot ce avem nevoie pentru a comunica cu Wii Balance Board. Dacă aveți un Raspberry Pi 1 sau 2, va trebui să folosim unul dintre porturile noastre USB pentru a conecta un adaptor.

Porniți Pi-ul (presupun că ați instalat deja Raspbian și pornește) și mergeți la fereastra terminalului Raspberry Pi. Puteți vedea adresa dongle-ului dvs. bluetooth cu comanda „hcitool dev”:

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

Instalați modulele bluetooth pe care le vom folosi în scripturile noastre Python:

$ sudo apt-get install python-bluetooth

După finalizarea instalării, suntem gata să ne conectăm și să comunicăm cu Wii Balance Board. Nu vom asocia permanent Consiliul nostru cu Pi-ul nostru, așa cum facem cu majoritatea dispozitivelor noastre bluetooth. Wii Balance Board nu a fost niciodată intenționat să fie asociat cu altceva decât un Wii, iar asocierea permanentă s-a dovedit a fi o provocare confuză. Împerecherea se va întâmpla de fiecare dată când rulăm scriptul Python.

Pasul 4: Citirea scalei

Este timpul să ne conectăm Wii Balance Board la Raspberry Pi. Vom face acest lucru modificând o versiune a scriptului Stavros Korokithakis Gr8W8Upd8M8.py (https://github.com/skorokithakis/gr8w8upd8m8). Scriptul python pe care îl vom folosi pentru acest pas este situat aici. Puteți copia conținutul acestui fișier într-un fișier pe care îl creați pe Raspberry Pi sau puteți clona toate fișierele python pe care le vom folosi pentru întregul proiect. Să o facem pe aceasta din urmă. Tastați următoarele comenzi într-un terminal de pe Raspberry Pi:

$ cd ~ $ git clone $ git clone https: github.com/initialstate/smart-scale.git clonarea în „smart-scale” … la distanță: Numărarea obiectelor: 14, gata. la distanță: Comprimarea obiectelor: 100% (12/12), gata. la distanță: Total 14 (delta 1), reutilizat 8 (delta 0), pachet reutilizat 0 Obiecte de ambalare: 100% (14/14), gata. Verificarea conectivității … gata.

clonarea în „smart-scale”… la distanță: Numărarea obiectelor: 14, gata. la distanță: Comprimarea obiectelor: 100% (12/12), gata. la distanță: Total 14 (delta 1), reutilizat 8 (delta 0), pachet reutilizat 0 Obiecte de ambalare: 100% (14/14), gata. Verificarea conectivității … gata.

Ar trebui să vedeți două fișiere python în noul director la scară inteligentă - smartscale.py și wiiboard_test.py.

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

Rulați scriptul wiiboard_test.py pentru a testa comunicarea și pentru a lua citiri de greutate de pe Wii Balance Board:

$ sudo python wiiboard_test.py

Veți vedea următorul răspuns:

Descoperirea plăcii … Apăsați butonul roșu de sincronizare de pe placă acum

Scoateți capacul bateriei de sub placă pentru a localiza butonul roșu de sincronizare. Asigurați-vă că apăsați butonul în câteva secunde de la rularea scriptului sau va avea loc un timeout. Odată ce ați reușit, veți vedea ceva similar cu următoarele:

Wiiboard găsit la adresa 00: 23: CC: 2E: E1: 44 Încerc să se conecteze … Conectat la Wiiboard la adresa 00: 23: CC: 2E: E1: 44 Wiiboard conectat RACK la scrierea datelor primite 84.9185297 lbs84.8826412 lbs84.9275927 lbs

Scriptul wiiboard_test.py ia numărul de măsurători de greutate specificate la linia 10 și scoate media:

# --------- Setări utilizator --------- WEIGHT_SAMPLES = 500 # ------------------------- --------

Puteți juca cu acest număr schimbând valoarea și reluând scriptul pentru a vedea variația greutății măsurate și a timpului necesar pentru fiecare măsurare. Cântărește-te, cântărește-ți câinele, cântărește orice și vezi dacă măsurătorile au sens. Pentru a opri scriptul, apăsați CTRL + C.

Acum v-ați convertit cu succes Wii Balance Board într-o scară conectată Raspberry Pi. Acum, să o facem o scară rece.

Pasul 5: Modificări hardware

Modificări hardware
Modificări hardware

Nintendo a presupus că veți alimenta întotdeauna Wii Balance Board cu patru baterii AA și nu va include adaptor de curent alternativ. A avea doar bateria ar fi incomod, deoarece nu putem asocia permanent placa Wii la Pi-ul nostru prin Bluetooth. Trebuie să-l sincronizăm, apoi să-l lăsăm să rămână sincronizat, fără a descărca bateriile, astfel încât să putem pur și simplu să cântărim și să cântărim. Din fericire, există mai multe adaptoare terțe fabricate pentru Wii Balance Board pe care le putem folosi pentru a furniza energie constantă de la o priză de perete. Înlocuiți bateriile cu un acumulator și conectați adaptorul ca la o priză de perete.

A fi nevoie să împerecheați Wii Balance Board și Raspberry Pi de fiecare dată când rulăm scriptul nostru Python prezintă un alt inconvenient datorat locației butonului de sincronizare. Butonul de sincronizare se află în partea de jos a plăcii Wii, ceea ce înseamnă că ar trebui să-l răsturnăm de fiecare dată când trebuie să sincronizăm. Putem repara acest lucru făcând o mică manetă folosind un creion și trei tampoane de fetru de 3/8 "așa cum se arată mai sus. Pachetul de baterii reîncărcabile expune butonul de sincronizare pe suprafața inferioară a plăcii. Înregistrați un creion (sau ceva similar) care se întinde pe de la butonul de sincronizare la partea din față exterioară a plăcii. Stivați trei plăcuțe de fetru de 3/8 "(sau ceva similar) pe centrul creionului pentru a crea un pivot staționar. Aveți grijă să nu expuneți prea mult creionul din tablă, deoarece nu doriți ca cineva să-l dea afară din greșeală. Întoarceți placa și puteți apăsa butonul de sincronizare apăsând pur și simplu pe manetă. Un pic de hack, dar eficient.

În funcție de modul de stocare a plăcii Wii, vă recomandăm să scoateți plăcuțele de prindere din cauciuc de la picioarele plăcii (plăcuțele sunt pur și simplu autocolante pe care le puteți scoate). Plăcuțele de fetru de 3/8 pot fi așezate pe picioarele plăcii pentru a aluneca ușor.

Pasul 6: Starea inițială

Stare initiala
Stare initiala

Vrem să transmitem greutatea / datele noastre către un serviciu cloud și ca acel serviciu să ne transforme datele într-un tablou de bord frumos pe care îl putem accesa de pe laptopul sau dispozitivul nostru mobil. Datele noastre au nevoie de o destinație. Vom folosi Starea inițială ca destinație.

Pasul 1: Înregistrați-vă pentru contul de stat inițial Accesați https://iot.app.initialstate.com și creați un cont nou.

Pasul 2: Instalați ISStreamer Instalați modulul Python de stare inițială pe Pi: La promptul de comandă (nu uitați mai întâi SSH în Pi), rulați următoarea comandă:

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

Pasul 3: Faceți câteva Automagic După Pasul 2, veți vedea ceva similar cu următoarea ieșire pe ecran:

pi @ raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o - | sudo bashParolă: Început ISStreamer Python Instalare ușoară! Acest lucru poate dura câteva minute pentru a instala, luați o cafea:) Dar nu uitați să vă întoarceți, voi avea întrebări mai târziu!

Găsit easy_install: setuptools 1.1.6

S-a găsit pip: pip 1.5.6 din /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) versiune pip major: 1 versiune pip minor: 5 ISStreamer găsit, actualizare … Cerință deja actualizat: ISStreamer în /Library/Python/2.7/site-packages Curățarea … Doriți să obțineți automat un exemplu de script? [y / N]

(ieșirea poate fi diferită și poate dura mai mult dacă nu ați instalat niciodată modulul de streaming Initial State Python înainte)

Când vi se solicită să obțineți automat un exemplu de script, tastați y. Acest lucru va crea un script de test pe care îl putem rula pentru a ne asigura că putem transmite în flux date în starea inițială din Pi-ul nostru. Vi se va solicita:

Unde doriți să salvați exemplul? [implicit:./is_example.py]:

Puteți să tastați o cale locală personalizată sau să apăsați Enter pentru a accepta valoarea implicită. Vi se va solicita numele de utilizator și parola pe care tocmai le-ați creat atunci când v-ați înregistrat contul de stat inițial. Introduceți ambele și instalarea se va finaliza.

Pasul 4: Taste de acces

Să aruncăm o privire la exemplul de script care a fost creat.

$ nano este_exemplu.py

Pe linia 15, veți vedea o linie care începe cu streamer = Streamer (bucket_ …. Această linie creează o nouă bucket de date numită „Exemplu de flux Python” și este asociată contului dvs. Această asociere se întâmplă din cauza access_key =”…” parametru pe aceeași linie. Această serie lungă de litere și cifre este cheia de acces la contul dvs. de stat inițial. Dacă accesați contul dvs. de stat inițial în browserul dvs. web, faceți clic pe numele dvs. de utilizator din partea dreaptă sus, apoi accesați „Setările mele”, veți găsi aceeași cheie de acces în partea de jos a paginii sub „Chei de acces în flux”.

De fiecare dată când creați un flux de date, acea cheie de acces va direcționa fluxul de date către contul dvs. (deci nu partajați cheia cu nimeni).

Pasul 5: Rulați exemplul

Rulați scriptul de testare pentru a ne asigura că putem crea un flux de date în contul dvs. de stare inițială. Rulați următoarele:

$ python is_example.py

Pasul 6: Profit

Reveniți la contul de stat inițial din browserul dvs. web. O nouă bucată de date numită „Exemplu de flux Python” ar fi trebuit să apară în stânga în raftul jurnalului (poate fi necesar să reîmprospătați pagina). Puteți vizualiza datele în Tiles pentru a vedea aceleași date sub formă de tablou de bord.

Pasul 7: Script final

Presupunând că ați rulat comanda „git clone https://github.com/InitialState/smart-scale.git” din partea 2, scriptul final care pune totul împreună se numește smartscale.py în directorul dvs. ~ / smart-scale. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Câteva setări trebuie setate în script înainte de al putea rula. Deschideți smartscale.py în editorul dvs. de text preferat, cum ar fi nano.

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

Aproape de partea de sus a acestui fișier, există o secțiune Setări utilizator.

# --------- Setări utilizator --------- BUCKET_NAME = ": apple: Istoricul greutății mele" BUCKET_KEY = "weight11" ACCESS_KEY = "ACHIZAȚI CHIEA DE ACCES LA STATUL INITIAL AICI" METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7 # ---------------------------------

  • BUCKET_NAME setează numele cupei de date cu starea inițială în care greutatea / datele dvs. vor fi transmise în flux. Acest lucru poate fi setat aici și modificat ulterior în interfața de utilizare.
  • BUCKET_KEY este identificatorul unic de bucket care specifică unde vor fi transmise datele dvs. Dacă doriți să creați un alt compartiment / tablou de bord, utilizați un alt identificator aici (* notă, dacă arhivați un compartiment, nu puteți reutiliza cheia acestuia într-un compartiment nou).
  • ACCESS_KEY este cheia contului dvs. de stat inițial. Dacă nu introduceți ACCESS_KEY în acest câmp, datele dvs. nu vor apărea în contul dvs.
  • METRIC_UNITS vă permite să specificați greutatea dvs. în kg dacă este setată la True sau lb dacă este setată la False.
  • WEIGHT_SAMPLES specifică câte măsurători sunt luate și mediate împreună pentru a obține greutatea reală. 500 de măsurători durează aproximativ 4-5 secunde și oferă rezultate destul de precise.
  • THROWAWAY_SAMPLES specifică numărul de eșantioane care sunt aruncate atunci când pășiți prima dată pe tablă. Acest lucru împiedică pașii inițiali și deplasarea să arunce măsurarea finală. Acest lucru ar trebui să fie întotdeauna mult mai mic decât WEIGHT_SAMPLES.
  • WEIGHT_HISTORY stabilește numărul de măsurători efectuate înainte de trimiterea unei actualizări suplimentare. Numai măsurătorile efectuate la două ore sau mai mult distanță contează pentru istorie.

După ce ați specificat fiecare parametru în această secțiune și ați salvat modificările, sunteți gata să rulați scriptul final. Înainte de a rula scriptul, să trecem la ceea ce va face.

  • La începutul scriptului, vi se va cere să împerecheați Wii Balance Board cu Raspberry Pi. Utilizați pârghia pe care ați spart-o împreună în secțiunea Partea 2: Hardware Tweaks pentru a apăsa butonul de sincronizare când vi se solicită.
  • Odată ce scriptul rulează, pășiți pe placa Wii pentru a începe să vă măsurați greutatea. După 4-5 secunde, greutatea dvs. va fi trimisă automat în contul dvs. de stat inițial.
  • După ce configurăm notificările prin SMS (în câțiva pași), veți primi un mesaj text imediat după măsurare.

Rulați scriptul pentru a începe magia.

$ sudo python smartscale.py

Pasul 8: Tablou de bord

Bord
Bord

Accesați contul dvs. de stare inițială și faceți clic pe noua bucată de date cu numele corespunzător parametrului BUCKET_NAME (adică Istoricul greutății mele). Faceți clic pe Placi pentru a vizualiza tabloul de bord al istoricului de greutate. Ar trebui să vedeți trei dale prima dată când vizualizați datele dvs. în Dale - Actualizare, Data de greutate și Greutate (lb). Puteți să vă personalizați tabloul de bord redimensionând și mutând dale, schimbând tipurile de vizualizare și chiar adăugând dale. Acest tablou de bord vă oferă posibilitatea de a vă vedea istoricul greutăților dintr-o privire. Este compatibil cu dispozitivele mobile și îl puteți împărtăși chiar și cu alte persoane.

Puteți adăuga o imagine de fundal la tabloul de bord pentru a conferi datelor mai multă personalitate și context.

Pasul 9: SMS

SMS
SMS

Să creăm o alertă SMS ori de câte ori cântarul măsoară greutatea. Asigurați-vă că este încărcată cupa de date despre istoricul greutății.

  1. Faceți clic pe setările bucket-ului (sub numele său) în fereastra bucket-ului de date.
  2. Faceți clic pe fila Declanșatoare.
  3. Selectați fluxul de date pe care să îl activați. Puteți utiliza lista derulantă pentru a selecta din fluxurile existente odată ce s-a încărcat o bucată de date sau puteți introduce manual numele / cheia fluxului. În exemplul de captură de ecran de mai sus, este selectat „Actualizare”.
  4. Selectați operatorul condițional, în acest caz „potrivire”.
  5. Selectați valoarea Trigger care va declanșa o acțiune (introduceți manual valoarea dorită). Tastați lb dacă nu utilizați unități metrice sau introduceți kg dacă utilizați unități metrice. Ori de câte ori fluxul „Actualizare” conține „lb” (sau „kg”), veți primi o notificare de mesaj text.
  6. Faceți clic pe butonul „+” pentru a adăuga condiția Trigger.
  7. Introduceți adresa de e-mail sau numărul de telefon în câmpul „Contacte de notificat”.
  8. Faceți clic pe butonul „+” pentru a adăuga informațiile de contact.
  9. Introduceți orice cod de verificare dacă adăugați un nou număr de telefon pentru a finaliza configurarea.
  10. Faceți clic pe butonul Terminat din partea de jos pentru a reveni la ecranul principal. Declanșatorul dvs. este acum activ și se va declanșa când condiția este îndeplinită.

După finalizarea configurării, veți primi un SMS de fiecare dată când vă cântăriți, care conține greutatea dvs., cât de mult s-a schimbat greutatea dvs. de la ultima măsurare și o glumă / insultă / compliment aleatoriu.

Pasul 10: Concluzie

Există opțiuni nelimitate pentru a vă baza pe ceea ce ați creat acum. Iată câteva idei pentru acest proiect:

  • Puteți transmite în flux date din alte surse în același tablou de bord al istoricului de greutate (informații) pentru a crea propriul tablou de bord personal pentru sănătate.
  • Puteți schimba glumele în funcțiile messageWeighFirst, messageWeighLess, messageWeighMore și messageWeighSame după propriul simț al umorului.
  • Puteți schimba glumele în mesaje practice sau le puteți elimina și puteți utiliza codul scalei pentru a urmări greutatea a ceva mai important în afară de propria greutate corporală.
  • Puteți crea propriul frigider inteligent pentru bere / vin folosind aceeași abordare. Există deja un tutorial minunat făcut pentru asta aici.

Hack departe și anunță-mă dacă acest tutorial te inspiră să creezi ceva uimitor.

Recomandat: