Tartalomjegyzék:

IoT RPi LED üzenőfal: 3 lépés (képekkel)
IoT RPi LED üzenőfal: 3 lépés (képekkel)

Videó: IoT RPi LED üzenőfal: 3 lépés (képekkel)

Videó: IoT RPi LED üzenőfal: 3 lépés (képekkel)
Videó: Node-RED on Raspberry Pi for Relay/LED Light Control (IoT) 2024, November
Anonim
Image
Image
Hardver beállítása
Hardver beállítása

Ebben az utasításban elkészítettem egy wifi-hez csatlakoztatott LED üzenőfalat Raspberry Pi (RPi) használatával. A felhasználók böngészőjük segítségével csatlakoznak a Raspberry Pi webszerveréhez rövid üzenetek küldéséhez, amelyek megjelennek a 8x8 LED -es kijelzőn. Mivel a 8x8 LED mátrix és a Python MAX7219 illesztőprogramjának összekapcsolása mások által jól dokumentált az interneten, ez a projekt egy webszerver interfész kiépítésére és a ZeroMQ Messaging használatára összpontosít.

Frissítés: Itt egy nyomon követési projekt IoT Decimal/Hexadecimal 8x8 LED Matrix Drawing Board

(Klubsegítő vagyok a Girls Who Code Clubnak, és ezt az egyszerű projektet azzal a céllal hoztam létre, hogy megtanítsam a diákokat a webes felület kialakítására és az üzenetküldésre.)

1. lépés: Hardver beállítása

Hardver beállítása
Hardver beállítása
Hardver beállítása
Hardver beállítása

Ez a projekt a következő hardvereket igényli:

  • Raspberry Pi
  • USB áramforrás, például Anker, rövid USB -MicroUSB kábellel
  • MAX7219 pontmátrix modul szalagkábellel (Aliexpress kevesebb mint 2 USD)
  • Ház (csináltam egyet kartondobozból, és feketére festettem spray -vel)

A hardver beállítása az egyszerű rész. Egyszerűen csatlakoztasson egy 5 vezetékes szalagkábelt a LED mátrixból az RPi per MAX7219 könyvtár dok.

LED-> RPi ======== VCC-> GPIO Pin #2 (5v) GND-> GPIO Pin #6 (GND) DIN-> GPIO Pin #19CS-> GPIO Pin #24CLK-> GPIO Pin # 23

Kétoldalas habszalaggal rögzítettem a LED egységet az RPi tokhoz. Ezután egy kartondobozból házat készítettem RPi és akkumulátor tárolására.

2. lépés: Szoftver telepítése

Szoftver beállítása
Szoftver beállítása
Szoftver beállítása
Szoftver beállítása
Szoftver beállítása
Szoftver beállítása
Szoftver beállítása
Szoftver beállítása

Az RPi -nek a következő szoftverrel kell rendelkeznie:

  • Python 3
  • Apache 2 webszerver
  • Max7219 illesztőprogram Pythonhoz
  • ZeroMQ üzenetküldés

Python 3

Az RPi-nek előzetesen telepítenie kell a Python 3-at. Míg a kódom a Python 3 -ra van írva, a Python 2 -nek kevés apró változtatással kell működnie.

Apache 2

Állítsa be az Apache programot, és engedélyezze a Python CGI parancsfájlokat. Az alábbiakban néhány nagyszerű forrás található az Apache RPi -n való beállításához, így itt nem ismétlem meg. Csak kövesse az alábbi oktatóanyagokat az Apache és a CGI beállításához. Győződjön meg arról, hogy a *.py parancsfájlok böngészőből futtathatók.

  • https://raspberrywebserver.com/cgiscripting/
  • https://www.knight-of-pi.org/apache-web-server-with-cgi-for-python/

Max7291 illesztőprogram

Telepítse a Max7219 illesztőprogramot a legújabb telepítési útmutató követésével:

https://max7219.readthedocs.io/en/latest/install.html

A telepítés után futtassa a példakódot, a matrix_test.py, telepítési útmutatónként a "Hello World" megjelenítéséhez a LED -mátrixon. Ennek működnie kell, mielőtt a következő lépésre lép.

ZeroMQ üzenetküldés

Miért van szükségünk az üzenetküldésre? Próbálja meg futtatni a fenti példakódot, a matrix_test.py -t két terminál képernyőn egyszerre. A rendszer lehetővé teszi több kód egyidejű futtatását, de látni fogja, hogy az üzenetek átfedésben vannak, ami nem kívánatos. Egyetlen felhasználói környezetben ez nem jelent problémát, mivel meggyőződhet arról, hogy egyszerre csak egy program futhat. Többfelhasználós környezetben, például a weben, a rendszernek létre kell hoznia egy FIFO (First-In-First-Out) sort, hogy megbizonyosodjon arról, hogy csak egy személy tudja végrehajtani a kódot, míg mások várakoznak. Bár lehet más megoldás is ennek elérésére, úgy döntöttem, hogy a ZeroMQ -t használom a FIFO -sor kezeléséhez. A ZeroMQ szerverkód tartalmazza a tényleges függvényhívást, hogy egy -egy üzenetet jelenítsen meg a LED -mátrixon, miközben a webszerver ZeroMQ -ügyfélként működik, és érdeklődik a ZeroMQ -kiszolgálón. Így, miközben egyszerre több felhasználó is küldhet üzeneteket egy weboldalon keresztül, a ZeroMQ szerver egyszerre csak egy üzenetet jelenít meg.

Ehhez a projekthez csak a Python csomagot telepítjük, és nem a teljes ZeroMQ csomagot.

fuss:

sudo pip3 telepítse a pyzmq -t

Olvassa el a ZeroMQ útmutatót a https://zguide.zeromq.org oldalon, és próbálja ki a hello world szerver és kliens példát a Pythonban. Másolja ki a Python példakódot mind a kiszolgálóra, mind az ügyfélre az RPi -be, és győződjön meg arról, hogy működnek, mielőtt a következő lépésre lép.

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

A weboldalon a bootstrap css/js keretrendszert használtam, hogy az oldal csinos legyen. Ez teljesen opcionális.

Töltse le a mellékelt led_msg.tar.gz fájlt az Apache gyökérkönyvtárába vagy alkönyvtárába. A gzip'd tar fájl eltávolításához futtassa a következőt:

tar -xzvf led_msg.tar.gz

Ez a következő fájlokat hozza létre:

msg.py (fő program)

templates/interstitial.html (html sablon) templates/send_msg.html (html sablon) static/img/led_150x150-j.webp

Opcionálisan telepítse a bootstrap css/js keretrendszert a statikus könyvtár alá.

Adja meg az msg.py URL -jét a böngészőjében, és győződjön meg arról, hogy megjelenik a weboldal. Még ne küldj üzenetet !!!

Mielőtt üzeneteket küldhetne, el kell indítani a ZeroMQ szervert, hogy elfogadja a weblap klienséről érkező üzeneteket és megjelenítse azokat a LED mátrixon. Ha a ZeroMQ szerver nem fut, semmi sem jelenik meg a képernyőn.

Töltse le a mellékelt max7219_server.py kódot az otthoni könyvtárába, ne az Apache gyökérkönyvtárába, ahol a webes felhasználók végrehajthatják. Futtassa rootként:

sudo python max7219_server.py

Most a ZeroMQ szerver készen áll a weboldalról érkező üzenetek fogadására. Írjon be és küldjön be egy egyszerű üzenetet a weboldalról. Ha minden megfelelően van beállítva, akkor ezt az üzenetet láthatja a ZeroMQ szerver képernyőjén, valamint a LED mátrixon.

Ha le szeretné állítani a szervert, akkor csak a Control-C billentyűvel lépjen ki a kiszolgáló képernyőjéről.

Ez az. Remélem, annyira élvezni fogja ezt a projektet, mint én.

Az egyik fejlesztés az, ha a ZeroMQ kommunikációt aszinkronra állítja a szerver és az ügyfelek között, hogy a weboldal ne várjon, amíg más üzenetek megjelennek. Ezenkívül további LED -mátrixot is csatlakoztathat kaszkád módban. Ezt rád bízom.

Ajánlott: