Innehållsförteckning:

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

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

Video: Raspberry Pi Smart Scale: 10 steg (med bilder)
Video: Testing Stable Diffusion inpainting on video footage #shorts 2024, Juli
Anonim
Image
Image

Är du trött på att stirra på den där tråkiga, gamla, dåliga nyheterna badrumsvåg varje morgon? Den som du ofta säger "Jag hatar dig" till dig som varje gång du kliver på det. Varför har ingen gjort en skala som faktiskt är rolig eller motiverande att använda? Det är dags att skapa en skala som inte bara är smart utan som har lite mer personlighet för att lysa upp din dag. Vi kommer att bygga vår alldeles egna hackbara, viktspårande, sms-badrumsvåg som kommer med en inbyggd humor.

Detta är ett roligt, enkelt projekt som kombinerar ett Wii-balansbord, en Raspberry Pi och en dataanalysplattform online för att skapa en webbansluten skala som styrs av ett Python-skript som du kan hacka.

Projektnivå: Nybörjare Ungefärlig tid att slutföra: 20 minuter Rolig faktor: Omätbar

I denna steg-för-steg-handledning kommer du att:

  • anslut ett Wii -balanskort till en Raspberry Pi via bluetooth, kör ett Python -skript som mäter din vikt när du kliver på balanskortet
  • använd en Raspberry Pi för att strömma din vikt till en molntjänst (Initial State)
  • konfigurera ett SMS -meddelande varje gång du väger dig
  • bygga en instrumentpanel för viktspårning som du kan komma åt i din webbläsare

Steg 1: Utrustning

Wii Balance Board -skala
Wii Balance Board -skala

Här är en lista över all utrustning som vi kommer att använda i denna handledning med länkar till var du kan köpa varje objekt.

  • Raspberry Pi 3 med ett SD -kort och strömförsörjning (https://init.st/psuufmj)
  • Wii Balance Board (https://init.st/qg4ynjl)
  • Wii Fit uppladdningsbart batteripaket (https://init.st/iyypz2i)
  • 3/8 "filtkuddar (https://init.st/8gywmjj)
  • Penna (jag ger dig inte en länk till var du kan köpa en penna … du borde äga en av dessa)

Obs! Om du har en Raspberry Pi 1 eller 2 behöver du en Bluetooth -adapter (https://init.st/7y3bcoe)

Steg 2: Wii Balance Board Scale

Varför en Wii Balance Board? Det visar sig att det är en riktigt fin, hållbar skala som har bluetooth -anslutning. Detta gör att vi kan ansluta den till en enbräda dator (Raspberry Pi) för att läsa din vikt i ett Python-skript och skicka dessa mätningar till en online datatjänst för att göra coola saker. Dessutom finns det en god chans att du eller någon du känner redan har en som helt enkelt samlar damm.

Vi kommer att behöva göra ett par enkla ändringar av vårt Wii Balance Board för att verkligen göra detta projekt praktiskt och bekvämt.

Steg 3: Bluetooth -inställning

Raspberry Pi 3 levereras med inbyggd bluetooth, allt vi behöver för att kommunicera med Wii Balance Board. Om du har en Raspberry Pi 1 eller 2 måste vi använda en av våra USB -portar för att ansluta en adapter.

Slå på din Pi (jag antar att du redan har installerat Raspbian och startar upp) och gå till ditt Raspberry Pi -terminalfönster. Du kan se adressen till din bluetooth -dongel med kommandot "hcitool dev":

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

Installera Bluetooth -modulerna som vi kommer att använda i våra Python -skript:

$ sudo apt-get install python-bluetooth

När installationen är klar är vi redo att ansluta och kommunicera med Wii Balance Board. Vi kommer inte att para ihop vårt kort permanent med vår Pi som vi gör med de flesta av våra bluetooth -enheter. Wii Balance Board var aldrig avsett att kopplas ihop med något annat än en Wii, och permanent parning visade sig vara en ganska förvirrande utmaning. Parning sker varje gång vi kör vårt Python -skript.

Steg 4: Läs skalan

Det är dags att ansluta vår Wii Balance Board till vår Raspberry Pi. Vi kommer att göra detta genom att ändra en version av Stavros Korokithakis 'Gr8W8Upd8M8.py -skript (https://github.com/skorokithakis/gr8w8upd8m8). Python -skriptet som vi kommer att använda för detta steg finns här. Du kan kopiera innehållet i den här filen till en fil du skapar på din Raspberry Pi eller så kan du klona alla pythonfiler som vi kommer att använda för hela detta projekt. Låt oss göra det senare. Skriv in följande kommandon i en terminal på din Raspberry Pi:

$ cd ~ $ git klon $ git klon https: github.com/initialstate/smart-scale.git kloning till "smart-skala" … fjärrkontroll: Räkna objekt: 14, gjort. fjärrkontroll: Komprimera objekt: 100% (12/12), klart. fjärrkontroll: Totalt 14 (delta 1), återanvänd 8 (delta 0), pack återanvänd 0 Uppackning av objekt: 100% (14/14), klart. Kontrollerar anslutning … klar.

kloning till "smart-skala" … fjärrkontroll: Räkna objekt: 14, gjort. fjärrkontroll: Komprimera objekt: 100% (12/12), klart. fjärrkontroll: Totalt 14 (delta 1), återanvänd 8 (delta 0), pack återanvänd 0 Uppackning av objekt: 100% (14/14), klart. Kontrollerar anslutning … klar.

Du bör se två python -filer i den nya smartskalekatalogen - smartscale.py och wiiboard_test.py.

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

Kör wiiboard_test.py -skriptet för att testa kommunikation och ta viktavläsningar från Wii Balance Board:

$ sudo python wiiboard_test.py

Du kommer att se följande svar:

Upptäcker styrelsen … Tryck på den röda synkroniseringsknappen på kortet nu

Ta bort batteriluckan under kortet för att hitta den röda synkroniseringsknappen. Se till att du trycker på knappen inom några sekunder efter att du har kört skriptet, annars uppstår en timeout. När du väl har lyckats kommer du att se något som liknar följande:

Hittade Wiiboard på adressen 00: 23: CC: 2E: E1: 44 Försöker ansluta … Ansluten till Wiiboard på adressen 00: 23: CC: 2E: E1: 44Wiiboard anslutenACK till dataskrivning mottagen84.9185297 lbs84.8826412 lbs84.9275927 lbs

Skriptet wiiboard_test.py tar det antal viktmätningar som anges på rad 10 och matar ut genomsnittet:

# --------- Användarinställningar --------- WEIGHT_SAMPLES = 500# ------------------------- --------

Du kan spela med detta nummer genom att ändra värdet och köra skriptet igen för att se variationen i vikt uppmätt och tid som krävs för varje mätning. Väg dig själv, väg din hund, väga vad som helst och se om mätningarna är vettiga. För att stoppa manuset, tryck på CTRL+C.

Du har nu framgångsrikt konverterat din Wii Balance Board till en Raspberry Pi -ansluten skala. Nu, låt oss göra det till en cool skala.

Steg 5: Maskinvaruinställningar

Hårdvaru tweaks
Hårdvaru tweaks

Nintendo antog att du alltid skulle driva din Wii Balance Board med fyra AA -batterier och inkluderade ingen nätadapter. Att bara ha batteriström skulle vara obekvämt eftersom vi inte permanent kan koppla ihop vårt Wii -kort med vår Pi via bluetooth. Vi måste synkronisera den och sedan låta den förbli synkroniserad utan att tömma batterierna så att vi helt enkelt kan kliva på vågen och väga. Lyckligtvis finns det flera tredjepartsadaptrar gjorda för Wii Balance Board som vi kan använda för att leverera konstant ström från ett vägguttag. Byt ut batterierna mot ett batteri och anslut nätadaptern till ett vägguttag.

Att behöva koppla ihop Wii Balance Board och Raspberry Pi varje gång vi kör vårt Python -skript innebär ytterligare en olägenhet på grund av placeringen av synkroniseringsknappen. Synkroniseringsknappen finns längst ner på Wii -kortet, vilket innebär att vi måste vända den varje gång vi behöver synkronisera. Vi kan fixa detta genom att göra en liten spak med hjälp av en penna och tre 3/8 "filtkuddar som visas ovan. Det laddningsbara batteriet exponerar synkroniseringsknappen för brädans undersida. Tejpa en penna (eller något liknande) som spänner över från synkroniseringsknappen till utsidan av brädet. Stapla tre 3/8 "filtkuddar (eller något liknande) på mitten av pennan för att skapa en stationär vridning. Var noga med att inte exponera för mycket av pennan från tavlan eftersom du inte vill att någon av misstag ska sparka ut den. Vänd styrelsen och du kan trycka på synkroniseringsknappen genom att helt enkelt trycka ned spaken. Lite hack men effektivt.

Beroende på hur du förvarar din Wii -bräda kanske du vill ta bort gummigreppskuddarna från brädans fötter (kuddarna är helt enkelt klistermärken som du kan bända av). 3/8 filtkuddar kan placeras på brädans fötter för enkel glidning.

Steg 6: Ursprunglig status

Initialtillstånd
Initialtillstånd

Vi vill strömma vår vikt/data till en molntjänst och få den tjänsten att göra våra data till en trevlig instrumentpanel som vi kan komma åt från vår bärbara dator eller mobila enhet. Våra data behöver en destination. Vi kommer att använda Initial State som den destinationen.

Steg 1: Registrera dig för det första statliga kontot Gå till https://iot.app.initialstate.com och skapa ett nytt konto.

Steg 2: Installera ISStreamer Installera Initial State Python -modulen på din Pi: Vid en kommandotolk (glöm inte att SSH i din Pi först), kör följande kommando:

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

Steg 3: Gör lite Automagic Efter steg 2 ser du något som liknar följande utmatning till skärmen:

pi@raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o -| sudo bashPassword: Börjar ISStreamer Python Enkel installation! Det kan ta ett par minuter att installera, ta lite kaffe:) Men glöm inte att komma tillbaka, jag har frågor senare!

Hittade easy_install: setuptools 1.1.6

Hittade pip: pip 1.5.6 från /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 hittades, uppdaterar … Krav redan uppdaterad: ISStreamer i /Library/Python/2.7/site-packages Rengöring … Vill du automatiskt få ett exempelskript? [y/N]

(utmatningen kan vara annorlunda och ta längre tid om du aldrig har installerat Python -streamingmodulen Initial State tidigare)

När du uppmanas att automatiskt hämta ett exempelskript skriver du y. Detta skapar ett testskript som vi kan köra för att säkerställa att vi kan strömma data till Initial State från vår Pi. Du kommer att uppmanas:

Var vill du spara exemplet? [standard:./is_example.py]:

Du kan antingen skriva en anpassad lokal sökväg eller trycka på enter för att acceptera standard. Du kommer att bli ombedd att ange ditt användarnamn och lösenord som du just skapade när du registrerade ditt initiala statskonto. Ange båda och installationen slutförs.

Steg 4: Åtkomstnycklar

Låt oss ta en titt på exempelskriptet som skapades.

$ nano är_exempel.py

På rad 15 ser du en rad som börjar med streamer = Streamer (bucket_…. Dessa rader skapar en ny datahink med namnet”Python Stream Exempel” och är kopplad till ditt konto. Denna koppling sker på grund av access_key =”…” parameter på samma rad. Den där långa serien med bokstäver och siffror är din åtkomstnyckel för initialstatskontot. Om du går till ditt ursprungliga statskonto i din webbläsare klickar du på ditt användarnamn längst upp till höger och går sedan till "Mina inställningar", hittar du samma åtkomstnyckel längst ned på sidan under "Streaming Access Keys".

Varje gång du skapar en dataström, leder den åtkomstnyckeln den dataströmmen till ditt konto (så dela inte din nyckel med någon).

Steg 5: Kör exemplet

Kör testskriptet för att se till att vi kan skapa en dataström till ditt Initial State -konto. Kör följande:

$ python är_exempel.py

Steg 6: Vinst

Gå tillbaka till ditt ursprungliga statskonto i din webbläsare. En ny datahink som heter "Python Stream Exempel" borde ha dykt upp till vänster i din logghylla (du kan behöva uppdatera sidan). Du kan visa data i plattor för att se samma data i instrumentpanelform.

Steg 7: Slutskript

Förutsatt att du körde "git-klonen https://github.com/InitialState/smart-scale.git" -kommandot i del 2, kallas det sista skriptet som sätter ihop allt smartscale.py i din ~/smart-skala-katalog. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Några inställningar måste ställas in i skriptet innan du kan köra det. Öppna smartscale.py i din favorittextredigerare, till exempel nano.

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

Nära toppen av den här filen finns en sektion för användarinställningar.

# --------- Användarinställningar --------- BUCKET_NAME = ": apple: Min vikthistorik" BUCKET_KEY = "weight11" ACCESS_KEY = "PLACERA DIN INITIAL STATE ACCESS KEY HERE" METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7# ---------------------------------

  • BUCKET_NAME anger namnet på datahinkan för initialstatus som din vikt/data kommer att strömma in i. Detta kan ställas in här och ändras senare i användargränssnittet.
  • BUCKET_KEY är den unika bucket -identifieraren som anger var din data kommer att strömma in. Om du vill skapa en annan hink/instrumentpanel, använd en annan identifierare här (*notera, om du arkiverar en hink kan du inte återanvända dess nyckel i en ny hink).
  • ACCESS_KEY är din initiala statskontonyckel. Om du inte anger din ACCESS_KEY i det här fältet visas inte din data på ditt konto.
  • METRIC_UNITS låter dig ange din vikt i kg om den är inställd på True eller lb om den är inställd på False.
  • WEIGHT_SAMPLES anger hur många mätningar som görs och beräknas i genomsnitt för att få din faktiska vikt. 500 mätningar tar cirka 4-5 sekunder och ger ganska exakta resultat.
  • THROWAWAY_SAMPLES anger antalet prover som kastas när du först kliver på tavlan. Detta förhindrar att de första stegen och förskjutningen släpper från den slutliga mätningen. Detta bör alltid vara mycket mindre än WEIGHT_SAMPLES.
  • WEIGHT_HISTORY anger antalet mätningar som görs innan en extra uppdatering skickas. Endast mätningar med två timmars mellanrum räknas in i historien.

När du har angett varje parameter i det här avsnittet och sparat dina ändringar är du redo att köra det sista skriptet. Innan vi kör skriptet, låt oss gå igenom vad det ska göra.

  • I början av manuset kommer du att bli ombedd att para ihop din Wii Balance Board med din Raspberry Pi. Använd spaken som du hackade ihop i avsnitt Del 2: Hardware Tweaks för att trycka på synkroniseringsknappen när du uppmanas.
  • När skriptet körs kliver du på Wii -kortet för att börja mäta din vikt. Efter 4-5 sekunder skickas din vikt automatiskt till ditt initiala statskonto.
  • När vi har konfigurerat SMS -meddelanden (i ett par steg) får du ett textmeddelande strax efter din mätning.

Kör manuset för att starta magin.

$ sudo python smartscale.py

Steg 8: Instrumentpanel

instrumentbräda
instrumentbräda

Gå till ditt Initial State -konto och klicka på den nya datahinken med namnet som motsvarar parametern BUCKET_NAME (dvs. Min vikthistorik). Klicka på brickor för att se din vikthistorik -instrumentpanel. Du bör se tre brickor första gången du visar dina data i plattor - Uppdatering, viktdatum och vikt (lb). Du kan anpassa din instrumentpanel genom att ändra storlek och flytta brickor samt ändra vytyper och till och med lägga till brickor. Denna instrumentpanel ger dig en överblick över din vikthistorik. Det är mobilvänligt och du kan till och med dela det med andra människor.

Du kan lägga till en bakgrundsbild på din instrumentpanel för att ge dina data mer personlighet och sammanhang.

Steg 9: SMS

SMS
SMS

Låt oss skapa en SMS -varning när vågen tar en viktmätning. Se till att din vikthistorik har laddats.

  1. Klicka på skopans inställningar (under dess namn) i dataskopfönstret.
  2. Klicka på fliken Utlösare.
  3. Välj den dataström som ska aktiveras. Du kan använda listrutan för att välja från befintliga strömmar när en datahink har laddats eller du kan skriva in strömnamnet/nyckeln manuellt. I skärmdumpen ovan väljs "Uppdatera".
  4. Välj den villkorade operatören, i det här fallet "matchning".
  5. Välj utlösarvärdet som ska utlösa en åtgärd (skriv in önskat värde manuellt). Skriv in lb om du inte använder metriska enheter eller skriv in kg om du använder metriska enheter. När flödet "Uppdatering" innehåller "lb" (eller "kg") får du ett meddelande om sms.
  6. Klicka på knappen+för att lägga till utlösningsvillkoret.
  7. Ange din e -postadress eller telefonnummer i fältet "Kontakter att meddela".
  8. Klicka på knappen+för att lägga till kontaktinformation.
  9. Ange någon verifieringskod om du lägger till ett nytt telefonnummer för att slutföra installationen.
  10. Klicka på knappen Klar längst ner för att återgå till huvudskärmen. Din utlösare är nu aktiv och kommer att skjutas när villkoret är uppfyllt.

När installationen är klar får du ett SMS varje gång du väger dig som innehåller din vikt, hur mycket din vikt har förändrats sedan den senaste mätningen och ett slumpmässigt skämt / förolämpning / komplimang.

Steg 10: Slutsats

Det finns obegränsade alternativ för dig att bygga vidare på det du nu har skapat. Här är några idéer för detta projekt:

  • Du kan strömma data från andra källor till samma vikthistorik -instrumentpanel (info) för att skapa din egen instrumentpanel för personlig hälsa.
  • Du kan ändra skämt i meddelandetWeighFirst, messageWeighLess, messageWeighMore och messageWeighSame -funktionerna till din egen humor.
  • Du kan ändra skämt till praktiska meddelanden eller ta bort dem och använda skalkoden för att spåra vikten på något viktigare förutom din egen kroppsvikt.
  • Du kan skapa ditt eget smarta öl/vinkyl med samma metod. Det finns redan en fantastisk handledning för det här.

Hacka bort och meddela mig om den här självstudien inspirerar dig att skapa något fantastiskt.

Rekommenderad: