Obsah:

Nástenka LED IoT RPi: 3 kroky (s obrázkami)
Nástenka LED IoT RPi: 3 kroky (s obrázkami)

Video: Nástenka LED IoT RPi: 3 kroky (s obrázkami)

Video: Nástenka LED IoT RPi: 3 kroky (s obrázkami)
Video: Jak může mít 11 prstů? 😳 2024, Júl
Anonim
Image
Image
Nastavenie hardvéru
Nastavenie hardvéru

V tomto návode som vyrobil nástenku LED pripojenú k wifi pomocou Raspberry Pi (RPi). Používatelia sa pripoja k webovému serveru Raspberry Pi pomocou svojich prehliadačov a môžu odosielať krátke správy, ktoré sa zobrazia na LED displeji 8x8. Pretože prepojenie matice 8x8 LED s ovládačom MAX7219 v Pythone je dobre zdokumentované ostatnými na internete, tento projekt sa zameriava na vytvorenie rozhrania webového servera a používanie ZeroMQ Messaging na správu prichádzajúcich správ.

Aktualizácia: Tu je nadväzujúci projekt Desiatková/Šestnástková 8x8 LED maticová rysovacia doska IoT

(Som klubový facilitátor pre Girls Who Code Club a prišiel som s týmto jednoduchým projektom, ktorý má naučiť študentov návrh webového rozhrania a zasielanie správ.)

Krok 1: Nastavenie hardvéru

Nastavenie hardvéru
Nastavenie hardvéru
Nastavenie hardvéru
Nastavenie hardvéru

Tento projekt vyžaduje nasledujúci hardvér:

  • Malinový koláč
  • Zdroj napájania USB, ako napríklad Anker, s krátkym káblom USB na MicroUSB
  • Bodový maticový modul MAX7219 s plochým káblom (Aliexpress za menej ako 2 doláre)
  • Príloha (jednu som vyrobil z kartónovej škatule a nastriekal čiernou farbou)

Hardvérové nastavenie je jednoduchá časť. Jednoducho pripojte 5 -žilový plochý kábel z LED diódy k RPi podľa knižnice MAX7219 doc.

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

Na pripevnenie jednotky LED k puzdru RPi som použil obojstrannú penovú pásku. Potom som z kartónovej škatule vyrobil kryt, do ktorého sa zmestí RPi aj batéria.

Krok 2: Nastavenie softvéru

Nastavenie softvéru
Nastavenie softvéru
Nastavenie softvéru
Nastavenie softvéru
Nastavenie softvéru
Nastavenie softvéru
Nastavenie softvéru
Nastavenie softvéru

RPi by mal mať nasledujúci softvér:

  • Python 3
  • Webový server Apache 2
  • Ovládač Max7219 pre Python
  • Správy ZeroMQ

Python 3

RPi by mal mať už predinštalovaný Python 3. Aj keď je môj kód napísaný pre Python 3, Python 2 by mal fungovať s niekoľkými menšími zmenami.

Apache 2

Nastavte Apache a povoľte skriptovanie Python CGI. Nasleduje niekoľko skvelých zdrojov pre nastavenie Apache na RPi, takže sa tu nebudem opakovať. Pri inštalácii Apache a CGI postupujte podľa nižšie uvedených pokynov. Uistite sa, že skripty *.py sú spustiteľné z prehliadača.

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

Ovládač Max7291

Nainštalujte ovládač Max7219 podľa najnovšieho sprievodcu inštaláciou:

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

Po inštalácii spustite vzorový kód matrix_test.py podľa sprievodcu inštaláciou, aby sa na matici LED zobrazilo „Hello World“. To musí fungovať, kým prejdete na ďalší krok.

Správy ZeroMQ

Prečo potrebujeme Správy? Skúste spustiť vyššie uvedený príkladový kód, matrix_test.py, na dvoch terminálových obrazovkách súčasne. Systém umožní súčasné spustenie viacerých kódov, ale uvidíte, že sa správy prekrývajú, čo nie je žiaduce. V prostredí jedného používateľa to nemusí byť problém, pretože ste sa mohli uistiť, že súčasne môže bežať iba jeden program. V prostredí pre viacerých používateľov, akým je napríklad web, musí systém vytvoriť front FIFO (First-In-First-Out), aby sa zabezpečilo, že kód môže spustiť iba jedna osoba, kým ostatní čakajú. Aj keď na to môžu existovať iné riešenia, rozhodol som sa použiť ZeroMQ na správu frontu FIFO. Kód servera ZeroMQ obsahuje aktuálne volanie funkcie na zobrazenie správy na matici LED naraz, zatiaľ čo webový server funguje ako klient ZeroMQ na zisťovanie a odosielanie správ na server ZeroMQ. Týmto spôsobom, zatiaľ čo viacerí používatelia mohli odosielať správy prostredníctvom webovej stránky súčasne, server ZeroMQ bude zobrazovať iba jednu správu naraz.

Pre tento projekt nainštalujeme iba balík Python pyzmq a nie celý balík ZeroMQ.

beh:

sudo pip3 nainštalujte pyzmq

Prečítajte si príručku ZeroMQ na https://zguide.zeromq.org a vyskúšajte si príklad servera a klienta Hello World v Pythone. Skopírujte ukážkový kód Pythonu pre server aj klienta do RPi a pred ďalším krokom sa uistite, že funguje.

Krok 3: Nastavenie webovej stránky

Na webovej stránke som použil rámec bootstrap css/js, aby stránka vyzerala pekne. Toto je úplne voliteľné.

Stiahnite si priložený súbor led_msg.tar.gz do koreňového alebo podadresára Apache. Ak chcete rozbaliť súbor tar gzip'd, spustite:

tar -xzvf led_msg.tar.gz

Tým sa vytvoria nasledujúce súbory:

msg.py (hlavný program)

templates/interstitial.html (html template) templates/send_msg.html (html template) static/img/led_150x150.jpg (jpg used in html template)

Voliteľne nainštalujte rámec bootstrap css/js pod statický adresár.

Zadajte adresu URL pre msg.py svojho prehliadača a uistite sa, že sa webová stránka zobrazí. Zatiaľ neodosielajte správu !!!

Pred odoslaním správ je potrebné spustiť server ZeroMQ, aby prijímal správy od klienta webovej stránky a zobrazoval ich na matici LED. Pokiaľ nie je server ZeroMQ spustený, na obrazovke sa nič nezobrazí.

Stiahnite si priložený kód max7219_server.py do svojho domovského adresára, nie do koreňového adresára Apache, kde by ho mohli vykonať používatelia webu. Spustite to ako root:

sudo python max7219_server.py

Server ZeroMQ je teraz pripravený prijímať správy z webovej stránky. Zadajte a odošlite jednoduchú správu z webovej stránky. Ak je všetko správne nastavené, uvidíte túto správu na obrazovke servera ZeroMQ a tiež na matici LED.

Ak chcete vypnúť server, zatvorte obrazovku servera stlačením klávesu Control-C.

To je všetko. Dúfam, že sa vám tento projekt bude páčiť rovnako ako mne.

Jedným z vylepšení, ktoré by ste mohli urobiť, je zabezpečiť, aby bola komunikácia ZeroMQ medzi serverom a klientmi asynchrónna, aby webová stránka nečakala na zobrazenie ďalších správ. V kaskádovom režime môžete tiež pripojiť ďalšiu maticu LED. Nechám to na vás.

Odporúča: