Tartalomjegyzék:

Raspberry Pi intelligens skála: 10 lépés (képekkel)
Raspberry Pi intelligens skála: 10 lépés (képekkel)

Videó: Raspberry Pi intelligens skála: 10 lépés (képekkel)

Videó: Raspberry Pi intelligens skála: 10 lépés (képekkel)
Videó: Электрический или водяной полотенцесушитель? Что выбрать? Установка. #25 2024, Július
Anonim
Image
Image

Unod már, hogy minden reggel bámulod az unalmas, régi, rossz hírű fürdőszobai mérleget? Azt, amit gyakran mondasz "gyűlöllek", mint valahányszor rálépsz. Miért nem készített senki olyan mérleget, amelyet valóban szórakoztató vagy motiváló használni? Itt az ideje, hogy létrehozzon egy skálát, amely nemcsak okos, hanem egy kicsit személyesebb is, hogy feldobja a napját. Saját, feltörhető, súlykövető, szöveges üzenetekkel ellátott fürdőszobamérleget fogunk felépíteni, amely beépített humorérzékkel jár.

Ez egy szórakoztató, egyszerű projekt, amely egy Wii-mérlegtáblát, egy Raspberry Pi-t és egy online adatelemző platformot ötvöz, hogy létrehozzon egy internethez kapcsolódó skálát, amelyet egy feltört Python-szkript vezérel.

Projekt szint: Kezdő Hozzávetőleges befejezési idő: 20 perc Szórakoztató tényező: Mérhetetlen

Ebben a lépésenkénti oktatóanyagban a következőket fogja tenni:

  • Csatlakoztassa a Wii mérlegtáblát egy Raspberry Pi -hez bluetooth -on keresztül, futtasson egy Python -szkriptet, amely méri a súlyát, amikor a mérlegre lép.
  • használjon Raspberry Pi -t a súlyának felhőszolgáltatásba történő továbbításához (kezdeti állapot)
  • állítson be SMS -értesítést minden alkalommal, amikor mérlegeli magát
  • hozzon létre egy súlykövető műszerfalat, amelyet böngészőjében érhet el

1. lépés: Felszerelés

Wii Balance Board Scale
Wii Balance Board Scale

Itt található az összes olyan felszerelés listája, amelyeket ebben az oktatóanyagban fogunk használni, valamint linkek az egyes termékek megvásárlására.

  • Raspberry Pi 3 SD -kártyával és tápegységgel (https://init.st/psuufmj)
  • Wii Balance Board (https://init.st/qg4ynjl)
  • Wii Fit újratölthető akkumulátor (https://init.st/iyypz2i)
  • 3/8 "filc párnák (https://init.st/8gywmjj)
  • Ceruza (nem adok linket, hogy hol lehet ceruzát vásárolni … ezek valamelyike legyen a tiéd)

Megjegyzés: Ha Raspberry Pi 1 vagy 2 van, szüksége lesz egy bluetooth adapterre (https://init.st/7y3bcoe)

2. lépés: Wii Balance Board Scale

Miért érdemes Wii Balance Board? Kiderült, hogy ez egy igazán szép, tartós mérleg, amely rendelkezik Bluetooth kapcsolattal. Ez lehetővé teszi számunkra, hogy csatlakoztassuk egy fedélzeti számítógéphez (Raspberry Pi), hogy leolvassuk súlyát Python-szkriptben, és elküldhessük ezeket a méréseket egy online adatszolgáltatáshoz, hogy jó dolgokat végezzünk. Ezenkívül jó esély van arra, hogy Önnek vagy ismerősének már van olyanja, amely egyszerűen port gyűjt.

Néhány egyszerű módosítást kell végrehajtanunk a Wii Balance Boardon, hogy ez a projekt valóban praktikus és kényelmes legyen.

3. lépés: A Bluetooth beállítása

A Raspberry Pi 3 beépített bluetooth -al érkezik, mindössze annyit kell tennünk, hogy kommunikáljunk a Wii Balance Board -al. Ha Raspberry Pi 1 vagy 2 van, akkor az egyik USB -portunk segítségével kell csatlakoztatni az adaptert.

Kapcsolja be a Pi -t (feltételezem, hogy már telepítette a Raspbian programot, és elindul), és menjen a Raspberry Pi terminál ablakához. A "hcitool dev" paranccsal láthatja Bluetooth -hardverkulcsának címét:

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

Telepítse azokat a Bluetooth modulokat, amelyeket a Python szkriptekben fogunk használni:

$ sudo apt-get install python-bluetooth

A telepítés befejezése után készen állunk a Wii Balance Board csatlakozására és kommunikálására. Nem fogjuk véglegesen párosítani az alaplapunkat a Pi -vel, mint a legtöbb bluetooth -eszközünkkel. A Wii Balance Boardot soha nem akarták mással összekapcsolni, csak Wii -vel, és az állandó párosítás meglehetősen zavaró kihívásnak bizonyult. A párosítás minden alkalommal megtörténik, amikor futtatjuk Python -szkriptünket.

4. lépés: A skála olvasása

Itt az ideje, hogy csatlakoztassuk Wii Balance Boardunkat a Raspberry Pi -hez. Ezt Stavros Korokithakis Gr8W8Upd8M8.py szkriptjének egyik változatával módosítjuk (https://github.com/skorokithakis/gr8w8upd8m8). A python szkript, amelyet ebben a lépésben fogunk használni, itt található. Másolhatja ennek a fájlnak a tartalmát egy Raspberry Pi készüléken létrehozott fájlba, vagy klónozhatja az összes olyan python -fájlt, amelyet az egész projekthez használni fogunk. Tegyük az utóbbit. Írja be a következő parancsokat a Raspberry Pi termináljába:

$ cd ~ $ git klón $ git klón https: github.com/initialstate/smart-scale.git klónozás "intelligens skálába"… távoli: Objektumok számlálása: 14, kész. távoli: Objektumok tömörítése: 100% (12/12), kész. távirányító: Összesen 14 (delta 1), újrafelhasznált 8 (delta 0), csomagolás újrafelhasznált 0 Kicsomagolás tárgyak: 100% (14/14), kész. Csatlakozás ellenőrzése… kész.

klónozás „intelligens skálába”… távoli: Objektumok számlálása: 14, kész. távoli: Objektumok tömörítése: 100% (12/12), kész. távirányító: Összesen 14 (delta 1), újrafelhasznált 8 (delta 0), csomag újrahasznosított 0 Objektumok kicsomagolása: 100% (14/14), kész. Csatlakozás ellenőrzése… kész.

Két új python -fájlt kell látnia az új smart -scale könyvtárban - smartscale.py és wiiboard_test.py.

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

Futtassa a wiiboard_test.py szkriptet a kommunikáció teszteléséhez és a Wii Balance Board súlyméréséhez:

$ sudo python wiiboard_test.py

A következő választ fogja látni:

Fórum felfedezése… Nyomja meg a piros szinkronizáló gombot a táblán

Távolítsa el az elemtartó fedelét a panel alatt, hogy megtalálja a piros szinkronizáló gombot. A szkript futtatása után néhány másodpercen belül nyomja meg a gombot, különben időtúllépés következik be. Miután sikeres volt, látni fog valami hasonlót a következőkhöz:

Wiiboard található a 00: 23 címen: CC: 2E: E1: 44 Csatlakozni próbál… Csatlakozott a Wiiboardhoz a 00: 23 címen: CC: 2E: E1: 44

A wiiboard_test.py parancsfájl leveszi a 10. sorban megadott súlymérések számát, és átlagot ad ki:

# --------- Felhasználói beállítások --------- WEIGHT_SAMPLES = 500# ------------------------- --------

Játszhat ezzel a számmal az érték megváltoztatásával és a szkript újbóli futtatásával, hogy lássa a mért súly és az egyes mérésekhez szükséges idő változását. Mérje meg magát, mérje meg a kutyáját, mérje meg bármit, és nézze meg, hogy a méréseknek van -e értelme. A szkript leállításához nyomja le a CTRL+C billentyűkombinációt.

Most sikeresen átalakította Wii Balance Boardját Raspberry Pi csatlakoztatott skálává. Most csináljunk egy klassz skálát.

5. lépés: Hardver csípés

Hardver csípések
Hardver csípések

A Nintendo feltételezte, hogy a Wii Balance Boardot mindig négy AA elemmel táplálja, és nem tartalmaz hálózati adaptert. Kizárólag az akkumulátor töltése lenne kényelmetlen, mert Bluetooth -on keresztül nem tudjuk véglegesen párosítani a Wii Board -t a Pi -vel. Szinkronizálnunk kell, majd hagynunk kell szinkronizálni anélkül, hogy lemerítenénk az elemeket, így egyszerűen ráléphetünk a mérlegre és mérlegelhetünk. Szerencsére a Wii Balance Board számára több, harmadik féltől származó adapter is készült, amelyekkel állandó áramot tudunk biztosítani a fali konnektorból. Cserélje ki az elemeket egy akkumulátorra, és csatlakoztassa a hálózati adaptert a fali aljzathoz.

Ha a Python -szkriptünk futtatásakor minden alkalommal párosítanunk kell a Wii Balance Boardot és a Raspberry Pi -t, a szinkronizáló gomb elhelyezkedése miatt újabb kellemetlenségeket okoz. A szinkronizálás gomb a Wii Board alján található, ami azt jelenti, hogy minden szinkronizáláskor meg kell fordítanunk. Ezt kijavíthatjuk, ha egy kis kart készítünk ceruzával és három 3/8 hüvelykes filcpárnával, amint az fent látható. Az újratölthető akkumulátor csomag a szinkronizáló gombot a tábla alsó felülete elé tárja. Ragasszon le egy ceruzát (vagy valami hasonlót), amely átnyúlik a szinkronizáló gombból a tábla külső elejébe. Rakjon három 3/8 filcpárnát (vagy valami hasonlót) a ceruza közepére, hogy létrehozza az álló forgást. Ügyeljen arra, hogy ne tegye ki túl sokat a ceruzát a táblából, mert nem szeretné, ha valaki véletlenül kirúgná. Fordítsa meg a táblát, és megnyomhatja a szinkronizálás gombot a kar lenyomásával. Kicsit hack, de hatékony.

Attól függően, hogy hogyan tárolja a Wii táblát, érdemes eltávolítani a gumi markolatpárnákat a tábla lábáról (a párnák egyszerűen matricák, amelyeket le lehet húzni). 3/8 filcpárnák helyezhetők el a tábla lábain a könnyű csúszás érdekében.

6. lépés: Kezdeti állapot

Kezdeti állapot
Kezdeti állapot

Súlyunkat/adatainkat felhőszolgáltatásba szeretnénk továbbítani, és ez a szolgáltatás az adatainkat egy szép irányítópulttá alakítja, amelyet laptopunkról vagy mobileszközünkről érhetünk el. Adatainknak úti célra van szükségük. A kezdeti állapotot fogjuk használni célként.

1. lépés: Regisztráljon a kezdeti állapotú fiókhoz Menjen a https://iot.app.initialstate.com webhelyre, és hozzon létre egy új fiókot.

2. lépés: Az ISStreamer telepítése Telepítse a kezdeti állapotú Python modult a Pi -re: A parancssorból (ne felejtse el először SSH -t bevinni a Pi -be) futtassa a következő parancsot:

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

A 2. lépés után a következő kimenethez hasonlót lát a képernyőn:

pi@raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o -| sudo bash Jelszó: Az ISStreamer Python egyszerű telepítése! Ennek telepítése eltarthat pár percig, igyon egy kávét:) De ne felejtse el visszajönni, később kérdéseim lesznek!

Talált easy_install: setuptools 1.1.6

Talált pip: pip 1.5.6 a /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip fő verzióból: 1 pip minor verzió: 5 ISStreamer található, frissítés… Követelmény már naprakész: ISStreamer a /Library/Python/2.7/site-packages fájlban Tisztítás … Szeretne automatikusan példaszkriptet kapni? [y/N]

(a kimenet eltérő lehet, és tovább tarthat, ha még soha nem telepítette a kezdeti állapotú Python streaming modult)

Amikor a rendszer kéri, hogy automatikusan szerezzen be egy példafájlt, írja be az y parancsot. Ez létrehoz egy teszt szkriptet, amelyet futtathatunk annak biztosítására, hogy az adatokat a kezdeti állapotba tudjuk továbbítani a Pi -ből. A rendszer ezt fogja kérni:

Hova szeretné menteni a példát? [alapértelmezett:./is_example.py]:

Írhat be egy egyéni helyi elérési utat, vagy nyomja le az Enter billentyűt az alapértelmezett elfogadásához. A rendszer megkérdezi felhasználónevét és jelszavát, amelyet az első államfiók regisztrálásakor hozott létre. Adja meg mindkettőt, és a telepítés befejeződik.

4. lépés: Hozzáférési kulcsok

Vessünk egy pillantást a létrehozott példa szkriptre.

$ nano is_example.py

A 15. sorban egy sort láthat, amely a streamer = Streamer (bucket_…. Ez a sor új adatcsoportot hoz létre „Python Stream Example” néven, és társítva van a fiókjához. Ez a társítás az access_key =”… miatt történik paraméter ugyanazon a soron. Ez a hosszú betű- és számsorozat az Ön kezdeti állapotú fiókjának hozzáférési kulcsa. Ha böngészőjében megnyitja a Kezdeti állapot fiókját, kattintson a jobb felső sarokban található felhasználónevére, majd lépjen a „Saját beállítások” pontra, ugyanazt a hozzáférési kulcsot találja az oldal alján, a „Streaming Access Keys” alatt.

Minden alkalommal, amikor adatfolyamot hoz létre, ez a hozzáférési kulcs az adatfolyamot a fiókjába irányítja (tehát ne ossza meg senkivel).

5. lépés: Futtassa a példát

Futtassa a teszt szkriptet, hogy megbizonyosodjon arról, hogy adatfolyamot tudunk létrehozni a kezdeti állapotú fiókjához. Futtassa a következőt:

$ python is_example.py

6. lépés: Nyereség

Térjen vissza a kezdeti állapotú fiókjához a böngészőben. A „Python Stream Example” nevű új adatcsoportnak meg kellett jelennie a napló polcának bal oldalán (előfordulhat, hogy frissítenie kell az oldalt). Ha meg szeretné tekinteni az adatokat a csempékben, ugyanazokat az adatokat láthatja műszerfal formájában.

7. lépés: Végső szkript

Ha feltételezzük, hogy futtatta a "git klón https://github.com/InitialState/smart-scale.git" parancsot a 2. részben, akkor az utolsó szkript, amely mindent összehoz, smartscale.py-nek nevezik a ~/smart-scale könyvtárban. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

A szkriptben néhány beállítást be kell állítani a futtatás előtt. Nyissa meg az smartscale.py -t kedvenc szövegszerkesztőjében, például a nano -ban.

$ cd ~ $ cd intelligens skála $ nano smartscale.py

A fájl tetején található a Felhasználói beállítások szakasz.

# --------- Felhasználói beállítások --------- BUCKET_NAME = ": apple: Saját Történelem" BUCKET_KEY = "weight11" ACCESS_KEY = "HELYEZZE EL A KEZDETI ÁLLAPOTBEN HOZZÁFÉRŐ KULCST ITT" METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7# ---------------------------------

  • A BUCKET_NAME beállítja annak a kezdeti állapotú adatcsoportnak a nevét, amelybe a súlya/adatai kerülnek. Ezt itt lehet beállítani és később módosítani a felhasználói felületen.
  • A BUCKET_KEY az egyedi gyűjtőazonosító, amely meghatározza, hogy az adatok hová kerüljenek. Ha más vödröt/irányítópultot szeretne létrehozni, használjon itt egy másik azonosítót (*megjegyzés, ha archivál egy vödröt, nem használhatja újra annak kulcsát egy új csoportban).
  • Az ACCESS_KEY a kezdeti állapotú fiók kulcsa. Ha nem írja be ACCESS_KEY értékét ebbe a mezőbe, akkor az adatok nem fognak megjelenni a fiókjában.
  • A METRIC_UNITS lehetővé teszi, hogy súlyát kg -ban adja meg, ha True értékre van állítva, vagy lb -ra, ha hamis értékre.
  • A WEIGHT_SAMPLES megadja, hogy hány mérést kell elvégezni és átlagolni a tényleges súly eléréséhez. 500 mérés körülbelül 4-5 másodpercet vesz igénybe, és meglehetősen pontos eredményeket ad.
  • A THROWAWAY_SAMPLES megadja a minták számát, amelyeket kidobnak, amikor először lépsz a táblára. Ez megakadályozza, hogy a kezdeti lépések és eltolódások a végső méréstől elszakadjanak. Ennek mindig sokkal kevesebbnek kell lennie, mint a WEIGHT_SAMPLES.
  • A WEIGHT_HISTORY beállítja az extra frissítés elküldése előtt elvégzett mérések számát. Csak a két óra vagy annál hosszabb időközönként végzett mérések számítanak bele az előzményekbe.

Miután megadta az egyes paramétereket ebben a szakaszban, és mentette a módosításokat, készen áll a végső parancsfájl futtatására. Mielőtt futtatnánk a szkriptet, nézzük végig, mit fog tenni.

  • A forgatókönyv elején felkérik, hogy párosítsa a Wii Balance Boardot a Raspberry Pi -vel. A karban, amelyet a 2. rész: Hardvercsípés című részben feltört, nyomja meg a szinkronizálás gombot, amikor a rendszer kéri.
  • A szkript futtatása után lépjen a Wii táblára, és kezdje el súlyának mérését. 4-5 másodperc elteltével a súlya automatikusan a kezdeti állapotú számlára kerül.
  • Miután beállítottuk az SMS -értesítéseket (néhány lépésben), a mérés után hamarosan szöveges üzenetet kap.

Futtassa a szkriptet a varázslat elindításához.

$ sudo python smartscale.py

8. lépés: Műszerfal

Irányítópult
Irányítópult

Lépjen a Kezdeti állapot fiókjába, és kattintson a BUCKET_NAME paraméternek megfelelő nevű új adatcsoportra (azaz Saját súlyom). Kattintson a Csempék gombra a súlyelőzmények irányítópultjának megtekintéséhez. Három csempét kell látnia, amikor először látja az adatokat a csempékben - Frissítés, súly dátuma és súlya (lb). A műszerfalat testreszabhatja a lapok átméretezésével és mozgatásával, valamint a nézetek típusának megváltoztatásával és akár csempék hozzáadásával. Ez az irányítópult lehetővé teszi, hogy egy pillanat alatt megtekinthesse súlyát. Mobilbarát, és akár megoszthatja másokkal is.

Hozzáadhat egy háttérképet az irányítópulthoz, hogy az adatok személyesebbek és kontextusosabbak legyenek.

9. lépés: SMS

SMS
SMS

Hozzunk létre SMS -riasztást, amikor a mérleg súlymérést végez. Győződjön meg arról, hogy betöltötte a súlyelőzmény -adatgyűjtőt.

  1. Kattintson a tároló beállításaira (a neve alatt) az adattároló ablakban.
  2. Kattintson a Triggers fülre.
  3. Válassza ki az aktiválni kívánt adatfolyamot. A legördülő listából választhat a meglévő adatfolyamok közül, miután betöltött egy adatcsoportot, vagy manuálisan beírhatja az adatfolyam nevét/kulcsát. A fenti képernyőképen a "Frissítés" van kiválasztva.
  4. Válassza ki a feltételes operátort, ebben az esetben a 'match' -t.
  5. Válassza ki az aktiválási értéket, amely aktivál egy műveletet (manuálisan írja be a kívánt értéket). Írjon be lb -t, ha nem metrikus egységeket használ, vagy kg -ban, ha metrikus egységeket használ. Amikor a "Frissítés" adatfolyam "lb" (vagy "kg") értéket tartalmaz, szöveges üzenetet kap.
  6. Kattintson a "+" gombra a trigger feltétel hozzáadásához.
  7. Írja be e -mail címét vagy telefonszámát az "Értesítendő névjegyek" mezőbe.
  8. Kattintson a "+" gombra az elérhetőségi adatok hozzáadásához.
  9. Ha új telefonszámot ad hozzá a beállítás befejezéséhez, írjon be bármilyen ellenőrző kódot.
  10. Kattintson a Kész gombra az alján, hogy visszatérjen a főképernyőre. A trigger most aktív, és a feltétel teljesülésekor elindul.

A beállítás befejezése után minden alkalommal, amikor mérlegel, kap egy SMS -t, amely tartalmazza a súlyát, mennyit változott a súlya az utolsó mérés óta, és egy véletlen viccet / sértést / bókot.

10. lépés: Következtetés

Korlátlan lehetőség van arra, hogy a most létrehozottra építhessen. Íme néhány ötlet ehhez a projekthez:

  • Más forrásokból származó adatokat streamelhet ugyanabba a súlyelőzmények irányítópultra (információ), hogy saját személyes egészségügyi irányítópultot hozzon létre.
  • Megváltoztathatja a vicceket az üzenetWeighFirst, messageWeighLess, messageWeighMore és messageWeighSame funkciókban a saját humorérzékéhez.
  • A vicceket gyakorlati üzenetekké változtathatja, vagy eltávolíthatja, és a skálakód segítségével nyomon követheti a saját testsúlyán kívül valami fontosabb súlyát.
  • Ugyanezzel a megközelítéssel létrehozhat saját intelligens sör-/borhűtőt. Erre már készült egy fantasztikus oktatóanyag.

Hackelje le, és tudassa velem, ha ez az oktatóanyag valami elképesztő létrehozására inspirál.

Ajánlott: