Turinys:

Skaitmeninė skelbimų lenta naudojant „Raspberry Pi“ir MQTT protokolą: 8 žingsniai
Skaitmeninė skelbimų lenta naudojant „Raspberry Pi“ir MQTT protokolą: 8 žingsniai

Video: Skaitmeninė skelbimų lenta naudojant „Raspberry Pi“ir MQTT protokolą: 8 žingsniai

Video: Skaitmeninė skelbimų lenta naudojant „Raspberry Pi“ir MQTT protokolą: 8 žingsniai
Video: Kursas B2: Skaitmeninė verslo aplinka 2024, Lapkritis
Anonim
Image
Image
Skaitmeninė skelbimų lenta naudojant „Raspberry Pi“ir MQTT protokolą
Skaitmeninė skelbimų lenta naudojant „Raspberry Pi“ir MQTT protokolą

Skelbimų lentos naudojamos beveik visur, pavyzdžiui, biuruose, mokyklose, ligoninėse ir viešbučiuose. Jie gali būti naudojami vėl ir vėl rodyti svarbius pranešimus arba reklamuoti būsimus įvykius ar susitikimus. Tačiau pranešimas ar skelbimai turi būti atspausdinti ant popieriaus ir pritvirtinti skelbimų lentose.

Šioje instrukcijoje išmokime kurti skaitmeninę pranešimų lentą su „Raspberry Pi“, kad sutaupytume daug popieriaus ir dažų!

1 veiksmas: kaip veikia skaitmeninė pranešimų lenta?

Kaip veikia skaitmeninė pranešimų lenta?
Kaip veikia skaitmeninė pranešimų lenta?
  • „Raspberry Pi“prijungtas prie HDMI ekrano, kuris yra mūsų skaitmeninė skelbimų lenta.
  • „Windows“kompiuteris naudojamas skelbimui internete paskelbti Skaitmeninėje skelbimų lentoje.
  • „Windows“kompiuterio paskelbtą pranešimą skaitmeninė pranešimų lenta gauna per „CloudMQTT“brokerį.
  • Ryšys tarp „Windows“kompiuterio ir skaitmeninės skelbimų lentos pasiekiamas naudojant MQTT protokolą.

2 žingsnis: reikalingi dalykai:

  1. Raspberry Pi su Rasbian OS
  2. Ekranas su HDMI prievadu
  3. „Windows“kompiuteris
  4. Interneto ryšys
  5. „CloudMQTT“paskyra

3 veiksmas: GUI dizainas pranešimams rodyti:

Image
Image
GUI dizainas pranešimams rodyti
GUI dizainas pranešimams rodyti

Turime sukurti 2 GUI: vieną, skirtą „Raspberry Pi“, kad pranešimas būtų rodomas HDMI ekrane, o kitą - „Windows“asmeniniam kompiuteriui, kad jis paskelbtų pranešimą „Raspberry Pi“per „CloudMQTT“tarpininką.

GUI dizainas priklauso nuo vietos, kurioje ketinate įdėti skaitmeninę skelbimų lentą. Pavyzdžiui, leiskite man sukurti „Instructables Office“GUI, kad būtų rodomi būsimi įvykiai ir susitikimai, kad darbuotojai būtų atnaujinti naujausia informacija.

„Windows“asmeniniame kompiuteryje lengva sukurti GUI, todėl suprojektuokime skaitmeninio pranešimų lentos GUI „Windows“kompiuteryje ir nukopijuokite kodą į „Raspberry Pi“.

Reikalinga programinė įranga:

„Anaconda“(į kurią įeina „python 2.7“, „Qt Designer“paketas ir „Spyder IDE“).

„Qt Designer“yra įrankis, naudojamas GUI projektavimui. „Qt Designer“išvestis bus.ui failas, vėliau jis gali būti paverstas.py tolesniam procesui.

Kas vyksta vaizdo įraše?:

  • Atsisiųskite „Anaconda Windows Installer“, skirtą „python 2.7“, ir įdiekite ją į „Windows“kompiuterį (įprastas diegimo procesas).
  • Įdiegę „Qt Designer“įrankį rasite aplanke „installation_directory / Library / bin / designer.exe“(man tai yra „C: / Anaconda2 / Library / bin / designer.exe“)
  • Sukurkite „designer.exe“nuorodą ir įdėkite ją į darbalaukį.
  • atidarykite „designer.exe“.
  • Sukurkite naują pagrindinį langą.
  • Pasirinkite ir įdėkite maketus bei reikiamus rodinius (teksto, etikečių rodinį ir kt.).
  • Išsaugoti kaip Rpi_UI.ui failą.
  • Norėdami konvertuoti jį į.py failą, atidarykite cmd eilutę dabartiniame aplanke, kuriame yra failas Rpi_UI.ui, ir įveskite šią komandą

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

man tai yra, C: / Anaconda2 / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

ši komanda konvertuos Rpi_UI.ui failą į Rpi_UI.py failą ir įdės į tą patį katalogą.

  • Atidarykite „Rpi_UI.py“failą naudodami „Spyder IDE“, įtrauktą į „Anaconda“.
  • Vykdant scenarijų bus rodoma anksčiau sukurta GUI.

Toliau leiskite mums nustatyti „CloudMQTT“paskyrą.

4 veiksmas: nustatykite „CloudMQTT“paskyrą:

Image
Image
  • Apsilankykite šioje nuorodoje.
  • Sukurkite paskyrą el. Paštu ir prisijunkite prie savo paskyros.
  • Sukurkite naują egzempliorių (pavadinau jį kaip TEST_1).
  • Atidarykite egzemplioriaus informaciją.
  • Atkreipkite dėmesį į serverį, vartotoją, slaptažodį ir prievadą.
  • Peržiūrėkite „CloudMQTT Python“dokumentaciją ir išsaugokite scenarijų kaip „CloudMQTT.py“.
  • Dokumentacijos kodo pavyzdys reikalauja paho bibliotekos, įdiekite „Paho Python Client“naudodami „pip“įrankį, atidarykite „cmd“eilutę kaip administratorius ir įveskite šią komandą.

pip įdiegti paho-mqtt

5 žingsnis: paaiškintas „Raspberry Pi“galutinis kodas:

Čia leiskite man paaiškinti, kaip sujungiau failą RPi_UI.py su „CloudMQTT.py“ir išsaugojau kaip RPi_UI.py.

Importuokite bibliotekas, jei ji neįdiegta, tiesiog ją įdiekite

importuoti paho.mqtt.client kaip mqtt

importuoti „urlparse“iš „PyQt5“importuoti „QtGui“, „QtWidgets“, „QtCore“iš „PyQt5. QtCore“importuoti „QTimer“, „QTime“iš sriegių importavimo Siūlų importavimo sistemos importavimas iš „google_drive_downloader“importuoti „GoogleDriveDownloader“kaip gdd importuoti

Norėdami įdiegti „googledrivedownloader“, naudokite komandą

pip install googledrivedownloader

Inicijuojant kintamuosius,

icon = "[email protected]"

konkursasImg = "juodas" susitikimas1 = "Susitikimas1:" vieta1 = "Laikas ir vieta1." meeting2 = "Meeting2:" venue2 = "Laikas ir vieta2." meeting3 = "Meeting3:" venue3 = "Laikas ir vieta3."

Toliau seka klasė Ui_MainWindow

klasė Ui_MainWindow (objektas):

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

Šios funkcijos sąrankos „UUI“eilutės atnaujina GUI kas 3 sekundes iškviečiant funkciją _update

self.retranslateUi (MainWindow)

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

„On_message“funkcija laukia pranešimo iš tarpininko, kai pranešimas bus gautas, jis atsisiunčia vaizdą iš „Google“disko, naudodamas „Google“disko bendrinamos nuorodos ID, taip pat pakeičia visuotinių kintamųjų reikšmes

def on_message (klientas, obj, žinutė):

spausdinti (str (msg.payload)) if (str (msg.payload)): noticeReceived = str (msg.payload) result = re.search ('%1 (.*)%2 (.*)%3 (. *)%4 (.*)%5 (.*)%6 (.*)%7 (.*)%8 ', pranešimasGautas) visuotinis konkursas +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 = kelias) konkursasImg = rezultatas.grupa (1) susitikimas1 = rezultatas.grupa (2) vieta1 = rezultatas.grupa (3) susirinkimas2 = rezultatas.grupa (4) vieta2 = rezultatas.grupa (5) susitikimas3 = rezultatas.grupa (6) vieta 3 = rezultatas. grupė (7)

Kodą sudaro 2 begalinės kilpos,

rc = mqttc.loop ()

ir

sys.exit (app.exec_ ())

Norėdami vienu metu paleisti šias kilpas, aš naudoju „Threading“koncepciją

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 ()

Puiku, mes baigėme „Raspberry Pi“sąranką, toliau suprojektuosime „Windows PC“GUI, kad paskelbtume pranešimą „Raspberry Pi“.

6 veiksmas: „Windows“kompiuterio GUI:

„Windows“kompiuterio GUI
„Windows“kompiuterio GUI
  • Sukurkite „Windows“GUI ir išsaugokite ją kaip „Windows_UI.ui“.
  • Konvertuokite jį į „Python“failą.
  • Sujunkite jį su „CloudMQTT.py“failu ir išsaugokite jį kaip „Windows_UI.py“.
  • „Windows_UI.py“failo funkcija yra panaši į failo „RPi_UI.py“, vienintelis skirtumas yra tas, kad „Windows_UI.py“failas skelbia pranešimą, o „RPi_UI.py“gauna pranešimą.

7 veiksmas: paaiškintas „Windows“kompiuterio galutinis kodas:

  • „Windows_UI.py“faile yra visos „RPi_UI.ui“klasės ir funkcijos, išskyrus keletą.
  • Vietoj „on_message“funkcijos ji turi funkciją „on_publish“, skirtą pranešimui paskelbti.
  • Šis retranslateUi funkcijos kodas iškviečia paskelbimo funkciją, kai paspaudžiamas mygtukas PUBLISH.

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

  • Paskelbimo funkcija sujungia „Google“disko bendrinamos nuorodos ID ir susitikimo informaciją ir paskelbia ją tema „pranešimas“.
  • Šią žinutę gaus „Raspberry Pi“.

8 veiksmas: nustatykite skaitmeninę skelbimų lentą:

  • Prijunkite „Raspberry Pi“prie HDMI ekrano, aš naudoju savo „Sony“televizorių kaip skaitmeninį skelbimų lentos ekraną.
  • Raspberry Pi paleiskite failą RPi_UI.py.
  • Paleiskite „Windows_UI.py“failą „Windows“kompiuteryje.
  • Įveskite konkurso vaizdo „Google“disko nuorodos ID ir susitikimo pranešimą.
  • Spustelėkite mygtuką PUBLISH.
  • Dabar per kelias sekundes galite pamatyti atnaujintą skaitmeninę skelbimų lentą.

Patarimai:

  • Galite sukurti norimą skaičių skaitmeninių skelbimų lentų, o lenteles galima prenumeruoti skirtingomis temomis.
  • Jei norite, kad „Windows_UI.py“failas būtų nešiojamas, galite jį konvertuoti į vykdomąjį failą naudodami „pyinstaller“, kad galėtumėte paleisti vykdomąjį failą bet kuriame „Windows“kompiuteryje neįdiegę reikiamų bibliotekų kompiuteryje.

Ačiū

SABARI KANNAN M

Rekomenduojamas: