Spisu treści:

Tablica ogłoszeń LED IoT RPi: 3 kroki (ze zdjęciami)
Tablica ogłoszeń LED IoT RPi: 3 kroki (ze zdjęciami)

Wideo: Tablica ogłoszeń LED IoT RPi: 3 kroki (ze zdjęciami)

Wideo: Tablica ogłoszeń LED IoT RPi: 3 kroki (ze zdjęciami)
Wideo: ESP32 Tutorial 3 - Resistor, LED, Bredboard and First Project: Hello LED -ESP32 IoT Learnig kit 2024, Listopad
Anonim
Image
Image
Konfiguracja sprzętu
Konfiguracja sprzętu

W tym Instructable stworzyłem tablicę informacyjną LED podłączoną do Wi-Fi za pomocą Raspberry Pi (RPi). Użytkownicy będą łączyć się z serwerem WWW Raspberry Pi za pomocą przeglądarki, aby przesyłać krótkie wiadomości, które pojawią się na wyświetlaczu LED 8x8. Ponieważ połączenie matrycy LED 8x8 ze sterownikiem MAX7219 w Pythonie jest dobrze udokumentowane przez innych w Internecie, projekt ten koncentruje się na zbudowaniu interfejsu serwera WWW i wykorzystaniu ZeroMQ Messaging do zarządzania przychodzącymi wiadomościami.

Aktualizacja: Oto kolejny projekt IoT Decimal / Hexadecimal 8x8 LED Matrix Drawing Board

(Jestem moderatorem klubu dla Girls Who Code Club i wymyśliłem ten prosty projekt, aby nauczyć studentów projektowania interfejsu internetowego i przesyłania wiadomości).

Krok 1: Konfiguracja sprzętu

Konfiguracja sprzętu
Konfiguracja sprzętu
Konfiguracja sprzętu
Konfiguracja sprzętu

Ten projekt wymaga następującego sprzętu:

  • Malina Pi
  • Źródło zasilania USB, takie jak Anker z krótkim kablem USB do MicroUSB
  • Moduł matrycy punktowej MAX7219 z kablem taśmowym (Aliexpress za mniej niż 2 USD)
  • Obudowa (ja zrobiłem z kartonu i pomalowałem sprayem na czarno)

Konfiguracja sprzętu to najłatwiejsza część. Wystarczy podłączyć 5-żyłowy kabel taśmowy z matrycy LED do RPi zgodnie z dokumentacją biblioteki MAX7219.

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

Użyłem dwustronnej taśmy piankowej do przymocowania jednostki LED do obudowy RPi. Następnie wykonałem obudowę z tekturowego pudełka, aby pomieścić zarówno RPi, jak i baterię.

Krok 2: Konfiguracja oprogramowania

Konfiguracja oprogramowania
Konfiguracja oprogramowania
Konfiguracja oprogramowania
Konfiguracja oprogramowania
Konfiguracja oprogramowania
Konfiguracja oprogramowania
Konfiguracja oprogramowania
Konfiguracja oprogramowania

RPi powinno posiadać następujące oprogramowanie:

  • Pyton 3
  • Serwer WWW Apache 2
  • Max7219 sterownik dla Pythona
  • Wiadomości ZeroMQ

Pyton 3

RPi powinno mieć już preinstalowany Python 3. Podczas gdy mój kod jest napisany dla Pythona 3, Python 2 powinien działać z kilkoma drobnymi zmianami.

Apache 2

Skonfiguruj Apache i włącz obsługę skryptów CGI w języku Python. Poniżej znajduje się kilka świetnych zasobów do konfigurowania Apache na RPi, więc nie będę tutaj powtarzał. Wystarczy postępować zgodnie z poniższymi samouczkami, aby skonfigurować Apache i CGI. Upewnij się, że skrypty *.py można wykonywać z przeglądarki.

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

Max7291 Kierowca

Zainstaluj sterownik Max7219, postępując zgodnie z najnowszym przewodnikiem instalacji:

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

Po instalacji uruchom przykładowy kod matrix_test.py według przewodnika instalacji, aby wyświetlić „Hello World” na matrycy LED. To musi zadziałać przed przejściem do następnego kroku.

Wiadomości ZeroMQ

Dlaczego potrzebujemy wiadomości? Spróbuj uruchomić powyższy przykładowy kod matrix_test.py na dwóch ekranach terminali jednocześnie. System pozwoli na jednoczesne uruchamianie wielu kodów, ale zobaczysz nakładające się wiadomości, co nie jest pożądane. W środowisku jednego użytkownika może to nie stanowić problemu, ponieważ można się upewnić, że tylko jeden program może działać w danym momencie. W środowisku wielu użytkowników, takim jak sieć, system musi utworzyć kolejkę FIFO (First-In-First-Out), aby upewnić się, że tylko jedna osoba może wykonać kod, podczas gdy inne czekają. Chociaż mogą istnieć inne rozwiązania, aby to osiągnąć, zdecydowałem się użyć ZeroMQ do zarządzania kolejką FIFO. Kod serwera ZeroMQ zawiera faktyczne wywołanie funkcji, aby wyświetlić komunikat na matrycy LED pojedynczo, podczas gdy serwer WWW działa jako klient ZeroMQ, aby zapytywać i przesyłać komunikaty do serwera ZeroMQ. W ten sposób, podczas gdy wielu użytkowników może jednocześnie przesyłać wiadomości za pośrednictwem strony internetowej, serwer ZeroMQ wyświetli tylko jedną wiadomość na raz.

W tym projekcie zainstalujemy po prostu pakiet Pythona pyzmq, a nie cały pakiet ZeroMQ.

biegać:

sudo pip3 zainstaluj pyzmq

Przeczytaj przewodnik ZeroMQ na https://zguide.zeromq.org i wypróbuj przykład serwera i klienta hello world w Pythonie. Skopiuj przykładowy kod Pythona dla serwera i klienta do RPi i upewnij się, że działają, zanim przejdziesz do następnego kroku.

Krok 3: Konfiguracja strony internetowej

Na stronie internetowej wykorzystałem framework bootstrap css/js, aby strona wyglądała ładnie. Jest to całkowicie opcjonalne.

Pobierz załączony plik led_msg.tar.gz do głównego lub podkatalogu Apache. Aby rozpakować plik tar gzip, uruchom:

tar -xzvf led_msg.tar.gz

Tworzy to następujące pliki:

msg.py (program główny)

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

Opcjonalnie zainstaluj framework bootstrap css/js w katalogu statycznym.

Wprowadź adres URL msg.py w swojej przeglądarce i upewnij się, że pojawi się strona internetowa. Nie wysyłaj jeszcze wiadomości!!!

Zanim wiadomości będą mogły zostać przesłane, serwer ZeroMQ musi zostać uruchomiony, aby akceptować wiadomości od klienta strony internetowej i wyświetlać je na matrycy LED. Nic nie będzie wyświetlane na ekranie, jeśli serwer ZeroMQ nie jest uruchomiony.

Pobierz załączony kod max7219_server.py do swojego katalogu domowego, a nie do katalogu głównego Apache, gdzie mógłby być wykonywany przez internautów. Uruchom go jako root:

sudo python max7219_server.py

Teraz serwer ZeroMQ jest gotowy do odbierania wiadomości ze strony internetowej. Wejdź i prześlij prostą wiadomość ze strony internetowej. Jeśli wszystko jest poprawnie skonfigurowane, zobaczysz ten komunikat na ekranie serwera ZeroMQ, a także na matrycy LED.

Jeśli chcesz wyłączyć serwer, po prostu naciśnij Ctrl-C, aby wyjść z ekranu serwera.

Otóż to. Mam nadzieję, że spodoba ci się ten projekt tak samo jak ja.

Jednym z ulepszeń, które można wprowadzić, jest sprawienie, aby komunikacja ZeroMQ między serwerem a klientami była asynchroniczna, aby strona internetowa nie czekała, gdy wyświetlane są inne komunikaty. Można również dołączyć dodatkową matrycę LED w trybie kaskadowym. Zostawię to tobie.

Zalecana: