Obsah:

Nástěnka LED IoT RPi: 3 kroky (s obrázky)
Nástěnka LED IoT RPi: 3 kroky (s obrázky)

Video: Nástěnka LED IoT RPi: 3 kroky (s obrázky)

Video: Nástěnka LED IoT RPi: 3 kroky (s obrázky)
Video: InnovaGoods Gadget Tech Light Up Peg Board 2024, Listopad
Anonim
Image
Image
Nastavení hardwaru
Nastavení hardwaru

V tomto Instructable jsem vytvořil nástěnku LED připojenou k wifi pomocí Raspberry Pi (RPi). Uživatelé se připojí k webovému serveru Raspberry Pi pomocí svých prohlížečů a odešlou krátké zprávy, které se zobrazí na LED displeji 8x8. Protože propojení matice 8x8 LED s ovladačem MAX7219 v Pythonu je dobře zdokumentováno ostatními na internetu, tento projekt se zaměřuje na vytvoření rozhraní webového serveru a správu ZeroMQ Messaging pro správu příchozích zpráv.

Aktualizace: Zde je navazující projekt IoT Decimal/Hexadecimal 8x8 LED Matrix Drawing Board

(Jsem klubový moderátor pro Girls Who Code Club a přišel jsem s tímto jednoduchým projektem, který má studenty naučit návrh webového rozhraní a zasílání zpráv.)

Krok 1: Nastavení hardwaru

Nastavení hardwaru
Nastavení hardwaru
Nastavení hardwaru
Nastavení hardwaru

Tento projekt vyžaduje následující hardware:

  • Raspberry Pi
  • Zdroj napájení USB, jako je Anker, s krátkým kabelem USB na MicroUSB
  • Bodový maticový modul MAX7219 s plochým kabelem (Aliexpress za méně než 2 $)
  • Příloha (jednu jsem vyrobil z lepenkové krabice a nastříkal černou barvou)

Nastavení hardwaru je snadná část. Jednoduše připojte 5žilový plochý kabel z LED matice ke knihovně RPi podle knihovny MAX7219 doc.

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

K připevnění jednotky LED k pouzdru RPi jsem použil oboustrannou pěnovou pásku. Poté jsem z kartonové krabice vytvořil skříň, do které se vejde jak RPi, tak baterie.

Krok 2: Nastavení softwaru

Nastavení softwaru
Nastavení softwaru
Nastavení softwaru
Nastavení softwaru
Nastavení softwaru
Nastavení softwaru
Nastavení softwaru
Nastavení softwaru

RPi by měl mít následující software:

  • Python 3
  • Web Apache 2
  • Max7219 ovladač pro Python
  • ZeroMQ zasílání zpráv

Python 3

RPi by měl mít již předinstalovaný Python 3. Zatímco můj kód je napsán pro Python 3, Python 2 by měl fungovat s několika drobnými změnami.

Apache 2

Nastavte Apache a povolte skriptování Python CGI. Níže je několik skvělých zdrojů pro nastavení Apache na RPi, takže se zde nebudu opakovat. Pro nastavení Apache a CGI postupujte podle níže uvedených návodů. Zkontrolujte, zda jsou skripty *.py spustitelné z prohlížeče.

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

Ovladač Max7291

Nainstalujte ovladač Max7219 podle nejnovější instalační příručky:

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

Po instalaci spusťte ukázkový kód matrix_test.py podle průvodce instalací, aby se na matici LED zobrazilo „Hello World“. To musí fungovat, než přejdete k dalšímu kroku.

ZeroMQ zasílání zpráv

Proč potřebujeme Zprávy? Zkuste spustit výše uvedený ukázkový kód matrix_test.py na dvou obrazovkách terminálu současně. Systém umožní spuštění více kódů současně, ale uvidíte překrývající se zprávy, což není žádoucí. V prostředí jednoho uživatele to nemusí být problém, protože byste se mohli ujistit, že současně může běžet pouze jeden program. V prostředí pro více uživatelů, jako je web, musí systém vytvořit frontu FIFO (First-In-First-Out), aby bylo zajištěno, že kód může spustit pouze jedna osoba, zatímco ostatní čekají. I když k tomu mohou existovat jiná řešení, rozhodl jsem se použít ZeroMQ ke správě fronty FIFO. Kód serveru ZeroMQ obsahuje skutečné volání funkce k zobrazení zprávy na matici LED po jednom, zatímco webový server funguje jako klient ZeroMQ pro dotazování a odesílání zpráv na server ZeroMQ. Tímto způsobem, zatímco více uživatelů mohlo odesílat zprávy prostřednictvím webové stránky současně, server ZeroMQ zobrazí pouze jednu zprávu najednou.

Pro tento projekt nainstalujeme pouze balíček Python pyzmq a ne celý balíček ZeroMQ.

běh:

sudo pip3 install pyzmq

Přečtěte si průvodce ZeroMQ na https://zguide.zeromq.org a vyzkoušejte si příklad hello world serveru a klienta v Pythonu. Zkopírujte ukázkový kód Pythonu pro server i klienta do RPi a ujistěte se, že funguje, než přejdete na další krok.

Krok 3: Nastavení webové stránky

Na webové stránce jsem použil rámec bootstrap css/js, aby stránka vypadala hezky. To je zcela volitelné.

Stáhněte si přiložený soubor led_msg.tar.gz do kořenového adresáře nebo podadresáře Apache. Chcete -li rozbalit soubor tar gzip'd, spusťte:

tar -xzvf led_msg.tar.gz

Tím se vytvoří následující soubory:

msg.py (hlavní program)

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

Volitelně nainstalujte rámec bootstrap css/js pod statický adresář.

Zadejte adresu URL pro msg.py svého prohlížeče a ujistěte se, že se zobrazí webová stránka. Zatím neodesílejte zprávu !!!

Před odesláním zpráv je nutné spustit server ZeroMQ, aby přijímal zprávy od klienta webové stránky a zobrazoval je na matici LED. Pokud server ZeroMQ neběží, na obrazovce se nic nezobrazí.

Stáhněte si přiložený kód max7219_server.py do svého domovského adresáře, nikoli do kořenového adresáře Apache, kde by jej mohli spustit uživatelé webu. Spustit jako root:

sudo python max7219_server.py

Server ZeroMQ je nyní připraven přijímat zprávy z webové stránky. Zadejte a odešlete jednoduchou zprávu z webové stránky. Pokud je vše správně nastaveno, uvidíte tuto zprávu na obrazovce serveru ZeroMQ i na LED matici.

Chcete-li vypnout server, ukončete obrazovku serveru provedením Control-C.

A je to. Doufám, že se vám tento projekt bude líbit stejně jako mě.

Jedním vylepšením, které byste mohli udělat, je zajistit, aby komunikace ZeroMQ mezi serverem a klienty byla asynchronní, aby webová stránka nečekala, až se zobrazí další zprávy. Také byste mohli připojit další LED matici v kaskádovém režimu. To nechám na vás.

Doporučuje: