Мазмұны:

IoT RPi LED хабар тақтасы: 3 қадам (суреттермен)
IoT RPi LED хабар тақтасы: 3 қадам (суреттермен)

Бейне: IoT RPi LED хабар тақтасы: 3 қадам (суреттермен)

Бейне: IoT RPi LED хабар тақтасы: 3 қадам (суреттермен)
Бейне: Электрика в квартире своими руками. Финал. Переделка хрущевки от А до Я. #11 2024, Қараша
Anonim
Image
Image
Жабдықты орнату
Жабдықты орнату

Бұл нұсқаулықта мен Raspberry Pi (RPi) көмегімен Wi-Fi қосылған LED хабар тақтасын жасадым. Пайдаланушылар 8x8 жарықдиодты дисплейде көрсетілетін қысқа хабарламаларды жіберу үшін браузерлерін пайдаланып Raspberry Pi веб -серверіне қосылады. Python-да MAX7219 драйверімен 8x8 жарықдиодты матрицаның интерфейсі Интернетте басқалармен жақсы құжатталғандықтан, бұл жоба веб-сервер интерфейсін құруға және кіріс хабарламаларды басқару үшін ZeroMQ хабар алмасуды қолдануға бағытталған.

Жаңарту: мұнда IoT ондық/он алтылық 8x8 жарықдиодты матрицалық сурет тақтасының келесі жобасы.

(Мен «Кодты білетін қыздар клубы» клубының фасилитаторымын және студенттерге веб -интерфейс дизайны мен хабар алмасуды үйрету үшін осы қарапайым жобаны ойлап таптым.)

1 -қадам: Жабдықты орнату

Жабдықты орнату
Жабдықты орнату
Жабдықты орнату
Жабдықты орнату

Бұл жоба келесі жабдықты қажет етеді:

  • Raspberry Pi
  • USB қуат көзі, мысалы, қысқа USB -MicroUSB кабелі бар Anker
  • Таспалы кабелі бар MAX7219 нүктелік матрицалық модуль (Aliexpress $ 2 -ден төмен)
  • Қоршау (мен оны картон қораптан және спрейге боялған) жасадым

Аппараттық құралдарды орнату - бұл оңай бөлігі. Жарық диодты матрицадан 5 сымды таспалы кабельді MAX7219 кітапханасының құжатына RPi -ге қосыңыз.

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

Мен жарықдиодты қондырғыны RPi корпусына бекіту үшін екі жақты көбік таспасын қолдандым. Содан кейін мен RPi мен батареяны сақтау үшін картон қораптан қоршау жасадым.

2 -қадам: Бағдарламалық қамтамасыз етуді орнату

Бағдарламалық қамтамасыз етуді орнату
Бағдарламалық қамтамасыз етуді орнату
Бағдарламалық қамтамасыз етуді орнату
Бағдарламалық қамтамасыз етуді орнату
Бағдарламалық қамтамасыз етуді орнату
Бағдарламалық қамтамасыз етуді орнату
Бағдарламалық қамтамасыз етуді орнату
Бағдарламалық қамтамасыз етуді орнату

RPi келесі бағдарламалық жасақтамаға ие болуы керек:

  • Python 3
  • Apache 2 вебсүйгіш
  • Python үшін Max7219 драйвері
  • ZeroMQ хабар алмасу

Python 3

RPi-де Python 3 алдын ала орнатылған болуы керек. Менің кодым Python 3 үшін жазылғанмен, Python 2 аздаған өзгерістермен жұмыс істеуі керек.

Apache 2

Apache орнатыңыз және Python CGI сценарийін қосыңыз. Төменде Apache -ді RPi -ге орнатуға арналған бірнеше керемет ресурстар бар, сондықтан мен оларды қайталамаймын. Apache және CGI орнату үшін төмендегі нұсқауларды орындаңыз. *. Py сценарийлері шолғыштан орындалатынына көз жеткізіңіз.

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

Max7291 драйвері

Max7219 драйверін соңғы орнату нұсқаулығын орындау арқылы орнатыңыз:

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

Орнатқаннан кейін, LED Matrix -те «Hello World» көрсету үшін орнату нұсқаулығына matrix_test.py мысал кодын іске қосыңыз. Бұл келесі қадамға өтпес бұрын жұмыс істеуі керек.

ZeroMQ хабар алмасу

Бізге хабар алмасу не үшін қажет? Жоғарыда келтірілген мысал кодын matrix_test.py бір мезгілде екі терминалды экранда іске қосып көріңіз. Жүйе бірнеше кодты бір уақытта іске қосуға мүмкіндік береді, бірақ сіз қажет емес хабарламалардың қабаттасқанын көресіз. Бір пайдаланушы ортасында бұл мәселе болмауы мүмкін, себебі сіз бір уақытта бір ғана бағдарламаның жұмыс істейтініне көз жеткізе аласыз. Веб сияқты көп қолданушы ортасында жүйе FIFO (First-In-First-Out) кезегін құруы керек, бұл кодты тек бір адам ғана орындай алады, ал басқалары күтеді. Бұған жетудің басқа шешімдері болуы мүмкін, мен FIFO кезегін басқару үшін ZeroMQ қолдануды шештім. ZeroMQ серверінің коды LED -матрицада бір уақытта хабарды көрсетуге арналған функционалды шақыруды қамтиды, ал веб -сервер ZeroMQ серверіне хабарларды сұрау және жіберу үшін ZeroMQ клиенті ретінде әрекет етеді. Осылайша, бірнеше пайдаланушы веб -бет арқылы бір уақытта хабарлама жібере алатын болса, ZeroMQ сервері бір уақытта тек бір хабарды көрсетеді.

Бұл жоба үшін біз тек ZeroMQ пакетін емес, Python pyzmq пакетін орнатамыз.

жүгіру:

sudo pip3 pyzmq орнатыңыз

Http://zguide.zeromq.org сайтындағы ZeroMQ нұсқаулығын оқыңыз және Python -да сәлемдеуші әлемдік сервер мен клиенттің мысалын көріңіз. Python мысал кодын серверге де, клиентке де RPi -ге көшіріңіз және келесі қадамға өтпес бұрын олардың жұмыс істейтініне көз жеткізіңіз.

3 -қадам: веб -бетті орнату

Веб -бетте мен бетті әдемі ету үшін bootstrap css/js негізін қолдандым. Бұл мүлдем міндетті емес.

Қосылған led_msg.tar.gz файлын Apache түбіріне немесе ішкі каталогына жүктеңіз. Gzip'd tar файлын ашу үшін келесі әрекеттерді орындаңыз:

tar -xzvf led_msg.tar.gz

Бұл келесі файлдарды жасайды:

msg.py (негізгі бағдарлама)

templates/interstitial.html (html үлгісі) templates/send_msg.html (html үлгісі) static/img/led_150x150-j.webp

Қажет болса, bootstrap css/js негізін статикалық каталогтың астына орнатыңыз.

Msg.py шолғышының URL мекенжайын енгізіңіз және веб -беттің пайда болуын тексеріңіз. Әлі хабарлама жібермеңіз !!!

Хабарламалар жіберілмес бұрын, ZeroMQ сервері веб -беттің клиентінен хабарламаларды қабылдап, оларды жарықдиодты матрицада көрсетуді бастау керек. Егер ZeroMQ сервері жұмыс істемесе, экранда ештеңе көрсетілмейді.

Қосылған max7219_server.py кодын Apache root dir -де емес, үй каталогына жүктеңіз, оны веб -пайдаланушылар орындауы мүмкін. Оны түбір ретінде іске қосыңыз:

sudo python max7219_server.py

Енді ZeroMQ сервері веб -беттен хабарламаларды қабылдауға дайын. Веб -беттен қарапайым хабарламаны енгізіңіз және жіберіңіз. Егер бәрі дұрыс орнатылса, сіз бұл хабарды ZeroMQ серверінің экранында, сонымен қатар LED матрицасында көресіз.

Егер сіз серверді өшіруді қаласаңыз, сервер экранынан шығу үшін Control-C түймесін басыңыз.

Міне бітті. Сізге бұл жоба мен сияқты ұнайды деп үміттенемін.

Сіз жасай алатын жақсартудың бірі - сервер мен клиенттер арасындағы ZeroMQ байланысын асинхронды ету, сондықтан веб -бет басқа хабарламалар көрсетілгенше күтпейді. Сонымен қатар, каскадты режимде қосымша жарықдиодты матрицаны қоса аласыз. Мен мұны сізге қалдырамын.

Ұсынылған: