Mündəricat:

IoT RPi LED Mesaj Lövhəsi: 3 Adım (Şəkillərlə birlikdə)
IoT RPi LED Mesaj Lövhəsi: 3 Adım (Şəkillərlə birlikdə)

Video: IoT RPi LED Mesaj Lövhəsi: 3 Adım (Şəkillərlə birlikdə)

Video: IoT RPi LED Mesaj Lövhəsi: 3 Adım (Şəkillərlə birlikdə)
Video: ЛЮБОВЬ С ДОСТАВКОЙ НА ДОМ (2020). Романтическая комедия. Хит 2024, Noyabr
Anonim
Image
Image
Avadanlıq Quraşdırması
Avadanlıq Quraşdırması

Bu Təlimat kitabında, Raspberry Pi (RPi) istifadə edərək wifi ilə əlaqəli bir LED mesaj lövhəsi hazırladım. İstifadəçilər, 8x8 LED ekranda görünəcək qısa mesajlar göndərmək üçün brauzerlərindən istifadə edərək Raspberry Pi veb serverinə qoşulacaqlar. Python-dakı MAX7219 sürücüsü ilə 8x8 LED matrisini əlaqələndirmək İnternetdə başqaları tərəfindən yaxşı sənədləşdirildiyindən, bu layihə bir veb-server interfeysi qurmağa və gələn mesajları idarə etmək üçün ZeroMQ Mesajlaşmasını istifadə etməyə yönəlmişdir.

Yeniləmə: Burada IoT Ondalık/Onaltılı 8x8 LED Matris Çəkmə Lövhəsi izləmə layihəsidir.

(Mən Kodlaşdıran Klublar Klubu üçün bir klub köməkçisiyəm və tələbələrə veb interfeysi dizaynı və mesajlaşma öyrətmək üçün bu sadə layihəni hazırladım.)

Addım 1: Hardware Setup

Avadanlıq Quraşdırması
Avadanlıq Quraşdırması
Avadanlıq Quraşdırması
Avadanlıq Quraşdırması

Bu layihə aşağıdakı aparatları tələb edir:

  • Moruq Pi
  • Qısa USB -dən MicroUSB kabelinə malik Anker kimi USB enerji mənbəyi
  • Şerit kabelli MAX7219 nöqtəli matris modulu (Aliexpress 2 dollardan aşağı)
  • Qutusu (birini karton qutudan və qara rəngə boyanmış spreydən hazırladım)

Avadanlıq qurulması ən asan hissəsidir. LED matrisindən MAX7219 kitabxana sənədinə görə RPi -yə 5 telli lent kabelini bağlamaq kifayətdir.

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

LED cihazını RPi korpusuna yapışdırmaq üçün iki tərəfli köpük lentdən istifadə etdim. Sonra həm RPi, həm də batareyanı yerləşdirmək üçün karton qutudan bir korpus düzəltdim.

Addım 2: Proqram Quraşdırması

Proqram Quraşdırması
Proqram Quraşdırması
Proqram Quraşdırması
Proqram Quraşdırması
Proqram Quraşdırması
Proqram Quraşdırması
Proqram Quraşdırması
Proqram Quraşdırması

RPi aşağıdakı proqramlara sahib olmalıdır:

  • Python 3
  • Apache 2 websevər
  • Python üçün max7219 sürücü
  • ZeroMQ Mesajlaşma

Python 3

RPi-də Python 3 əvvəlcədən quraşdırılmış olmalıdır. Kodum Python 3 üçün yazılsa da, Python 2 kiçik dəyişikliklərlə işləməlidir.

Apache 2

Apache qurun və Python CGI skriptini aktiv edin. Aşağıda RPi -də Apache qurmaq üçün bir neçə böyük qaynaq var, burada təkrarlamayacağam. Apache və CGI qurmaq üçün aşağıdakı təlimatları izləyin. *. Py skriptlərinin bir brauzerdən icra oluna biləcəyinə əmin olun.

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

Max7291 sürücü

Ən son quraşdırma təlimatına əməl edərək Max7219 sürücüsünü quraşdırın:

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

Quraşdırıldıqdan sonra, "Matrix_test.py" nümunə kodunu LED Matrisində "Salam Dünya" nı göstərmək üçün quraşdırın. Növbəti mərhələyə keçməzdən əvvəl bu iş görülməlidir.

ZeroMQ Mesajlaşma

Mesajlaşmaya niyə ehtiyacımız var? Yuxarıdakı nümunə kodunu, matrix_test.py, eyni anda iki terminal ekranında çalıştırmağa çalışın. Sistem birdən çox kodun eyni vaxtda işləməsinə icazə verəcək, lakin arzu edilməyən mesajların üst -üstə düşdüyünü görəcəksiniz. Bir istifadəçi mühitində bu bir problem ola bilməz, çünki bir anda yalnız bir proqramın işləyə biləcəyinə əmin ola bilərsiniz. Veb kimi çox istifadəçi mühitində, sistem başqalarının gözləyərkən kodu yalnız bir şəxsin icra edə biləcəyinə əmin olmaq üçün bir FIFO (First-In-First-Out) növbəsi yaratmalıdır. Buna nail olmaq üçün başqa həllər olsa da, FIFO növbəsini idarə etmək üçün ZeroMQ -dan istifadə etmək qərarına gəldim. ZeroMQ server kodu, bir dəfə LED matrisində bir mesaj göstərmək üçün həqiqi funksiya çağırışını ehtiva edir, veb server ZeroMQ serverinə mesaj göndərmək və göndərmək üçün ZeroMQ müştəri kimi çıxış edir. Bu yolla, birdən çox istifadəçi eyni anda bir veb səhifəsi ilə mesaj göndərə bilsə də, ZeroMQ serveri bir anda yalnız bir mesaj göstərəcək.

Bu layihə üçün bütün ZeroMQ paketini deyil, Python pyzmq paketini quraşdıracağıq.

qaç:

sudo pip3 pyzmq quraşdırın

Http://zguide.zeromq.org saytında ZeroMQ bələdçisini oxuyun və Pythonda salam dünya serveri və müştəri nümunəsini sınayın. Həm server, həm də müştəri üçün Python nümunə kodunu RPi -yə kopyalayın və növbəti addıma keçməzdən əvvəl işlədiklərindən əmin olun.

Addım 3: Veb Səhifə Quraşdırması

Veb səhifədə səhifənin gözəl görünməsi üçün bootstrap css/js çərçivəsindən istifadə etdim. Bu tamamilə isteğe bağlıdır.

Əlavə edilmiş led_msg.tar.gz faylını Apache kökünə və ya alt qovluğuna yükləyin. Gzip'd tar faylını açmaq üçün işləyin:

tar -xzvf led_msg.tar.gz

Bu, aşağıdakı faylları yaradır:

msg.py (əsas proqram)

şablonlar/interstitial.html (html şablonu) şablonları/send_msg.html (html şablonu) statik/img/led_150x150-j.webp

İsteğe bağlı olaraq, bootstrap css/js çərçivəsini statik qovluğun altına quraşdırın.

Brauzerinizin msg.py ünvanını daxil edin və veb səhifənin açıldığından əmin olun. Hələ mesaj göndərmə !!!

Mesajların göndərilməsindən əvvəl, ZeroMQ serveri veb səhifəsi müştərisindən gələn mesajları qəbul etməyə və onları LED matrisində göstərməyə başlamalıdır. ZeroMQ serveri işləmirsə ekranda heç nə görünməyəcək.

Əlavə edilmiş max7219_server.py kodunu veb istifadəçiləri tərəfindən icra oluna biləcəyi Apache kök dirində deyil, ev kataloqunuza yükləyin. Kök olaraq işlədin:

sudo python max7219_server.py

İndi ZeroMQ serveri veb səhifədən mesaj almağa hazırdır. Veb səhifədən sadə bir mesaj daxil edin və göndərin. Hər şey düzgün qurulubsa, bu mesajı ZeroMQ server ekranında və LED Matrisində görəcəksiniz.

Serveri bağlamaq istəyirsinizsə, server ekranından çıxmaq üçün Control-C düyməsini basın.

Bu belədir. Ümid edirəm bu layihədən mənim kimi zövq alacaqsınız.

Edə biləcəyiniz bir təkmilləşdirmə, server və müştərilər arasında ZeroMQ ünsiyyətini asinxron etməkdir ki, digər səhifələr göstərilərkən veb səhifəsi gözləməsin. Ayrıca, kaskad rejimində əlavə LED matris əlavə edə bilərsiniz. Bunu sizə buraxacağam.

Tövsiyə: