Turinys:

„IoT RPi LED“pranešimų lenta: 3 žingsniai (su paveikslėliais)
„IoT RPi LED“pranešimų lenta: 3 žingsniai (su paveikslėliais)

Video: „IoT RPi LED“pranešimų lenta: 3 žingsniai (su paveikslėliais)

Video: „IoT RPi LED“pranešimų lenta: 3 žingsniai (su paveikslėliais)
Video: Dirbu privačiame turtingųjų ir žinomų muziejuje. Siaubo istorijos. Siaubas. 2024, Lapkritis
Anonim
Image
Image
Techninės įrangos sąranka
Techninės įrangos sąranka

Šioje instrukcijoje aš sukūriau „Wi-Fi“prijungtą LED pranešimų lentą, naudodamas „Raspberry Pi“(RPi). Vartotojai prisijungs prie „Raspberry Pi“žiniatinklio serverio naudodami savo naršykles, norėdami pateikti trumpąsias žinutes, kurios bus rodomos 8x8 LED ekrane. Kadangi 8x8 LED matricos sąsaja su „MAX7219“tvarkykle „Python“yra gerai dokumentuota kitų internete, šis projektas orientuotas į žiniatinklio serverio sąsajos kūrimą ir „ZeroMQ Messaging“naudojimą gaunamiems pranešimams valdyti.

Atnaujinimas: čia yra tolesnis projektas „IoT Decimal/Hexadecimal 8x8 LED Matrix Drawing Board“

(Aš esu klubo „Girls Who Code Club“tarpininkas ir sugalvojau šį paprastą projektą, norėdamas mokyti studentus žiniatinklio sąsajos kūrimo ir pranešimų siuntimo.)

1 žingsnis: Aparatūros sąranka

Techninės įrangos sąranka
Techninės įrangos sąranka
Techninės įrangos sąranka
Techninės įrangos sąranka

Šiam projektui reikalinga ši aparatinė įranga:

  • Raspberry Pi
  • USB maitinimo šaltinis, pvz., „Anker“, su trumpu USB - „MicroUSB“laidu
  • MAX7219 taškinės matricos modulis su juostiniu kabeliu („Aliexpress“už mažiau nei 2 USD)
  • Korpusas (aš padariau vieną iš kartoninės dėžutės ir purškiau juodai)

Aparatūros sąranka yra lengva dalis. Tiesiog prijunkite 5 laidų juostinį kabelį iš LED matricos prie RPi pagal MAX7219 bibliotekos dok.

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

Naudojau dvipusę putų juostą, kad pritvirtinčiau LED bloką prie RPi korpuso. Tada iš kartoninės dėžutės padariau gaubtą, kuriame buvo RPi ir baterija.

2 veiksmas: programinės įrangos sąranka

Programinės įrangos sąranka
Programinės įrangos sąranka
Programinės įrangos sąranka
Programinės įrangos sąranka
Programinės įrangos sąranka
Programinės įrangos sąranka
Programinės įrangos sąranka
Programinės įrangos sąranka

RPi turi turėti šią programinę įrangą:

  • Python 3
  • „Apache 2“žiniatinklio serveris
  • Max7219 tvarkyklę, skirtą „Python“
  • „ZeroMQ“pranešimai

Python 3

RPi turėtų būti iš anksto įdiegtas „Python 3“. Nors mano kodas yra parašytas „Python 3“, „Python 2“turėtų veikti su nedideliais pakeitimais.

„Apache“2

Nustatykite „Apache“ir įgalinkite „Python“CGI scenarijus. Žemiau yra keletas puikių šaltinių, skirtų „Apache“nustatyti RPi, todėl čia nekartosiu. Tiesiog atlikite toliau pateiktas instrukcijas, kad nustatytumėte „Apache“ir CGI. Įsitikinkite, kad *.py scenarijai yra vykdomi iš naršyklės.

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

Max7291 vairuotojas

Įdiekite „Max7219“tvarkyklę vadovaudamiesi naujausiu diegimo vadovu:

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

Įdiegę paleiskite pavyzdinį kodą, matrix_test.py, pagal diegimo vadovą, kad LED matricoje būtų rodomas „Hello World“. Tai turi veikti prieš pereinant prie kito žingsnio.

„ZeroMQ“pranešimai

Kodėl mums reikia pranešimų? Pabandykite vienu metu paleisti aukščiau pateiktą pavyzdinį kodą matrix_test.py dviejuose terminalo ekranuose. Sistema leis vienu metu paleisti kelis kodus, tačiau pamatysite, kad pranešimai sutampa, o tai nėra pageidautina. Vieno vartotojo aplinkoje tai gali būti ne problema, nes galite įsitikinti, kad vienu metu gali veikti tik viena programa. Kelių vartotojų aplinkoje, pavyzdžiui, žiniatinklyje, sistema turi sukurti FIFO (First-In-First-Out) eilę, kad įsitikintų, jog tik vienas asmuo gali įvykdyti kodą, o kiti laukia. Nors gali būti ir kitų sprendimų, kaip tai pasiekti, nusprendžiau naudoti „ZeroMQ“FIFO eilės valdymui. „ZeroMQ“serverio kode yra tikrasis funkcijos iškvietimas, kad būtų rodomas pranešimas LED matricoje vienu metu, o žiniatinklio serveris veikia kaip „ZeroMQ“klientas, norėdamas paklausti ir pateikti pranešimus „ZeroMQ“serveriui. Tokiu būdu, nors keli vartotojai vienu metu galėjo siųsti žinutes per tinklalapį, „ZeroMQ“serveris vienu metu rodys tik vieną pranešimą.

Šiam projektui mes tiesiog įdiegsime „Python“paketą pyzmq, o ne visą „ZeroMQ“paketą.

paleisti:

sudo pip3 įdiegti pyzmq

Perskaitykite „ZeroMQ“vadovą https://zguide.zeromq.org ir išbandykite „hello world“serverio ir kliento pavyzdį „Python“. Nukopijuokite serverio ir kliento „Python“pavyzdinį kodą į RPi ir įsitikinkite, kad jie veikia prieš pereinant prie kito veiksmo.

3 veiksmas: tinklalapio sąranka

Tinklalapyje aš naudoju įkrovos css/js sistemą, kad puslapis atrodytų gražiai. Tai visiškai neprivaloma.

Atsisiųskite pridėtą failą led_msg.tar.gz į „Apache“šaknį arba pakatalogį. Norėdami panaikinti gzip'd tar failo žymėjimą, paleiskite:

tar -xzvf led_msg.tar.gz

Tai sukuria šiuos failus:

msg.py (pagrindinė programa)

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

Pasirinktinai įdiekite „bootstrap css/js“sistemą pagal statinį katalogą.

Įveskite naršyklės „msg.py“URL adresą ir įsitikinkite, kad atsiras tinklalapis. Dar nesiųskite žinutės !!!

Prieš pranešimų pateikimą reikia paleisti „ZeroMQ“serverį, kad jis priimtų žinutes iš tinklalapio kliento ir rodytų jas LED matricoje. Jei „ZeroMQ“serveris neveikia, ekrane nieko nebus rodoma.

Atsisiųskite pridėtą kodą max7219_server.py į savo namų katalogą, o ne „Apache root“dirže, kur jį galėtų vykdyti žiniatinklio vartotojai. Vykdykite kaip root:

sudo python max7219_server.py

Dabar „ZeroMQ“serveris yra pasirengęs priimti žinutes iš tinklalapio. Įveskite ir pateikite paprastą pranešimą iš tinklalapio. Jei viskas teisingai nustatyta, pamatysite tą pranešimą „ZeroMQ“serverio ekrane ir LED matricoje.

Jei norite išjungti serverį, tiesiog darykite „Control-C“, kad išeitumėte iš serverio ekrano.

Viskas. Tikiuosi, kad jums patiks šis projektas taip pat, kaip man.

Vienas patobulinimų, kuriuos galite padaryti, yra padaryti ZeroMQ ryšį tarp serverio ir klientų asinchroninį, kad tinklalapis nelauktų, kol bus rodomi kiti pranešimai. Be to, kaskadiniu režimu galite pritvirtinti papildomą LED matricą. Paliksiu tai jums.

Rekomenduojamas: