Mundarija:

Raspberry Pi va MQTT protokoli yordamida raqamli xabarlar paneli: 8 qadam
Raspberry Pi va MQTT protokoli yordamida raqamli xabarlar paneli: 8 qadam

Video: Raspberry Pi va MQTT protokoli yordamida raqamli xabarlar paneli: 8 qadam

Video: Raspberry Pi va MQTT protokoli yordamida raqamli xabarlar paneli: 8 qadam
Video: ESP32 Tutorial 53 - Build an LCD Internet Clock | SunFounder's ESP32 IoT Learnig kit 2024, Noyabr
Anonim
Image
Image
Raspberry Pi va MQTT protokoli yordamida raqamli xabarlar paneli
Raspberry Pi va MQTT protokoli yordamida raqamli xabarlar paneli

E'lonlar taxtasi deyarli hamma joyda, masalan, ofis, maktab, kasalxona va mehmonxonalarda ishlatiladi. Ulardan muhim xabarlarni ko'rsatish yoki bo'lajak voqealar yoki uchrashuvlarni reklama qilish uchun qayta -qayta foydalanish mumkin. Ammo xabar yoki reklama qog'ozga bosilishi va e'lonlar taxtasida mahkamlanishi kerak.

Bu yo'riqnomada keling, Raspberry Pi yordamida raqamli bildirishnomalar taxtasini yaratishni o'rganamiz, shuning uchun ko'p qog'oz va tonerni tejash mumkin!

1 -qadam: Raqamli xabarlar paneli qanday ishlaydi?

Raqamli xabarlar paneli qanday ishlaydi?
Raqamli xabarlar paneli qanday ishlaydi?
  • Raspberry Pi bizning raqamli xabarlar paneli bo'lgan HDMI displeyiga ulangan.
  • Windows kompyuteri Internet orqali raqamli xabarlar taxtasida e'lonni joylashtirish uchun ishlatiladi.
  • Windows kompyuterida e'lon qilingan bildirishnoma DigitalMa'lumotlar kengashi tomonidan CloudMQTT brokeri orqali qabul qilinadi.
  • Windows kompyuteri va Raqamli xabarlar paneli o'rtasidagi aloqa MQTT protokoli orqali amalga oshiriladi.

2 -qadam: Kerakli narsalar:

  1. Rasbian OS bilan Raspberry Pi
  2. HDMI portli displey
  3. Windows kompyuter
  4. Internetga ulanish
  5. CloudMQTT hisob qaydnomasi

3 -qadam: Xabarlarni ko'rsatish uchun GUI dizayni:

Image
Image
Xabarlarni ko'rsatish uchun GUI dizayni
Xabarlarni ko'rsatish uchun GUI dizayni

Biz ikkita GUI -ni ishlab chiqishimiz kerak, bittasi Raspberry Pi uchun HDMI displeyida, ikkinchisi Windows -da Raspberry Pi -ga CloudMQTT vositachisi orqali xabar yuborish uchun.

GUI dizayni raqamli xabarlar taxtasi joylashtiriladigan joyga bog'liq. Masalan, kelgusi voqealar va uchrashuvlarni namoyish qilish uchun Instructables Office uchun GUI loyihalashtirishga ruxsat bering, shunda xodimlar so'nggi ma'lumotlar bilan yangilanib turishi mumkin.

Windows kompyuterida GUI -ni loyihalash oson, shuning uchun Windows kompyuteridagi Raqamli xabarlar paneli GUI -ni loyihalashtiramiz va kodni Raspberry Pi -ga ko'chiramiz.

Kerakli dasturiy ta'minot:

Anaconda (unga python 2.7, Qt Designer to'plami va Spyder IDE kiradi).

Qt Designer - bu GUI -larni loyihalashda ishlatiladigan vosita. Qt Designer -ning chiqishi.ui fayli bo'ladi, keyinchalik uni keyingi jarayon uchun.py ga aylantirish mumkin.

Videoda nima bo'lyapti?:

  • Python 2.7 uchun Anaconda Windows Installer dasturini yuklab oling va uni Windows kompyuteriga o'rnating (oddiy o'rnatish jarayoni).
  • O'rnatishdan so'ng siz Qt Designer vositasini "install_directory / Library / bin / designer.exe" dan topishingiz mumkin (men uchun bu "C: / Anaconda2 / Library / bin / designer.exe")
  • "Designer.exe" uchun yorliq yarating va uni ish stoliga joylashtiring.
  • "dizayner.exe" ni oching.
  • Yangi asosiy oyna yarating.
  • Jadvallarni va kerakli ko'rinishni tanlang va joylashtiring (matn ko'rinishi, yorliq ko'rinishi va boshqalar).
  • Rpi_UI.ui fayli sifatida saqlang.
  • Uni.py faylga aylantirish uchun Rpi_UI.ui fayli mavjud papkada cmd buyrug'ini oching va quyidagi buyruqni kiriting.

install_directory / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

men uchun bu, C: / Anaconda2 / kutubxona / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

bu buyruq Rpi_UI.ui faylini toRpi_UI.py faylga o'zgartiradi va uni o'sha katalogga joylashtiradi.

  • Anaconda -ga kiritilgan Spyder IDE bilan Rpi_UI.py faylini oching.
  • Skriptni ishga tushirish biz ilgari ishlab chiqqan GUIni ko'rsatadi.

Keling, CloudMQTT hisobini o'rnataylik.

4 -qadam: CloudMQTT hisobini o'rnating:

Image
Image
  • Bu havolaga tashrif buyuring.
  • Elektron pochta orqali hisob yarating va hisobingizga kiring.
  • Yangi misol yarating (men uni TEST_1 deb nomladim).
  • Instance ma'lumotlarini oching.
  • Server, foydalanuvchi, parol va portga e'tibor bering.
  • CloudMQTT Python hujjatlariga murojaat qiling va skriptni CloudMQTT.py sifatida saqlang.
  • Hujjatlardagi misol kodi paho kutubxonasini talab qiladi, Paho Python Client -ni pip vositasi yordamida o'rnating, cmd buyrug'ini administrator sifatida oching va quyidagi buyruqni kiriting.

paho-mqtt ni o'rnatish

5 -qadam: Raspberry Pi yakuniy kodi tushuntiriladi:

RPi_UI.py faylini CloudMQTT.py bilan birlashtirish va uni RPi_UI.py sifatida saqlash usulini tushuntirib beray.

Kutubxonalarni import qiling, agar u o'rnatilmagan bo'lsa, uni o'rnating

paho.mqtt.client -ni mqtt sifatida import qiling

PyQt5 dan urlparse import QtGui, QtWidgets, QtCore PyQt5. QtCore import QTimer, QTime importdan Thread import sys import google_drive_downloader dan import GoogleDriveDownloader gdd import os sifatida

Googledrivedownloader -ni o'rnatish uchun buyruqdan foydalaning

pip install googledrivedownloader

O'zgaruvchilarni ishga tushirish,

ikonka = "[email protected]"

CompetImg = "qora" uchrashuv1 = "Uchrashuv1:" joy1 = "Vaqt va makon1." uchrashuv2 = "Uchrashuv2:" joy2 = "Vaqt va makon2." Meeting3 = "Uchrashuv3:" joy3 = "Vaqt va makon3."

Ui_MainWindow sinfidan keyin

sinf Ui_MainWindow (ob'ekt):

def setupUi (o'zini, MainWindow):… def retranslateUi (o'zini, MainWindow):… def _update (o'zini):…

SetupUi funktsiyasidagi quyidagi satrlar GUIni har 3 soniyada _update funktsiyasini chaqirib yangilaydi

self.retranslateUi (MainWindow)

QtCore. QMetaObject.connectSlotsByName (MainWindow) self.timer = QTimer () self.timer.timeout.connect (self._update) self.timer.start (3000)

On_message funktsiyasi brokerdan xabarni kutadi, xabar qabul qilingandan so'ng u google drayveridan tasvirni google drayverini almashish havolasi identifikatori yordamida yuklaydi va global o'zgaruvchilar qiymatlarini o'zgartiradi

def on_message (mijoz, obj, xabar):

print (str (msg.payload)) if (str (msg.payload)): noteReceived = str (msg.payload) result = re.search ('%1 (.*)%2 (.*)%3 (. *)%4 (.*)%5 (.*)%6 (.*)%7 (.*)%8 ', bildirishnoma Qabul qilingan) global tanlovImg global yig'in1 global joy1 global yig'ilish2 global maydon2 global yig'ilish3 global joy3 global joy3 fileId = "" +result.group (1)+"" path = "/home/pi/Desktop/Instructables/RPi UI/ContestImages/"+result.group (1)+". jpg" gdd.download_from_google_drive (file_id = fileId, dest_path = yo'l) CompetitionImg = natija guruhi (1) yig'ilish1 = natija guruhi (2) joy1 = natija guruhi (3) yig'ilish2 = natija guruhi (4) joy2 = natija guruhi (5) yig'ilish3 = natija guruhi (6) joy 3 = natija guruhi (7)

Kod 2 cheksiz ko'chadan iborat,

rc = mqttc.loop ()

va

sys.exit (app.exec_ ())

Ushbu ko'chadan bir vaqtning o'zida ishlash uchun men Threading kontseptsiyasidan foydalandim

def sqImport (tId): if tId == 0: while 1: rc = 0 while rc == 0: rc = mqttc.loop () print ("rc:" + str (rc)) if tId == 1: while 1: app = QtWidgets. QApplication (sys.argv) MainWindow = QtWidgets. QMainWindow () ui = Ui_MainWindow () ui.setupUi (MainWindow) MainWindow.show () sys.exit (app.exec_ ()) threadA = mavzu (maqsad) = sqImport, args = [0]) threadB = Thread (target = sqImport, args = [1]) threadA.start () threadB.start () threadA.join () threadB.join ()

Ajoyib, biz Raspberry Pi -ni o'rnatishni yakunladik, keyin xabarni Raspberry Pi -ga nashr qilish uchun Windows PC uchun GUI -ni ishlab chiqamiz.

6 -qadam: Windows kompyuter GUI:

Windows kompyuter GUI
Windows kompyuter GUI
  • Windows uchun GUI -ni yarating va uni Windows_UI.ui sifatida saqlang.
  • Uni python faylga aylantiring.
  • Uni CloudMQTT.py fayli bilan birlashtiring va Windows_UI.py sifatida saqlang.
  • Windows_UI.py faylining vazifasi RPi_UI.py fayliga o'xshaydi, faqat farq Windows_UI.py fayli xabarni, RPi_UI.py esa xabarni oladi.

7 -qadam: Windows kompyuterining yakuniy kodi tushuntiriladi:

  • Windows_UI.py faylida RPi_UI.ui -ning barcha sinflari va funktsiyalari mavjud, bir nechtasidan tashqari.
  • On_message funktsiyasi o'rniga, xabarni chop etish uchun on_publish funksiyasi mavjud.
  • RetanslateUi funktsiyasidagi quyidagi kod PUBLISH tugmasi bosilgandan so'ng nashr qilish funktsiyasini chaqiradi.

self.pushButton.clicked.connect (self.publish)

  • Nashr qilish funktsiyasi Google drayveri almashish havolasi identifikatori va uchrashuv ma'lumotlarini birlashtiradi va "xabarnoma" mavzusi ostida nashr etadi.
  • Bu xabar Raspberry Pi tomonidan qabul qilinadi.

8 -qadam: Raqamli xabarlar taxtasini o'rnating:

  • Raspberry Pi -ni HDMI displeyiga ulang, men Sony televizorimni raqamli xabarlar paneli sifatida ishlatganman.
  • Raspberry Pi -da RPi_UI.py faylini ishga tushiring.
  • Windows kompyuterida Windows_UI.py faylini ishga tushiring.
  • Tanlov tasviri va uchrashuv haqidagi Google disk havolasi identifikatorini kiriting.
  • PUBLISH tugmasini bosing.
  • Endi siz bir necha soniya ichida yangilangan raqamli xabarlar taxtasini ko'rishingiz mumkin.

Maslahatlar:

  • Siz kerakli raqamli raqamli xabarlar taxtasini yaratishingiz mumkin va taxtalarga turli mavzularga obuna bo'lish mumkin.
  • Windows_UI.

rahmat

SABARI KANNAN M

Tavsiya: