Mục lục:
Video: Bảng tin LED IoT RPi: 3 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Trong Có thể hướng dẫn này, tôi đã tạo một bảng thông báo LED được kết nối wifi bằng Raspberry Pi (RPi). Người dùng sẽ kết nối với máy chủ web của Raspberry Pi bằng trình duyệt của họ để gửi các tin nhắn ngắn sẽ hiển thị trên màn hình LED 8x8. Vì giao tiếp ma trận LED 8x8 với trình điều khiển MAX7219 bằng Python đã được những người khác trên Internet ghi lại đầy đủ tài liệu, nên dự án này tập trung vào việc xây dựng giao diện máy chủ web và sử dụng ZeroMQ Messaging để quản lý các tin nhắn đến.
Cập nhật: Đây là một dự án tiếp theo Bảng vẽ ma trận LED IoT Decimal / Hexadecimal 8x8
(Tôi là người điều hành câu lạc bộ cho Girls Who Code Club và tôi đã đưa ra dự án đơn giản này để dạy sinh viên về thiết kế giao diện web và nhắn tin.)
Bước 1: Thiết lập phần cứng
Dự án này yêu cầu phần cứng sau:
- Raspberry Pi
- Nguồn điện USB chẳng hạn như Anker với cáp USB to MicroUSB ngắn
- Mô-đun ma trận điểm MAX7219 với cáp ruy-băng (Aliexpress với giá dưới 2 đô la)
- Bao vây (tôi làm một cái từ hộp các tông và phun sơn màu đen)
Thiết lập phần cứng là một phần dễ dàng. Chỉ cần kết nối cáp ruy-băng 5 dây từ ma trận LED đến RPi trên mỗi tài liệu thư viện MAX7219.
LED-> RPi ======== VCC-> Pin GPIO # 2 (5v) GND-> Pin GPIO # 6 (GND) DIN-> Pin GPIO # 19CS -> Pin GPIO # 24CLK-> Pin GPIO # 23
Tôi đã sử dụng băng dính xốp hai mặt để dán đèn LED vào vỏ RPi. Sau đó, tôi tạo một vỏ bọc từ một hộp các tông để chứa cả RPi và pin.
Bước 2: Thiết lập phần mềm
RPi phải có phần mềm sau:
- Python 3
- Máy chủ web Apache 2
- Trình điều khiển Max7219 cho Python
- Nhắn tin ZeroMQ
Python 3
RPi phải được cài đặt sẵn Python 3. Mặc dù mã của tôi được viết cho Python 3, nhưng Python 2 sẽ hoạt động với một số thay đổi nhỏ.
Apache 2
Thiết lập Apache và kích hoạt tập lệnh Python CGI. Dưới đây là một số tài nguyên tuyệt vời để thiết lập Apache trên RPi nên tôi sẽ không nhắc lại ở đây. Chỉ cần làm theo hướng dẫn bên dưới để thiết lập Apache và CGI. Đảm bảo rằng các tập lệnh *.py có thể thực thi được từ trình duyệt.
- https://raspberrywebserver.com/cgiscripting/
- https://www.knight-of-pi.org/apache-web-server-with-cgi-for-python/
Trình điều khiển Max7291
Cài đặt trình điều khiển Max7219 bằng cách làm theo hướng dẫn cài đặt mới nhất:
https://max7219.readthedocs.io/en/latest/install.html
Sau khi cài đặt, hãy chạy mã ví dụ, matrix_test.py, cho mỗi hướng dẫn cài đặt để hiển thị "Hello World" trên Ma trận LED. Điều này phải hoạt động trước khi chuyển sang bước tiếp theo.
Nhắn tin ZeroMQ
Tại sao chúng ta cần Nhắn tin? Hãy thử chạy mã ví dụ trên, matrix_test.py, trên hai màn hình đầu cuối đồng thời. Hệ thống sẽ cho phép nhiều mã chạy đồng thời nhưng bạn sẽ thấy các thông báo bị chồng chéo, điều không mong muốn. Trong môi trường người dùng đơn lẻ, đây có thể không phải là vấn đề vì bạn có thể đảm bảo rằng chỉ một chương trình có thể chạy tại một thời điểm. Trong môi trường nhiều người dùng như web, hệ thống phải tạo hàng đợi FIFO (First-In-First-Out) để đảm bảo chỉ một người có thể thực thi mã trong khi những người khác chờ đợi. Mặc dù có thể có các giải pháp khác để đạt được điều này, nhưng tôi quyết định sử dụng ZeroMQ để quản lý hàng đợi FIFO. Mã máy chủ ZeroMQ chứa lệnh gọi chức năng thực tế để hiển thị lần lượt một thông báo trên ma trận LED trong khi máy chủ web hoạt động như một máy khách ZeroMQ để hỏi và gửi thông báo đến máy chủ ZeroMQ. Bằng cách này, trong khi nhiều người dùng có thể gửi thông báo qua một trang web đồng thời, máy chủ ZeroMQ sẽ chỉ hiển thị một thông báo tại một thời điểm.
Đối với dự án này, chúng tôi sẽ chỉ cài đặt gói Python pyzmq chứ không phải toàn bộ gói ZeroMQ.
chạy:
sudo pip3 cài đặt pyzmq
Đọc hướng dẫn ZeroMQ trên https://zguide.zeromq.org và thử ví dụ về máy chủ và ứng dụng khách hello world bằng Python. Sao chép mã ví dụ Python cho cả máy chủ và máy khách sang RPi và đảm bảo chúng hoạt động trước khi chuyển sang bước tiếp theo.
Bước 3: Thiết lập trang web
Trong trang web, tôi đã sử dụng khung bootstrap css / js để làm cho trang trông đẹp mắt. Điều này là hoàn toàn tùy chọn.
Tải xuống tệp led_msg.tar.gz đính kèm vào thư mục gốc hoặc thư mục con của Apache. Để bỏ mở tệp tar của gzip'd, hãy chạy:
tar -xzvf led_msg.tar.gz
Điều này tạo ra các tệp sau:
msg.py (chương trình chính)
template / xen kẽ.html (mẫu html) / send_msg.html (html template) static / img / led_150x150.jpg (jpg được sử dụng trong html template)
Theo tùy chọn, cài đặt khung bootstrap css / js trong thư mục tĩnh.
Nhập URL cho msg.py trình duyệt của bạn và đảm bảo trang web xuất hiện. Chưa gửi tin nhắn !!!
Trước khi có thể gửi thư, máy chủ ZeroMQ phải được khởi động để chấp nhận thư từ máy khách trang web và hiển thị chúng trên ma trận LED. Không có gì sẽ hiển thị trên màn hình nếu máy chủ ZeroMQ không chạy.
Tải xuống mã max7219_server.py đính kèm vào thư mục chính của bạn, không phải trong thư mục gốc của Apache nơi mã này có thể được thực thi bởi người dùng web. Chạy nó dưới dạng root:
sudo python max7219_server.py
Bây giờ máy chủ ZeroMQ đã sẵn sàng để nhận tin nhắn từ trang web. Nhập và gửi một tin nhắn đơn giản từ trang web. Nếu mọi thứ được thiết lập chính xác, bạn sẽ thấy thông báo đó trên màn hình máy chủ ZeroMQ cũng như trên Ma trận LED.
Nếu bạn muốn tắt máy chủ, chỉ cần thực hiện Control-C để thoát khỏi màn hình máy chủ.
Đó là nó. Hy vọng bạn sẽ thích dự án này nhiều như tôi đã làm.
Một cải tiến mà bạn có thể thực hiện là làm cho giao tiếp ZeroMQ giữa máy chủ và máy khách không đồng bộ để trang web không đợi trong khi các thông báo khác đang được hiển thị. Ngoài ra, bạn có thể gắn thêm ma trận LED ở chế độ xếp tầng. Tôi sẽ để điều đó cho bạn.
Đề xuất:
Công tắc ánh sáng điều khiển bằng nháy mắt bằng kính đeo đầu tẩy của Shota Aizawa (Học viện anh hùng của tôi): 8 bước (có hình ảnh)
Công tắc ánh sáng được điều khiển bằng mắt-nháy bằng Kính bảo hộ đầu tẩy của Shota Aizawa (Học viện anh hùng của tôi): Nếu bạn đọc truyện tranh về học viện anh hùng của tôi hoặc xem anime về học viện anh hùng của tôi, bạn phải biết một người vẽ bùa tên là shota aizawa. Shota Aizawa còn được gọi là Thủ lĩnh tẩy, là một Anh hùng chuyên nghiệp và là giáo viên chủ nhiệm của Lớp 1-A của U.A. Shota's Quirk cho anh ta
Máy tạo sương mù bằng đá khô Ultimate - Điều khiển bằng Bluetooth, chạy bằng pin và in 3D.: 22 bước (có hình ảnh)
Máy làm đá khô Ultimate - Điều khiển bằng Bluetooth, chạy bằng pin và in 3D. Gần đây, tôi cần một máy làm đá khô cho một số hiệu ứng sân khấu cho một buổi biểu diễn địa phương. Ngân sách của chúng tôi sẽ không kéo dài đến việc thuê một người chuyên nghiệp nên thay vào đó, đây là những gì tôi đã xây dựng. Nó chủ yếu được in 3D, được điều khiển từ xa qua bluetooth, pin sạc
Diều hâu: Robot điều khiển bằng cử chỉ bằng tay sử dụng giao diện dựa trên xử lý hình ảnh: 13 bước (có hình ảnh)
Gesture Hawk: Robot điều khiển bằng cử chỉ bằng tay sử dụng giao diện dựa trên xử lý hình ảnh: Gesture Hawk đã được giới thiệu trong TechEvince 4.0 như một giao diện người-máy xử lý hình ảnh đơn giản. Tiện ích của nó nằm ở chỗ không cần thiết bị cảm biến hoặc thiết bị đeo bổ sung nào ngoại trừ một chiếc găng tay để điều khiển chiếc xe robot chạy trên
Bảng phấn và ánh sáng tín hiệu Batman Bat: 5 bước (có hình ảnh)
Bảng đen và đèn tín hiệu Batman: Thông thường bạn sẽ không nghĩ đèn người dơi có đầy đủ màu sắc nhưng vì nó cũng là bảng phấn nên có thể có nhiều màu bạn muốn như bạn có thể nhìn thấy từ hình ảnh
Đèn trị liệu bằng ánh sáng LED nhiều màu gắn bằng kính che: 9 bước (có hình ảnh)
Đèn trị liệu bằng ánh sáng LED đa màu gắn kính che mặt: Với đèn trị liệu bằng ánh sáng trên mũ, bạn có thể sử dụng nó trong khi thực hiện các hoạt động đòi hỏi phải di chuyển nhiều như tập thể dục và làm việc. Đèn này có đèn LED màu đỏ, vàng, lục lam và xanh lam với điều khiển độ sáng. Nó sẽ tắt sau 15 hoặc 45 phút. Nó'