Isi kandungan:

Papan Pemberitahuan Digital Menggunakan Raspberry Pi dan MQTT Protocol: 8 Langkah
Papan Pemberitahuan Digital Menggunakan Raspberry Pi dan MQTT Protocol: 8 Langkah

Video: Papan Pemberitahuan Digital Menggunakan Raspberry Pi dan MQTT Protocol: 8 Langkah

Video: Papan Pemberitahuan Digital Menggunakan Raspberry Pi dan MQTT Protocol: 8 Langkah
Video: Google Assistant Controlled Multiple Appliances | Monitor Sensor's data | IoT Projects | ESP8266 12e 2024, November
Anonim
Image
Image
Papan Pemberitahuan Digital Menggunakan Raspberry Pi dan MQTT Protocol
Papan Pemberitahuan Digital Menggunakan Raspberry Pi dan MQTT Protocol

Papan Pemberitahuan hampir digunakan di mana-mana, seperti pejabat, sekolah, hospital, dan hotel. Mereka dapat digunakan berulang kali untuk menampilkan pemberitahuan penting atau mengiklankan acara atau perjumpaan yang akan datang. Tetapi notis atau iklan mesti dicetak di atas kertas dan disematkan di papan kenyataan.

Dalam Instructable ini mari belajar membina Papan Notis Digital kami dengan Raspberry Pi untuk menjimatkan banyak kertas dan toner!

Langkah 1: Bagaimana Papan Pemberitahuan Digital Berfungsi?

Bagaimana Papan Notis Digital Berfungsi?
Bagaimana Papan Notis Digital Berfungsi?
  • Raspberry Pi yang disambungkan ke Paparan HDMI yang merupakan Papan Pemberitahuan Digital kami.
  • PC Windows digunakan untuk Menerbitkan notis di Papan Pemberitahuan Digital melalui internet.
  • Notis yang diterbitkan oleh PC Windows diterima oleh Lembaga Pemberitahuan Digital melalui broker CloudMQTT.
  • Komunikasi antara Windows PC dan Digital Notice Board dicapai dengan protokol MQTT.

Langkah 2: Perkara yang Diperlukan:

  1. Raspberry Pi dengan Rasbian OS
  2. Paparkan dengan port HDMI
  3. PC Windows
  4. Sambungan internet
  5. Akaun CloudMQTT

Langkah 3: Reka Bentuk GUI untuk Memaparkan Pemberitahuan:

Image
Image
Reka Bentuk GUI untuk Memaparkan Pemberitahuan
Reka Bentuk GUI untuk Memaparkan Pemberitahuan

Kita harus merancang 2 GUI, satu untuk Raspberry Pi untuk menampilkan notis pada Paparan HDMI dan satu lagi untuk PC Windows untuk menerbitkan notis itu kepada Raspberry Pi melalui broker CloudMQTT.

Reka bentuk GUI bergantung pada tempat di mana anda akan meletakkan Papan Notis Digital. Sebagai contoh, izinkan saya merancang GUI untuk Instructables Office untuk memaparkan acara dan perjumpaan yang akan datang supaya pekerja dapat dikemas kini dengan maklumat terkini.

Sangat mudah untuk merancang GUI di PC Windows, jadi marilah kita merancang GUI Papan Pemberitahuan Digital di PC Windows dan menyalin kodnya ke Raspberry Pi.

Perisian yang diperlukan:

Anaconda (yang merangkumi python 2.7, pakej Qt Designer dan Spyder IDE).

Qt Designer adalah alat yang digunakan untuk merancang GUI. Keluaran Qt Designer akan menjadi fail.ui, kemudian dapat ditukar menjadi.py untuk proses selanjutnya.

Apa yang berlaku dalam video ?:

  • Muat turun Anaconda Windows Installer untuk python 2.7 dan pasangkannya di PC Windows (proses pemasangan biasa).
  • Selepas pemasangan, anda boleh menemui alat Qt Designer di "install_directory / Library / bin / designer.exe" (bagi saya ia adalah "C: / Anaconda2 / Library / bin / designer.exe")
  • Buat jalan pintas untuk "designer.exe" dan letakkan di desktop.
  • buka "designer.exe".
  • Buat Tetingkap Utama baru.
  • Pilih dan letakkan susun atur dan paparan yang diperlukan (paparan teks, paparan label, dll).
  • Simpan sebagai fail Rpi_UI.ui.
  • Untuk menukarnya menjadi file.py buka cmd prompt di folder saat ini di mana fail Rpi_UI.ui ada dan ketik perintah berikut

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

bagi saya, C: / Anaconda2 / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

perintah ini akan menukar fail Rpi_UI.ui ke file Rpi_UI.py dan meletakkannya di direktori yang sama.

  • Buka fail Rpi_UI.py dengan Spyder IDE yang disertakan dalam Anaconda.
  • Menjalankan skrip akan memaparkan GUI yang kita rancang lebih awal.

Seterusnya, mari kita sediakan akaun CloudMQTT.

Langkah 4: Sediakan Akaun CloudMQTT:

Image
Image
  • Lawati pautan ini.
  • Buat akaun dengan E-mel dan log masuk ke akaun anda.
  • Buat contoh baru (saya menamakannya sebagai TEST_1).
  • Buka maklumat Instance.
  • Perhatikan Pelayan, Pengguna, Kata Laluan, dan Port.
  • Rujuk Dokumentasi CloudMQTT Python dan simpan skrip sebagai CloudMQTT.py.
  • Contoh kod dalam dokumentasi memerlukan paho library, Install Paho Python Client menggunakan alat pip, buka cmd prompt sebagai pentadbir dan masukkan perintah berikut.

memasang pip paho-mqtt

Langkah 5: Kod Akhir Raspberry Pi Dijelaskan:

Di sini, izinkan saya menerangkan cara saya menggabungkan fail RPi_UI.py dengan CloudMQTT.py dan menyimpannya sebagai RPi_UI.py.

Import perpustakaan, jika tidak dipasang, pasang saja

import paho.mqtt.client sebagai mqtt

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

Untuk memasang googledrive downloader, gunakan perintah

memasang pip googledriveownloader

Memulakan pemboleh ubah,

ikon = "[email protected]"

contestImg = "black" meeting1 = "Meeting1:" venue1 = "Masa dan tempat1." meeting2 = "Meeting2:" venue2 = "Masa dan tempat2." meeting3 = "Meeting3:" venue3 = "Masa dan tempat3."

Diikuti oleh kelas Ui_MainWindow

kelas Ui_MainWindow (objek):

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

Garis berikut dalam penyediaan fungsiUi mengemas kini GUI setiap 3 saat dengan memanggil fungsi _update

self.retranslateUi (MainWindow)

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

Fungsi on_message menunggu mesej dari broker, setelah mesej diterima ia memuat turun gambar dari pemacu google menggunakan ID pautan boleh dikongsi pemacu google dan juga mengubah nilai pemboleh ubah global

def on_message (pelanggan, obj, msg):

print (str (msg.payload)) if (str (msg.payload)): notificationReceived = str (msg.payload) hasil = cari semula ('% 1 (. *)% 2 (. *)% 3 (. *)% 4 (. *)% 5 (. *)% 6 (. *)% 7 (. *)% 8 ', notisDiterima) pertandingan globalImg global meeting1 global venue1 global meeting2 global venue2 global meeting3 global venue3 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 = jalan) pertandinganImg = result.group (1) meeting1 = result.group (2) venue1 = result.group (3) meeting2 = result.group (4) venue2 = result.group (5) meeting3 = result.group (6) venue3 = result.group (7)

Kodnya terdiri daripada 2 gelung tanpa had,

rc = mqttc.loop ()

dan

sys.exit (app.exec_ ())

Untuk menjalankan gelung ini secara serentak, saya telah menggunakan konsep Threading

def sqImport (tId): if tId == 0: while 1: rc = 0 while rc == 0: rc = mqttc.loop () print ("rc:" + str (rc)) jika tId == 1: sementara 1: app = QtWidgets. QApplication (sys.argv) MainWindow = QtWidgets. QMainWindow () ui = Ui_MainWindow () ui.setupUi (MainWindow) MainWindow.show () sys.exit (app.exec_ ()) threadA = Thread (sasaran = sqImport, args = [0]) threadB = Thread (target = sqImport, args = [1]) threadA.start () threadB.start () threadA.join () threadB.join ()

Hebatnya, kami telah menyelesaikan penyediaan Raspberry Pi, selanjutnya mari kita merancang GUI untuk Windows PC untuk menerbitkan mesej ke Raspberry Pi.

Langkah 6: GUI PC Windows:

GUI PC Windows
GUI PC Windows
  • Reka GUI untuk windows dan simpan sebagai Windows_UI.ui.
  • Tukarkannya menjadi fail python.
  • Gabungkannya dengan fail CloudMQTT.py dan simpan sebagai Windows_UI.py.
  • Fungsi fail Windows_UI.py mirip dengan file RPi_UI.py, satu-satunya perbezaan adalah fail Windows_UI.py menerbitkan pesan sedangkan RPi_UI.py menerima pesan.

Langkah 7: Kod Akhir PC Windows Dijelaskan:

  • Fail Windows_UI.py mempunyai semua kelas dan fungsi RPi_UI.ui kecuali beberapa.
  • Daripada fungsi on_message, ia mempunyai fungsi on_publish untuk menerbitkan mesej.
  • Kod berikut dalam fungsi retranslateUi memanggil fungsi penerbitan setelah butang PUBLISH diklik.

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

  • Fungsi penerbitan menggabungkan ID pautan boleh dikongsi google drive dan maklumat mesyuarat dan menerbitkannya di bawah topik "notis".
  • Mesej ini akan diterima oleh Raspberry Pi.

Langkah 8: Sediakan Papan Notis Digital:

  • Sambungkan Raspberry Pi ke paparan HDMI, saya telah menggunakan TV Sony saya sebagai Paparan Papan Notis Digital.
  • Jalankan fail RPi_UI.py di Raspberry Pi.
  • Jalankan fail Windows_UI.py di Windows PC.
  • Masukkan ID pautan pemacu Google untuk gambar pertandingan dan pengumuman mesyuarat.
  • Klik butang PUBLISH.
  • Sekarang anda dapat melihat Papan Pemberitahuan Digital yang dikemas kini dalam beberapa saat.

Petunjuk:

  • Anda dapat membuat bilangan Papan Pemberitahuan Digital yang diinginkan dan Papan dapat dilanggan ke Topik yang berbeza.
  • Untuk menjadikan fail Windows_UI.py mudah alih, anda dapat menukar fail tersebut menjadi file yang dapat dieksekusi menggunakan pyinstaller, sehingga anda dapat menjalankan file yang dapat dieksekusi di mana-mana PC Windows tanpa memasang perpustakaan yang diperlukan di PC.

Terima kasih

SABARI KANNAN M

Disyorkan: