Innholdsfortegnelse:

Raspberry Pi Smart Scale: 10 trinn (med bilder)
Raspberry Pi Smart Scale: 10 trinn (med bilder)

Video: Raspberry Pi Smart Scale: 10 trinn (med bilder)

Video: Raspberry Pi Smart Scale: 10 trinn (med bilder)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Juli
Anonim
Image
Image

Er du lei av å stirre på den kjedelige, gamle, dårlige nyheten badevekten hver morgen? Den som du ofte sier "jeg hater deg" til deg som hver gang du tråkker på den. Hvorfor har ingen laget en skala som faktisk er morsom eller motiverende å bruke? Det er på tide å lage en skala som ikke bare er smart, men som har litt mer personlighet for å gjøre dagen din lysere. Vi skal bygge vår egen, hackbare, vektsporende, tekstmeldingsbadevekt som kommer med en innebygd humor.

Dette er et morsomt, enkelt prosjekt som kombinerer et Wii-balansekort, en Raspberry Pi og en online dataanalyseplattform for å lage en nettilkoblet skala kontrollert av et Python-skript du kan hacke.

Prosjektnivå: Nybegynner Omtrentlig tid til å fullføre: 20 minutter Morsom faktor: Umålelig

I denne trinnvise opplæringen vil du:

  • koble et Wii -balansekort til en Raspberry Pi gjennom bluetooth, kjør et Python -skript som måler vekten din når du går på balansekortet
  • bruk en Raspberry Pi for å strømme vekten din til en skytjeneste (opprinnelig tilstand)
  • konfigurer et SMS -varsel hver gang du veier deg
  • bygge et dashbord for vektsporing du kan få tilgang til i nettleseren din

Trinn 1: Utstyr

Wii Balance Board skala
Wii Balance Board skala

Her er en liste over alt utstyret vi skal bruke i denne opplæringen med lenker til hvor du kan kjøpe hvert element.

  • Raspberry Pi 3 med SD -kort og strømforsyning (https://init.st/psuufmj)
  • Wii Balance Board (https://init.st/qg4ynjl)
  • Wii Fit oppladbar batteripakke (https://init.st/iyypz2i)
  • 3/8 "filtputer (https://init.st/8gywmjj)
  • Blyant (jeg gir deg ikke en lenke til hvor du kan kjøpe en blyant … du bør eie en av disse)

Merk: Hvis du har en Raspberry Pi 1 eller 2, trenger du en Bluetooth -adapter (https://init.st/7y3bcoe)

Trinn 2: Wii Balance Board Scale

Hvorfor et Wii Balance Board? Det viser seg at det er en veldig fin, holdbar skala som har Bluetooth -tilkobling. Dette vil tillate oss å koble den til en enkeltbrett-datamaskin (Raspberry Pi) for å lese vekten din i et Python-skript og sende disse målingene til en online datatjeneste for å gjøre kule ting. I tillegg er det en god sjanse for at du eller noen du kjenner allerede har en som bare samler støv.

Vi må gjøre et par enkle modifikasjoner av Wii Balance Board for å virkelig gjøre dette prosjektet praktisk og praktisk.

Trinn 3: Bluetooth -oppsett

Raspberry Pi 3 leveres med innebygd bluetooth, alt vi trenger for å kommunisere med Wii Balance Board. Hvis du har en Raspberry Pi 1 eller 2, må vi bruke en av våre USB -porter for å koble til en adapter.

Slå på Pi -en din (jeg antar at du allerede har installert Raspbian og starter opp) og gå til Raspberry Pi -terminalvinduet. Du kan se adressen til din Bluetooth -dongle med kommandoen "hcitool dev":

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

Installer bluetooth -modulene som vi skal bruke i våre Python -skript:

$ sudo apt-get install python-bluetooth

Etter at installasjonen er fullført, er vi klare til å koble til og kommunisere med Wii Balance Board. Vi vil ikke permanent koble styret vårt med Pi som vi gjør med de fleste av våre bluetooth -enheter. Wii Balance Board var aldri ment å være sammenkoblet med noe annet enn en Wii, og permanent sammenkobling viste seg å være en ganske forvirrende utfordring. Paring vil skje hver gang vi kjører Python -skriptet vårt.

Trinn 4: Lesing av skalaen

Det er på tide å koble Wii Balance Board til Raspberry Pi. Vi vil gjøre dette ved å endre en versjon av Stavros Korokithakis 'Gr8W8Upd8M8.py -skript (https://github.com/skorokithakis/gr8w8upd8m8). Python -skriptet vi skal bruke for dette trinnet ligger her. Du kan kopiere innholdet i denne filen til en fil du oppretter på Raspberry Pi, eller du kan klone alle pythonfilene vi skal bruke for hele dette prosjektet. La oss gjøre det siste. Skriv inn følgende kommandoer i en terminal på Raspberry Pi:

$ cd ~ $ git klon $ git klon https: github.com/initialstate/smart-scale.git kloning til 'smart-skala' … fjernkontroll: Teller objekter: 14, ferdig. fjernkontroll: Komprimering av objekter: 100% (12/12), ferdig. fjernkontroll: Totalt 14 (delta 1), gjenbrukt 8 (delta 0), pakke gjenbrukt 0 Utpakning av objekter: 100% (14/14), ferdig. Kontrollerer tilkobling… gjort.

kloning til 'smart-skala' … fjernkontroll: Teller objekter: 14, ferdig. fjernkontroll: Komprimering av objekter: 100% (12/12), ferdig. fjernkontroll: Totalt 14 (delta 1), gjenbrukt 8 (delta 0), pakke gjenbrukt 0 Utpakning av objekter: 100% (14/14), ferdig. Kontrollerer tilkobling… gjort.

Du bør se to python -filer i den nye smartskala -katalogen - smartscale.py og wiiboard_test.py.

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

Kjør wiiboard_test.py -skriptet for å teste kommunikasjon og ta vektavlesninger fra Wii Balance Board:

$ sudo python wiiboard_test.py

Du vil se følgende svar:

Oppdager brettet … Trykk på den røde synkroniseringsknappen på brettet nå

Fjern batteridekselet under kortet for å finne den røde synkroniseringsknappen. Sørg for at du trykker på knappen innen noen få sekunder etter at du har kjørt skriptet, ellers vil det oppstå en timeout. Når du er vellykket, vil du se noe som ligner på følgende:

Fant Wiiboard på adresse 00: 23: CC: 2E: E1: 44 Prøver å koble til … Koblet til Wiiboard på adresse 00: 23: CC: 2E: E1: 44Wiiboard tilkoblet TILBAKE til dataskriving mottatt84.9185297 lbs84.8826412 lbs84.9275927 lbs

Skriptet wiiboard_test.py tar antallet vektmålinger som er angitt på linje 10 og sender ut gjennomsnittet:

# --------- Brukerinnstillinger --------- WEIGHT_SAMPLES = 500# ------------------------- --------

Du kan leke med dette tallet ved å endre verdien og kjøre skriptet på nytt for å se variasjonen i vekt målt og tid som kreves for hver måling. Vei deg selv, veie hunden din, veie hva som helst og se om målingene gir mening. Trykk CTRL+C for å stoppe skriptet.

Du har nå konvertert Wii Balance Board til en Raspberry Pi -tilkoblet skala. La oss gjøre det til en kul skala.

Trinn 5: Maskinvaretilpasninger

Maskinvaretilpasninger
Maskinvaretilpasninger

Nintendo antok at du alltid ville drive Wii Balance Board med fire AA -batterier og inkluderte ingen strømadapter. Bare å ha batteristrøm ville være upraktisk fordi vi ikke permanent kan koble Wii -kortet vårt til Pi -en vår via bluetooth. Vi må synkronisere den og deretter la den forbli synkronisert uten å tømme batteriene, slik at vi bare kan gå på vekten og veie. Heldigvis er det flere tredjepartsadaptere laget for Wii Balance Board som vi kan bruke til å levere konstant strøm fra en stikkontakt. Bytt batteriene med en batteripakke og koble strømadapteren til en stikkontakt.

Å måtte koble Wii Balance Board og Raspberry Pi hver gang vi kjører Python -skriptet, gir en annen ulempe på grunn av plasseringen av synkroniseringsknappen. Synkroniseringsknappen er nederst på Wii Board, noe som betyr at vi må snu den hver gang vi trenger å synkronisere. Vi kan fikse dette ved å lage en liten spak ved hjelp av en blyant og tre 3/8 "filtputer som vist ovenfor. Den oppladbare batteripakken avslører synkroniseringsknappen til undersiden av brettet. Tape en blyant (eller noe lignende) som strekker seg over fra synkroniseringsknappen til utsiden av brettet. Sett tre 3/8 "filtputer (eller noe lignende) på midten av blyanten for å lage en stasjonær sving. Vær forsiktig så du ikke avslører for mye av blyanten fra tavlen, da du ikke vil at noen ved et uhell skal sparke den ut. Snu brettet og du kan trykke på synkroniseringsknappen ved å trykke ned spaken. Litt hack men effektivt.

Avhengig av hvordan du lagrer Wii -brettet ditt, kan det være lurt å fjerne gummigrepene fra brettets føtter (putene er ganske enkelt klistremerker du kan lirke av). 3/8 filtputer kan plasseres på brettets føtter for enkel glidning.

Trinn 6: Opprinnelig tilstand

Opprinnelige tilstand
Opprinnelige tilstand

Vi ønsker å streame vekten/dataene våre til en skytjeneste og få denne tjenesten til å gjøre dataene våre til et fint dashbord som vi kan få tilgang til fra vår bærbare eller mobile enhet. Våre data trenger en destinasjon. Vi vil bruke Initial State som den destinasjonen.

Trinn 1: Registrer deg for den første statskontoen Gå til https://iot.app.initialstate.com og opprett en ny konto.

Trinn 2: Installer ISStreamer Installer Initial State Python -modulen på Pi: Ved en ledetekst (ikke glem å SSH inn i Pi først), kjør følgende kommando:

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

Trinn 3: Lag litt Automagic Etter trinn 2 vil du se noe som ligner på følgende utgang til skjermen:

pi@raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o -| sudo bashPassword: Start ISStreamer Python Enkel installasjon! Dette kan ta et par minutter å installere, ta en kaffe:) Men ikke glem å komme tilbake, jeg har spørsmål senere!

Fant easy_install: setuptools 1.1.6

Funnet pip: pip 1.5.6 fra /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip major versjon: 1 pip minor versjon: 5 ISStreamer funnet, oppdaterer … Krav allerede oppdatert: ISStreamer i /Library/Python/2.7/site-packages Rydder opp … Vil du automatisk få et eksempelskript? [y/N]

(utgangen kan være annerledes og ta lengre tid hvis du aldri har installert Python Streaming -modulen Initial State før)

Når du blir bedt om å automatisk få et eksempelskript, skriver du y. Dette vil opprette et testskript som vi kan kjøre for å sikre at vi kan streame data til Initial State fra Pi. Du vil bli bedt om:

Hvor vil du lagre eksemplet? [standard:./is_example.py]:

Du kan enten skrive en tilpasset lokal bane eller trykke enter for å godta standarden. Du vil bli bedt om brukernavn og passord du nettopp opprettet da du registrerte din opprinnelige statskonto. Skriv inn begge og installasjonen vil fullføres.

Trinn 4: Tilgangstaster

La oss se på eksempelskriptet som ble opprettet.

$ nano er_eksempel.py

På linje 15 vil du se en linje som starter med streamer = Streamer (bucket_…. Disse linjene oppretter en ny databøtte med navnet "Python Stream -eksempel" og er knyttet til kontoen din. Denne tilknytningen skjer på grunn av access_key = "…" parameteren på den samme linjen. Den lange serien med bokstaver og tall er tilgangsnøkkelen til din opprinnelige statskonto. Hvis du går til din opprinnelige statskonto i nettleseren din, klikker du på brukernavnet ditt øverst til høyre, og deretter går du til "Mine innstillinger", finner du den samme tilgangsnøkkelen nederst på siden under "Streaming Access Keys".

Hver gang du oppretter en datastrøm, vil tilgangsnøkkelen lede datastrømmen til kontoen din (så ikke del nøkkelen med noen).

Trinn 5: Kjør eksemplet

Kjør testskriptet for å sikre at vi kan opprette en datastrøm til din opprinnelige statskonto. Kjør følgende:

$ python er_eksempel.py

Trinn 6: Profitt

Gå tilbake til din opprinnelige statskonto i nettleseren din. En ny databøtte kalt "Python Stream -eksempel" burde ha dukket opp til venstre i logghyllen din (du må kanskje oppdatere siden). Du kan se dataene i fliser for å se de samme dataene i dashbordform.

Trinn 7: Endelig manus

Forutsatt at du kjørte kommandoen "git clone https://github.com/InitialState/smart-scale.git" i del 2, kalles det siste skriptet som setter alt sammen smartscale.py i katalogen ~/smart-skala. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Noen få innstillinger må angis i skriptet før du kan kjøre det. Åpne smartscale.py i ditt favoritt tekstredigeringsprogram, for eksempel nano.

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

Nær toppen av denne filen er det en brukerinnstillinger -seksjon.

# --------- Brukerinnstillinger --------- BUCKET_NAME = ": apple: Min vektlogg" BUCKET_KEY = "weight11" ACCESS_KEY = "PLASSER DITT INNSTALLLIGE TILGANG NØKKEL HER" METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7# ---------------------------------

  • BUCKET_NAME angir navnet på data -bøtten for opprinnelige tilstander som vekten/dataene dine blir streamet til. Dette kan settes her og endres senere i brukergrensesnittet.
  • BUCKET_KEY er den unike bøtte -identifikatoren som angir hvor dataene dine skal strømme inn. Hvis du vil opprette en annen bøtte/dashbord, bruker du en annen identifikator her (*merk, hvis du arkiverer en bøtte, kan du ikke bruke nøkkelen på nytt i en ny bøtte).
  • ACCESS_KEY er kontonøkkelen til den opprinnelige staten. Hvis du ikke legger inn ACCESS_KEY i dette feltet, vil ikke dataene dine vises i kontoen din.
  • METRIC_UNITS lar deg spesifisere vekten din i kg hvis den er satt til True eller lb hvis den er satt til False.
  • WEIGHT_SAMPLES angir hvor mange målinger som måles og beregnes i gjennomsnitt for å få din faktiske vekt. 500 målinger tar omtrent 4-5 sekunder og gir ganske nøyaktige resultater.
  • THROWAWAY_SAMPLES angir antall prøver som kastes når du først tråkker på brettet. Dette forhindrer at de første trinnene og skiftet fra å kaste den endelige målingen. Dette bør alltid være mye mindre enn WEIGHT_SAMPLES.
  • WEIGHT_HISTORY angir antall målinger som er tatt før en ekstra oppdatering sendes. Bare målinger tatt med to timers mellomrom eller mer teller med i historien.

Når du har angitt hver parameter i denne delen og lagret endringene, er du klar til å kjøre det siste skriptet. Før vi kjører skriptet, la oss gå gjennom hva det skal gjøre.

  • I begynnelsen av manuset blir du bedt om å koble Wii Balance Board med din Raspberry Pi. Bruk spaken som du hacket sammen i del Del 2: Maskinvarejusteringer for å trykke på synkroniseringsknappen når du blir bedt om det.
  • Når skriptet kjører, går du på Wii -brettet for å begynne å måle vekten din. Etter 4-5 sekunder vil vekten automatisk bli sendt til din opprinnelige statskonto.
  • Etter at vi har konfigurert SMS -varsler (i et par trinn), vil du motta en tekstmelding like etter målingen.

Kjør skriptet for å starte magien.

$ sudo python smartscale.py

Trinn 8: Dashboard

Dashboard
Dashboard

Gå til din opprinnelige tilstandskonto, og klikk på den nye databakken med navnet som tilsvarer parameteren BUCKET_NAME (dvs. Min vektlogg). Klikk på fliser for å se dashbordet for vekthistorikk. Du bør se tre fliser første gang du viser dataene dine i fliser - oppdatering, vektdato og vekt (lb). Du kan tilpasse dashbordet ditt ved å endre størrelse og flytte fliser, samt endre visningstyper og til og med legge til fliser. Dette dashbordet gir deg muligheten til å se vekthistorikken din på et øyeblikk. Det er mobilvennlig, og du kan til og med dele det med andre mennesker.

Du kan legge til et bakgrunnsbilde på dashbordet for å gi dataene dine mer personlighet og kontekst.

Trinn 9: SMS

tekstmelding
tekstmelding

La oss lage et SMS -varsel når vekten tar en vektmåling. Sørg for at datahyllen for vekthistorikk er lastet inn.

  1. Klikk på bøtteinnstillingene (under navnet) i dataskuffvinduet.
  2. Klikk på fanen Utløsere.
  3. Velg datastrømmen du vil aktivere. Du kan bruke rullegardinlisten til å velge fra eksisterende strømmer når en databøtte er lastet inn, eller du kan skrive inn strømnavnet/nøkkelen manuelt. I eksempelskjermbildet ovenfor er "Oppdater" valgt.
  4. Velg den betingede operatøren, i dette tilfellet 'match'.
  5. Velg utløserverdien som skal utløse en handling (skriv inn ønsket verdi manuelt). Skriv inn lb hvis du ikke bruker metriske enheter, eller skriv inn kg hvis du bruker metriske enheter. Hver gang strømmen "Oppdater" inneholder "lb" (eller "kg"), får du en tekstmelding.
  6. Klikk på '+' - knappen for å legge til utløsertilstanden.
  7. Skriv inn e -postadressen eller telefonnummeret ditt i feltet "Kontakter å varsle".
  8. Klikk på '+' - knappen for å legge til kontaktinformasjonen.
  9. Skriv inn en bekreftelseskode hvis du legger til et nytt telefonnummer for å fullføre oppsettet.
  10. Klikk på Ferdig -knappen nederst for å gå tilbake til hovedskjermen. Utløseren din er nå live og vil utløses når betingelsen er oppfylt.

Når oppsettet er fullført, får du en SMS hver gang du veier deg som inneholder vekten din, hvor mye vekten din har endret seg siden forrige måling, og en tilfeldig spøk / fornærmelse / kompliment.

Trinn 10: Konklusjon

Det er ubegrensede alternativer for deg å bygge på det du nå har opprettet. Her er noen ideer for dette prosjektet:

  • Du kan streame data fra andre kilder til det samme oversikten over vekthistorikk (info) for å lage ditt eget dashbord for personlig helse.
  • Du kan endre vitsene i meldingeneWeighFirst, messageWeighLess, messageWeighMore og messageWeighSame til din egen sans for humor.
  • Du kan endre vitsene til praktiske meldinger eller fjerne dem og bruke skala -koden til å spore vekten til noe viktigere enn din egen kroppsvekt.
  • Du kan lage ditt eget smarte øl/vin -kjøleskap ved hjelp av samme tilnærming. Det er allerede laget en fantastisk opplæring for det her.

Hack bort og gi meg beskjed hvis denne opplæringen inspirerer deg til å lage noe fantastisk.

Anbefalt: