Spisu treści:

Cyfrowa tablica ogłoszeń wykorzystująca Raspberry Pi i protokół MQTT: 8 kroków
Cyfrowa tablica ogłoszeń wykorzystująca Raspberry Pi i protokół MQTT: 8 kroków

Wideo: Cyfrowa tablica ogłoszeń wykorzystująca Raspberry Pi i protokół MQTT: 8 kroków

Wideo: Cyfrowa tablica ogłoszeń wykorzystująca Raspberry Pi i protokół MQTT: 8 kroków
Wideo: Tworzenie rozwiązań IoT w Microsoft Azure 2024, Listopad
Anonim
Image
Image
Cyfrowa tablica ogłoszeń wykorzystująca Raspberry Pi i protokół MQTT
Cyfrowa tablica ogłoszeń wykorzystująca Raspberry Pi i protokół MQTT

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ń?

Jak działa cyfrowa tablica ogłoszeń?
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:

  1. Raspberry Pi z Rasbian OS
  2. Wyświetlacz z portem HDMI
  3. Komputer z systemem Windows
  4. Połączenie internetowe
  5. Konto CloudMQTT

Krok 3: Projekt GUI do wyświetlania powiadomień:

Image
Image
Projekt GUI do wyświetlania powiadomień
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:

Image
Image
  • 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:

GUI komputera z systemem Windows
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

Zalecana: