Turinys:

„Raspberry Pi“išmanioji skalė: 10 žingsnių (su nuotraukomis)
„Raspberry Pi“išmanioji skalė: 10 žingsnių (su nuotraukomis)

Video: „Raspberry Pi“išmanioji skalė: 10 žingsnių (su nuotraukomis)

Video: „Raspberry Pi“išmanioji skalė: 10 žingsnių (su nuotraukomis)
Video: 30 глупых вопросов Product Manager [Карьера в IT] 2024, Lapkritis
Anonim
Image
Image

Ar pavargote kiekvieną rytą žiūrėti į tą nuobodžią, seną, blogų naujienų vonios svarstyklę? Tas, kurį dažnai sakote „nekenčiu tavęs“, kaip ir kiekvieną kartą, kai į jį žengi. Kodėl niekas nesukūrė svarstyklių, kurios iš tikrųjų yra įdomios ar motyvuojančios naudoti? Atėjo laikas sukurti skalę, kuri būtų ne tik protinga, bet ir šiek tiek asmeniškesnė, kad praskaidrintų jūsų dieną. Mes sukursime savo įsilaužimo, svorio sekimo ir tekstinių pranešimų vonios svarstykles, kuriose yra įmontuotas humoro jausmas.

Tai įdomus ir lengvas projektas, apimantis „Wii“balanso lentą, „Raspberry Pi“ir internetinę duomenų analizės platformą, kad būtų sukurta internetinė skalė, valdoma „Python“scenarijaus, kurį galite nulaužti.

Projekto lygis: pradedantiesiems Apytikslis užbaigimo laikas: 20 minučių Pramogos faktorius: neišmatuojamas

Šioje žingsnis po žingsnio pamokoje jūs:

  • Prijunkite „Wii“balanso lentą prie „Raspberry Pi“per „Bluetooth“, paleiskite „Python“scenarijų, kuris matuoja jūsų svorį, kai jūs lipate ant pusiausvyros lentos
  • naudokite „Raspberry Pi“, kad perduotumėte savo svorį į debesies paslaugą (pradinė būsena)
  • nustatykite SMS pranešimą kiekvieną kartą, kai pasveriate save
  • Sukurkite svorio stebėjimo prietaisų skydelį, kurį galite pasiekti žiniatinklio naršyklėje

1 žingsnis: įranga

„Wii“balanso lentos skalė
„Wii“balanso lentos skalė

Čia yra visos įrangos, kurią naudosime šioje pamokoje, sąrašas su nuorodomis, kuriose galite įsigyti kiekvieną elementą.

  • „Raspberry Pi 3“su SD kortele ir maitinimo šaltiniu (https://init.st/psuufmj)
  • „Wii Balance Board“(https://init.st/qg4ynjl)
  • „Wii Fit“įkraunamas akumuliatorių paketas (https://init.st/iyypz2i)
  • 3/8 colių veltinio pagalvėlės (https://init.st/8gywmjj)
  • Pieštukas (aš neteikiu jums nuorodos, kur nusipirkti pieštuką … jums turėtų priklausyti vienas iš jų)

Pastaba: jei turite „Raspberry Pi 1“arba „2“, jums reikės „Bluetooth“adapterio (https://init.st/7y3bcoe)

2 žingsnis: „Wii Balance Board Scale“

Kodėl verta naudoti „Wii Balance Board“? Pasirodo, tai tikrai graži, patvari svarstyklė, turinti „Bluetooth“ryšį. Tai leis mums prijungti jį prie vienos plokštės kompiuterio („Raspberry Pi“), kad galėtume perskaityti jūsų svorį „Python“scenarijuje ir nusiųsti šiuos matavimus internetinei duomenų tarnybai, kad atliktų įdomių dalykų. Be to, yra didelė tikimybė, kad jūs ar jūsų pažįstamas asmuo jau turi vieną, kuris tiesiog renka dulkes.

Kad šis projektas būtų praktiškas ir patogus, turėsime atlikti keletą paprastų „Wii Balance Board“modifikacijų.

3 veiksmas: „Bluetooth“sąranka

„Raspberry Pi 3“yra integruotas „Bluetooth“, viskas, ko mums reikia norint bendrauti su „Wii Balance Board“. Jei turite „Raspberry Pi 1“ar „2“, adapteriui prijungti turėsime naudoti vieną iš mūsų USB prievadų.

Įjunkite „Pi“(darau prielaidą, kad jau įdiegėte „Raspbian“ir jis įsijungia) ir eikite į „Raspberry Pi“terminalo langą. „Bluetooth“raktelio adresą galite pamatyti naudodami komandą „hcitool dev“:

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

Įdiekite „Bluetooth“modulius, kuriuos naudosime „Python“scenarijuose:

$ sudo apt-get įdiegti „python-bluetooth“

Baigę diegti, esame pasirengę prisijungti ir bendrauti su „Wii Balance Board“. Mes visam laikui nesuporuosime savo lentos su „Pi“, kaip tai darome su daugeliu „Bluetooth“įrenginių. „Wii Balance Board“niekada nebuvo suporuota su niekuo kitu, išskyrus „Wii“, o nuolatinis susiejimas pasirodė gana painus iššūkis. Susiejimas įvyks kiekvieną kartą, kai vykdysime „Python“scenarijų.

4 žingsnis: Skalės skaitymas

Atėjo laikas prijungti „Wii Balance Board“prie „Raspberry Pi“. Tai padarysime pakeisdami Stavroso Korokithakio „Gr8W8Upd8M8.py“scenarijaus versiją (https://github.com/skorokithakis/gr8w8upd8m8). Python scenarijus, kurį naudosime šiam žingsniui, yra čia. Galite nukopijuoti šio failo turinį į failą, kurį sukuriate savo „Raspberry Pi“, arba galite klonuoti visus „python“failus, kuriuos naudosime šiam projektui. Padarykime pastarąjį. Įveskite šias komandas į „Raspberry Pi“terminalą:

$ cd ~ $ git clone $ git clone https: github.com/initialstate/smart-scale.git klonavimas į „išmanųjį mastelį“… nuotolinis: skaičiuojami objektai: 14, padaryta. nuotolinis: objektų suspaudimas: 100% (12/12), padaryta. nuotolinis: iš viso 14 (delta 1), pakartotinai panaudotas 8 (delta 0), pakartotinai naudojamas pakuotėje 0 Objektų išpakavimas: 100% (14/14), padaryta. Tikrinamas ryšys … padaryta.

klonavimas į „išmanųjį mastelį“… nuotolinis: skaičiuojami objektai: 14, padaryta. nuotolinis: objektų suspaudimas: 100% (12/12), padaryta. nuotolinis: iš viso 14 (delta 1), pakartotinai panaudotas 8 (delta 0), pakartotinai naudojamas pakuotėje 0 Objektų išpakavimas: 100% (14/14), padaryta. Tikrinamas ryšys … padaryta.

Turėtumėte matyti du „Python“failus naujame išmaniųjų mastelių kataloge - smartscale.py ir wiiboard_test.py.

$ cd išmaniosios skalės $ lsREADME.md smartscale.py wiiboard_test.py

Paleiskite „wiiboard_test.py“scenarijų, kad patikrintumėte ryšį ir gautumėte svorio rodmenis iš „Wii Balance Board“:

$ sudo python wiiboard_test.py

Pamatysite tokį atsakymą:

Atrasti lentą … Dabar paspauskite raudoną sinchronizavimo mygtuką lentoje

Nuimkite akumuliatoriaus dangtelį po plokšte, kad surastumėte raudoną sinchronizavimo mygtuką. Įsitikinkite, kad paspaudėte mygtuką per kelias sekundes nuo scenarijaus paleidimo, nes priešingu atveju atsiras skirtasis laikas. Kai pavyks, pamatysite kažką panašaus į šį:

„Wiiboard“rastas adresu 00: 23: CC: 2E: E1: 44 Bandoma prisijungti… Prisijungta prie „Wiiboard“adresu 00: 23: CC: 2E: E1: 44 „Wiiboard“prijungtas atgal prie gautų duomenų rašymo

„Wiiboard_test.py“scenarijus paima 10 eilutėje nurodytą svorio matavimų skaičių ir pateikia vidurkį:

# --------- Vartotojo nustatymai --------- WEIGHT_SAMPLES = 500# ------------------------- --------

Galite žaisti su šiuo skaičiumi pakeisdami vertę ir iš naujo paleisdami scenarijų, kad pamatytumėte išmatuoto svorio svyravimus ir kiekvieno matavimo laiką. Pasverkite, pasverkite savo šunį, pasverkite bet ką ir pažiūrėkite, ar matavimai yra prasmingi. Norėdami sustabdyti scenarijų, paspauskite CTRL+C.

Dabar sėkmingai konvertavote „Wii Balance Board“į „Raspberry Pi“prijungtą skalę. Dabar padarykime skalę.

5 žingsnis: techninės įrangos patobulinimai

Techninės įrangos patobulinimai
Techninės įrangos patobulinimai

„Nintendo“manė, kad „Wii Balance“lentą visada maitinsite keturiomis AA baterijomis ir be kintamosios srovės adapterio. Turėti tik bateriją būtų nepatogu, nes negalime visam laikui susieti „Wii“plokštės su „Pi“per „Bluetooth“. Turime jį sinchronizuoti, tada leisti jam sinchronizuoti neišsikrovus baterijoms, kad galėtume tiesiog žengti ant svarstyklių ir sverti. Laimei, „Wii Balance Board“yra pagaminti keli trečiųjų šalių adapteriai, kuriuos galime naudoti norėdami užtikrinti nuolatinę elektros energiją iš sieninio lizdo. Pakeiskite baterijas akumuliatoriumi ir prijunkite kintamosios srovės adapterį prie sieninio lizdo.

Kiekvieną kartą paleidžiant „Python“scenarijų reikia susieti „Wii Balance Board“ir „Raspberry Pi“, todėl atsiranda dar vienas nepatogumas dėl sinchronizavimo mygtuko vietos. Sinchronizavimo mygtukas yra „Wii“lentos apačioje, o tai reiškia, kad turėtume jį apversti kiekvieną kartą, kai reikia sinchronizuoti. Mes galime tai išspręsti padarydami nedidelę svirtelę pieštuku ir trimis 3/8 colių veltinio pagalvėlėmis, kaip parodyta aukščiau. Įkraunama baterija sinchronizavimo mygtuką paliečia po apatiniu plokštės paviršiumi. Užklijuokite pieštuką (ar kažką panašaus) nuo sinchronizavimo mygtuko iki išorinės plokštės priekinės pusės. Uždėkite tris 3/8 colių veltinio pagalvėles (ar kažką panašaus) pieštuko centre, kad sukurtumėte nejudantį pasukimą. Būkite atsargūs, kad neatskleistumėte per daug pieštuko iš lentos, nes nenorite, kad kas nors netyčia jį išmestų. Apverskite lentą ir galite paspausti sinchronizavimo mygtuką tiesiog paspausdami svirtį. Šiek tiek nulaužta, bet veiksminga.

Priklausomai nuo to, kaip laikote „Wii Board“, galbūt norėsite nuimti gumines rankenėles nuo plokštės kojų (trinkelės yra tiesiog lipdukai, kuriuos galite nuimti). 3/8 colių veltinio pagalvėlės gali būti dedamos ant lentos kojų, kad būtų lengviau slysti.

6 žingsnis: pradinė būsena

Pradinė būsena
Pradinė būsena

Mes norime perduoti savo svorį/duomenis į debesies paslaugą ir ta paslauga paversti mūsų duomenis į gražų prietaisų skydelį, kurį galime pasiekti iš savo nešiojamojo kompiuterio ar mobiliojo įrenginio. Mūsų duomenims reikia paskirties. Kaip tikslą naudosime pradinę būseną.

1 veiksmas: užsiregistruokite pradinei būsenos paskyrai Eikite į https://iot.app.initialstate.com ir sukurkite naują paskyrą.

2 veiksmas: įdiekite „ISStreamer“

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

Po 2 veiksmo ekrane pamatysite kažką panašaus į šią išvestį:

pi@raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o -| Sudo bashPasword: Pradedant ISStreamer Python Lengvas diegimas! Tai gali užtrukti kelias minutes, kol bus įdiegta, išgerkite kavos:) Bet nepamirškite sugrįžti, vėliau turėsiu klausimų!

Rasta easy_install: setuptools 1.1.6

Rasta pip: pip 1.5.6 iš /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip pagrindinė versija: 1 pip minor versija: 5 ISStreamer rasta, atnaujinama … Reikalavimas jau atnaujinta: ISStreamer /Library/Python/2.7/site-packages Valymas … Ar norite automatiškai gauti scenarijaus pavyzdį? [y/N]

(išvestis gali būti kitokia ir užtrukti ilgiau, jei anksčiau niekada neįdiegėte pradinės būsenos „Python“transliacijos modulio)

Kai būsite paraginti automatiškai gauti scenarijaus pavyzdį, įveskite y. Tai sukurs bandomąjį scenarijų, kurį galėsime paleisti, kad užtikrintume, jog galime perduoti duomenis į pradinę būseną iš savo „Pi“. Būsite paraginti:

Kur norite išsaugoti pavyzdį? [numatytasis:./is_example.py]:

Galite įvesti pasirinktinį vietinį kelią arba paspausti Enter, kad patvirtintumėte numatytąjį. Būsite paraginti įvesti savo vartotojo vardą ir slaptažodį, kuriuos ką tik sukūrėte užregistravę savo pradinės būsenos paskyrą. Įveskite abu ir diegimas bus baigtas.

4 veiksmas: prieigos raktai

Pažvelkime į sukurto scenarijaus pavyzdį.

$ nano is_example.py

15 eilutėje pamatysite eilutę, kuri prasideda streamer = Streamer (bucket_…. Šios eilutės sukuria naują duomenų grupę pavadinimu „Python Stream Example“ir yra susieta su jūsų paskyra. Šis susiejimas įvyksta dėl „access_key =“… “parametras toje pačioje eilutėje. Ši ilga raidžių ir skaičių serija yra jūsų pradinės būsenos paskyros prieigos raktas. Jei žiniatinklio naršyklėje einate į pradinės būsenos paskyrą, viršuje dešinėje spustelėkite savo vartotojo vardą, tada eikite į „Mano nustatymai“tą patį prieigos raktą rasite puslapio apačioje skiltyje „Srautinio perdavimo prieigos raktai“.

Kiekvieną kartą, kai sukuriate duomenų srautą, tas prieigos raktas nukreipia tą duomenų srautą į jūsų paskyrą (todėl nebendrinkite rakto su niekuo).

5 veiksmas: paleiskite pavyzdį

Paleiskite bandomąjį scenarijų, kad įsitikintumėte, jog galime sukurti duomenų srautą į jūsų pradinės būsenos paskyrą. Vykdykite šiuos veiksmus:

$ python is_example.py

6 žingsnis: pelnas

Grįžkite į pradinės būsenos paskyrą žiniatinklio naršyklėje. Kairėje žurnalo lentynoje turėtų būti rodomas naujas duomenų rinkinys, pavadintas „Python Stream Example“(gali tekti atnaujinti puslapį). Galite peržiūrėti duomenis plytelėse, kad pamatytumėte tuos pačius duomenis prietaisų skydelio formoje.

7 žingsnis: galutinis scenarijus

Darant prielaidą, kad 2 dalyje vykdėte komandą „git clone https://github.com/InitialState/smart-scale.git“, galutinis scenarijus, kuriame viskas sujungta, jūsų ~/smart-scale kataloge vadinamas smartscale.py. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Prieš paleidžiant scenarijų, reikia nustatyti keletą nustatymų. Atidarykite smartscale.py savo mėgstamiausiame teksto redaktoriuje, pvz., „Nano“.

$ cd ~ $ cd išmaniosios skalės $ nano smartscale.py

Šio failo viršuje yra skiltis „Vartotojo nustatymai“.

# --------- Vartotojo nustatymai --------- BUCKET_NAME = ": apple: Mano svorio istorija" BUCKET_KEY = "weight11" ACCESS_KEY = "ĮRENGKITE PIRMĄJĄ VALSTYBĖS PASKYRIMO RAKTĄ" METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7# ---------------------------------

  • BUCKET_NAME nustato pradinės būsenos duomenų segmento, į kurį bus perduotas jūsų svoris/duomenys, pavadinimą. Tai galima nustatyti čia ir vėliau pakeisti vartotojo sąsajoje.
  • BUCKET_KEY yra unikalus segmento identifikatorius, nurodantis, kur bus perduodami jūsų duomenys. Jei norite sukurti kitą grupę/prietaisų skydelį, čia naudokite kitą identifikatorių (*atkreipkite dėmesį, jei archyvuojate grupę, jos rakto negalima pakartotinai naudoti naujoje grupėje).
  • ACCESS_KEY yra jūsų pradinės būsenos paskyros raktas. Jei neįrašysite savo ACCESS_KEY į šį lauką, jūsų duomenys nebus rodomi jūsų paskyroje.
  • „METRIC_UNITS“leidžia nurodyti svorį kilogramais, jei nustatyta „True“, arba lb, jei nustatyta „False“.
  • WEIGHT_SAMPLES nurodo, kiek matavimų buvo atlikta ir vidutiniškai apskaičiuota, kad gautumėte tikrąjį svorį. 500 matavimų užtrunka apie 4-5 sekundes ir pateikia gana tikslius rezultatus.
  • „THROWAWAY_SAMPLES“nurodo mėginių, kurie buvo išmesti, kai pirmą kartą lipate ant lentos, skaičių. Tai neleidžia pradiniams žingsniams ir poslinkiams atsisakyti galutinio matavimo. Tai visada turėtų būti daug mažiau nei WEIGHT_SAMPLES.
  • WEIGHT_HISTORY nustato matavimų, atliktų prieš siunčiant papildomą atnaujinimą, skaičių. Į istoriją įtraukiami tik matavimai, atlikti dviem ar daugiau valandų.

Kai šiame skyriuje nurodysite kiekvieną parametrą ir išsaugosite pakeitimus, būsite pasiruošę paleisti galutinį scenarijų. Prieš paleisdami scenarijų, pažiūrėkime, ką jis ketina daryti.

  • Scenarijaus pradžioje jūsų bus paprašyta suporuoti „Wii Balance Board“su „Raspberry Pi“. Naudodami svirtį, kurią nulaužėte kartu 2 dalyje: Techninės įrangos patobulinimai, paspauskite sinchronizavimo mygtuką, kai būsite paraginti.
  • Kai scenarijus bus paleistas, eikite į „Wii“lentą ir pradėkite matuoti savo svorį. Po 4-5 sekundžių jūsų svoris bus automatiškai išsiųstas į jūsų pradinės būsenos sąskaitą.
  • Kai nustatysime SMS pranešimus (atlikę kelis veiksmus), netrukus po matavimo gausite tekstinį pranešimą.

Norėdami pradėti magiją, paleiskite scenarijų.

$ sudo python smartscale.py

8 veiksmas: prietaisų skydelis

Prietaisų skydelis
Prietaisų skydelis

Eikite į savo pradinės būsenos paskyrą ir spustelėkite naują duomenų grupę, kurios pavadinimas atitinka parametrą BUCKET_NAME (t. Y. Mano svorio istorija). Spustelėkite plyteles, kad peržiūrėtumėte savo svorio istorijos prietaisų skydelį. Pirmą kartą peržiūrėdami duomenis plytelėse turėtumėte matyti tris plyteles - Atnaujinti, Svorio data ir Svoris (lb). Galite tinkinti savo prietaisų skydelį, pakeisdami ir perkeldami plyteles, taip pat keisdami rodinių tipus ir net pridėdami plytelių. Šis prietaisų skydelis suteikia jums galimybę iš karto pamatyti savo svorio istoriją. Jis pritaikytas mobiliesiems ir netgi galite juo pasidalyti su kitais žmonėmis.

Prie prietaisų skydelio galite pridėti fono paveikslėlį, kad jūsų duomenys taptų asmeniškesni ir kontekstas.

9 žingsnis: SMS

trumpoji žinutė
trumpoji žinutė

Sukurkime SMS įspėjimą, kai svarstyklės matuoja svorį. Įsitikinkite, kad jūsų svorio istorijos duomenų talpykla yra įkelta.

  1. Duomenų segmento lange spustelėkite kibiro nustatymus (pagal jo pavadinimą).
  2. Spustelėkite skirtuką Trigeriai.
  3. Pasirinkite duomenų srautą, kurį norite įjungti. Išskleidžiamajame sąraše galite pasirinkti iš esamų srautų, kai duomenų paketas įkeliamas, arba galite rankiniu būdu įvesti srauto pavadinimą/raktą. Aukščiau esančiame ekrano kopijos pavyzdyje pasirinktas „Atnaujinti“.
  4. Pasirinkite sąlyginį operatorių, šiuo atveju - „match“.
  5. Pasirinkite aktyviklio reikšmę, kuri suaktyvins veiksmą (rankiniu būdu įveskite norimą vertę). Įveskite lb, jei nenaudojate metrinių vienetų, arba kg, jei naudojate metrinius vienetus. Kai sraute „Atnaujinti“yra „lb“(arba „kg“), gausite tekstinį pranešimą.
  6. Spustelėkite mygtuką „+“, kad pridėtumėte aktyviklio sąlygą.
  7. Įveskite savo el. Pašto adresą arba telefono numerį lauke „Kontaktai, apie kuriuos reikia pranešti“.
  8. Norėdami pridėti kontaktinę informaciją, spustelėkite mygtuką „+“.
  9. Jei norite užbaigti sąranką, įveskite bet kokį patvirtinimo kodą, jei pridėsite naują telefono numerį.
  10. Norėdami grįžti į pagrindinį ekraną, apačioje spustelėkite mygtuką Atlikta. Jūsų aktyviklis dabar veikia ir suveiks, kai bus įvykdyta sąlyga.

Kai sąranka bus baigta, kiekvieną kartą, kai sversite, gausite SMS, kurioje bus nurodytas jūsų svoris, kiek pasikeitė jūsų svoris nuo paskutinio matavimo, ir atsitiktinis pokštas / įžeidimas / komplimentas.

10 žingsnis: Išvada

Yra neribotos galimybės jums remtis tuo, ką dabar sukūrėte. Štai keletas šio projekto idėjų:

  • Galite srautiniu būdu perduoti duomenis iš kitų šaltinių į tą patį svorio istorijos prietaisų skydelį (informaciją), kad sukurtumėte savo asmeninės sveikatos informacijos suvestinę.
  • Galite pakeisti pranešimo „WeeighFirst“, „messageWeighLess“, „messageWeighMore“ir „messageWeighSame“funkcijas pagal savo humoro jausmą.
  • Jūs galite pakeisti anekdotus į praktinius pranešimus arba juos pašalinti ir naudoti skalės kodą, kad galėtumėte stebėti kažko svarbesnio, ne tik savo kūno svorio, svorį.
  • Taikydami tą patį metodą, galite sukurti savo išmanųjį alaus/vyno šaldytuvą. Čia jau yra sukurta nuostabi pamoka.

Nulaužkite ir praneškite man, ar ši pamoka įkvepia jus sukurti kažką nuostabaus.

Rekomenduojamas: