Kazalo:

IoT RPi LED oglasna deska: 3 koraki (s slikami)
IoT RPi LED oglasna deska: 3 koraki (s slikami)

Video: IoT RPi LED oglasna deska: 3 koraki (s slikami)

Video: IoT RPi LED oglasna deska: 3 koraki (s slikami)
Video: Высокая плотность 2022 2024, November
Anonim
Image
Image
Namestitev strojne opreme
Namestitev strojne opreme

V tem navodilu sem z Raspberry Pi (RPi) izdelal LED oglasno desko, povezano z wifi. Uporabniki se bodo s svojimi brskalniki povezali s spletnim strežnikom Raspberry Pi in oddali kratka sporočila, ki bodo prikazana na 8x8 LED zaslonu. Ker povezovanje LED matrike 8x8 z gonilnikom MAX7219 v Pythonu dobro dokumentirajo drugi na internetu, se ta projekt osredotoča na izgradnjo vmesnika spletnega strežnika in uporabo sporočil ZeroMQ za upravljanje dohodnih sporočil.

Posodobitev: Tukaj je nadaljnji projekt IoT Decimal/Hexadecimal 8x8 LED Matrix Drawing Board

(Sem vodja kluba za Girls Who Code Club in pripravila sem ta preprost projekt, ki bi učence učil oblikovanja spletnega vmesnika in sporočil.)

1. korak: Namestitev strojne opreme

Namestitev strojne opreme
Namestitev strojne opreme
Namestitev strojne opreme
Namestitev strojne opreme

Ta projekt zahteva naslednjo strojno opremo:

  • Malina Pi
  • Vir napajanja USB, kot je Anker, s kratkim kablom USB na MicroUSB
  • Matrični modul MAX7219 s tračnim kablom (Aliexpress za manj kot 2 USD)
  • Ohišje (eno sem naredil iz kartonske škatle in s črno barvano barvo)

Namestitev strojne opreme je enostaven del. Preprosto priključite 5 -žični tračni kabel iz matrike LED na RPi na doc knjižnice MAX7219.

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

Za pritrditev LED enote na ohišje RPi sem uporabil dvostranski penasti trak. Nato sem iz kartonske škatle naredil ohišje za namestitev RPi in baterije.

2. korak: Namestitev programske opreme

Namestitev programske opreme
Namestitev programske opreme
Namestitev programske opreme
Namestitev programske opreme
Namestitev programske opreme
Namestitev programske opreme
Namestitev programske opreme
Namestitev programske opreme

RPi bi moral imeti naslednjo programsko opremo:

  • Python 3
  • Spletni strežnik Apache 2
  • Gonilnik Max7219 za Python
  • Sporočila ZeroMQ

Python 3

RPi mora imeti vnaprej nameščen Python 3. Čeprav je moja koda napisana za Python 3, bi moral Python 2 delovati z nekaj manjšimi spremembami.

Apache 2

Namestite Apache in omogočite skriptovanje Python CGI. Spodaj je nekaj odličnih virov za nastavitev Apacheja na RPi, zato tukaj ne bom ponavljal. Če želite nastaviti Apache in CGI, sledite spodnjim navodilom. Prepričajte se, da so skripti *.py izvedljivi iz brskalnika.

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

Max7291 gonilnik

Gonilnik Max7219 namestite tako, da sledite najnovejšemu priročniku za namestitev:

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

Po namestitvi zaženite vzorčno kodo matrix_test.py po navodilih za namestitev, da se na matriki LED prikaže "Hello World". To mora delovati, preden greste na naslednji korak.

Sporočila ZeroMQ

Zakaj potrebujemo sporočanje? Poskusite zagnati zgornjo zgledno kodo matrix_test.py na dveh terminalih hkrati. Sistem bo omogočil istočasno izvajanje več kod, vendar boste videli, da se sporočila prekrivajo, kar ni zaželeno. V okolju z enim uporabnikom to morda ni problem, saj se lahko prepričate, da se lahko hkrati izvaja samo en program. V okolju z več uporabniki, kot je splet, mora sistem ustvariti čakalno vrsto FIFO (First-In-First-Out), da se prepriča, da lahko samo ena oseba izvede kodo, medtem ko druge čakajo. Čeprav obstajajo druge rešitve za to, sem se odločil, da za upravljanje čakalne vrste FIFO uporabim ZeroMQ. Koda strežnika ZeroMQ vsebuje dejanski klic funkcije za prikaz sporočila na matriki LED enega za drugim, medtem ko spletni strežnik deluje kot odjemalec ZeroMQ, da poizveduje in pošlje sporočila strežniku ZeroMQ. Na ta način, medtem ko bi lahko več uporabnikov hkrati oddalo sporočila prek spletne strani, bo strežnik ZeroMQ prikazal le eno sporočilo hkrati.

Za ta projekt bomo namestili samo paket Python pyzmq in ne celotnega paketa ZeroMQ.

teči:

sudo pip3 namestite pyzmq

Preberite vodnik ZeroMQ na naslovu https://zguide.zeromq.org in preizkusite svetovni primer strežnika in odjemalca hello v Pythonu. Kopirajte vzorčno kodo Python za strežnik in odjemalca v RPi in se prepričajte, da delujejo, preden greste na naslednji korak.

3. korak: Nastavitev spletne strani

Na spletni strani sem uporabil okvir za zagon css/js, da je bila stran videti lepa. To je popolnoma neobvezno.

Prenesite priloženo datoteko led_msg.tar.gz v korenski ali podimenik Apache. Če želite odstraniti datoteko gzip'd tar, zaženite:

tar -xzvf led_msg.tar.gz

Tako nastanejo naslednje datoteke:

msg.py (glavni program)

templates/interstitial.html (html template) templates/send_msg.html (html template) static/img/led_150x150.jpg (jpg uporabljeno v predlogi html)

Po želji namestite okvir za zagon css/js v statični imenik.

Vnesite URL za msg.py brskalnik in se prepričajte, da se prikaže spletna stran. Ne pošiljajte še sporočila !!!

Pred pošiljanjem sporočil je treba zagnati strežnik ZeroMQ, da sprejema sporočila od odjemalca spletnih strani in jih prikaže na LED matriki. Če strežnik ZeroMQ ne deluje, se na zaslonu ne prikaže nič.

Prenesite priloženo kodo max7219_server.py v domači imenik, ne v korenski direktorij Apache, kjer bi jo lahko izvajali spletni uporabniki. Zaženi ga kot root:

sudo python max7219_server.py

Zdaj je strežnik ZeroMQ pripravljen za sprejemanje sporočil s spletne strani. Vnesite in pošljite preprosto sporočilo s spletne strani. Če je vse pravilno nastavljeno, boste to sporočilo videli na zaslonu strežnika ZeroMQ in na matriki LED.

Če želite zaustaviti strežnik, naredite Control-C, da zaprete strežniški zaslon.

To je to. Upam, da boste v tem projektu uživali tako kot jaz.

Ena izboljšava, ki bi jo lahko naredili, je, da komunikacijo ZeroMQ med strežnikom in odjemalci naredite asinhrono, tako da spletna stran ne čaka, medtem ko se prikažejo druga sporočila. Prav tako lahko v kaskadnem načinu priključite dodatno LED matriko. To prepuščam vam.

Priporočena: