Daftar Isi:

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

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

Video: Papan Pemberitahuan Digital Menggunakan Raspberry Pi dan Protokol MQTT: 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 Protokol MQTT
Papan Pemberitahuan Digital Menggunakan Raspberry Pi dan Protokol MQTT

Notice Board hampir digunakan di mana-mana, seperti kantor, sekolah, rumah sakit, dan hotel. Mereka dapat digunakan berulang kali untuk menampilkan pemberitahuan penting atau mengiklankan acara atau pertemuan yang akan datang. Tetapi pemberitahuan atau iklan harus dicetak di atas kertas dan ditempelkan di papan pengumuman.

Dalam Instruksi ini, mari belajar membuat Papan Pemberitahuan Digital dengan Raspberry Pi untuk menghemat banyak kertas dan toner!

Langkah 1: Bagaimana Papan Pemberitahuan Digital Bekerja?

Bagaimana Papan Pemberitahuan Digital Bekerja?
Bagaimana Papan Pemberitahuan Digital Bekerja?
  • Raspberry Pi terhubung ke Layar HDMI yang merupakan Papan Pemberitahuan Digital kami.
  • PC Windows digunakan untuk Mempublikasikan pemberitahuan di Digital Notice Board melalui internet.
  • Pemberitahuan yang diterbitkan oleh PC Windows diterima oleh Digital Notice Board melalui broker CloudMQTT.
  • Komunikasi antara PC Windows dan Digital Notice Board dicapai dengan protokol MQTT.

Langkah 2: Hal yang Diperlukan:

  1. Raspberry Pi dengan Rasbian OS
  2. Tampilan dengan port HDMI
  3. PC Windows
  4. Koneksi internet
  5. akun CloudMQTT

Langkah 3: Desain GUI untuk Menampilkan Pemberitahuan:

Image
Image
Desain GUI untuk Menampilkan Pemberitahuan
Desain GUI untuk Menampilkan Pemberitahuan

Kita harus mendesain 2 GUI, satu untuk Raspberry Pi untuk menampilkan pemberitahuan di HDMI Display dan satu lagi untuk PC Windows untuk mempublikasikan pemberitahuan ke Raspberry Pi melalui broker CloudMQTT.

Desain GUI tergantung pada tempat Anda akan menempatkan Papan Pemberitahuan Digital. Sebagai contoh, izinkan saya mendesain GUI untuk Instructables Office untuk menampilkan acara dan rapat yang akan datang sehingga karyawan dapat diperbarui dengan informasi terbaru.

Sangat mudah untuk mendesain GUI di PC Windows, jadi mari kita desain GUI Digital Notice Board di PC Windows dan salin kodenya ke Raspberry Pi.

Perangkat lunak yang diperlukan:

Anaconda (termasuk python 2.7, paket Qt Designer dan Spyder IDE).

Qt Designer adalah alat yang digunakan untuk mendesain GUI. Keluaran dari Qt Designer akan berupa file.ui, selanjutnya dapat diubah menjadi.py untuk proses selanjutnya.

Apa yang terjadi di video?:

  • Unduh Anaconda Windows Installer untuk python 2.7 dan instal di PC Windows (proses instalasi normal).
  • Setelah instalasi, Anda dapat menemukan alat Qt Designer di "installation_directory\Library\bin\designer.exe" (bagi saya ini adalah "C:\Anaconda2\Library\bin\designer.exe")
  • Buat pintasan untuk "designer.exe" dan letakkan di desktop.
  • buka "designer.exe".
  • Buat Jendela Utama baru.
  • Pilih dan tempatkan tata letak dan tampilan yang diperlukan (tampilan teks, tampilan label, dll).
  • Simpan sebagai file Rpi_UI.ui.
  • Untuk mengubahnya menjadi file.py buka cmd prompt di folder saat ini di mana file Rpi_UI.ui ada dan ketik perintah berikut

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

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

perintah ini akan mengonversi file Rpi_UI.ui menjadi file Rpi_UI.py dan menempatkannya di direktori yang sama.

  • Buka file Rpi_UI.py dengan Spyder IDE yang disertakan di Anaconda.
  • Menjalankan skrip akan menampilkan GUI yang kami desain sebelumnya.

Selanjutnya, mari kita siapkan akun CloudMQTT.

Langkah 4: Siapkan Akun CloudMQTT:

Image
Image
  • Kunjungi tautan ini.
  • Buat akun dengan E-mail dan masuk ke akun Anda.
  • Buat instance baru (saya menamakannya sebagai TEST_1).
  • Buka info Instans.
  • Catat Server, User, Password, dan Port.
  • Lihat Dokumentasi Python CloudMQTT dan simpan skrip sebagai CloudMQTT.py.
  • Contoh kode dalam dokumentasi memerlukan pustaka paho, Instal Klien Python Paho menggunakan alat pip, buka cmd prompt sebagai administrator dan masukkan perintah berikut.

instal pip paho-mqtt

Langkah 5: Kode Akhir Raspberry Pi Dijelaskan:

Di sini, izinkan saya menjelaskan cara saya menggabungkan file RPi_UI.py dengan CloudMQTT.py dan menyimpannya sebagai RPi_UI.py.

Import library, jika belum terinstall tinggal install saja

impor paho.mqtt.client sebagai mqtt

impor urlparse dari PyQt5 impor QtGui, QtWidgets, QtCore dari PyQt5. QtCore impor QTimer, QTime dari threading impor Utas impor sys impor ulang dari google_drive_downloader impor GoogleDriveDownloader sebagai gdd impor os

Untuk menginstal googledrivedownloader, gunakan perintah

pip install googledrivedownloader

Inisialisasi variabel,

icon = "[email protected]"

contestImg = "hitam" meeting1 = "Rapat1:" venue1 = "Waktu dan tempat1." meeting2 = "Rapat2:" venue2 = "Waktu dan tempat2." meeting3 = "Rapat3:" venue3 = "Waktu dan tempat3."

Diikuti oleh kelas Ui_MainWindow

kelas Ui_MainWindow(objek):

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

Baris berikut dalam fungsi setupUi memperbarui GUI setiap 3 detik 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 pesan dari broker, setelah pesan diterima, ia mengunduh gambar dari google drive menggunakan ID tautan yang dapat dibagikan google drive dan juga mengubah nilai variabel global

def on_message(klien, obj, pesan):

print(str(msg.payload)) if(str(msg.payload)): noticeReceived = str(msg.payload) result = re.search('%1(.*)%2(.*)%3(. *)%4(.*)%5(.*)%6(.*)%7(.*)%8', noticeReceived) kontes 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= path) contestImg = result.group(1) meeting1 = result.group(2) venue1 = result.group(3) meeting2 = result.group(4) venue2 = result.group(5) meeting3 = result.group(6) tempat3 = hasil.grup(7)

Kode ini terdiri dari 2 infinite loop,

rc = mqttc.loop()

dan

sys.exit(app.exec_())

Untuk menjalankan loop ini secara bersamaan, 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))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()

Keren, kita telah menyelesaikan pengaturan Raspberry Pi, selanjutnya mari kita desain GUI untuk PC Windows untuk mempublikasikan pesan ke Raspberry Pi.

Langkah 6: GUI Windows PC:

GUI PC Windows
GUI PC Windows
  • Rancang GUI untuk windows dan simpan sebagai Windows_UI.ui.
  • Ubah menjadi file python.
  • Gabungkan dengan file CloudMQTT.py dan simpan sebagai Windows_UI.py.
  • Fungsi file Windows_UI.py mirip dengan file RPi_UI.py, yang membedakan hanya file Windows_UI.py yang mempublikasikan pesan sedangkan RPi_UI.py menerima pesan.

Langkah 7: Kode Akhir PC Windows Dijelaskan:

  • File Windows_UI.py memiliki semua kelas dan fungsi RPi_UI.ui kecuali beberapa.
  • Alih-alih fungsi on_message, ia memiliki fungsi on_publish untuk menerbitkan pesan.
  • Kode berikut dalam fungsi retranslateUi memanggil fungsi publikasikan setelah tombol PUBLISH diklik.

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

  • Fungsi publikasikan menggabungkan ID tautan yang dapat dibagikan google drive dan informasi rapat dan mempublikasikannya di bawah topik "pemberitahuan".
  • Pesan ini akan diterima oleh Raspberry Pi.

Langkah 8: Siapkan Papan Pemberitahuan Digital:

  • Hubungkan Raspberry Pi ke layar HDMI, saya telah menggunakan TV Sony saya sebagai Tampilan Papan Pemberitahuan Digital.
  • Jalankan file RPi_UI.py di Raspberry Pi.
  • Jalankan file Windows_UI.py di PC Windows.
  • Masukkan ID tautan Google drive dari gambar kontes dan pengumuman rapat.
  • Klik tombol PUBLIKASIKAN.
  • Sekarang Anda dapat melihat Papan Pemberitahuan Digital yang diperbarui dalam beberapa detik.

Petunjuk:

  • Anda dapat membuat jumlah Papan Pemberitahuan Digital yang diinginkan dan Papan dapat dilanggan ke Topik yang berbeda.
  • Untuk membuat file Windows_UI.py portabel, Anda dapat mengonversi file menjadi file yang dapat dieksekusi menggunakan pyinstaller, sehingga Anda dapat menjalankan file yang dapat dieksekusi di PC Windows mana pun tanpa menginstal pustaka yang diperlukan di PC.

Terima kasih

SABARI KANNAN M

Direkomendasikan: