Tartalomjegyzék:

Digitális hirdetőtábla a Raspberry Pi és az MQTT protokoll használatával: 8 lépés
Digitális hirdetőtábla a Raspberry Pi és az MQTT protokoll használatával: 8 lépés

Videó: Digitális hirdetőtábla a Raspberry Pi és az MQTT protokoll használatával: 8 lépés

Videó: Digitális hirdetőtábla a Raspberry Pi és az MQTT protokoll használatával: 8 lépés
Videó: CS50 2014 – 2-я неделя 2024, November
Anonim
Image
Image
Digitális hirdetőtábla a Raspberry Pi és az MQTT protokoll használatával
Digitális hirdetőtábla a Raspberry Pi és az MQTT protokoll használatával

Az értesítő táblákat szinte mindenhol használják, például irodákban, iskolákban, kórházakban és szállodákban. Újra és újra felhasználhatók fontos értesítések megjelenítésére vagy a közelgő események vagy találkozók hirdetésére. De a hirdetményt vagy hirdetéseket papírra kell nyomtatni, és a hirdetőtáblákra kell rögzíteni.

Ebben az utasításban tanuljuk meg, hogyan építsük fel digitális értesítő táblánkat a Raspberry Pi segítségével, hogy sok papírt és festéket takarítsunk meg!

1. lépés: Hogyan működik a digitális hirdetőtábla?

Hogyan működik a digitális hirdetőtábla?
Hogyan működik a digitális hirdetőtábla?
  • A Raspberry Pi egy HDMI -kijelzőhöz csatlakozik, amely a digitális hirdetőtábla.
  • A Windows PC -t az értesítés internetes közzétételére használják a Digitális hirdetőtáblán.
  • A Windows PC által közzétett értesítést a Digital Notice Board egy CloudMQTT brókeren keresztül kapja meg.
  • A Windows PC és a digitális hirdetőtábla közötti kommunikációt az MQTT protokoll biztosítja.

2. lépés: Szükséges dolgok:

  1. Raspberry Pi Rasbian operációs rendszerrel
  2. Kijelző HDMI porttal
  3. Windows PC
  4. Internet kapcsolat
  5. CloudMQTT fiók

3. lépés: A grafikus felhasználói felület tervezése az értesítések megjelenítéséhez:

Image
Image
GUI kialakítás az értesítések megjelenítéséhez
GUI kialakítás az értesítések megjelenítéséhez

2 GUI -t kell terveznünk, egyet a Raspberry Pi számára, hogy megjelenítse az értesítést a HDMI -kijelzőn, a másikat pedig a Windows PC -hez, hogy közzétegye az értesítést a Raspberry Pi számára a CloudMQTT közvetítőn keresztül.

A grafikus felhasználói felület kialakítása attól függ, hogy hol helyezi el a digitális hirdetőtáblát. Például hadd tervezzek egy GUI -t az Instructables Office számára, hogy megjelenítse a közelgő eseményeket és találkozókat, hogy az alkalmazottak a legfrissebb információkkal frissüljenek.

Könnyű GUI -t tervezni Windows PC -n, ezért tervezzük meg a Digital Notice Board GUI -t a Windows PC -n, és másoljuk át a kódot a Raspberry Pi -re.

Szükséges szoftver:

Anaconda (amely tartalmazza a python 2.7 -et, a Qt Designer csomagot és a Spyder IDE -t).

A Qt Designer a GUI -k tervezésére használt eszköz. A Qt Designer kimenete egy.ui fájl lesz, később átalakítható.py formátumba a további folyamathoz.

Mi történik a videóban ?:

  • Töltse le az Anaconda Windows Installer programot a python 2.7 programhoz, és telepítse egy Windows PC -re (normál telepítési folyamat).
  • A telepítés után megtalálhatja a Qt Designer eszközt az "installation_directory / Library / bin / designer.exe" mappában (számomra ez a "C: / Anaconda2 / Library / bin / designer.exe")
  • Hozzon létre egy parancsikont a "designer.exe" fájlhoz, és helyezze az asztalra.
  • nyissa meg a "designer.exe" fájlt.
  • Hozzon létre egy új főablakot.
  • Válassza ki és helyezze el az elrendezéseket és a szükséges nézeteket (szövegnézet, címke nézet stb.).
  • Mentse Rpi_UI.ui fájlként.
  • . Py fájlba konvertálásához nyissa meg a cmd parancssort az aktuális mappában, ahol az Rpi_UI.ui fájl létezik, és írja be a következő parancsot

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

számomra az, C: / Anaconda2 / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

ez a parancs átalakítja az Rpi_UI.ui fájlt Rpi_UI.py fájlba, és ugyanabba a könyvtárba helyezi.

  • Nyissa meg az Rpi_UI.py fájlt Spyder IDE -vel, amely az Anaconda része.
  • A szkript futtatása megjeleníti a korábban tervezett GUI -t.

Ezután állítsuk be a CloudMQTT fiókot.

4. lépés: CloudMQTT -fiók beállítása:

Image
Image
  • Látogassa meg ezt a linket.
  • Hozzon létre egy fiókot e-mailben, és jelentkezzen be fiókjába.
  • Hozzon létre új példányt (én TEST_1 -nek neveztem el).
  • Nyissa meg a példányadatokat.
  • Jegyezze fel a szervert, a felhasználót, a jelszót és a portot.
  • Tekintse meg a CloudMQTT Python dokumentációját, és mentse a szkriptet CloudMQTT.py néven.
  • A dokumentációban szereplő példakódhoz paho könyvtár szükséges, telepítse a Paho Python klienst a pip eszközzel, nyissa meg a cmd parancssort rendszergazdaként, és írja be a következő parancsot.

pip install paho-mqtt

5. lépés: A Raspberry Pi végső kódja:

Itt hadd magyarázzam meg, hogyan kombináltam az RPi_UI.py fájlt a CloudMQTT.py -vel, és mentettem el RPi_UI.py néven.

Importálja a könyvtárakat, ha nincs telepítve, csak telepítse

importálja a paho.mqtt.client -t mqtt -ként

import urlparse from PyQt5 import QtGui, QtWidgets, QtCore from PyQt5. QtCore import QTimer, QTime from threading import Thread import sys import re from google_drive_downloader import GoogleDriveDownloader as gdd import os

A googledrivedownloader telepítéséhez használja a parancsot

pip install googledrivedownloader

Változók inicializálása,

icon = "[email protected]"

CompetitionImg = "fekete" meeting1 = "Meeting1:" venue1 = "Idő és helyszín1." meeting2 = "Meeting2:" venue2 = "Idő és helyszín2." meeting3 = "Meeting3:" venue3 = "Idő és helyszín3."

Ezt követi az Ui_MainWindow osztály

osztály Ui_MainWindow (objektum):

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

A függvény setupUi következő sorai 3 másodpercenként frissítik a GUI -t a _update függvény meghívásával

self.retranslateUi (MainWindow)

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

Az on_message függvény várja az ügynöktől érkező üzenetet, miután az üzenet megérkezett, letölti a képet a Google meghajtóról a Google meghajtó megosztható link azonosítójával, és megváltoztatja a globális változók értékeit is

def on_message (kliens, obj, üzenet):

print (str (msg.payload)) if (str (msg.payload)): noticeReceived = str (msg.payload) eredmény = re.search ('%1 (.*)%2 (.*)%3 (. *)%4 (.*)%5 (.*)%6 (.*)%7 (.*)%8 ', értesítésÉrkezett) globális versenyImg globális találkozó1 globális helyszín1 globális találkozó2 globális helyszín2 globális találkozó3 globális helyszín3 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 = út) versenyImg = eredmény.group (1) meeting1 = result.group (2) helyszín1 = result.group (3) meeting2 = result.group (4) helyszín2 = result.group (5) meeting3 = result.group (6) helyszín3 = eredmény.group (7)

A kód 2 végtelen ciklusból áll,

rc = mqttc.loop ()

és

sys.exit (app.exec_ ())

Annak érdekében, hogy ezeket a köröket egyszerre futtassam, a Threading koncepciót használtam

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

Hűvös, befejeztük a Raspberry Pi beállítását, majd tervezzük meg a GUI -t Windows PC -hez, hogy közzétegyük az üzenetet a Raspberry Pi -n.

6. lépés: Windows PC GUI:

Windows PC GUI
Windows PC GUI
  • Tervezzen GUI -t a Windows számára, és mentse el Windows_UI.ui néven.
  • Konvertálja python fájlba.
  • Kombinálja a CloudMQTT.py fájllal, és mentse el Windows_UI.py néven.
  • A Windows_UI.py fájl funkciója hasonló az RPi_UI.py fájlhoz, az egyetlen különbség az, hogy a Windows_UI.py fájl közzéteszi az üzenetet, míg az RPi_UI.py fogadja az üzenetet.

7. lépés: A Windows PC végső kódjának magyarázata:

  • A Windows_UI.py fájl néhány kivételével tartalmazza az RPi_UI.ui összes osztályát és funkcióját.
  • Az on_message függvény helyett van egy on_publish függvénye az üzenet közzétételéhez.
  • A retranslateUi függvényben található következő kód meghívja a közzétételi funkciót, miután a PUBLISH gombra kattint.

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

  • A közzétételi funkció összefűzi a Google Drive megosztható link azonosítóját és a megbeszélés adatait, és közzéteszi a "megjegyzés" témában.
  • Ezt az üzenetet megkapja a Raspberry Pi.

8. lépés: A digitális hirdetőtábla beállítása:

  • Csatlakoztassa a Raspberry Pi -t egy HDMI -kijelzőhöz, a Sony TV -t digitális hirdetőtábla -kijelzőként használtam.
  • Futtassa az RPi_UI.py fájlt a Raspberry Pi -ben.
  • Futtassa a Windows_UI.py fájlt a Windows PC -n.
  • Írja be a versenykép Google Drive -link -azonosítóját és a megbeszélés bejelentését.
  • Kattintson a PUBLISH gombra.
  • Most néhány másodpercen belül láthatja a frissített digitális hirdetőtáblát.

Tippek:

  • Létrehozhatja a kívánt számú digitális hirdetőtáblát, és a táblák előfizethetők különböző témákra.
  • A Windows_UI.py fájl hordozhatóvá tételéhez konvertálja a fájlt futtatható fájlba a pyinstaller segítségével, így a futtatható fájlt bármely Windows PC -n futtathatja anélkül, hogy a szükséges könyvtárakat telepítené a számítógépre.

Köszönöm

SABARI KANNAN M

Ajánlott: