Tartalomjegyzék:

RPi-Zero IoT eseményjelző / színes lámpa: 6 lépés (képekkel)
RPi-Zero IoT eseményjelző / színes lámpa: 6 lépés (képekkel)

Videó: RPi-Zero IoT eseményjelző / színes lámpa: 6 lépés (képekkel)

Videó: RPi-Zero IoT eseményjelző / színes lámpa: 6 lépés (képekkel)
Videó: Abandoned American Home Holds Thousands Of Forgotten Photos! 2024, Július
Anonim
RPi-Zero IoT eseményjelző / színes lámpa
RPi-Zero IoT eseményjelző / színes lámpa
RPi-Zero IoT eseményjelző / színes lámpa
RPi-Zero IoT eseményjelző / színes lámpa
RPi-Zero IoT eseményjelző / színes lámpa
RPi-Zero IoT eseményjelző / színes lámpa

Nincs szükség további mikrovezérlőre és HAT kiegészítő modulra. Az RPi-Zero mindent megtesz. Még jobb, ha RPi-Zero W-t használ!

Mintahasználat: Webszolgáltatás állapotjelző (pl. DowJonesIndex követés), Politikai vagy sportesemények állapotjelzője, hangulatfény, nyomon követheti az érzékelőt. Nézze meg a videót a 6. lépésben.

A Raspberry-Pi csak egy hardveresen támogatott PWM vonallal rendelkezik. Ennek a projektnek 3 PWM sorra van szüksége, ezért egy szoftvervezérelt PWM 'c' könyvtárat használtam (https://wiringpi.com/reference/software-pwm-library/), amelyet már telepíteni kell.

A feldolgozást 2 folyamatra bontottam. Az egyik megszakítás hajtott, a vezérlővonalakat szükség szerint a LED -re kapcsolva, menetrendjeit a „stdin” adatfolyamból kapja. A másik egy eseményvezérelt nodeJS szerver, amely IO aljzatot használ. Ez megakadályozza a fény villogását, miközben biztosítja a reagálást. A kombináció általában a CPU kevesebb mint 5% -át használja fel. A folyamatos színfrissítések idején (csúszkákon és/vagy sok kliensen keresztül) könnyen használhatja az 50% -ot (különösen, ha a Pi-Zero GUI böngészőjét is használja). Ne feledje, hogy a változás beérkezésekor a frissítési értesítések minden nyitott socket klienshez eljutnak.

1. lépés: Amire szüksége lesz

Amire szüksége lesz
Amire szüksége lesz
Amire szüksége lesz
Amire szüksége lesz
  • Pi-Zero micro-SD kártya, 8 GB ajánlott. Raspbian-Linux vagy NOOBS használatával
  • RGB Led (ezt használtam:
  • 3 ellenállás (érték a kívánt áram és/vagy kívánt fényerő alapján, 1/8 watt)
  • WiFi, USB-kulcs (pl. https://www.ebay.com/itm/252018085448) vagy még jobb Raspberry Pi Z-W használata (beépített WiFi-vel)
  • tok (pl. kicsi: https://www.ebay.com/itm/131583579374 több hellyel:
  • diffúzor (lásd a képen látható példákat)
  • Szükség esetén kábelek és adapterek.

Opcionálisan, attól függően, hogy hogyan szeretné csatlakoztatni az alkatrészeket

  • fejléc (https://www.ebay.com/itm/14186077616)
  • jumper (https://www.ebay.com/itm/262235387520)
  • derékszögű mikro-USB adapter (Blue USB 2.0 OTG R)
  • mini USB hub, csak a beállítás fázisában használatos

2. lépés: A Pi-Zero telepítése és a fejlesztés előkészítése

Kövesse a PiZero kezdeti beállításait, hogy készen álljon a fejlesztésre …

Ha van microSD -kártyája NOOBS beállítással, akkor:

Csatlakoztassa a microSD -kártyát. Csatlakoztasson egy kis fogyasztású USB -hubot Wifi -hardverkulccsal, billentyűzettel és egérrel (Használhat vezeték nélküli egeret és/vagy billentyűzetet, akárhogy is, de nem valószínű, hogy külső áramellátást igényel a hub számára). Adaptereket és egy hubot használtam, amelyek már megvoltak.

Most csatlakoztasson egy monitort és egy microUSB hálózati adaptert, és elindul. Folytassa és fejezze be a Raspbian, Debian Linux beállítására vonatkozó utasításokat, amint az a fenti noobs-setup linken látható.

Ezenkívül túl alacsony volt a felbontásom. Így ezeket a sorokat hozzáadtam a /boot/config.txt fájlhoz

disable_overscan = 1

hdmi_csoport = 2 hdmi_mód = 58

A hdmi_mode = 58 működik a monitoromon, a tiédnek szüksége lehet valami másra.

lásd: make-málna-pi-use-full-resolution-monitor és

raspberrypi.org/documentation/configuration/config-txt.md

Indítás után a Pi-Zero belép a GUI felületre.

A microSD-kártyám teljes méretének kihasználásához a raspi-config #1 "Fájlrendszer kibontása" választógombot használtam. A parancssor egy terminál ablakában írja be a "sudo raspi-config" parancsot. Lásd: dokumentáció/konfiguráció/raspi -config.md

Szintén módosítottam ezeket a beállításokat az #5 "Nemzetköziesítési lehetőségek" alatt

  • Terület: en_US. UTF-8 UTF-8
  • Időzóna: Amerika… Los_Angeles
  • Billentyűzet-elrendezés: Általános 105 billentyűs (nemzetközi) számítógép… angol (USA)

Számomra a Nagy-Britannia billentyűzet-szabványa (amelyhez a Raspbian előre beállított) a szerkesztéseim nagy részét valódi házimunkává tette.

Szükség szerint módosítsa ezeket a beállításokat, az Önnek megfelelő módon. Ne feledje, hogy a 'raspi-config' navigálásához a nyilakat és a tabulátor billentyűt kell használnia; és egy kiválasztás után nagyon lassan reagálhat.

Nem találtam problémát, ha WiFi-USB dongle segítségével csatlakozom az internethez (2 különbözőet használtam). Egyszerűen meg kellett adnom a WiFi hozzáférési kulcsjelszavamat a GUI jobb felső sarkában található legördülő menü segítségével. Miután ezt megtettem, automatikusan újra csatlakozik minden újraindítás/bekapcsolás után.

Most készen álltam az általános fejlődésre.

Ahhoz, hogy idáig eljusson, sok utat választhat. Eddig nem részleteztem itt részletesen, de számos módszer és konfiguráció található részletesebben az interneten. Beleértve egyet a fej nélküli beállításhoz, ahol a személyi számítógép távoli ssh terminál ablakát használná az ebben az útmutatóban megadott fejlesztési lépések végrehajtásához.

3. lépés: Fejlesztési környezet és eszközök

Fejlesztési környezet és eszközök
Fejlesztési környezet és eszközök
Fejlesztési környezet és eszközök
Fejlesztési környezet és eszközök

A projekthez kifejlesztett rendszerkonfigurációs beállításokhoz és szoftverekhez K + F-et végeztem egy Raspberry Pi-2 készüléken; mert négymagos CPU-ja sokkal gyorsabbá teszi a böngészést és a kódfejlesztést, több ablakkal. Természetesen bármilyen Raspberry-Pi modellt használhat a projekt megvalósításához.

A Node.js (eseményvezérelt I/O szerveroldali JavaScript-támogatás) beállításához a következőket tettem:

sudo apt-get update

sudo apt-get install nodejs npm

Ezen nodeJS csomagok hozzáadása (npm a Nodejs Package Manager)

npm express telepítése

npm telepítse a socket.io fájlt

Hivatkozások:

www.npmjs.com/package/express Gyors, minimalista webes keretrendszer

www.npmjs.com/package/socket.io Socket. IO lehetővé teszi a valós idejű kétirányú eseményalapú kommunikációt

4. lépés: A hardver

A hardver
A hardver
A hardver
A hardver
A hardver
A hardver
A hardver
A hardver

Az alkalmazott ellenállási értékek mind különbözőek, mivel a feszültségcsökkenés és a hatékonyság mindhárom LED szín szegmensben eltérő. A GPIO High kimeneti szintje körülbelül 3,2 volt volt. Mindegyik LED -szegmenst tesztelték annak biztosítása érdekében, hogy legfeljebb 20 mA -nél kevesebbet és körülbelül 40 mA -t fogyasszon (<50ma max megengedett össz), amit a PiZero könnyen kezel. A lehető legnagyobb kimeneti fényerőt kaptam, közvetlenül a LED -et vezérelve; ami bőven megfelel az igényeimnek. Nagyobb áramok meghajtásához, sokkal fényesebb kimenethez, közbenső meghajtó tranzisztorokat lehet használni egy közös anód LED -el, anódja az 5v -os vonalhoz van csatlakoztatva. PS: Mivel a különböző fehér szintjeim kissé kékesek, 27 Ohm helyett 27 jobb választás lett volna számomra.

Megjegyzés: Hüvelyes fejjel ellátott fejlécet használtam, és F-F áthidalókkal csatlakoztattam a LED-lábakhoz. Ez tartotta a teljes magasságot. Az ellenállásokat a jumperek közepére forrasztottam. Ha nem használ áramköri lapot vagy forrasztás nélküli táblát, valamint a derékszögű mikro-USB-USB adapter használatával a WiFi-kulcshoz, akkor a végső szerelvény meglehetősen kompakt lett.

A diffúzorhoz ping-pong labdát ajánlok (könnyű lyukat fúrni, amely elég nagy ahhoz, hogy behelyezze az 5-8-10 mm-es LED-et). Vagy vágja le a LED izzó tetejét (amely műanyag diffúzort használ). Ehhez jelöljön ki egy vonalat egy finom hegyes élességgel, ahol vágni szeretne, és használjon Dremel-szerű szerszámot, vékony levágóelemmel. Ha úgy tetszik, egy szép kis vágott üvegedény vagy ivópohár használható. Miután elhelyezkedett egy diffúzoron, ragassza le a tok tetejére.

A bemutatókhoz szeretek egy kisméretű Li-power bankot használni a tokban. Ez az egység lenyűgözőbbnek tűnik teljesen vezeték nélkül. Természetesen ebben a konfigurációban korlátozott működési idővel rendelkezik. A normál működéshez egyszerűen használok egy mikro-USB fali adaptert.

5. lépés: Projekt szoftver

Projekt szoftver
Projekt szoftver

Két programot használtam, egy Node.js folyamatot, amely a stdin adatfolyamon keresztül egy gyermekfolyamathoz beszél. Ez azt jelenti, hogy mindegyikük azt teheti, amit a legjobban tud, és független folyamatként működhet a saját tempójában.

Ezt tettem: De nem kell, mivel egy tar-gzip fájlt adtam meg, amely tartalmazza a kapott fájlfát.

NodeJS szerveroldali beállítás:

cd ~

mkdir node_rgb cd node_rgb mkdir public

tegye az „index.html” és a „style.css” fájlokat a „~/node_rgb/public” könyvtárba; írja be az „rgbDriver.c” és az „rgb_main.js” fájlokat a „~/node_rgb” könyvtárba

Fordítsa össze/építse fel az „rgbDriver” c folyamatot:

cd ~/node_rgb

cc -o rgbDriver rgbDriver.c -lwiringPi -lpthread

Az egyenértékűség letöltése és bővítése

Ha le szeretné tölteni a node_rgb.tgz fájlt (lent) a Pi-Zero készülékére a saját könyvtárába (~ pi), tegye a következők egyikét:

  1. Töltse le a Pi-Zero GU-jának böngészőjéből A fájlt helyezze át a ~ pi/
  2. Egy terminál ablakban, amely csatlakozik hozzád Pi-Zero: cd ~ piwget

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. Töltse le az asztali számítógép böngészőjéből. A WinSCP használatával másolja át a Pi-Zero ~ pi könyvtárába

A fenti #1 2 vagy 3 végrehajtása után…

cd ~

tar -xzvf node_rgb.tgz fa node_rgb… node_rgb ├── public │ ├── Dow_Jones_Index.html │ ── index.html │ └── style.css ├── rgbDriver ├── rgbDriver.c ├── rgbDriver. js ├── start_rgb ├── kill_rgb └── track_dji

A kapott futtatható (felülről) 'rgbDriver' a Node.js interfész folyamatától függetlenül használható.

Annak ellenőrzésére, hogy ez az illesztőprogram és a hardver működik-e, három értékű (0-255) értékű, szóközzel elválasztott halmazokat kell az illesztőprogramhoz továbbítani. Mint 'echo 255 0 0 |./rgbDriver 'piros vagy' echo 0 255 0 |./rgbDriver 'zöldre. Ne feledje, hogy a „./” jelzi az operációs rendszernek, hogy keresse meg „rgbDriver” programunkat az aktuális könyvtárban. Amikor kiad egy a ^c (cntl-c) gombot az illesztőprogram leállításához, a LED világíthat, vagy nem. Alternatív megoldásként interaktív módon is megadhatja értékeit. Próbálja beírni a parancssorból ezeket a sorokat egymás után, és figyelje a LED -et.

./rgbDriver

0 255 0 100 0 100 255 255 0… stb… ^c

Győződjön meg arról, hogy ezek közül a folyamatok közül kettő nem fut párhuzamosan.

A teljes szoftvercsomag elindításához, beleértve a Node.js szervert, használja ezt a parancsot:

sudo csomópont rgb_main.js

Ezután használja a cntl-c billentyűt, ha le szeretné állítani a Node.js szervert. Indítsa el a gombbal

sudo node rgb_main.js &

hogy futtassa a hátsó talajon, de akkor a 'sudo kill -9 pid' paranccsal kell leállítania. Ha ez a parancs idegennek tűnik számodra, akkor nézd át ezeknek a parancsoknak a kimenetét: 'man kill' és 'man sudo'.

Használjon böngészőt asztali számítógépén, táblagépén vagy telefonján, amely csatlakozik a helyi hálózathoz. Nyissa meg a https:// raspberrypi: 8080/oldalt, vagy ha ez nem működik, használja az eszköz IP-címét (az 'ifconfig' cmd-ből beszerezve), például 192.168.1.15 és a port specifikáció: 8080, vagy Pi-Zero GUI: localhost: 8080 működni fog.

Működtesse az RGB csúszkákat a megjelenő oldalon, és figyelje, hogy az RGB-LED lámpa követi.

Egyéb hasznos parancsok Vegye figyelembe, hogy ha egynél több „rgbDriver” fut egyszerre, akkor valószínűleg kiszámíthatatlan viselkedést tapasztal. Ha megpróbálja futtatni az rgb_main.js második példányát, akkor hibaüzenet jelenik meg.

Ez a parancs felsorolja az összes kapcsolódó folyamatot:

ps aux | grep rgb

Ez a parancs megöli az összes nodeJS folyamatot az 'rgbDriver' gyermekfolyamatokkal együtt:

sudo ps aux | grep csomópont.*rgb | awk '{print "sudo kill -9" $ 2}' | SH

Önálló működés

Ha azt szeretné, hogy a Pi-Zero elindítsa a Node.js szerveralkalmazást, amikor elindul… a kedvenc szerkesztője (pl. Nano ~/.bash_profile) használatával, írja be a következő sorokat, és mentse a ~/.bash_profile mappába

cd node_rgb

sudo csomópont rgb_main.js &

Ha nem szeretne kellemetlen hibaüzeneteket kapni a terminál ablakának megnyitásakor, használjon feltételes kódolást, például a "start_rgb" fájl shell scriptjét

Ha a Pi-Zero beágyazva fut, billentyűzet, egér vagy monitor nélkül; a grafikus felhasználói felület minimális CPU -időt vesz igénybe, mivel nem lesz felhasználói beavatkozás. Nem tiltom le az automatikus grafikus felhasználói felület indítását, mivel a Pi-Zero a szükségesnél több erőforrással rendelkezik; és szeretem, ha néhány kábelt csatlakoztathatok és használhatok, a jövőben bármikor. Ez azonban nem szükséges, mivel távoli SSH terminált (pl. PuTTY) használhat a szükséges karbantartások elvégzésére.

Eseménymonitorként való használata

Létrehoztam egy weboldalt a Dow Jones index napi változásának nyomon követésére. Forrása útmutatóként szolgálhat saját oldaladhoz, amely bizonyos webes adatokat használ, és ennek megfelelően vezérli a Pi-Zero jelzőt. Ez az oldal (json) adatait egy Google webszolgáltatásból szerzi be. A webszolgáltatásoknak számos formája létezik, ezért meg kell vizsgálnia azt, amelyiket használni szeretné a hozzáféréshez szükséges JavaScript -kód meghatározásához.

Ha szeretné használni az eszközét, akárcsak én, mint dedikált, önálló Dow-indexváltozás-jelzőt, adja hozzá ezeket a sorokat a ~/.bash_profile fájl végéhez, vagy a kívánt SSH-hoz, és adja ki a második parancssort. Ha ezt követően szeretné használni a „kill -9” távirányítót, akkor a kapott epiphany -browser folyamatot.

aludni 20

epiphany-browser --display =: 0.0 localhost: 8080/Dow_Jones_Index.html &

Az indikátor világosszürke színben világít, ha értéke 0. Egyre zöldebb lesz magasabb értékekkel. A legfényesebb tiszta zöld színű, körülbelül 250. A magasabb, mégis értékek először sekély villanást okoznak, a legmélyebb villanás pedig körülbelül 500. Negatív érték esetén (napi csökkenés a Dow -ban) hasonló, de piros.

FRISSÍTÉS 2018. május

Létrehoztam egy új weboldalt (SolarStorm_devCon.html,.txt fájlként csatolva, mivel a.html fájl nem töltődik fel), amely összegyűjti a GeoMagnetic viharinformációkat (amelyek előrevetíthetik a pusztító CME -t, EMP -t), és ezt használják a szín megjelenítéséhez skála egyfajta Geo-Storm „DevCon” indexet tükröz. jelzi a katasztrófa lehetőségét az űrjárás okozta elektromágneses impulzus (EMP) miatt, feltehetően a napkitörések vagy a koronális tömegkibocsátás (CME) miatt. Használja úgy, mint a "Dow_Jones_Index.html" fájlt.

6. lépés: Távoli weboldal -vezérlés

Image
Image

Ezen a ponton bárhonnan vezérelheti IOT színlámpáját a helyi hálózaton. A nyilvános interneten való láthatóvá tétele nem része ennek az utasításnak. Ha nyilvános IP -t állít be a készülékhez, akkor használja ezt az IP -t a nyitott socket parancsban az oldalak JavaScript -jében (pl. ~/node_rgb/public/index.html)

Azt tervezem, hogy a Pi-Zero IOT készülékemet valós idejű színjelzőként használom a Dow Jones index napi változásához. Létrehoztam egy oldalt, amely ezt megteszi, és a json adatokat a google.com/finance webhelyről szerzi be. Továbbá létrehoztam néhány weboldalt, hogy bemutassam ennek a kis IOT -eszköznek a széles körű felhasználását. Ahelyett, hogy a PiZero -t a nyilvános internetre tenném, tárolta az oldalakat a meglévő nyilvános webszerveremen (jelenleg @ 71.84.135.81 aka: https://raspi.ddns01.com/, amikor az ingyenes dinamikus tartománynév-kiszolgálóm működik), amely az eredeti B Raspberry-Pi verzión fut.

A távoli oldalak kódjában megnyitottam a socket kapcsolatokat a 192.168.1.41:8080-ra. A Pi-Zero ip-jét 192.168.1.41-re javítottam. Ehhez hasonlóan kövesse a málna-pi-wifi-vel és a-static-ip beállításával kapcsolatos utasításokat a Statikus IP-cím cím alatt. Tehát ha a PiZero-t 192.168.1.41-re állítja be a helyi hálózaton, ezek az oldalak, amelyek a webhelyemről nyíltak meg, kommunikálni fognak az eszközével, mivel a kapcsolat az ügyfél oldaláról történik.

Itt vannak azok az oldalak, amelyeket a Pi-Zero IOT világítóeszközöm tesztelésére és működtetésére használtam. Ha felhozza ezeket az oldalakat (https://71.84.135.81/iot/rgbLamp/ aka https://raspi.ddns01.com/iot/rgbLamp/ vagy az oldalon található keretek bármelyikét), az ügyféloldali JavaScript vezesse a létrehozott IOT jelzőfényt (tekintettel arra, hogy ezen az „192.168.1.41:8080” URL -en fut) Ha úgy tetszik, lemásolhatja bármelyik oldal forrását, és tetszés szerint módosíthatja.

Az első oldalon bármilyen színűre állíthatja a készüléket. A LED lámpa és a weboldalon látható szín meglehetősen jól nyomon követhető. A felhasznált ellenállási értékeket (valamint a monitort is) lehet módosítani, hogy valóban illeszkedjenek egymáshoz. Kevés időt töltöttem annak biztosításával, hogy illeszkedjenek egymáshoz. Ez az oldal frissíti a színét, ha bárki más megváltoztatja a színét, és a szerver elküldi a frissített információs üzenetet.

Az egyik oldal egy egyszerű, gombokkal vezérelt közlekedési lámpa.

Van egy oldal, amely sportversenyek (pl. Futball, kosárlabda, baseball), választások nyomon követésére készült, vagy akár egy adománygyűjtő vagy a DEFCON riasztási szint stílusjelzőhöz van igazítva. A pontszámokat (vagy elkötelezett választói szavazatokat) automatikusan meg lehet szerezni egy webszolgáltatásból, vagy le lehet kaparni más weboldalról. Nincs automatikus hírcsatorna a Contest_demo oldalamon. Valaki, akinek megfelelő szakismerete van, hozzáadhat egy erőforrás-meghajtót nagy teljesítményű LED-es fényszórók működtetéséhez, és előtte megmoshatja a csapat színével rendelkező szobát (vagy sportbárt). Sajnos elkéstem ezzel a tanulsággal az idei szuper tál partikhoz, de időben a 2016-os választásokhoz.

Aztán ott van az oldal, amely hasonló ahhoz, amellyel a készülékemet Dow Jones követési jelzővé alakítom. A csúszka és a gombok csak a DJI bemutató oldalán találhatók bemutató célokra. Ennek az oldalnak a forrásában az általam kifejlesztett kód egy zöld képernyő által inspirált kép újraszínezésére szolgál; annyi megjegyzéssel, hogy Ön is hasznosnak találhatja.

A 4 oldal közül csak az első (a Pi-Zero alapú index.html oldallal együtt) figyeli a szerver frissítési üzeneteit, és ennek megfelelően frissít. A többit csak a szerverre küldi.

Ajánlott: