Obsah:
- Krok 1: Jak funguje digitální nástěnka?
- Krok 2: Požadované věci:
- Krok 3: Návrh grafického uživatelského rozhraní pro zobrazování oznámení:
- Krok 4: Nastavení účtu CloudMQTT:
- Krok 5: Vysvětlení konečného kódu Raspberry Pi:
- Krok 6: Windows PC GUI:
- Krok 7: Vysvětlení konečného kódu Windows PC:
- Krok 8: Nastavení digitální nástěnky:
Video: Digitální nástěnka využívající protokol Raspberry Pi a MQTT: 8 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
Desky se používají téměř všude, například v kancelářích, školách, nemocnicích a hotelech. Mohou být použity znovu a znovu k zobrazení důležitých oznámení nebo k propagaci nadcházejících událostí nebo schůzek. Oznámení nebo reklamy však musí být vytištěny na papír a připnuty na nástěnky.
V tomto Instructable se naučíme budovat naši digitální nástěnku s Raspberry Pi, abychom ušetřili spoustu papírů a toneru!
Krok 1: Jak funguje digitální nástěnka?
- Raspberry Pi připojený k HDMI displeji, což je naše digitální nástěnka.
- K publikování oznámení na digitální nástěnce prostřednictvím internetu se používá počítač se systémem Windows.
- Oznámení publikované počítačem se systémem Windows přijímá Digital Board Board prostřednictvím makléře CloudMQTT.
- Komunikace mezi počítačem se systémem Windows a digitální nástěnkou je zajištěna protokolem MQTT.
Krok 2: Požadované věci:
- Raspberry Pi s operačním systémem Rasbian
- Displej s portem HDMI
- Windows PC
- Připojení k internetu
- Účet CloudMQTT
Krok 3: Návrh grafického uživatelského rozhraní pro zobrazování oznámení:
Musíme navrhnout 2 GUI, jedno pro Raspberry Pi pro zobrazení upozornění na HDMI displeji a druhé pro Windows PC pro zveřejnění oznámení pro Raspberry Pi prostřednictvím brokera CloudMQTT.
Design grafického uživatelského rozhraní závisí na místě, kam budete digitální nástěnku umísťovat. Dovolte mi například navrhnout GUI pro Instructables Office tak, aby zobrazovalo nadcházející události a schůzky, aby mohli být zaměstnanci aktualizováni o nejnovější informace.
V počítači se systémem Windows je snadné navrhnout grafické uživatelské rozhraní, navrhneme tedy grafické uživatelské rozhraní digitální nástěnky v počítači se systémem Windows a zkopírujeme kód do Raspberry Pi.
Potřebný software:
Anaconda (která obsahuje python 2.7, balíček Qt Designer a Spyder IDE).
Qt Designer je nástroj používaný k návrhu GUI. Výstupem Qt Designer bude soubor.ui, později jej lze převést na.py pro další zpracování.
Co se děje ve videu ?:
- Stáhněte si Anaconda Windows Installer pro python 2.7 a nainstalujte jej do počítače se systémem Windows (normální instalační proces).
- Po instalaci najdete nástroj Qt Designer v „instalační_adresář / Library / bin / designer.exe“(pro mě je to „C: / Anaconda2 / Library / bin / designer.exe“)
- Vytvořte zástupce pro „designer.exe“a umístěte jej na plochu.
- otevřete "designer.exe".
- Vytvořte nové hlavní okno.
- Vyberte a umístěte rozvržení a požadovaná zobrazení (zobrazení textu, zobrazení štítku atd.).
- Uložit jako soubor Rpi_UI.ui.
- Chcete -li jej převést na soubor.py, otevřete výzvu cmd v aktuální složce, kde existuje soubor Rpi_UI.ui, a zadejte následující příkaz
instalační_adresář / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py
pro mě je, C: / Anaconda2 / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py
tento příkaz převede soubor Rpi_UI.ui na soubor Rpi_UI.py a umístí jej do stejného adresáře.
- Otevřete soubor Rpi_UI.py pomocí Spyder IDE, který je součástí Anaconda.
- Po spuštění skriptu se zobrazí GUI, které jsme navrhli dříve.
Dále si založíme účet CloudMQTT.
Krok 4: Nastavení účtu CloudMQTT:
- Navštivte tento odkaz.
- Vytvořte si účet pomocí e-mailu a přihlaste se ke svému účtu.
- Vytvořte novou instanci (pojmenoval jsem ji jako TEST_1).
- Otevřete informace o instanci.
- Poznamenejte si server, uživatele, heslo a port.
- Prostudujte si dokumentaci CloudMQTT Python a uložte skript jako CloudMQTT.py.
- Příklad kódu v dokumentaci vyžaduje knihovnu paho, nainstalujte klienta Paho Python pomocí nástroje pip, otevřete příkaz cmd jako správce a zadejte následující příkaz.
pip install paho-mqtt
Krok 5: Vysvětlení konečného kódu Raspberry Pi:
Zde mi vysvětlím, jak jsem zkombinoval soubor RPi_UI.py s CloudMQTT.py a uložil jej jako RPi_UI.py.
Importujte knihovny, pokud nejsou nainstalovány, stačí je nainstalovat
importujte paho.mqtt.client jako mqtt
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
Chcete -li nainstalovat googledrivedownloader, použijte příkaz
pip install googledrivedownloader
Inicializace proměnných,
ikona = "[email protected]"
contestImg = "černá" meeting1 = "Meeting1:" Místo1 = "Čas a místo1." meeting2 = "Meeting2:" Místo2 = "Čas a místo2." meeting3 = "Meeting3:" Místo3 = "Čas a místo3."
Následuje třída Ui_MainWindow
třída Ui_MainWindow (objekt):
def setupUi (self, MainWindow):… def retranslateUi (self, MainWindow):… def _update (self):…
Následující řádky v nastavení funkceUU aktualizují GUI každé 3 sekundy voláním funkce _update
self.retranslateUi (hlavní okno)
QtCore. QMetaObject.connectSlotsByName (MainWindow) self.timer = QTimer () self.timer.timeout.connect (self._update) self.timer.start (3000)
Funkce on_message čeká na zprávu od makléře, jakmile je zpráva přijata, stáhne obrázek z jednotky Google pomocí ID odkazu na sdílení disku Google Drive a také změní hodnoty globálních proměnných
def on_message (klient, 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 ', noticeReceived) globální soutěž +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 = cesta) contestImg = result.group (1) meeting1 = result.group (2) Místo1 = result.group (3) meeting2 = result.group (4) Místo2 = result.group (5) meeting3 = result.group (6) place3 = result.group (7)
Kód se skládá ze 2 nekonečných smyček,
rc = mqttc.loop ()
a
sys.exit (app.exec_ ())
Aby bylo možné tyto smyčky spustit současně, použil jsem 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]) vláknoB = vlákno (cíl = sqImport, args = [1]) vláknoA.start () vláknoB.start () vláknoA.join () vláknoB.join ()
Skvěle, dokončili jsme nastavení Raspberry Pi, dále pojďme navrhnout GUI pro Windows PC a publikovat zprávu na Raspberry Pi.
Krok 6: Windows PC GUI:
- Navrhněte GUI pro Windows a uložte jej jako Windows_UI.ui.
- Převeďte jej do souboru pythonu.
- Zkombinujte jej se souborem CloudMQTT.py a uložte jej jako Windows_UI.py.
- Funkce souboru Windows_UI.py je podobná souboru RPi_UI.py, jediným rozdílem je, že soubor Windows_UI.py zprávu zveřejňuje, zatímco RPi_UI.py zprávu přijímá.
Krok 7: Vysvětlení konečného kódu Windows PC:
- Soubor Windows_UI.py má všechny třídy a funkce RPi_UI.ui kromě několika.
- Místo funkce on_message má k publikování zprávy funkci on_publish.
- Následující kód v rámci funkce retranslateUi volá funkci publikování po kliknutí na tlačítko PUBLISH.
self.pushButton.clicked.connect (self.publish)
- Funkce publikování zřetězí ID odkazu na sdílení disku Google a informace o schůzce a zveřejní je pod tématem „oznámení“.
- Tuto zprávu obdrží Raspberry Pi.
Krok 8: Nastavení digitální nástěnky:
- Připojte Raspberry Pi k displeji HDMI. Jako displej pro digitální nástěnku jsem použil svůj televizor Sony.
- Spusťte soubor RPi_UI.py na Raspberry Pi.
- Spusťte soubor Windows_UI.py v počítači se systémem Windows.
- Zadejte ID odkazu na disk Google soutěžního obrázku a oznámení o setkání.
- Klikněte na tlačítko PUBLIKOVAT.
- Nyní můžete během několika sekund vidět aktualizovanou digitální nástěnku.
Tipy:
- Můžete vytvořit požadovaný počet desek digitálních oznámení a desky lze přihlásit k odběru různých témat.
- Aby byl soubor Windows_UI.py přenosný, můžete jej převést na spustitelný soubor pomocí pyinstalleru, takže spustitelný soubor můžete spustit v libovolném počítači se systémem Windows bez instalace požadovaných knihoven do počítače.
Děkuji
SABARI KANNAN M
Doporučuje:
Výkonný digitální AC stmívač využívající STM32: 15 kroků (s obrázky)
Výkonný digitální stmívač střídavého proudu využívající STM32: Hesam Moshiri, [email protected] AC zatížení žije s námi! Protože jsou všude kolem nás a přinejmenším domácí spotřebiče jsou napájeny ze sítě. Mnoho typů průmyslových zařízení je také napájeno jednofázovým 220V-AC
Nástěnka Raspberry Pi: 11 kroků (s obrázky)
Bulletin Board Raspberry Pi: Toto je projekt, na kterém jsem pracoval pro svou církev. Chtěli jsme elektronickou nástěnku, která bude namontována v prostoru narthex/lobby a bude každých několik sekund procházet statickými snímky. To byly naše cíle návrhu: statické snímky, žádné video nebo au
Digitální hodiny využívající Arduino a LED maticový displej: 6 kroků
Digitální hodiny využívající Arduino a LED Dot Matrix Display: V dnešní době výrobci, vývojáři upřednostňují Arduino pro rychlý vývoj prototypování projektů. Arduino je open-source elektronická platforma založená na snadno použitelném hardwaru a softwaru. Arduino má velmi dobrou komunitu uživatelů. V tomto projektu
Digitální kompas využívající magnetometr Arduino a HMC5883L: 6 kroků
Digitální kompas využívající magnetometr Arduino a HMC5883L: Ahoj, tento senzor by mohl indikovat geografický sever, jih, východ a západ, my lidé bychom jej mohli také použít v případě potřeby. Tak. V tomto článku se pokusíme pochopit, jak funguje senzor magnetometru a jak jej propojit s mikrokontrolérem
Digitální hodiny využívající interní RTC STM32L476: 5 kroků
Digitální hodiny využívající interní RTC STM32L476: Tento tutoriál vás provede domácími digitálními hodinami, které mohou běžet, pokud jsou napájeny zdrojem energie. Používá interní registry mikrokontroléru a nevyžaduje externí RTC