Kazalo:

Digitalna oglasna deska z uporabo protokola Raspberry Pi in MQTT: 8 korakov
Digitalna oglasna deska z uporabo protokola Raspberry Pi in MQTT: 8 korakov

Video: Digitalna oglasna deska z uporabo protokola Raspberry Pi in MQTT: 8 korakov

Video: Digitalna oglasna deska z uporabo protokola Raspberry Pi in MQTT: 8 korakov
Video: Головные боли. Упражнения опасные и безопасные 2024, November
Anonim
Image
Image
Digitalna oglasna deska z uporabo protokola Raspberry Pi in MQTT
Digitalna oglasna deska z uporabo protokola Raspberry Pi in MQTT

Oglasne deske se uporabljajo skoraj povsod, na primer v pisarnah, šolah, bolnišnicah in hotelih. Znova in znova jih lahko uporabite za prikaz pomembnih obvestil ali oglaševanje prihajajočih dogodkov ali srečanj. Vendar je treba obvestilo ali oglase natisniti na papir in jih pritrditi na oglasne deske.

V tem navodilu se naučimo zgraditi našo tablo z digitalnimi obvestili z Raspberry Pi, da prihranimo veliko papirja in tonerja!

1. korak: Kako deluje digitalna oglasna deska?

Kako deluje digitalna oglasna deska?
Kako deluje digitalna oglasna deska?
  • Raspberry Pi, povezan z zaslonom HDMI, ki je naša digitalna oglasna deska.
  • Računalnik z operacijskim sistemom Windows se uporablja za objavo obvestila na digitalni oglasni deski prek interneta.
  • Obvestilo, ki ga objavi računalnik z operacijskim sistemom Windows, prejme tabla za digitalna obvestila prek posrednika CloudMQTT.
  • Komunikacija med osebnim računalnikom z operacijskim sistemom Windows in digitalno oglasno desko je dosežena s protokolom MQTT.

2. korak: Potrebne stvari:

  1. Raspberry Pi z Rasbian OS
  2. Zaslon z vrati HDMI
  3. Računalnik z operacijskim sistemom Windows
  4. Internetna povezava
  5. Račun CloudMQTT

3. korak: Oblikovanje grafičnega vmesnika za prikaz obvestil:

Image
Image
Oblikovanje grafičnega vmesnika za prikaz obvestil
Oblikovanje grafičnega vmesnika za prikaz obvestil

Oblikovati moramo 2 grafična vmesnika, enega za Raspberry Pi za prikaz obvestila na zaslonu HDMI in drugega za računalnik z operacijskim sistemom Windows za objavo obvestila Raspberry Pi prek posrednika CloudMQTT.

Zasnova grafičnega vmesnika je odvisna od kraja, kamor boste namestili digitalno oglasno desko. Naj na primer oblikujem grafični vmesnik za pisarno Instructables za prikaz prihodnjih dogodkov in sestankov, da bodo zaposleni lahko posodobljeni z najnovejšimi informacijami.

Grafični vmesnik v računalniku z operacijskim sistemom Windows je enostavno oblikovati, zato naj v računalniku z operacijskim sistemom Windows oblikujemo grafični vmesnik digitalne oglasne deske in kodo kopiramo v Raspberry Pi.

Potrebna programska oprema:

Anaconda (ki vključuje python 2.7, paket Qt Designer in Spyder IDE).

Qt Designer je orodje za oblikovanje grafičnih vmesnikov. Izhod Qt Designerja bo datoteka.ui, kasneje pa jo je mogoče za nadaljnji postopek pretvoriti v.py.

Kaj se dogaja v videu?:

  • Prenesite Anaconda Windows Installer za python 2.7 in ga namestite v računalnik z operacijskim sistemom Windows (običajen postopek namestitve).
  • Po namestitvi lahko najdete orodje Qt Designer v "installation_directory / Library / bin / designer.exe" (zame je to "C: / Anaconda2 / Library / bin / designer.exe")
  • Ustvarite bližnjico za "designer.exe" in jo postavite na namizje.
  • odprite "designer.exe".
  • Ustvarite novo glavno okno.
  • Izberite in postavite postavitve in zahtevane poglede (pogled besedila, pogled nalepke itd.).
  • Shrani kot datoteko Rpi_UI.ui.
  • Če ga želite pretvoriti v datoteko.py, odprite poziv cmd v trenutni mapi, kjer obstaja datoteka Rpi_UI.ui, in vnesite naslednji ukaz

namestitveni_direktorij / Knjižnica / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

zame je, C: / Anaconda2 / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

ta ukaz pretvori datoteko Rpi_UI.ui v datoteko Rpi_UI.py in jo postavi v isti imenik.

  • Odprite datoteko Rpi_UI.py z ID -jem Spyder, ki je vključen v Anacondo.
  • Zagon skripta bo prikazal grafični vmesnik, ki smo ga oblikovali prej.

Nato nastavimo račun CloudMQTT.

4. korak: Nastavite račun CloudMQTT:

Image
Image
  • Obiščite to povezavo.
  • Ustvarite račun z e-pošto in se prijavite v svoj račun.
  • Ustvari nov primerek (poimenoval sem ga kot TEST_1).
  • Odprite podatke o primerku.
  • Zabeležite strežnik, uporabnika, geslo in vrata.
  • Oglejte si dokumentacijo CloudMQTT Python in shranite skript kot CloudMQTT.py.
  • Primer kode v dokumentaciji zahteva knjižnico paho, namestite odjemalca Paho Python z orodjem pip, odprite poziv cmd kot skrbnik in vnesite naslednji ukaz.

pip install paho-mqtt

5. korak: Razložena končna koda Raspberry Pi:

Tukaj naj razložim, kako sem združil datoteko RPi_UI.py z CloudMQTT.py in jo shranil kot RPi_UI.py.

Uvozite knjižnice, če niso nameščene, jih le namestite

uvozite paho.mqtt.client kot mqtt

uvoz urlparse iz PyQt5 uvoz QtGui, QtWidgets, QtCore iz PyQt5. QtCore uvoz QTimer, QTime iz navojev uvozov Thread import sys uvoz re iz google_drive_downloader uvoz GoogleDriveDownloader kot gdd import os

Če želite namestiti googledrivedownloader, uporabite ukaz

pip install googledrivedownloader

Inicializiranje spremenljivk,

icon = "[email protected]"

contestImg = "black" meeting1 = "Meeting1:" venue1 = "Čas in kraj1." meeting2 = "Srečanje2:" venue2 = "Ura in kraj2." meeting3 = "Meeting3:" venue3 = "Čas in kraj3."

Sledi razred Ui_MainWindow

razred Ui_MainWindow (objekt):

def setupUi (self, MainWindow):… def retranslateUi (self, MainWindow):… def _update (self):…

Naslednje vrstice v setupUi funkcije posodabljajo grafični vmesnik vsake 3 sekunde s klicem funkcije _update

self.retranslateUi (MainWindow)

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

Funkcija on_message počaka na sporočilo posrednika, ko sporočilo prejme, prenese sliko z google pogona z ID -jem povezave za skupno rabo google drive in spremeni tudi vrednosti globalnih spremenljivk

def on_message (client, obj, msg):

print (str (msg.payload)) if (str (msg.payload)): noticeReceived = str (msg.payload) result = re.search ('%1 (.*)%2 (.*)%3 (. *)%4 (.*)%5 (.*)%6 (.*)%7 (.*)%8 ', obvestilo Prejeto) globalno tekmovanjeImg globalno srečanje1 globalno prizorišče1 globalno srečanje2 globalno mesto2 globalno srečanje3 globalno mesto3 fileId = "" +result.group (1)+"" path = "/home/pi/Desktop/Instructables/RPi UI/ContestImages/"+result.group (1)+". jpg" gdd.download_file_from_google_drive (file_id = fileId, dest_path = pot) contestImg = rezultat.skupina (1) sestanek1 = rezultat.skupina (2) prizorišče1 = rezultat.skupina (3) sestanek2 = rezultat.skupina (4) venue2 = rezultat.skupina (5) sestanek3 = rezultat.skupina (6) venue3 = rezultat.skupina (7)

Koda je sestavljena iz 2 neskončnih zank,

rc = mqttc.loop ()

in

sys.exit (app.exec_ ())

Za istočasno izvajanje teh zank sem uporabil koncept Threading

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 = Thread (target = sqImport, args = [0]) threadB = Thread (target = sqImport, args = [1]) threadA.start () threadB.start () threadA.join () threadB.join ()

Super, končali smo nastavitev Raspberry Pi, nato pa oblikujmo grafični vmesnik za računalnik z operacijskim sistemom Windows, ki bo objavil sporočilo na Raspberry Pi.

6. korak: Vmesnik za računalnik z operacijskim sistemom Windows:

Vmesnik za računalnik z operacijskim sistemom Windows
Vmesnik za računalnik z operacijskim sistemom Windows
  • Oblikujte grafični vmesnik za Windows in ga shranite kot Windows_UI.ui.
  • Pretvorite ga v datoteko python.
  • Združite ga z datoteko CloudMQTT.py in jo shranite kot Windows_UI.py.
  • Funkcija datoteke Windows_UI.py je podobna datoteki RPi_UI.py, razlika je le v tem, da datoteka Windows_UI.py objavi sporočilo, medtem ko RPi_UI.py prejme sporočilo.

7. korak: Pojasnjena končna koda računalnika Windows:

  • Datoteka Windows_UI.py vsebuje vse razrede in funkcije RPi_UI.ui, razen nekaj.
  • Namesto funkcije on_message ima funkcijo on_publish za objavo sporočila.
  • Naslednja koda v okviru funkcije retranslateUi pokliče funkcijo objave, ko kliknete gumb OBJAVI.

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

  • Funkcija objave združuje ID povezave za skupno rabo google pogona in podatke o sestanku ter jih objavi pod temo "obvestilo".
  • To sporočilo bo prejel Raspberry Pi.

8. korak: Nastavitev digitalne oglasne deske:

  • Priključite Raspberry Pi na zaslon HDMI, svoj televizor Sony sem uporabil kot zaslon za digitalno obvestilo.
  • Zaženite datoteko RPi_UI.py v Raspberry Pi.
  • Zaženite datoteko Windows_UI.py v računalniku z operacijskim sistemom Windows.
  • Vnesite ID povezave do Googlovega pogona slike natečaja in napoved srečanja.
  • Kliknite gumb OBJAVI.
  • Zdaj lahko v nekaj sekundah vidite posodobljeno tablo z digitalnimi obvestili.

Namigi:

  • Ustvarite lahko želeno število digitalnih oglasnih desk in se lahko naročite na različne teme.
  • Če želite, da je datoteka Windows_UI.py prenosna, jo lahko z pyinstallerjem pretvorite v izvedljivo datoteko, tako da lahko zaženete izvedljivo datoteko v katerem koli računalniku z operacijskim sistemom Windows, ne da bi v računalnik namestili potrebne knjižnice.

Hvala vam

SABARI KANNAN M

Priporočena: