Mục lục:

Bảng thông báo kỹ thuật số sử dụng giao thức Raspberry Pi và MQTT: 8 bước
Bảng thông báo kỹ thuật số sử dụng giao thức Raspberry Pi và MQTT: 8 bước

Video: Bảng thông báo kỹ thuật số sử dụng giao thức Raspberry Pi và MQTT: 8 bước

Video: Bảng thông báo kỹ thuật số sử dụng giao thức Raspberry Pi và MQTT: 8 bước
Video: MQTT - CÀI ĐẶT SERVER MQTT TRÊN RASPBERRY (MQTT - P1) 2024, Tháng mười một
Anonim
Image
Image
Bảng thông báo kỹ thuật số sử dụng giao thức Raspberry Pi và MQTT
Bảng thông báo kỹ thuật số sử dụng giao thức Raspberry Pi và MQTT

Bảng thông báo hầu như được sử dụng ở mọi nơi, chẳng hạn như văn phòng, trường học, bệnh viện và khách sạn. Chúng có thể được sử dụng nhiều lần để hiển thị các thông báo quan trọng hoặc quảng cáo các sự kiện hoặc cuộc họp sắp tới. Nhưng thông báo hoặc quảng cáo phải được in trên giấy và ghim trên bảng thông báo.

Trong phần Có thể hướng dẫn này, hãy cùng tìm hiểu cách xây dựng Bảng thông báo kỹ thuật số của chúng tôi với Raspberry Pi để tiết kiệm nhiều giấy tờ và mực in!

Bước 1: Bảng thông báo kỹ thuật số hoạt động như thế nào?

Bảng thông báo kỹ thuật số hoạt động như thế nào?
Bảng thông báo kỹ thuật số hoạt động như thế nào?
  • Raspberry Pi được kết nối với Màn hình HDMI là Bảng thông báo kỹ thuật số của chúng tôi.
  • Máy tính Windows được sử dụng để xuất bản thông báo trên Bảng thông báo kỹ thuật số thông qua internet.
  • Thông báo do Windows PC xuất bản sẽ được Bảng thông báo kỹ thuật số nhận được thông qua nhà môi giới CloudMQTT.
  • Giao tiếp giữa PC Windows và Bảng thông báo kỹ thuật số được thực hiện bằng giao thức MQTT.

Bước 2: Những điều cần thiết:

  1. Raspberry Pi với Hệ điều hành Rasbian
  2. Hiển thị với cổng HDMI
  3. Windows PC
  4. Kết nối Internet
  5. Tài khoản CloudMQTT

Bước 3: Thiết kế GUI để hiển thị thông báo:

Image
Image
Thiết kế GUI để hiển thị thông báo
Thiết kế GUI để hiển thị thông báo

Chúng tôi phải thiết kế 2 GUI, một cho Raspberry Pi để hiển thị thông báo trên Màn hình HDMI và một cho Windows PC để xuất bản thông báo lên Raspberry Pi thông qua nhà môi giới CloudMQTT.

Thiết kế GUI phụ thuộc vào nơi bạn sắp đặt Bảng thông báo kỹ thuật số. Ví dụ: hãy để tôi thiết kế GUI cho Văn phòng hướng dẫn để hiển thị các sự kiện và cuộc họp sắp tới để các nhân viên có thể được cập nhật thông tin mới nhất.

Thật dễ dàng để thiết kế GUI trong PC chạy Windows, vì vậy hãy để chúng tôi thiết kế GUI Bảng thông báo kỹ thuật số trong PC Windows và sao chép mã vào Raspberry Pi.

Phần mềm yêu cầu:

Anaconda (bao gồm python 2.7, gói Qt Designer và Spyder IDE).

Qt Designer là công cụ được sử dụng để thiết kế GUI. Đầu ra của Qt Designer sẽ là tệp.ui, sau này nó có thể được chuyển đổi thành.py để xử lý tiếp.

Điều gì đang xảy ra trong video ?:

  • Tải xuống Anaconda Windows Installer cho python 2.7 và cài đặt nó trong PC Windows (quá trình cài đặt bình thường).
  • Sau khi cài đặt, bạn có thể tìm thấy công cụ Qt Designer trong "install_directory / Library / bin / Designer.exe" (đối với tôi đó là "C: / Anaconda2 / Library / bin / Designer.exe")
  • Tạo một lối tắt cho "Designer.exe" và đặt nó trên màn hình nền.
  • mở "Designer.exe".
  • Tạo một cửa sổ chính mới.
  • Chọn và đặt các bố cục và các chế độ xem cần thiết (chế độ xem văn bản, chế độ xem nhãn, v.v.).
  • Lưu dưới dạng tệp Rpi_UI.ui.
  • Để chuyển đổi nó thành tệp.py, hãy mở dấu nhắc cmd trong thư mục hiện tại nơi tệp Rpi_UI.ui tồn tại và gõ lệnh sau

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

Đối với tôi nó là, C: / Anaconda2 / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

lệnh này sẽ chuyển đổi tệp Rpi_UI.ui thành tệp Rpi_UI.py và đặt nó trong cùng một thư mục.

  • Mở tệp Rpi_UI.py bằng Spyder IDE được bao gồm trong Anaconda.
  • Chạy script sẽ hiển thị GUI mà chúng tôi đã thiết kế trước đó.

Tiếp theo, chúng ta hãy thiết lập tài khoản CloudMQTT.

Bước 4: Thiết lập tài khoản CloudMQTT:

Image
Image
  • Truy cập liên kết này.
  • Tạo một tài khoản với E-mail và đăng nhập vào tài khoản của bạn.
  • Tạo phiên bản mới (tôi đặt tên là TEST_1).
  • Mở thông tin Phiên bản.
  • Ghi lại Máy chủ, Người dùng, Mật khẩu và Cổng.
  • Tham khảo Tài liệu Python của CloudMQTT và lưu tập lệnh dưới dạng CloudMQTT.py.
  • Mã ví dụ trong tài liệu yêu cầu thư viện paho, Cài đặt Paho Python Client bằng công cụ pip, mở dấu nhắc cmd với tư cách quản trị viên và nhập lệnh sau.

pip cài đặt paho-mqtt

Bước 5: Giải thích mã cuối cùng của Raspberry Pi:

Sau đây, hãy để tôi giải thích cách tôi kết hợp tệp RPi_UI.py với CloudMQTT.py và lưu nó dưới dạng RPi_UI.py.

Nhập thư viện, nếu nó chưa được cài đặt, chỉ cần cài đặt nó

nhập paho.mqtt.client dưới dạng mqtt

nhập urlparse từ PyQt5 nhập QtGui, QtWidgets, QtCore từ PyQt5. QtCore nhập QTimer, QTime từ nhập phân luồng Hệ thống nhập chuỗi nhập lại từ google_drive_downloader nhập GoogleDriveDownloader dưới dạng hệ điều hành nhập gdd

Để cài đặt googledrivedownloader, hãy sử dụng lệnh

pip cài đặt googledrivedownloader

Khởi tạo các biến,

icon = "[email protected]"

ContestImg = "black" meeting1 = "Meeting1:" venue1 = "Thời gian và địa điểm1." meeting2 = "Meeting2:" venue2 = "Thời gian và địa điểm2." meeting3 = "Meeting3:" venue3 = "Thời gian và địa điểm3."

Tiếp theo là lớp Ui_MainWindow

lớp Ui_MainWindow (đối tượng):

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

Các dòng sau trong thiết lập chức năng Tôi cập nhật GUI cứ 3 giây một lần bằng cách gọi hàm _update

self.retranslateUi (MainWindow)

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

Hàm on_message đợi thông báo từ nhà môi giới, sau khi nhận được thông báo, nó sẽ tải hình ảnh từ google drive xuống bằng cách sử dụng ID liên kết có thể chia sẻ của google drive và cũng thay đổi giá trị của các biến toàn cục

def on_message (client, obj, msg):

print (str (msg.payload)) if (str (msg.payload)): notificationReceive = str (msg.payload) result = re.search ('% 1 (. *)% 2 (. *)% 3 (. *)% 4 (. *)% 5 (. *)% 6 (. *)% 7 (. *)% 8 ', thông báoNhận xét) cuộc thi toàn cầuImg cuộc họp toàn cầu1 địa điểm toàn cầu1 cuộc họp toàn cầu2 địa điểm toàn cầu2 cuộc họp toàn cầu3 địa điểm toàn cầu3 fileId = "" + result.group (1) + "" path = "/ home / pi / Desktop / Guiductables / RPi UI / ContestImages /" + result.group (1) + ". jpg" gdd.download_file_from_google_drive (file_id = fileId, dest_path = path) thiImg = result.group (1) meeting1 = result.group (2) venue1 = result.group (3) meeting2 = result.group (4) venue2 = result.group (5) meeting3 = result.group (6) Location3 = result.group (7)

Mã bao gồm 2 vòng lặp vô hạn,

rc = mqttc.loop ()

sys.exit (app.exec_ ())

Để chạy đồng thời các vòng lặp này, tôi đã sử dụng khái niệm Luồng

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 ()

Tuyệt vời, chúng tôi đã hoàn thành thiết lập Raspberry Pi, tiếp theo hãy thiết kế GUI cho Windows PC để xuất bản thông báo tới Raspberry Pi.

Bước 6: Windows PC GUI:

Windows PC GUI
Windows PC GUI
  • Thiết kế GUI cho các cửa sổ và lưu nó dưới dạng Windows_UI.ui.
  • Chuyển đổi nó thành một tệp python.
  • Kết hợp nó với tệp CloudMQTT.py và lưu nó dưới dạng Windows_UI.py.
  • Chức năng của tệp Windows_UI.py tương tự như tệp RPi_UI.py, điểm khác biệt duy nhất là tệp Windows_UI.py xuất bản thông báo trong khi RPi_UI.py nhận thông báo.

Bước 7: Giải thích mã cuối cùng của Windows PC:

  • Tệp Windows_UI.py có tất cả các lớp và chức năng của RPi_UI.ui ngoại trừ một số ít.
  • Thay vì hàm on_message, nó có một hàm on_publish để xuất bản tin nhắn.
  • Đoạn mã sau trong hàm retranslateUi gọi hàm xuất bản sau khi bấm vào nút PUBLISH.

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

  • Chức năng xuất bản kết hợp ID liên kết có thể chia sẻ của google drive và thông tin cuộc họp và xuất bản nó theo chủ đề "thông báo".
  • Raspberry Pi sẽ nhận được thông báo này.

Bước 8: Thiết lập Bảng thông báo kỹ thuật số:

  • Kết nối Raspberry Pi với màn hình HDMI, tôi đã sử dụng TV Sony của mình làm Màn hình bảng thông báo kỹ thuật số.
  • Chạy tệp RPi_UI.py trong Raspberry Pi.
  • Chạy tệp Windows_UI.py trong PC Windows.
  • Nhập ID liên kết Google drive của hình ảnh cuộc thi và thông báo cuộc họp.
  • Nhấp vào nút XUẤT BẢN.
  • Bây giờ bạn có thể thấy Bảng thông báo kỹ thuật số được cập nhật trong vòng vài giây.

Gợi ý:

  • Bạn có thể tạo số lượng Bảng thông báo kỹ thuật số mong muốn và các Bảng có thể được đăng ký cho các Chủ đề khác nhau.
  • Để làm cho tệp Windows_UI.py có thể di động, bạn có thể chuyển đổi tệp thành tệp thực thi bằng pyinstaller, để bạn có thể chạy tệp thực thi trong bất kỳ PC Windows nào mà không cần cài đặt các thư viện bắt buộc trong PC.

Cảm ơn bạn

SABARI KANNAN M

Đề xuất: