Cuprins:

Tablou de mesaje LED IoT RPi: 3 pași (cu imagini)
Tablou de mesaje LED IoT RPi: 3 pași (cu imagini)

Video: Tablou de mesaje LED IoT RPi: 3 pași (cu imagini)

Video: Tablou de mesaje LED IoT RPi: 3 pași (cu imagini)
Video: Cum scrii când începi un caiet nou 2024, Noiembrie
Anonim
Image
Image
Configurare hardware
Configurare hardware

În acest Instructable, am realizat o placă de mesaje LED conectată la wifi folosind un Raspberry Pi (RPi). Utilizatorii se vor conecta la serverul web al Raspberry Pi folosind browserele lor pentru a trimite mesaje scurte care vor apărea pe afișajul LED 8x8. Deoarece interfața matricei LED 8x8 cu driverul MAX7219 din Python este bine documentată de alții pe Internet, acest proiect se concentrează pe construirea unei interfețe de server web și utilizarea ZeroMQ Messaging pentru a gestiona mesajele primite.

Actualizare: Iată un proiect de urmărire IoT Decimal / Hexadecimal 8x8 LED Matrix Drawing Board

(Sunt un facilitator de club pentru Girls Who Code Club și am venit cu acest proiect simplu pentru a preda studenților despre proiectarea interfeței web și mesagerie.)

Pasul 1: Configurare hardware

Configurare hardware
Configurare hardware
Configurare hardware
Configurare hardware

Acest proiect necesită următoarele componente hardware:

  • Raspberry Pi
  • Sursă de alimentare USB, cum ar fi Anker, cu un cablu scurt USB la MicroUSB
  • Modul matrice de puncte MAX7219 cu un cablu panglică (Aliexpress pentru mai puțin de 2 USD)
  • Carcasă (am făcut una dintr-o cutie de carton și vopsită în negru cu spray)

Configurarea hardware este partea ușoară. Pur și simplu conectați un cablu panglică cu 5 fire de la matricea LED la RPi conform documentei bibliotecii MAX7219.

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

Am folosit o bandă de spumă pe două fețe pentru a fixa unitatea LED pe carcasa RPi. Apoi, am făcut o carcasă dintr-o cutie de carton pentru a găzdui atât RPi, cât și bateria.

Pasul 2: Configurare software

Configurare software
Configurare software
Configurare software
Configurare software
Configurare software
Configurare software
Configurare software
Configurare software

RPi ar trebui să aibă următoarele programe:

  • Python 3
  • Apache 2 websever
  • Driver Max7219 pentru Python
  • Mesaje ZeroMQ

Python 3

RPi ar trebui să aibă Python 3 deja preinstalat. În timp ce codul meu este scris pentru Python 3, Python 2 ar trebui să funcționeze cu câteva modificări minore.

Apache 2

Configurați Apache și activați scriptul Python CGI. Mai jos sunt câteva resurse excelente pentru configurarea Apache pe RPi, așa că nu voi repeta aici. Urmați tutorialele de mai jos pentru a configura Apache și CGI. Asigurați-vă că scripturile *.py sunt executabile dintr-un browser.

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

Driver Max7291

Instalați driverul Max7219 urmând cel mai recent ghid de instalare:

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

După instalare, rulați exemplul de cod, matrix_test.py, per ghid de instalare pentru a afișa „Hello World” pe LED Matrix. Acest lucru trebuie să funcționeze înainte de a trece la pasul următor.

Mesaje ZeroMQ

De ce avem nevoie de mesagerie? Încercați să rulați exemplul de cod de mai sus, matrix_test.py, pe două ecrane de terminal simultan. Sistemul va permite ca mai multe coduri să ruleze simultan, dar veți vedea mesajele care se suprapun, ceea ce nu este de dorit. Într-un mediu de utilizator unic, este posibil să nu fie o problemă, deoarece vă puteți asigura că poate rula un singur program odată. Într-un mediu multi-utilizatori, cum ar fi web, sistemul trebuie să creeze o coadă FIFO (First-In-First-Out) pentru a se asigura că o singură persoană poate executa codul în timp ce alții așteaptă. Deși pot exista și alte soluții pentru a realiza acest lucru, am decis să folosesc ZeroMQ pentru a gestiona coada FIFO. Codul serverului ZeroMQ conține apelul funcțional efectiv pentru a afișa un mesaj pe matricea LED unul câte unul, în timp ce serverul web acționează ca un client ZeroMQ pentru a întreba și trimite mesaje către serverul ZeroMQ. În acest fel, în timp ce mai mulți utilizatori ar putea trimite mesaje printr-o pagină web simultan, serverul ZeroMQ va afișa un singur mesaj pe rând.

Pentru acest proiect, vom instala pur și simplu pachetul Python pyzmq și nu întregul pachet ZeroMQ.

alerga:

sudo pip3 instalează pyzmq

Citiți ghidul ZeroMQ pe https://zguide.zeromq.org și încercați exemplul serverului și clientului Hello World din Python. Copiați codul de exemplu Python pentru server și client în RPi și asigurați-vă că funcționează înainte de a trece la pasul următor.

Pasul 3: Configurarea paginii web

În pagina web, am folosit cadrul bootstrap css / js pentru a face pagina să arate drăguță. Acest lucru este total opțional.

Descărcați fișierul led_msg.tar.gz atașat în rădăcina sau subdirectorul Apache. Pentru a dezarhiva fișierul tar gzip'd, rulați:

tar -xzvf led_msg.tar.gz

Aceasta creează următoarele fișiere:

msg.py (programul principal)

templates / interstitial.html (șablon html) șabloane / send_msg.html (șablon html) static / img / led_150x150-j.webp

Opțional, instalați cadrul bootstrap css / js în directorul static.

Introduceți adresa URL pentru msg.py browserul dvs. și asigurați-vă că pagina web apare. Nu trimiteți încă un mesaj !!!

Înainte ca mesajele să poată fi trimise, serverul ZeroMQ trebuie pornit pentru a accepta mesaje de la clientul paginii web și a le afișa pe matricea LED. Nimic nu se va afișa pe ecran dacă serverul ZeroMQ nu rulează.

Descărcați codul max7219_server.py atașat în directorul dvs. de acasă, nu în directorul rădăcină Apache, unde ar putea fi executat de utilizatorii web. Rulați-l ca root:

sudo python max7219_server.py

Acum serverul ZeroMQ este gata să primească mesaje de pe pagina web. Introduceți și trimiteți un mesaj simplu de pe pagina web. Dacă totul este configurat corect, veți vedea acel mesaj pe ecranul serverului ZeroMQ, precum și pe matricea LED.

Dacă doriți să opriți serverul, faceți doar Control-C pentru a ieși din ecranul serverului.

Asta e. Sper să vă bucurați de acest proiect la fel de mult ca și mine.

O îmbunătățire pe care o puteți face este să faceți comunicarea ZeroMQ între server și clienți asincronă, astfel încât pagina web să nu aștepte în timp ce sunt afișate alte mesaje. De asemenea, puteți atașa matrice LED suplimentară în modul cascadă. O voi lăsa pe tine.

Recomandat: