Mundarija:

IoT RPi LED xabarlar paneli: 3 qadam (rasmlar bilan)
IoT RPi LED xabarlar paneli: 3 qadam (rasmlar bilan)

Video: IoT RPi LED xabarlar paneli: 3 qadam (rasmlar bilan)

Video: IoT RPi LED xabarlar paneli: 3 qadam (rasmlar bilan)
Video: Node-RED on Raspberry Pi for Relay/LED Light Control (IoT) 2024, Dekabr
Anonim
Image
Image
Uskunani sozlash
Uskunani sozlash

Ushbu yo'riqnomada men Raspberry Pi (RPi) yordamida wifi-ga ulangan LED-xabarlar panelini tayyorladim. Foydalanuvchilar 8x8 LED displeyida ko'rsatiladigan qisqa xabarlarni yuborish uchun o'z brauzerlari yordamida Raspberry Pi veb -serveriga ulanadi. Python-dagi MAX7219 drayveri bilan 8x8 LED matritsasini o'zaro bog'lash Internetda boshqalar tomonidan yaxshi hujjatlashtirilganligi sababli, ushbu loyiha veb-server interfeysi yaratishga va kiruvchi xabarlarni boshqarish uchun ZeroMQ Xabarlar xizmatidan foydalanishga qaratilgan.

Yangilash: Mana, keyingi loyiha IoT o'nlik/o'n oltilik 8x8 LED matritsali chizish taxtasi.

(Men kod yozadigan qizlar klubi klubi yordamchisiman va men talabalarga veb -interfeys dizayni va xabar almashish bo'yicha dars berish uchun shu oddiy loyihani ishlab chiqdim.)

1 -qadam: Uskuna sozlamalari

Uskunani sozlash
Uskunani sozlash
Uskunani sozlash
Uskunani sozlash

Ushbu loyiha quyidagi uskunalarni talab qiladi:

  • Raspberry Pi
  • Qisqa USB -MicroUSB kabeli bilan Anker kabi USB quvvat manbai
  • MAX7219 nuqta matritsali tasma simi moduli (Aliexpress 2 dollardan kam)
  • Qoplama (men karton qutidan va qora rangga bo'yalgan purkagichdan yasadim)

Uskunani sozlash - bu oson qism. LED matritsasidan 5 simli tasma kabelini MAX7219 kutubxonasi dociga RPi ga ulang.

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

Men LEDni RPi korpusiga yopishtirish uchun ikki tomonlama ko'pikli lentani ishlatardim. Keyin, men RPi va batareyani joylashtirish uchun karton qutidan korpus yasadim.

2 -qadam: dasturiy ta'minotni sozlash

Dasturiy ta'minotni sozlash
Dasturiy ta'minotni sozlash
Dasturiy ta'minotni sozlash
Dasturiy ta'minotni sozlash
Dasturiy ta'minotni sozlash
Dasturiy ta'minotni sozlash
Dasturiy ta'minotni sozlash
Dasturiy ta'minotni sozlash

RPi quyidagi dasturlarga ega bo'lishi kerak:

  • Python 3
  • Apache 2 veb -muxlisi
  • Python uchun max7219 haydovchi
  • ZeroMQ xabar almashish

Python 3

RPi-da Python 3 oldindan o'rnatilgan bo'lishi kerak. Mening kodim Python 3 uchun yozilgan bo'lsa -da, Python 2 kichik o'zgarishlar bilan ishlashi kerak.

Apache 2

Apache -ni o'rnating va Python CGI skriptini yoqing. Quyida RPi -da Apache -ni o'rnatish uchun ajoyib manbalar mavjud, shuning uchun men bu erda takrorlamayman. Apache va CGI -ni sozlash uchun quyidagi ko'rsatmalarga amal qiling. *. Py skriptlari brauzerda bajarilishi mumkinligiga ishonch hosil qiling.

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

Max7291 uchun haydovchi

Max7219 drayverini eng so'nggi o'rnatish ko'rsatmalariga amal qilib o'rnating:

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

O'rnatishdan so'ng, "Matrix_test.py" misol kodini LED matritsasida "Salom dunyo" ni ko'rsatish uchun o'rnatish qo'llanmasida ishga tushiring. Bu keyingi bosqichga o'tishdan oldin ishlashi kerak.

ZeroMQ xabar almashish

Nega bizga xabar kerak? Yuqoridagi misol matrix_test.py kodini bir vaqtning o'zida ikkita terminal ekranida ishlatishga harakat qiling. Tizim bir vaqtning o'zida bir nechta kodni ishga tushirishga imkon beradi, lekin siz bir -biriga mos kelmaydigan xabarlarni ko'rasiz. Bitta foydalanuvchi muhitida bu muammo bo'lmasligi mumkin, chunki siz bir vaqtning o'zida faqat bitta dastur ishlashiga ishonch hosil qilishingiz mumkin. Veb kabi ko'p foydalanuvchilarli muhitda tizim FIFO (birinchi navbatda birinchi navbatda) navbatini yaratishi kerak, boshqalari kutishganda kodni faqat bir kishi bajarishi mumkin. Bunga erishish uchun boshqa echimlar bo'lishi mumkin bo'lsa -da, men FIFO navbatini boshqarish uchun ZeroMQ -dan foydalanishga qaror qildim. ZeroMQ server kodi LED matritsasidagi xabarni birma -bir ko'rsatish uchun funktsional chaqiruvni o'z ichiga oladi, veb -server esa ZeroMQ serveriga xabarlarni so'rash va yuborish uchun ZeroMQ mijozi vazifasini bajaradi. Shunday qilib, bir nechta foydalanuvchilar bir vaqtning o'zida veb -sahifa orqali xabar yuborishlari mumkin bo'lsa, ZeroMQ serveri bir vaqtning o'zida faqat bitta xabarni ko'rsatadi.

Ushbu loyiha uchun biz faqat ZeroMQ paketini emas, balki Python pyzmq paketini o'rnatamiz.

yugurish:

sudo pip3 pyzmq -ni o'rnating

Http://zguide.zeromq.org saytidagi ZeroMQ qo'llanmasini o'qing va Python -da salom dunyo serveri va mijoz misolini sinab ko'ring. Python misol kodini server va mijoz uchun RPi -ga nusxalash va keyingi bosqichga o'tishdan oldin ularning ishlashiga ishonch hosil qiling.

3 -qadam: veb -sahifani sozlash

Veb -sahifada men sahifani chiroyli qilish uchun bootstrap CSS/JS ramkasidan foydalandim. Bu mutlaqo ixtiyoriy.

Apache ildiz yoki pastki katalogiga biriktirilgan led_msg.tar.gz faylini yuklab oling. Gzip'd tar faylini ochish uchun quyidagini bajaring:

tar -xzvf led_msg.tar.gz

Bu quyidagi fayllarni yaratadi:

msg.py (asosiy dastur)

templates/interstitial.html (html shablon) andozalari/send_msg.html (html shablon) statik/img/led_150x150.jpg (html shablonida ishlatilgan jpg)

Ixtiyoriy ravishda, statik katalog ostiga yuklanuvchi css/js ramkasini o'rnating.

Brauzeringiz uchun msg.py manzilini kiriting va veb -sahifaning paydo bo'lishiga ishonch hosil qiling. Hali xabar yubormang !!!

Xabarlarni yuborishdan oldin, ZeroMQ serverini veb -sahifa mijozidan xabarlarni qabul qilishni boshlash va ularni LED matritsasida ko'rsatish kerak. Agar ZeroMQ serveri ishlamayotgan bo'lsa, ekranda hech narsa ko'rinmaydi.

Max7219_server.py kodini biriktirilgan Apache root dir emas, balki uy katalogiga yuklab oling, uni veb -foydalanuvchilar bajarishi mumkin. Uni root sifatida ishga tushiring:

sudo python max7219_server.py

Endi ZeroMQ serveri veb -sahifadan xabarlarni qabul qilishga tayyor. Veb -sahifadan oddiy xabarni kiriting va yuboring. Agar hamma narsa to'g'ri sozlangan bo'lsa, siz bu xabarni ZeroMQ server ekranida va LED matritsasida ko'rasiz.

Agar siz serverni o'chirmoqchi bo'lsangiz, server ekranidan chiqish uchun Control-C tugmachasini bosing.

Bo'ldi shu. Umid qilamanki, siz ham men kabi bu loyihadan bahramand bo'lasiz.

Siz qila oladigan yaxshilanishlardan biri bu server va mijozlar o'rtasidagi ZeroMQ aloqasini asinxron qilishdir, shunda veb -sahifa boshqa xabarlar ko'rsatilguncha kutmaydi. Bundan tashqari, siz qo'shimcha LED matritsasini kaskad rejimida ulashingiz mumkin. Men buni sizga qoldiraman.

Tavsiya: