INHOUDSOPGAWE:

Raspberry Pi Smart Scale: 10 stappe (met foto's)
Raspberry Pi Smart Scale: 10 stappe (met foto's)

Video: Raspberry Pi Smart Scale: 10 stappe (met foto's)

Video: Raspberry Pi Smart Scale: 10 stappe (met foto's)
Video: Начало работы с QLC+ Управление цветомузыкой с компьютера. Как управлять светом. 2024, Julie
Anonim
Image
Image

Is u moeg daarvoor om elke oggend na die vervelige, ou, slegte nuus -badkamerskaal te staar? Die een wat u gereeld vir u 'ek haat u' sê, elke keer as u daarop trap. Waarom het niemand 'n skaal gemaak wat eintlik lekker of motiverend is om te gebruik nie? Dit is tyd om 'n skaal te skep wat nie net slim is nie, maar ook 'n bietjie meer persoonlikheid het om u dag op te vrolik. Ons gaan ons eie hackbare, gewigsopsporende, sms-badkamerskaal bou met 'n ingeboude sin vir humor.

Dit is 'n prettige, maklike projek wat 'n Wii-balansbord, 'n Raspberry Pi en 'n aanlyn-data-analise-platform kombineer om 'n met die internet gekoppelde skaal te beheer wat beheer word deur 'n Python-script wat u kan hack.

Projekvlak: Beginner Geskatte tyd om te voltooi: 20 minute Prettige faktor: onmeetbaar

In hierdie stap-vir-stap handleiding sal u:

  • koppel 'n Wii -balansbord aan 'n Raspberry Pi via bluetooth, voer 'n Python -script uit wat u gewig meet as u op die balansbord trap
  • gebruik 'n Raspberry Pi om u gewig na 'n wolkdiens te stroom (aanvanklike toestand)
  • stel 'n SMS -kennisgewing op elke keer as u uself weeg
  • bou 'n dashboard vir gewigopsporing waartoe u toegang kan verkry in u webblaaier

Stap 1: Toerusting

Wii balansbordskaal
Wii balansbordskaal

Hier is 'n lys van al die toerusting wat ons in hierdie tutoriaal gaan gebruik, met skakels na waar u elke item kan koop.

  • Raspberry Pi 3 met 'n SD -kaart en kragbron (https://init.st/psuufmj)
  • Wii Balance Board (https://init.st/qg4ynjl)
  • Wii Fit herlaaibare battery (https://init.st/iyypz2i)
  • 3/8 "viltblokkies (https://init.st/8gywmjj)
  • Potlood (ek gee u nie 'n skakel na waar u 'n potlood kan koop nie … u behoort een hiervan te besit)

Nota: as u 'n Raspberry Pi 1 of 2 het, benodig u 'n Bluetooth -adapter (https://init.st/7y3bcoe)

Stap 2: Wii Balance Board -skaal

Waarom 'n Wii Balance Board? Dit blyk dat dit 'n baie mooi, duursame weegskaal is met Bluetooth -verbinding. Dit sal ons toelaat om dit aan te sluit op 'n enkelbordrekenaar (Raspberry Pi) om u gewig in 'n Python-skrif te lees en die metings na 'n aanlyn datadiens te stuur om goeie dinge te doen. Boonop is die kans goed dat u of iemand wat u ken reeds een het wat net stof opvang.

Ons sal 'n paar eenvoudige wysigings aan ons Wii Balance Board moet aanbring om hierdie projek werklik prakties en gerieflik te maak.

Stap 3: Bluetooth -opstelling

Die Raspberry Pi 3 het ingeboude bluetooth, alles wat ons nodig het om met die Wii Balance Board te kommunikeer. As u 'n Raspberry Pi 1 of 2 het, moet ons een van ons USB -poorte gebruik om 'n adapter aan te sluit.

Skakel u Pi aan (ek neem aan dat u reeds Raspbian geïnstalleer het en dit begin) en gaan na u Raspberry Pi -eindvenster. U kan die adres van u bluetooth -dongle sien met die opdrag "hcitool dev":

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

Installeer die bluetooth -modules wat ons in ons Python -skrifte sal gebruik:

$ sudo apt-get install python-bluetooth

Nadat die installasie voltooi is, is ons gereed om aan te sluit en te kommunikeer met die Wii Balance Board. Ons sal ons bord nie permanent met ons Pi koppel nie, soos met die meeste van ons bluetooth -toestelle. Die Wii Balance Board was nooit bedoel om met iets anders as 'n Wii gekoppel te word nie, en permanente koppeling was nogal 'n verwarrende uitdaging. Elke koppeling vind plaas elke keer as ons ons Python -script uitvoer.

Stap 4: Lees die skaal

Dit is tyd om ons Wii Balance Board aan ons Raspberry Pi te koppel. Ons sal dit doen deur 'n weergawe van Stavros Korokithakis se Gr8W8Upd8M8.py -script (https://github.com/skorokithakis/gr8w8upd8m8) aan te pas. Die python -skrip wat ons vir hierdie stap gaan gebruik, is hier geleë. U kan die inhoud van hierdie lêer kopieer na 'n lêer wat u op u Raspberry Pi skep, of u kan al die python -lêers wat ons vir hierdie hele projek gebruik, kloon. Laat ons laasgenoemde doen. Tik die volgende opdragte in 'n terminale op u Raspberry Pi:

$ cd ~ $ git kloon $ git kloon https: github.com/initialstate/smart-scale.git kloning in 'slimskaal' … afstandsbediening: voorwerpe tel: 14, klaar. afgeleë: voorwerpe saamgepers: 100% (12/12), klaar. afgeleë: Totaal 14 (delta 1), hergebruik 8 (delta 0), hergebruik in pak 0 Voorwerpe uitpak: 100% (14/14), klaar. Kontroleer tans verbinding … klaar.

kloon in 'slimskaal' … afstandsbediening: voorwerpe tel: 14, klaar. afgeleë: voorwerpe saamgepers: 100% (12/12), klaar. afgeleë: Totaal 14 (delta 1), hergebruik 8 (delta 0), hergebruik in pak 0 Uitpak van voorwerpe: 100% (14/14), klaar. Kontroleer tans verbinding … klaar.

U behoort twee python -lêers in die nuwe slimskaal -gids te sien - smartscale.py en wiiboard_test.py.

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

Begin die wiiboard_test.py -script om kommunikasie te toets en gewiglesings van die Wii Balance Board af te neem:

$ sudo python wiiboard_test.py

U sal die volgende antwoord sien:

Ontdek bord … Druk nou die rooi sinkroniseringsknoppie op die bord

Verwyder die batteryklep onder die bord om die rooi sync -knoppie te vind. Maak seker dat u die knoppie binne 'n paar sekondes nadat u die skrip uitgevoer het, ingedruk het, anders kom daar 'n tydsverloop. Sodra dit suksesvol is, sal u iets soortgelyk aan die volgende sien:

Wiiboard gevind op adres 00: 23: CC: 2E: E1: 44 Probeer om aan te sluit … gekoppel aan Wiiboard op adres 00: 23: CC: 2E: E1: 44

Die wiiboard_test.py -skrip neem die aantal gewigmetings wat op reël 10 gespesifiseer word, en gee die gemiddelde:

# --------- Gebruikersinstellings --------- WEIGHT_SAMPLES = 500# ------------------------- --------

U kan met hierdie getal speel deur die waarde te verander en die script weer uit te voer om die variasie in gewig gemeet en tyd wat nodig is vir elke meting te sien. Weeg jouself, weeg jou hond, weeg alles en kyk of die metings sinvol is. Druk CTRL+C om die skrif te stop.

U het u Wii Balance Board nou suksesvol omskep in 'n Raspberry Pi -gekoppelde skaal. Kom ons maak dit nou 'n koel skaal.

Stap 5: Hardeware -aanpassings

Hardeware -aanpassings
Hardeware -aanpassings

Nintendo het aangeneem dat jy altyd jou Wii Balance Board met vier AA -batterye sou voorsien en dat daar geen wisselstroomadapter by was nie. Om slegs batterykrag te hê, sou ongerieflik wees, want ons kan nie ons Wii -bord permanent via Bluetooth met ons Pi koppel nie. Ons moet dit sinkroniseer, en laat dit dan gesinkroniseer bly sonder om die batterye leeg te maak, sodat ons eenvoudig op die weegskaal kan trap en weeg. Gelukkig is daar verskeie derdeparty-adapters wat vir die Wii Balance Board gemaak is, wat ons kan gebruik om konstante krag van 'n muurprop te voorsien. Vervang die batterye met 'n battery en steek die wisselstroomadapter in 'n stopcontact.

As ons die Wii Balance Board en Raspberry Pi moet koppel elke keer as ons ons Python -script uitvoer, bied dit 'n ander ongemak as gevolg van die ligging van die sync -knoppie. Die sinchronisasie -knoppie is onderaan die Wii -bord, wat beteken dat ons dit elke keer moet omdraai as ons moet sinkroniseer. Ons kan dit regstel deur 'n klein hefboom te maak met 'n potlood en drie 3/8 "viltblokkies soos hierbo getoon. Die herlaaibare battery stel die sinchronisasie -knoppie bloot aan die onderkant van die bord. Plak 'n potlood (of iets soortgelyks) wat strek van die sync -knoppie na die buitekant van die bord. Stapel drie 3/8 "viltblokkies (of iets soortgelyks) in die middel van die potlood om 'n stilstaande draai te maak. Wees versigtig om nie te veel van die potlood uit die bord bloot te stel nie, aangesien u nie wil hê dat iemand dit per ongeluk moet uittrek nie. Draai die bord om en u kan op die sync -knoppie druk deur eenvoudig op die hefboom te druk. 'N bietjie hack, maar effektief.

Afhangende van hoe u u Wii -bord stoor, wil u die rubbergreepblokkies van die voete van die bord verwyder (die pads is eenvoudig plakkers wat u kan uittrek). 3/8 viltblokkies kan op die bord se voete geplaas word vir maklike gly.

Stap 6: Aanvanklike toestand

Aanvanklike staat
Aanvanklike staat

Ons wil ons gewig/data na 'n wolkdiens stroom, en met hierdie diens kan ons ons data verander in 'n goeie dashboard waartoe ons toegang kan verkry vanaf ons skootrekenaar of mobiele toestel. Ons data benodig 'n bestemming. Ons sal die aanvanklike staat as die bestemming gebruik.

Stap 1: Registreer vir die aanvanklike staatrekening Gaan na https://iot.app.initialstate.com en skep 'n nuwe rekening.

Stap 2: Installeer die ISStreamer Installeer die Initial State Python -module op u Pi: voer 'n opdragprompt uit (vergeet nie eers SSH in u Pi in te voer):

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

Stap 3: Maak 'n bietjie Automagic Na stap 2 sien u iets soortgelyk aan die volgende uitset op die skerm:

pi@raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o -| sudo bashPassword: Begin met die installering van ISStreamer Python! Dit kan 'n paar minute neem om te installeer, koffie te drink:) Maar vergeet nie om terug te kom nie, ek het later vrae!

Easy_install gevind: setuptools 1.1.6

Pip gevind: pip 1.5.6 van /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip major weergawe: 1 pip minor weergawe: 5 ISStreamer gevind, werk op … reeds op datum: ISStreamer in /Library/Python/2.7/site-packages Maak skoon … Wil u outomaties 'n voorbeeldskrif kry? [j/N]

(die uitset kan anders wees en langer neem as u nog nooit die Initial State Python -stroommodule geïnstalleer het nie)

Tik y as u gevra word om 'n voorbeeldskrip outomaties te kry. Dit sal 'n toetsskrif skep wat ons kan uitvoer om te verseker dat ons data vanaf die Pi na die oorspronklike toestand kan stroom. U sal gevra word:

Waar wil u die voorbeeld stoor? [standaard:./is_example.py]:

U kan 'n aangepaste plaaslike pad tik of Enter druk om die standaard te aanvaar. U word gevra om u gebruikersnaam en wagwoord wat u pas geskep het toe u u aanvanklike staatrekening geregistreer het, in te voer. Voer albei in en die installasie sal voltooi word.

Stap 4: Toegangssleutels

Kom ons kyk na die voorbeeldskrif wat geskep is.

$ nano is_voorbeeld.py

Op reël 15 sien u 'n reël wat begin met streamer = Streamer (bucket_…. Hierdie reëls skep 'n nuwe data -emmer met die naam "Voorbeeld van Python -stroom" en word met u rekening geassosieer. Hierdie assosiasie gebeur as gevolg van die access_key = "…" parameter op dieselfde reël. Die lang reeks letters en syfers is die toegangsleutel van u aanvanklike staatrekening. As u in u webblaaier na u oorspronklike staatrekening gaan, klik dan op u gebruikersnaam regs bo en gaan dan na "My instellings", vind u dieselfde toegangsleutel onderaan die bladsy onder "Toegangssleutels vir streaming".

Elke keer as u 'n datastroom skep, stuur die toegangsleutel die datastroom na u rekening (moenie u sleutel met iemand deel nie).

Stap 5: voer die voorbeeld uit

Begin die toetsskrif om seker te maak dat ons 'n datastroom na u aanvanklike staatrekening kan skep. Voer die volgende uit:

$ python is_voorbeeld.py

Stap 6: Wins

Gaan terug na u aanvanklike staatrekening in u webblaaier. 'N Nuwe data -emmer met die naam "Python Stream -voorbeeld" moes links in u logblad verskyn (u moet die bladsy moontlik herlaai). U kan die data in Teëls bekyk om dieselfde data in die paneelbordvorm te sien.

Stap 7: Finale skrif

As ons aanvaar dat u die opdrag "git clone https://github.com/InitialState/smart-scale.git" in deel 2 uitgevoer het, word die laaste skrif wat alles bymekaar sit smartscale.py genoem in u ~/smart-scale-gids. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

'N Paar instellings moet in die script gestel word voordat u dit kan uitvoer. Maak smartscale.py oop in u gunsteling teksredakteur, soos nano.

$ cd ~ $ cd slimskaal $ nano smartscale.py

Bo -aan hierdie lêer is daar 'n gedeelte Gebruikersinstellings.

# --------- Gebruikersinstellings --------- BUCKET_NAME = ": appel: My gewiggeskiedenis" BUCKET_KEY = "weight11" ACCESS_KEY = "PLAAS U TOEGANG SLEUTEL TOEGANG HIER" METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7# ---------------------------------

  • BUCKET_NAME stel die naam van die data -emmer van die oorspronklike staat in waarin u gewig/data gestroom sal word. Dit kan hier gestel word en later in die UI verander word.
  • BUCKET_KEY is die unieke emmer -identifiseerder wat spesifiseer waarheen u data sal stroom. As u 'n ander emmer/paneelbord wil skep, gebruik 'n ander identifiseerder hier (*let op: as u 'n emmer argiveer, kan u die sleutel nie in 'n nuwe emmer hergebruik nie).
  • ACCESS_KEY is die sleutel van u aanvanklike staat. As u nie u ACCESS_KEY in hierdie veld plaas nie, verskyn u data nie in u rekening nie.
  • Met METRIC_UNITS kan u u gewig in kg spesifiseer as dit op True is of lb as dit op Onwaar is.
  • WEIGHT_SAMPLES spesifiseer hoeveel metings geneem en gemiddeld saamgetel word om u werklike gewig te kry. 500 metings neem ongeveer 4-5 sekondes en bied redelike akkurate resultate.
  • THROWAWAY_SAMPLES spesifiseer die aantal monsters wat weggegooi word wanneer u die eerste keer op die bord trap. Dit voorkom dat die aanvanklike stappe en verskuiwing die finale meting afskakel. Dit behoort altyd veel minder as WEIGHT_SAMPLES te wees.
  • WEIGHT_HISTORY stel die aantal metings in wat geneem word voordat 'n ekstra opdatering gestuur word. Slegs metings wat twee uur of meer van mekaar geneem is, tel in die geskiedenis.

Nadat u elke parameter in hierdie afdeling gespesifiseer het en u veranderinge gestoor het, is u gereed om die finale script uit te voer. Kom ons gaan deur wat dit gaan doen voordat ons die script uitvoer.

  • Aan die begin van die draaiboek sal u gevra word om u Wii Balance Board met u Raspberry Pi te koppel. Gebruik die hefboom wat u in deel 2: Hardeware -aanpassings saamgekap het, om op die sinkroniseringsknoppie te druk wanneer u gevra word.
  • Sodra die script uitgevoer is, stap u op die Wii -bord om u gewig te meet. Na 'n 4-5 sekondes word u gewig outomaties na u aanvanklike staatrekening gestuur.
  • Nadat ons SMS -kennisgewings opgestel het (in 'n paar stappe), ontvang u 'n SMS na die meting.

Begin die script om die magie te begin.

$ sudo python smartscale.py

Stap 8: Dashboard

Kontroleskerm
Kontroleskerm

Gaan na u aanvanklike staatrekening en klik op die nuwe data -emmer met die naam wat ooreenstem met die parameter BUCKET_NAME (dit wil sê My gewiggeskiedenis). Klik op Teëls om u dashboard vir gewigsgeskiedenis te sien. Die eerste keer dat u u data in teëls sien, moet u drie teëls sien - opdatering, gewigsdatum en gewig (lb). U kan u kontroleskerm aanpas deur teëls te verander en te skuif, sowel as die voorkomsvorme te verander en selfs teëls by te voeg. Met hierdie paneelbord kan u in een oogopslag u gewiggeskiedenis sien. Dit is selfoonvriendelik en u kan dit selfs met ander mense deel.

U kan 'n agtergrondprent by u dashboard voeg om u data meer persoonlikheid en konteks te gee.

Stap 9: SMS

SMS
SMS

Laat ons 'n SMS -waarskuwing skep wanneer die weegskaal gewig meet. Maak seker dat u gewiggeskiedenis data -emmer gelaai is.

  1. Klik op die emmer se instellings (onder sy naam) in die data -emmervenster.
  2. Klik op die oortjie Snellers.
  3. Kies die datastroom om aan te skakel. U kan die aftreklys gebruik om uit bestaande strome te kies sodra 'n data-emmer gelaai is, of u kan die naam/sleutel van die stroom handmatig invoer. In die voorbeeldkiekie hierbo word 'Update' gekies.
  4. Kies die voorwaardelike operateur, in hierdie geval 'pas'.
  5. Kies die snellerwaarde wat 'n aksie sal aktiveer (tik die gewenste waarde handmatig in). Tik lb in as u nie metrieke eenhede gebruik nie, of tik in kg as u metrieke eenhede gebruik. As die stroom "Update" "lb" (of "kg") bevat, kry u 'n SMS -boodskap.
  6. Klik op die '+' knoppie om die Trigger -toestand by te voeg.
  7. Voer u e -posadres of telefoonnommer in die veld "Kontakte om in kennis te stel" in.
  8. Klik op die '+' knoppie om die kontakinligting by te voeg.
  9. Voer enige verifikasiekode in as u 'n nuwe telefoonnommer byvoeg om die opstelling te voltooi.
  10. Klik op die knoppie Klaar onderaan om terug te keer na die hoofskerm. Jou sneller is nou lewendig en sal afvuur wanneer daar aan die voorwaarde voldoen is.

Sodra die opstelling voltooi is, kry u elke keer wat u weeg 'n SMS wat u gewig bevat, hoeveel u gewig sedert die laaste meting verander het, en 'n toevallige grap / belediging / kompliment.

Stap 10: Gevolgtrekking

Daar is onbeperkte opsies om voort te bou op wat u nou geskep het. Hier is 'n paar idees vir hierdie projek:

  • U kan data uit ander bronne na dieselfde gewigsgeskiedenis -dashboard stroom (inligting) om u eie persoonlike gesondheids -dashboard te skep.
  • U kan die grappe in die messageWeighFirst, messageWeighLess, messageWeighMore en messageWeighSame funksies verander na u eie sin vir humor.
  • U kan die grappe in praktiese boodskappe verander of dit verwyder en die skaalkode gebruik om die gewig van iets belangriker behalwe u eie liggaamsgewig op te spoor.
  • U kan u eie slim bier/wyn -yskas maak met dieselfde benadering. Daar is reeds 'n wonderlike handleiding hiervoor gemaak.

Hack weg en laat weet my as hierdie tutoriaal u inspireer om iets wonderliks te skep.

Aanbeveel: