Satura rādītājs:

IoT RPi LED ziņojumu dēlis: 3 soļi (ar attēliem)
IoT RPi LED ziņojumu dēlis: 3 soļi (ar attēliem)

Video: IoT RPi LED ziņojumu dēlis: 3 soļi (ar attēliem)

Video: IoT RPi LED ziņojumu dēlis: 3 soļi (ar attēliem)
Video: NANDO pied. Edavārdi - Fizikas skolotājs (Official video) 2024, Jūlijs
Anonim
Image
Image
Aparatūras iestatīšana
Aparatūras iestatīšana

Šajā pamācībā esmu izveidojis ar Wi-Fi savienotu LED ziņojumu dēli, izmantojot Raspberry Pi (RPi). Lietotāji izveidos savienojumu ar Raspberry Pi tīmekļa serveri, izmantojot savu pārlūkprogrammu, lai iesniegtu īsziņas, kas tiks parādītas 8x8 LED displejā. Tā kā 8x8 LED matricas saskarne ar MAX7219 draiveri Python ir labi dokumentēta internetā, šis projekts koncentrējas uz tīmekļa servera saskarnes izveidi un ZeroMQ Messaging izmantošanu ienākošo ziņojumu pārvaldībai.

Atjauninājums: Šeit ir turpinājuma projekts IoT Decimal/Hexadecimal 8x8 LED Matrix Drawing Board

(Es esmu kluba koordinators Girls Who Code Club, un es nācu klajā ar šo vienkāršo projektu, lai mācītu studentus par tīmekļa saskarnes dizainu un ziņojumapmaiņu.)

1. darbība. Aparatūras iestatīšana

Aparatūras iestatīšana
Aparatūras iestatīšana
Aparatūras iestatīšana
Aparatūras iestatīšana

Šim projektam nepieciešama šāda aparatūra:

  • Raspberry Pi
  • USB barošanas avots, piemēram, Anker, ar īsu USB -MicroUSB kabeli
  • MAX7219 punktu matricas modulis ar lentes kabeli (Aliexpress par mazāk nekā 2 USD)
  • Korpuss (es izgatavoju vienu no kartona kastes un izsmidzināju melnā krāsā)

Aparatūras iestatīšana ir vieglā daļa. Vienkārši pievienojiet 5 vadu lentes kabeli no LED matricas ar RPi atbilstoši MAX7219 bibliotēkas dokumentam.

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

Es izmantoju divpusēju putu lenti, lai piestiprinātu LED bloku RPi korpusam. Pēc tam no kartona kastes es izveidoju korpusu, kurā bija gan RPi, gan akumulators.

2. darbība. Programmatūras iestatīšana

Programmatūras iestatīšana
Programmatūras iestatīšana
Programmatūras iestatīšana
Programmatūras iestatīšana
Programmatūras iestatīšana
Programmatūras iestatīšana
Programmatūras iestatīšana
Programmatūras iestatīšana

RPi jābūt šādai programmatūrai:

  • Python 3
  • Apache 2 tīmekļa serveris
  • Max7219 draiveris Python
  • ZeroMQ ziņojumapmaiņa

Python 3

RPi jābūt iepriekš instalētai Python 3. Kamēr mans kods ir rakstīts Python 3, Python 2 vajadzētu darboties ar nelielām izmaiņām.

Apache 2

Iestatiet Apache un iespējojiet Python CGI skriptu. Zemāk ir daži lieliski resursi Apache iestatīšanai RPi, tāpēc es šeit neatkārtošos. Vienkārši izpildiet tālāk sniegtos norādījumus, lai iestatītu Apache un CGI. Pārliecinieties, vai *.py skripti ir izpildāmi no pārlūkprogrammas.

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

Max7291 vadītājs

Instalējiet Max7219 draiveri, ievērojot jaunāko instalēšanas rokasgrāmatu:

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

Pēc instalēšanas palaidiet parauga kodu, matrix_test.py, katrai instalēšanas rokasgrāmatai, lai LED matricā parādītu “Hello World”. Tam ir jādarbojas, pirms pāriet uz nākamo soli.

ZeroMQ ziņojumapmaiņa

Kāpēc mums ir nepieciešama ziņojumapmaiņa? Mēģiniet palaist iepriekš minēto koda piemēru matrix_test.py divos termināļa ekrānos vienlaikus. Sistēma ļaus darboties vairākiem kodiem vienlaicīgi, taču jūs redzēsit, ka ziņojumi tiek pārklāti, kas nav vēlams. Viena lietotāja vidē tas var nebūt problēma, jo jūs varat pārliecināties, ka vienlaikus var darboties tikai viena programma. Vairāku lietotāju vidē, piemēram, tīmeklī, sistēmai ir jāizveido FIFO (First-In-First-Out) rinda, lai pārliecinātos, ka kodu var izpildīt tikai viena persona, kamēr citi gaida. Lai gan var būt arī citi risinājumi, kā to panākt, es nolēmu izmantot ZeroMQ, lai pārvaldītu FIFO rindu. ZeroMQ servera kods satur faktisko funkcijas izsaukumu, lai pa vienam parādītu ziņojumu uz LED matricas, kamēr tīmekļa serveris darbojas kā ZeroMQ klients, lai noskaidrotu un iesniegtu ziņojumus ZeroMQ serverim. Tādā veidā, lai gan vairāki lietotāji vienlaikus varēja iesniegt ziņojumus, izmantojot tīmekļa lapu, ZeroMQ serveris vienlaikus parādīs tikai vienu ziņojumu.

Šim projektam mēs vienkārši instalēsim Python pakotni pyzmq, nevis visu ZeroMQ pakotni.

palaist:

sudo pip3 instalējiet pyzmq

Izlasiet ZeroMQ rokasgrāmatu vietnē https://zguide.zeromq.org un izmēģiniet hello world servera un klienta piemēru programmā Python. Kopējiet Python parauga kodu gan serverim, gan klientam uz RPi un pārliecinieties, vai tie darbojas pirms nākamās darbības.

3. darbība: tīmekļa lapas iestatīšana

Tīmekļa lapā es izmantoju bootstrap css/js sistēmu, lai lapa izskatītos skaista. Tas ir pilnīgi neobligāti.

Lejupielādējiet pievienoto failu led_msg.tar.gz Apache saknē vai apakšdirektorijā. Lai atceltu gzip'd tar faila atzīmēšanu, palaidiet:

tar -xzvf led_msg.tar.gz

Tādējādi tiek izveidoti šādi faili:

msg.py (galvenā programma)

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

Pēc izvēles instalējiet bootstrap css/js sistēmu statiskajā direktorijā.

Ievadiet pārlūkprogrammas vietni msg.py un pārliecinieties, vai tiek parādīta tīmekļa lapa. Vēl neiesniedz ziņu !!!

Pirms ziņojumu iesniegšanas ir jāsāk ZeroMQ serveris, lai pieņemtu ziņojumus no tīmekļa lapas klienta un parādītu tos LED matricā. Ja ZeroMQ serveris nedarbojas, ekrānā nekas netiks parādīts.

Lejupielādējiet pievienoto kodu max7219_server.py savā mājas direktorijā, nevis Apache saknes direktorijā, kur to varētu izpildīt tīmekļa lietotāji. Palaidiet to kā root:

sudo python max7219_server.py

Tagad ZeroMQ serveris ir gatavs saņemt ziņas no tīmekļa lapas. Ievadiet un iesniedziet vienkāršu ziņojumu no tīmekļa lapas. Ja viss ir pareizi iestatīts, jūs redzēsit šo ziņojumu ZeroMQ servera ekrānā, kā arī LED matricā.

Ja vēlaties izslēgt serveri, vienkārši izmantojiet Control-C, lai izietu no servera ekrāna.

Tieši tā. Ceru, ka jums patiks šis projekts tikpat ļoti kā man.

Viens no uzlabojumiem, ko jūs varētu veikt, ir padarīt ZeroMQ komunikāciju starp serveri un klientiem asinhronu, lai tīmekļa lapa negaidītu, kamēr tiek parādīti citi ziņojumi. Varat arī pievienot papildu LED matricu kaskādes režīmā. Es to atstāšu jūsu ziņā.

Ieteicams: