INHOUDSOPGAWE:

IoT RPi LED -boodskapbord: 3 stappe (met foto's)
IoT RPi LED -boodskapbord: 3 stappe (met foto's)

Video: IoT RPi LED -boodskapbord: 3 stappe (met foto's)

Video: IoT RPi LED -boodskapbord: 3 stappe (met foto's)
Video: Йога для начинающих дома с Алиной Anandee #3. Здоровое гибкое тело за 40 минут. Продвинутый уровень. 2024, November
Anonim
Image
Image
Hardeware -opstelling
Hardeware -opstelling

In hierdie instruksies het ek 'n wifi-gekoppelde LED-boodskapbord gemaak met 'n Raspberry Pi (RPi). Gebruikers sal via hul blaaiers met die Raspberry Pi se webbediener skakel om kort boodskappe in te dien wat op die 8x8 LED -skerm verskyn. Aangesien die koppeling van 8x8 LED-matriks met die MAX7219-bestuurder in Python deur ander op die internet goed gedokumenteer is, fokus hierdie projek op die bou van 'n webbedienerskoppelvlak en die gebruik van ZeroMQ Messaging om inkomende boodskappe te bestuur.

Update: Hier is 'n opvolgprojek IoT Decimal/Hexadecimal 8x8 LED Matrix Drawing Board

(Ek is 'n klubfasiliteerder vir Girls Who Code Club, en ek het met hierdie eenvoudige projek vorendag gekom om studente te leer oor webinterface -ontwerp en boodskappe.)

Stap 1: hardeware -opstelling

Hardeware -opstelling
Hardeware -opstelling
Hardeware -opstelling
Hardeware -opstelling

Hierdie projek benodig die volgende hardeware:

  • Framboos Pi
  • USB -kragbron soos Anker met 'n kort USB na MicroUSB -kabel
  • MAX7219 dot matrix module met 'n lintkabel (Aliexpress vir minder as $ 2)
  • Omhulsel (ek het een uit 'n kartondoos gemaak en in swart gespuitverf)

Die opstel van hardeware is die maklike deel. Koppel eenvoudig 'n lintkabel van 5 drade van die LED -matriks aan die RPi per MAX7219 biblioteekdokument.

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

Ek het 'n dubbelzijdige skuimband gebruik om die LED-eenheid aan die RPi-omhulsel te plak. Toe maak ek 'n omhulsel uit 'n kartondoos om RPi en battery te huisves.

Stap 2: sagteware -opstelling

Opstelling van sagteware
Opstelling van sagteware
Opstelling van sagteware
Opstelling van sagteware
Opstelling van sagteware
Opstelling van sagteware
Opstelling van sagteware
Opstelling van sagteware

RPi moet die volgende sagteware hê:

  • Python 3
  • Apache 2 websever
  • Max7219 bestuurder vir Python
  • ZeroMQ -boodskappe

Python 3

Python 3 moet reeds vooraf geïnstalleer wees op RPi. Terwyl my kode vir Python 3 geskryf is, behoort Python 2 te werk met 'n paar klein veranderinge.

Apache 2

Stel Apache op en aktiveer Python CGI -scripting. Hieronder is 'n paar uitstekende hulpbronne vir die opstel van Apache op RPi, sodat ek dit nie hier sal herhaal nie. Volg die onderstaande tutoriale om Apache en CGI op te stel. Maak seker dat *.py -skrifte uit die blaaier uitgevoer kan word.

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

Max7291 bestuurder

Installeer die Max7219 -bestuurder deur die nuutste installeringsgids te volg:

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

Na die installering, voer die voorbeeldkode, matrix_test.py, per installeringsgids uit om "Hello World" op die LED Matrix te vertoon. Dit moet werk voordat u na die volgende stap gaan.

ZeroMQ -boodskappe

Waarom het ons boodskappe nodig? Probeer die bogenoemde voorbeeldkode, matrix_test.py, gelyktydig op twee terminale skerms. Die stelsel laat verskeie kodes gelyktydig toe, maar u sal sien dat boodskappe oorvleuel word, wat nie wenslik is nie. In 'n enkele gebruikersomgewing is dit moontlik nie 'n probleem nie, aangesien u kan seker maak dat slegs een program op 'n slag kan loop. In 'n multi-gebruiker omgewing soos web, moet die stelsel 'n FIFO (First-In-First-Out) tou skep om seker te maak dat slegs een persoon die kode kan uitvoer terwyl ander wag. Alhoewel daar ander oplossings is om dit te bereik, het ek besluit om ZeroMQ te gebruik om die FIFO -tou te bestuur. Die ZeroMQ -bedienerkode bevat die werklike funksie -oproep om een vir een 'n boodskap op die LED -matriks te vertoon, terwyl die webserver as 'n ZeroMQ -kliënt optree om boodskappe aan die ZeroMQ -bediener te doen en dit in te dien. Terwyl veelvuldige gebruikers gelyktydig boodskappe via 'n webbladsy kan stuur, sal die ZeroMQ -bediener slegs een boodskap op 'n slag vertoon.

Vir hierdie projek installeer ons net die Python -pakket pyzmq en nie die hele ZeroMQ -pakket nie.

hardloop:

sudo pip3 installeer pyzmq

Lees die ZeroMQ -gids op https://zguide.zeromq.org en probeer die hello world server en kliëntvoorbeeld in Python. Kopieer die Python -voorbeeldkode vir beide bediener en kliënt na RPi en maak seker dat dit werk voordat u na die volgende stap gaan.

Stap 3: Webblad opstel

Op die webblad het ek die bootstrap css/js -raamwerk gebruik om die bladsy mooi te laat lyk. Dit is heeltemal opsioneel.

Laai die aangehegte led_msg.tar.gz-lêer af na die Apache-wortel of subgids. Voer die volgende uit om die gzip'd -teerlêer te verwyder:

tar -xzvf led_msg.tar.gz

Dit skep die volgende lêers:

msg.py (hoofprogram)

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

Installeer opsioneel die bootstrap css/js -raamwerk onder die statiese gids.

Voer die URL in vir msg.py in u blaaier en maak seker dat die webblad verskyn. Moet nog nie 'n boodskap indien nie !!!

Voordat boodskappe ingedien kan word, moet die ZeroMQ -bediener begin om boodskappe van die webbladkliënt te aanvaar en dit op die LED -matriks te vertoon. Niks sal op die skerm verskyn as die ZeroMQ -bediener nie werk nie.

Laai die aangehegte max7219_server.py -kode af na u tuisgids, nie in Apache root dir waar dit deur webgebruikers uitgevoer kan word nie. Begin dit as root:

sudo python max7219_server.py

Nou is die ZeroMQ -bediener gereed om boodskappe vanaf die webbladsy te ontvang. Tik en stuur 'n eenvoudige boodskap van die webblad af. As alles korrek ingestel is, sien u die boodskap op die ZeroMQ -bedienerskerm sowel as op die LED Matrix.

As u die bediener wil afsluit, doen net Control-C om die bedienerskerm te verlaat.

Dis dit. Hoop jy geniet hierdie projek net soos ek.

Een van die verbeterings wat u kan maak, is om die ZeroMQ -kommunikasie tussen die bediener en kliënte asynchroon te maak sodat die webblad nie wag terwyl ander boodskappe vertoon word nie. U kan ook 'n ekstra LED -matriks in die kaskade -modus heg. Ek laat dit aan jou oor.

Aanbeveel: