Indholdsfortegnelse:

Raspberry Pi Smart Scale: 10 trin (med billeder)
Raspberry Pi Smart Scale: 10 trin (med billeder)

Video: Raspberry Pi Smart Scale: 10 trin (med billeder)

Video: Raspberry Pi Smart Scale: 10 trin (med billeder)
Video: Course Lesson 10 of 10: Controlling Raspberry Pi Pico 4WD Smart Car Kit with mobile App 2024, Juli
Anonim
Image
Image

Er du træt af at stirre på den kedelige, gamle, dårlige nyheds badevægt hver morgen? Den, som du ofte siger "jeg hader dig" til dig som hver gang du træder på den. Hvorfor har ingen lavet en skala, der faktisk er sjov eller motiverende at bruge? Det er på tide at oprette en skala, der ikke kun er smart, men som har lidt mere personlighed til at gøre din dag lysere. Vi kommer til at bygge vores helt egen hackbare, vægtsporende, sms-badeværelsesvægt, der leveres med en indbygget sans for humor.

Dette er et sjovt, let projekt, der kombinerer et Wii-balancebræt, en Raspberry Pi og en online dataanalyseplatform til at oprette en web-tilsluttet skala styret af et Python-script, du kan hacke.

Projektniveau: Begynder Omtrentlig tid til at fuldføre: 20 minutter Sjov faktor: Umålelig

I denne trin-for-trin vejledning vil du:

  • tilslut et Wii -balancebræt til en Raspberry Pi via bluetooth, kør et Python -script, der måler din vægt, når du træder på balancebrættet
  • brug en Raspberry Pi til at streame din vægt til en skytjeneste (oprindelig tilstand)
  • opsæt en SMS -besked hver gang du vejer dig selv
  • opbyg et vægtsporings dashboard, du kan få adgang til i din webbrowser

Trin 1: Udstyr

Wii Balance Board skala
Wii Balance Board skala

Her er en liste over alt det udstyr, vi vil bruge i denne vejledning med links til, hvor du kan købe hvert element.

  • Raspberry Pi 3 med et SD -kort og strømforsyning (https://init.st/psuufmj)
  • Wii Balance Board (https://init.st/qg4ynjl)
  • Wii Fit genopladeligt batteri (https://init.st/iyypz2i)
  • 3/8 "filtpuder (https://init.st/8gywmjj)
  • Blyant (jeg giver dig ikke et link til, hvor du kan købe en blyant … du bør eje en af disse)

Bemærk: Hvis du har en Raspberry Pi 1 eller 2, skal du bruge en bluetooth -adapter (https://init.st/7y3bcoe)

Trin 2: Wii Balance Board Scale

Hvorfor et Wii Balance Board? Det viser sig, at det er en virkelig flot, holdbar vægt, der har bluetooth -forbindelse. Dette giver os mulighed for at forbinde den til en enkelt-board computer (Raspberry Pi) for at læse din vægt i et Python-script og sende disse målinger til en online datatjeneste for at lave fede ting. Derudover er der en god chance for, at du eller en du kender allerede har en, der simpelthen samler støv.

Vi bliver nødt til at foretage et par enkle ændringer af vores Wii Balance Board for virkelig at gøre dette projekt praktisk og bekvemt.

Trin 3: Bluetooth -opsætning

Raspberry Pi 3 leveres med indbygget bluetooth, alt hvad vi har brug for for at kommunikere med Wii Balance Board. Hvis du har en Raspberry Pi 1 eller 2, skal vi bruge en af vores USB -porte til at tilslutte en adapter.

Tænd din Pi (jeg går ud fra, at du allerede har installeret Raspbian, og den starter op) og gå til dit Raspberry Pi -terminalvindue. Du kan se adressen på din bluetooth dongle med kommandoen "hcitool dev":

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

Installer bluetooth -modulerne, som vi vil bruge i vores Python -scripts:

$ sudo apt-get install python-bluetooth

Efter installationen er klar, er vi klar til at oprette forbindelse og kommunikere med Wii Balance Board. Vi parrer ikke vores board permanent med vores Pi, som vi gør med de fleste af vores bluetooth -enheder. Wii Balance Board var aldrig beregnet til at blive parret med andet end en Wii, og permanent parring viste sig at være en ganske forvirrende udfordring. Parring sker hver gang vi kører vores Python -script.

Trin 4: Læsning af skalaen

Det er tid til at forbinde vores Wii Balance Board til vores Raspberry Pi. Vi gør dette ved at ændre en version af Stavros Korokithakis 'Gr8W8Upd8M8.py -script (https://github.com/skorokithakis/gr8w8upd8m8). Det python -script, vi vil bruge til dette trin, er placeret her. Du kan kopiere indholdet af denne fil til en fil, du opretter på din Raspberry Pi, eller du kan klone alle de python -filer, vi vil bruge til hele dette projekt. Lad os gøre det sidste. Indtast følgende kommandoer i en terminal på din Raspberry Pi:

$ cd ~ $ git klon $ git klon https: github.com/initialstate/smart-scale.git kloning til 'smart-skala' … fjernbetjening: Tælling af objekter: 14, udført. fjernbetjening: Komprimering af objekter: 100% (12/12), udført. fjernbetjening: I alt 14 (delta 1), genbrugt 8 (delta 0), pakke genbrugt 0 Udpakning af objekter: 100% (14/14), færdig. Kontrol af forbindelse … udført.

kloning i 'smart-skala' … fjernbetjening: Tælling af objekter: 14, udført. fjernbetjening: Komprimering af objekter: 100% (12/12), udført. remote: Total 14 (delta 1), genbrugt 8 (delta 0), pack genbrugt 0 Udpakning af objekter: 100% (14/14), færdig. Kontrol af forbindelse … udført.

Du skulle se to python -filer i den nye smart -skala bibliotek - smartscale.py og wiiboard_test.py.

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

Kør wiiboard_test.py -scriptet for at teste kommunikation og tage vægtmålinger fra Wii Balance Board:

$ sudo python wiiboard_test.py

Du vil se følgende svar:

Opdager bord … Tryk nu på den røde synkroniseringsknap på tavlen

Fjern batteridækslet under kortet for at finde den røde synkroniseringsknap. Sørg for at trykke på knappen inden for et par sekunder efter at scriptet er kørt, ellers vil der opstå en timeout. Når det lykkes, vil du se noget, der ligner følgende:

Fandt Wiiboard på adresse 00: 23: CC: 2E: E1: 44 Prøver at oprette forbindelse … Tilsluttet Wiiboard på adresse 00: 23: CC: 2E: E1: 44Wiiboard tilsluttetACK til dataskrivning modtaget84.9185297 lbs84.8826412 lbs84.9275927 lbs

Wiiboard_test.py -scriptet tager det antal vægtmålinger, der er angivet på linje 10, og udsender gennemsnittet:

# --------- Brugerindstillinger --------- WEIGHT_SAMPLES = 500# ------------------------- --------

Du kan lege med dette tal ved at ændre værdien og køre scriptet igen for at se variationen i vægt målt og den nødvendige tid for hver måling. Vejer dig selv, vejer din hund, vejer hvad som helst og se om målingerne giver mening. Tryk på CTRL+C for at stoppe scriptet.

Du har nu med succes konverteret dit Wii Balance Board til en Raspberry Pi tilsluttet skala. Lad os nu gøre det til en cool skala.

Trin 5: Hardwaretilpasninger

Hardware tweaks
Hardware tweaks

Nintendo antog, at du altid ville drive dit Wii Balance Board med fire AA -batterier og inkluderede ingen lysnetadapter. Kun at have batteristrøm ville være ubelejligt, fordi vi ikke permanent kan parre vores Wii Board til vores Pi via bluetooth. Vi skal synkronisere det og derefter lade det forblive synkroniseret uden at dræne batterierne, så vi simpelthen kan træde på vægten og veje. Heldigvis er der flere tredjepartsadaptere lavet til Wii Balance Board, som vi kan bruge til at levere konstant strøm fra en stikkontakt. Udskift batterierne med en batteripakke, og sæt lysnetadapteren i en stikkontakt.

At skulle parre Wii Balance Board og Raspberry Pi hver gang vi kører vores Python -script, giver endnu en ulempe på grund af placeringen af synkroniseringsknappen. Synkroniseringsknappen er nederst på Wii Board, hvilket betyder, at vi bliver nødt til at vende den hver gang, vi skal synkronisere. Vi kan løse dette ved at lave et lille håndtag ved hjælp af en blyant og tre 3/8 "filtpuder som vist ovenfor. Den genopladelige batteripakke udsætter synkroniseringsknappen til undersiden af brættet. Tape en blyant (eller noget lignende), der spænder over fra synkroniseringsknappen til ydersiden af brættet. Stak tre 3/8 "filtpuder (eller noget lignende) på midten af blyanten for at skabe en stationær drejning. Vær forsigtig med ikke at udsætte for meget af blyanten ud af brættet, da du ikke vil have, at nogen ved et uheld sparker den ud. Vend brættet om, og du kan trykke på synkroniseringsknappen ved blot at trykke ned på håndtaget. Lidt af et hack, men effektivt.

Afhængigt af hvordan du opbevarer dit Wii Board, kan du fjerne gummigrebene fra tavlens fødder (puderne er simpelthen klistermærker, du kan lirke af). 3/8 filtpuder kan placeres på tavlens fødder for let glidning.

Trin 6: Oprindelig tilstand

Oprindelig tilstand
Oprindelig tilstand

Vi vil streame vores vægt/data til en cloud -tjeneste og få den service til at gøre vores data til et flot dashboard, som vi kan få adgang til fra vores bærbare eller mobile enhed. Vores data har brug for en destination. Vi vil bruge Initial State som denne destination.

Trin 1: Registrer dig til den oprindelige statskonto Gå til https://iot.app.initialstate.com og opret en ny konto.

Trin 2: Installer ISStreamer Installer Initial State Python -modulet på din Pi: Ved en kommandoprompt (glem ikke at SSH ind i din Pi først), kør følgende kommando:

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

Trin 3: Lav noget Automagic Efter trin 2 vil du se noget, der ligner følgende output til skærmen:

pi@raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o -| sudo bashPassword: Begyndende ISStreamer Python Nem installation! Dette kan tage et par minutter at installere, få en kop kaffe:) Men glem ikke at komme tilbage, jeg har spørgsmål senere!

Fundet easy_install: setuptools 1.1.6

Fundet pip: pip 1.5.6 fra /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip major version: 1 pip minor version: 5 ISStreamer fundet, opdaterer … Krav allerede opdateret: ISStreamer i /Library/Python/2.7/site-packages Rydder op … Vil du automatisk få et eksempel script? [y/N]

(output kan være anderledes og tage længere tid, hvis du aldrig har installeret Python -streamingmodulet i den oprindelige tilstand før)

Når du bliver bedt om automatisk at hente et eksempel script, skal du skrive y. Dette vil oprette et test script, som vi kan køre for at sikre, at vi kan streame data til Initial State fra vores Pi. Du bliver bedt om:

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

Du kan enten skrive en tilpasset lokal sti eller trykke på enter for at acceptere standarden. Du bliver bedt om dit brugernavn og din adgangskode, som du lige har oprettet, da du registrerede din oprindelige statskonto. Indtast begge, og installationen fuldføres.

Trin 4: Adgangstaster

Lad os se på eksemplet på script, der blev oprettet.

$ nano er_eksempel.py

På linje 15 vil du se en linje, der starter med streamer = Streamer (bucket_…. Disse linjer opretter en ny databucket med navnet "Python Stream -eksempel" og er tilknyttet din konto. Denne tilknytning sker på grund af access_key = "…" parameter på den samme linje. Den lange række bogstaver og tal er din adgangsnøgle til din oprindelige statskonto. Hvis du går til din oprindelige statskonto i din webbrowser, skal du klikke på dit brugernavn øverst til højre og derefter gå til "Mine indstillinger", finder du den samme adgangsnøgle nederst på siden under "Streamingadgangsnøgler".

Hver gang du opretter en datastrøm, leder denne adgangsnøgle datastrømmen til din konto (så del ikke din nøgle med nogen).

Trin 5: Kør eksemplet

Kør testskriptet for at sikre, at vi kan oprette en datastrøm til din Initial State -konto. Kør følgende:

$ python er_eksempel.py

Trin 6: Profit

Gå tilbage til din Initial State -konto i din webbrowser. En ny dataskovl kaldet "Python Stream -eksempel" skulle have vist sig til venstre i din loghylde (du skal muligvis opdatere siden). Du kan se dataene i fliser for at se de samme data i instrumentbrætform.

Trin 7: Endelig script

Forudsat at du kørte kommandoen "git clone https://github.com/InitialState/smart-scale.git" i del 2, kaldes det sidste script, der sætter alt sammen smartscale.py i din ~/smart-skala bibliotek. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Et par indstillinger skal angives i scriptet, før du kan køre det. Åbn smartscale.py i din foretrukne tekstredigerer, f.eks. Nano.

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

I nærheden af toppen af denne fil er der en sektion for brugerindstillinger.

# --------- Brugerindstillinger --------- BUCKET_NAME = ": apple: Min vægthistorik" BUCKET_KEY = "weight11" ACCESS_KEY = "PLACER DIN INDLEDENDE STATTILGANG NØGLE HER" METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7# ---------------------------------

  • BUCKET_NAME indstiller navnet på den første tilstandsdatabucket, som din vægt/data vil blive streamet ind i. Dette kan indstilles her og ændres senere i brugergrænsefladen.
  • BUCKET_KEY er den unikke bucket -id, der angiver, hvor dine data skal strømme ind. Hvis du vil oprette en anden spand/dashboard, skal du bruge en anden identifikator her (*Bemærk, hvis du arkiverer en spand, kan du ikke genbruge dens nøgle i en ny spand).
  • ACCESS_KEY er din initialstatokontonøgle. Hvis du ikke angiver din ACCESS_KEY i dette felt, vises dine data ikke på din konto.
  • METRIC_UNITS giver dig mulighed for at angive din vægt i kg, hvis den er indstillet til True eller lb, hvis den er indstillet til Falsk.
  • WEIGHT_SAMPLES angiver, hvor mange målinger der tages og beregnes i gennemsnit for at få din faktiske vægt. 500 målinger tager cirka 4-5 sekunder og giver ret præcise resultater.
  • THROWAWAY_SAMPLES angiver antallet af prøver, der smides væk, når du første gang træder på tavlen. Dette forhindrer de indledende trin og forskydning i at kaste den endelige måling væk. Dette bør altid være meget mindre end WEIGHT_SAMPLES.
  • WEIGHT_HISTORY indstiller antallet af målinger, der skal foretages, før der sendes en ekstra opdatering. Kun målinger taget med to timers mellemrum eller mere tæller med i historien.

Når du har angivet hver parameter i dette afsnit og gemt dine ændringer, er du klar til at køre det sidste script. Inden vi kører scriptet, lad os gå igennem, hvad det skal gøre.

  • I starten af scriptet bliver du bedt om at parre dit Wii Balance Board med din Raspberry Pi. Brug håndtaget, som du hackede sammen i sektion Del 2: Hardware Tweaks til at trykke på synkroniseringsknappen, når du bliver bedt om det.
  • Når scriptet kører, skal du træde på Wii Board for at begynde at måle din vægt. Efter 4-5 sekunder vil din vægt automatisk blive sendt til din initialstatuskonto.
  • Efter at vi har konfigureret SMS -meddelelser (i et par trin), modtager du en sms kort efter din måling.

Kør scriptet for at starte magien.

$ sudo python smartscale.py

Trin 8: Dashboard

Dashboard
Dashboard

Gå til din Initial State -konto, og klik på den nye dataskovl med navnet svarende til parameteren BUCKET_NAME (dvs. Min vægthistorik). Klik på fliser for at se dit vægthistorik dashboard. Du skulle se tre fliser første gang du ser dine data i fliser - Opdatering, Vægtdato og Vægt (lb). Du kan tilpasse dit dashboard ved at ændre størrelse og flytte fliser samt ændre visningstyper og endda tilføje fliser. Dette instrumentbræt giver dig mulighed for at se din vægthistorik på et øjeblik. Det er mobilvenligt, og du kan endda dele det med andre mennesker.

Du kan tilføje et baggrundsbillede til dit dashboard for at give dine data mere personlighed og kontekst.

Trin 9: SMS

SMS
SMS

Lad os oprette en SMS -advarsel, når vægten tager en vægtmåling. Sørg for, at din dataoverførselsbøtte for vægthistorik er indlæst.

  1. Klik på skovlens indstillinger (under dets navn) i dataskovlvinduet.
  2. Klik på fanen Triggers.
  3. Vælg den datastrøm, der skal udløses. Du kan bruge rullelisten til at vælge fra eksisterende streams, når en dataskovl er indlæst, eller du kan indtaste strømnavnet/-tasten manuelt. I skærmbilledet ovenfor ovenfor er "Opdatering" valgt.
  4. Vælg den betingede operator, i dette tilfælde 'match'.
  5. Vælg den triggerværdi, der skal udløse en handling (indtast den ønskede værdi manuelt). Indtast lb, hvis du ikke bruger metriske enheder, eller indtast i kg, hvis du bruger metriske enheder. Hver gang strømmen "Opdatering" indeholder "lb" (eller "kg"), får du en sms -meddelelse.
  6. Klik på knappen '+' for at tilføje udløsertilstanden.
  7. Indtast din e -mail -adresse eller telefonnummer i feltet "Kontakter, der skal underrettes".
  8. Klik på knappen '+' for at tilføje kontaktoplysningerne.
  9. Indtast enhver verifikationskode, hvis du tilføjer et nyt telefonnummer for at fuldføre opsætningen.
  10. Klik på knappen Udført i bunden for at vende tilbage til hovedskærmen. Din trigger er nu live og aktiveres, når betingelsen er opfyldt.

Når opsætningen er fuldført, får du en SMS hver gang du vejer dig selv, der indeholder din vægt, hvor meget din vægt har ændret sig siden den sidste måling og en tilfældig vittighed / fornærmelse / kompliment.

Trin 10: Konklusion

Der er ubegrænsede muligheder for dig at bygge videre på det, du nu har oprettet. Her er nogle ideer til dette projekt:

  • Du kan streame data fra andre kilder til det samme vægthistoriske dashboard (info) for at oprette dit eget personlige sundhedsdashboard.
  • Du kan ændre vittighederne i funktionerne messageWeighFirst, messageWeighLess, messageWeighMore og messageWeighSame til din egen sans for humor.
  • Du kan ændre vittighederne til praktiske beskeder eller fjerne dem og bruge skalakoden til at spore vægten af noget mere vigtigt udover din egen kropsvægt.
  • Du kan oprette dit eget smarte øl/vinkøleskab ved hjælp af den samme fremgangsmåde. Der er allerede lavet en fantastisk tutorial til det her.

Hack væk og lad mig vide, hvis denne vejledning inspirerer dig til at skabe noget fantastisk.

Anbefalede: