Spisu treści:
- Krok 1: Jak działa cyfrowa tablica ogłoszeń?
- Krok 2: Wymagane rzeczy:
- Krok 3: Projekt GUI do wyświetlania powiadomień:
- Krok 4: Skonfiguruj konto CloudMQTT:
- Krok 5: Wyjaśnienie końcowego kodu Raspberry Pi:
- Krok 6: GUI komputera z systemem Windows:
- Krok 7: Objaśnienie końcowego kodu komputera z systemem Windows:
- Krok 8: Skonfiguruj cyfrową tablicę ogłoszeń:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Tablice ogłoszeniowe są używane prawie wszędzie, np. w biurach, szkołach, szpitalach i hotelach. Mogą być używane wielokrotnie do wyświetlania ważnych ogłoszeń lub reklamowania nadchodzących wydarzeń lub spotkań. Ale ogłoszenie lub reklamy muszą być wydrukowane na papierze i przypięte na tablicach ogłoszeń.
W tej instrukcji nauczmy się budować naszą cyfrową tablicę ogłoszeń za pomocą Raspberry Pi, aby zaoszczędzić dużo papieru i tonera!
Krok 1: Jak działa cyfrowa tablica ogłoszeń?
- Raspberry Pi podłączone do wyświetlacza HDMI, który jest naszą cyfrową tablicą ogłoszeń.
- Komputer z systemem Windows służy do publikowania ogłoszenia na Cyfrowej Tablicy Ogłoszeń przez Internet.
- Ogłoszenie opublikowane przez komputer z systemem Windows jest odbierane przez Cyfrową Tablicę Ogłoszeń za pośrednictwem brokera CloudMQTT.
- Komunikacja między komputerem z systemem Windows a cyfrową tablicą ogłoszeń jest realizowana za pomocą protokołu MQTT.
Krok 2: Wymagane rzeczy:
- Raspberry Pi z Rasbian OS
- Wyświetlacz z portem HDMI
- Komputer z systemem Windows
- Połączenie internetowe
- Konto CloudMQTT
Krok 3: Projekt GUI do wyświetlania powiadomień:
Musimy zaprojektować 2 GUI, jeden dla Raspberry Pi, aby wyświetlić powiadomienie na wyświetlaczu HDMI, a drugi dla komputera z systemem Windows, aby opublikować powiadomienie dla Raspberry Pi za pośrednictwem brokera CloudMQTT.
Projekt GUI zależy od miejsca, w którym zamierzasz umieścić cyfrową tablicę ogłoszeń. Na przykład pozwól mi zaprojektować GUI dla Instructables Office, aby wyświetlać nadchodzące wydarzenia i spotkania, aby pracownicy mogli być aktualizowani o najnowsze informacje.
Projektowanie graficznego interfejsu użytkownika na komputerze z systemem Windows jest łatwe, więc zaprojektujmy interfejs graficzny cyfrowej tablicy ogłoszeń na komputerze z systemem Windows i skopiuj kod do Raspberry Pi.
Wymagane oprogramowanie:
Anaconda (w tym Python 2.7, pakiet Qt Designer i Spyder IDE).
Qt Designer to narzędzie używane do projektowania GUI. Wynikiem Qt Designera będzie plik.ui, który później można przekonwertować na.py w celu dalszego przetwarzania.
Co się dzieje w filmie?:
- Pobierz Anaconda Windows Installer dla Pythona 2.7 i zainstaluj go na komputerze z systemem Windows (normalny proces instalacji).
- Po instalacji narzędzie Qt Designer można znaleźć w katalogu „katalog_instalacyjny\Library\bin\designer.exe” (u mnie jest to „C:\Anaconda2\Library\bin\designer.exe”)
- Utwórz skrót do "designer.exe" i umieść go na pulpicie.
- otwórz "designer.exe".
- Utwórz nowe okno główne.
- Wybierz i umieść układy i wymagane widoki (widok tekstu, widok etykiety itp.).
- Zapisz jako plik Rpi_UI.ui.
- Aby przekonwertować go na plik.py, otwórz wiersz polecenia cmd w bieżącym folderze, w którym znajduje się plik Rpi_UI.ui i wpisz następujące polecenie
katalog_instalacyjny\Biblioteka\bin\pyuic5.bat -x RPi_UI.ui -o RPi_UI.py
dla mnie to jest, C:\Anaconda2\Biblioteka\bin\pyuic5.bat -x RPi_UI.ui -o RPi_UI.py
to polecenie przekonwertuje plik Rpi_UI.ui na plik Rpi_UI.py i umieści go w tym samym katalogu.
- Otwórz plik Rpi_UI.py za pomocą Spyder IDE, który jest zawarty w Anacondzie.
- Uruchomienie skryptu spowoduje wyświetlenie zaprojektowanego wcześniej GUI.
Następnie załóżmy konto CloudMQTT.
Krok 4: Skonfiguruj konto CloudMQTT:
- Odwiedź ten link.
- Utwórz konto z e-mailem i zaloguj się na swoje konto.
- Utwórz nową instancję (nazwałem ją TEST_1).
- Otwórz informacje o instancji.
- Zanotuj serwer, użytkownika, hasło i port.
- Zapoznaj się z dokumentacją CloudMQTT Python i zapisz skrypt jako CloudMQTT.py.
- Przykładowy kod w dokumentacji wymaga biblioteki paho, Zainstaluj klienta Paho Python za pomocą narzędzia pip, otwórz wiersz polecenia cmd jako administrator i wprowadź następujące polecenie.
pip zainstaluj paho-mqtt
Krok 5: Wyjaśnienie końcowego kodu Raspberry Pi:
Tutaj wyjaśnię, w jaki sposób połączyłem plik RPi_UI.py z CloudMQTT.py i zapisałem go jako RPi_UI.py.
Importuj biblioteki, jeśli nie są zainstalowane, po prostu je zainstaluj
import paho.mqtt.client jako mqtt
importuj urlparse z PyQt5 importuj QtGui, QtWidgets, QtCore z PyQt5. QtCore importuj QTimer, QTime z wątków importuj wątki importuj sys import re z google_drive_downloader import GoogleDriveDownloader jako gdd importuj system operacyjny
Aby zainstalować googledrivedownloader, użyj polecenia
pip zainstaluj googledrivedownloader
Inicjowanie zmiennych,
ikona = "[email protected]"
contestImg = "czarny" meeting1 = "Spotkanie1:" miejsce1 = "Czas i miejsce1." meeting2 = "Spotkanie2:" miejsce2 = "Czas i miejsce2." meeting3 = "Spotkanie3:" miejsce3 = "Czas i miejsce3."
Następnie klasa Ui_MainWindow
klasa Ui_MainWindow(obiekt):
def setupUi(self, MainWindow): … def retranslateUi(self, MainWindow): … def _update(self): …
Poniższe wiersze w funkcji setupUi aktualizują GUI co 3 sekundy, wywołując funkcję _update
self.retranslateUi(Okno główne)
QtCore. QMetaObject.connectSlotsByName(MainWindow) self.timer = QTimer() self.timer.timeout.connect(self._update) self.timer.start(3000)
Funkcja on_message czeka na wiadomość od brokera, po odebraniu wiadomości pobiera obraz z dysku google przy użyciu identyfikatora łącza udostępnianego dysku google, a także zmienia wartości zmiennych globalnych
def on_message(klient, obj, wiadomość):
print(str(msg.payload)) if(str(msg.payload)): noticeReceived = str(msg.payload) result = re.search('%1(.*)%2(.*)%3(. *)%4(.*)%5(.*)%6(.*)%7(.*)%8', zawiadomienie Otrzymano) globalny konkursImg globalne spotkanie1 globalne miejsce1 globalne spotkanie2 globalne miejsce2 globalne spotkanie3 globalne miejsce3 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= ścieżka) Img konkursu = wynik.grupa(1) spotkanie1 = wynik.grupa(2) miejsce1 = wynik.grupa(3) spotkanie2 = wynik.grupa(4) miejsce2 = wynik.grupa(5) spotkanie3 = wynik.grupa(6) miejsce3 = wynik.grupa(7)
Kod składa się z 2 nieskończonych pętli,
rc = mqttc.pętla()
oraz
sys.exit(app.exec_())
Aby uruchomić te pętle jednocześnie, użyłem koncepcji 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()
Fajnie, zakończyliśmy konfigurację Raspberry Pi, a następnie zaprojektujmy GUI dla komputera z systemem Windows, aby opublikować wiadomość do Raspberry Pi.
Krok 6: GUI komputera z systemem Windows:
- Zaprojektuj GUI dla systemu Windows i zapisz go jako Windows_UI.ui.
- Przekonwertuj go na plik Pythona.
- Połącz go z plikiem CloudMQTT.py i zapisz jako Windows_UI.py.
- Funkcja pliku Windows_UI.py jest podobna do pliku RPi_UI.py, jedyną różnicą jest to, że plik Windows_UI.py publikuje komunikat, podczas gdy RPi_UI.py odbiera komunikat.
Krok 7: Objaśnienie końcowego kodu komputera z systemem Windows:
- Plik Windows_UI.py zawiera wszystkie klasy i funkcje RPi_UI.ui z wyjątkiem kilku.
- Zamiast funkcji on_message ma funkcję on_publish do publikowania wiadomości.
- Poniższy kod w funkcji retranslateUi wywołuje funkcję publikowania po kliknięciu przycisku OPUBLIKUJ.
self.pushButton.clicked.connect(self.publish)
- Funkcja publikowania łączy identyfikator łącza do udostępniania na dysku Google oraz informacje o spotkaniu i publikuje je w temacie „powiadomienie”.
- Ta wiadomość zostanie odebrana przez Raspberry Pi.
Krok 8: Skonfiguruj cyfrową tablicę ogłoszeń:
- Podłącz Raspberry Pi do wyświetlacza HDMI, używałem mojego telewizora Sony jako wyświetlacza cyfrowej tablicy ogłoszeń.
- Uruchom plik RPi_UI.py w Raspberry Pi.
- Uruchom plik Windows_UI.py na komputerze z systemem Windows.
- Wpisz identyfikator linku do Dysku Google obrazu konkursowego i ogłoszenia o spotkaniu.
- Kliknij przycisk OPUBLIKUJ.
- Teraz możesz zobaczyć zaktualizowaną cyfrową tablicę ogłoszeń w ciągu kilku sekund.
Poradnik:
- Możesz utworzyć żądaną liczbę cyfrowych tablic ogłoszeniowych, a tablice można subskrybować do różnych tematów.
- Aby plik Windows_UI.py był przenośny, można go przekonwertować na plik wykonywalny za pomocą pyinstaller, dzięki czemu można uruchomić plik wykonywalny na dowolnym komputerze z systemem Windows bez instalowania wymaganych bibliotek na komputerze.
Dziękuję Ci
SABARI KANNAN M