Talaan ng mga Nilalaman:

IoT RPi LED Message Board: 3 Hakbang (na may Mga Larawan)
IoT RPi LED Message Board: 3 Hakbang (na may Mga Larawan)

Video: IoT RPi LED Message Board: 3 Hakbang (na may Mga Larawan)

Video: IoT RPi LED Message Board: 3 Hakbang (na may Mga Larawan)
Video: 3-часовой марафон паранормальных и необъяснимых историй 2024, Nobyembre
Anonim
Image
Image
Pag-setup ng Hardware
Pag-setup ng Hardware

Sa Instructable na ito, gumawa ako ng isang naka-konektang wifi na LED message board gamit ang isang Raspberry Pi (RPi). Ang mga gumagamit ay kumonekta sa webserver ng Raspberry Pi gamit ang kanilang mga browser upang magsumite ng mga maikling mensahe na lalabas sa 8x8 LED display. Dahil ang pag-interfaces ng 8x8 LED matrix sa driver ng MAX7219 sa Python ay dokumentado ng iba sa Internet, nakatuon ang proyektong ito sa pagbuo ng isang webserver interface at paggamit ng ZeroMQ Messaging upang pamahalaan ang mga papasok na mensahe.

Update: Narito ang isang follow-up na proyekto na IoT Decimal / Hexadecimal 8x8 LED Matrix Drawing Board

(Isa akong tagapamahala ng club para sa Girls Who Code Club at naisip ko ang simpleng proyekto na ito upang turuan ang mga mag-aaral sa disenyo ng web interface at pagmemensahe.)

Hakbang 1: Pag-setup ng Hardware

Pag-setup ng Hardware
Pag-setup ng Hardware
Pag-setup ng Hardware
Pag-setup ng Hardware

Nangangailangan ang proyektong ito ng pagsunod sa hardware:

  • Raspberry Pi
  • Pinagmulan ng kuryente ng USB tulad ng Anker na may isang maikling USB sa MicroUSB cable
  • MAX7219 dot matrix module na may isang ribbon cable (Aliexpress para sa mas mababa sa $ 2)
  • Enclosure (Ginawa ko ang isa sa isang karton na kahon at spray na pininturahan ng itim)

Ang pag-setup ng hardware ay ang madaling bahagi. Ikonekta lamang ang isang 5 wire ribbon cable mula sa LED matrix sa RPi per MAX7219 library doc.

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

Gumamit ako ng isang double-sided foam tape upang ilakip ang LED unit sa kaso ng RPi. Pagkatapos, gumawa ako ng isang enclosure mula sa isang karton na kahon upang mapaloob ang parehong RPi at baterya.

Hakbang 2: Pag-setup ng Software

Pag-setup ng Software
Pag-setup ng Software
Pag-setup ng Software
Pag-setup ng Software
Pag-setup ng Software
Pag-setup ng Software
Pag-setup ng Software
Pag-setup ng Software

Ang RPi ay dapat magkaroon ng sumusunod na software:

  • Python 3
  • Apache 2 websever
  • Max7219 driver para sa Python
  • ZeroMQ Messaging

Python 3

Ang RPi ay dapat na magkaroon ng Python 3 na paunang naka-install. Habang ang aking code ay nakasulat para sa Python 3, ang Python 2 ay dapat na gumana na may kaunting mga pagbabago.

Apache 2

I-setup ang Apache at paganahin ang script ng Python CGI. Nasa ibaba ang ilang mahusay na mapagkukunan para sa pag-set up ng Apache sa RPi kaya't hindi ko na uulitin dito. Sundin lamang ang mga tutorial sa ibaba upang mai-setup ang Apache at CGI. Tiyaking ang *.py script ay maipapatupad mula sa isang browser.

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

Max7291 Driver

I-install ang driver ng Max7219 sa pamamagitan ng pagsunod sa pinakabagong gabay sa pag-install:

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

Matapos ang pag-install, patakbuhin ang halimbawa ng code, matrix_test.py, bawat gabay sa pag-install upang maipakita ang "Hello World" sa LED Matrix. Kailangan itong gumana bago pumunta sa susunod na hakbang.

ZeroMQ Messaging

Bakit kailangan natin ng Pagmemensahe? Subukang patakbuhin ang halimbawa ng code sa itaas, matrix_test.py, sa dalawang mga terminal na terminal nang sabay-sabay. Papayagan ng system ang maramihang mga code na tumakbo nang sabay ngunit makikita mo ang mga overlap na mensahe na hindi kanais-nais. Sa isang solong kapaligiran ng gumagamit, maaaring hindi ito isang isyu dahil masisiguro mo na isang programa lamang ang maaaring tumakbo nang paisa-isa. Sa isang multi-user na kapaligiran tulad ng web, ang system ay kailangang lumikha ng isang pila ng FIFO (First-In-First-Out) upang matiyak na isang tao lamang ang maaaring magpatupad ng code habang naghihintay ang iba. Habang maaaring may iba pang mga solusyon upang makamit ito, nagpasya akong gamitin ang ZeroMQ upang pamahalaan ang pila ng FIFO. Naglalaman ang code ng server ng ZeroMQ ng aktwal na tawag sa pagpapaandar upang maipakita ang isang mensahe sa LED matrix nang paisa-isa habang ang webserver ay kumikilos bilang isang kliyente ng ZeroMQ upang magtanong at magsumite ng mga mensahe sa ZeroMQ server. Sa ganitong paraan, habang ang maraming mga gumagamit ay maaaring magsumite ng mga mensahe sa pamamagitan ng isang web page nang sabay-sabay, ang ZeroMQ server ay magpapakita lamang ng isang mensahe nang paisa-isa.

Para sa proyektong ito, mai-install lamang namin ang Python package pyzmq at hindi ang buong ZeroMQ package.

tumakbo:

sudo pip3 i-install ang pyzmq

Basahin ang gabay ng ZeroMQ sa https://zguide.zeromq.org at subukan ang hello world server at halimbawa ng client sa Python. Kopyahin ang halimbawa ng code ng Python para sa parehong server at client sa RPi at tiyaking gumagana ang mga ito bago pumunta sa susunod na hakbang.

Hakbang 3: Pag-setup ng Pahina ng Web

Sa web page, ginamit ko ang framework ng bootstrap css / js upang maganda ang hitsura ng pahina. Ito ay ganap na opsyonal.

I-download ang naka-attach na led_msg.tar.gz file sa Apache root o sub-direktoryo. Upang maalis ang takbo ng gzip'd tar file, patakbuhin ang:

tar -xzvf led_msg.tar.gz

Lumilikha ito ng mga sumusunod na file:

msg.py (pangunahing programa)

template / interstitial.html (template ng html) mga template / send_msg.html (template ng html) static / img / led_150x150.jpg (ginamit ang jpg sa template na html)

Bilang pagpipilian, i-install ang bootstrap css / js framework sa ilalim ng static na direktoryo.

Ipasok ang URL para sa msg.py iyong browser at tiyaking darating ang web page. Huwag pa magsumite ng mensahe !!!

Bago maisumite ang mga mensahe, dapat magsimula ang server ng ZeroMQ upang tanggapin ang mga mensahe mula sa webpage client at ipakita ang mga ito sa LED matrix. Walang ipapakita sa screen kung ang ZeroMQ server ay hindi tumatakbo.

I-download ang nakalakip na max7219_server.py code sa iyong direktoryo sa bahay, hindi sa Apache root dir kung saan ito maaaring maisagawa ng mga gumagamit ng web. Patakbuhin ito bilang ugat:

sudo python max7219_server.py

Ngayon ang ZeroMQ server ay handa nang tumanggap ng mga mensahe mula sa web page. Ipasok at magsumite ng isang simpleng mensahe mula sa web page. Kung ang lahat ay naka-set up nang tama, makikita mo ang mensaheng iyon sa screen ng server ng ZeroMQ pati na rin sa LED Matrix.

Kung nais mong i-shutdown ang server, gawin lamang ang Control-C upang lumabas sa screen ng server.

Ayan yun. Inaasahan kong masisiyahan ka sa proyektong ito tulad ng nagustuhan ko.

Ang isang pagpapahusay na magagawa mo ay upang gawing hindi magkasabay ang komunikasyon ng ZeroMQ sa pagitan ng server at mga kliyente upang hindi maghintay ang webpage habang ipinapakita ang iba pang mga mensahe. Gayundin, maaari kang maglakip ng karagdagang LED matrix sa cascade mode. Bahala na ako sayo.

Inirerekumendang: