Arduino Ma trận LED thông qua Web

Trong hướng dẫn này, chúng ta sẽ học cách điều khiển một ma trận LED thông qua giao diện web bằng trình duyệt trên máy tính để bàn hoặc điện thoại thông minh, sử dụng Arduino Uno R4 WiFi. Cụ thể, Arduino Uno R4 WiFi sẽ được lập trình để hoạt động như một máy chủ web. Giả sử địa chỉ IP của Arduino Uno R4 WiFi là 192.168.0.2. Dưới đây là chi tiết cách nó hoạt động:

trình duyệt web cho ma trận LED Arduino UNO R4

Phần cứng cần chuẩn bị

1×Arduino UNO R4 WiFi
1×Alternatively, DIYables STEM V4 IoT
1×(Tùy chọn) DIYables STEM V4 IoT
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×FC-16 LED Matrix 32x8
1×breadboard
1×dây jumper
1×(Tùy chọn) DC Power Jack
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino UNO R4
1×(Khuyến nghị) Breadboard Shield for Arduino UNO R4
1×(Khuyến nghị) Enclosure for Arduino UNO R4
1×(Khuyến nghị) Power Splitter for Arduino UNO R4
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V4 IoT Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về ma trận LED và Arduino Uno R4

Nếu bạn không biết về ma trận LED và Arduino Uno R4 (bố trí chân, cách hoạt động, cách lập trình ...), hãy tìm hiểu về chúng trong các bài hướng dẫn sau đây:

Sơ đồ đấu dây

sơ đồ đấu nối cho ma trận LED Arduino

This image is created using Fritzing. Click to enlarge image

Mã Arduino

Hướng dẫn từng bước

  • Nếu đây là lần đầu bạn sử dụng Arduino Uno R4, hãy xem Cách bắt đầu với Arduino UNO R4.
  • Mở Arduino IDE.
  • Mở Trình quản lý thư viện bằng cách nhấp vào biểu tượng ở bên trái của Arduino IDE.
  • Tìm kiếm Máy chủ Web cho Arduino Uno R4 WiFi và xác định thư viện Web Server do DIYables tạo ra.
  • Nhấp vào nút Cài đặt để thêm thư viện Web Server.
thư viện máy chủ web cho Arduino UNO R4
  • Tìm kiếm “MD_Parola”, sau đó tìm thư viện MD_Parola
  • Nhấn nút Cài đặt.
thư viện md_parola cho Arduino
  • Bạn sẽ được yêu cầu cài đặt thư viện MD_MAX72XX làm phụ thuộc. Nhấp vào nút Cài đặt Tất cả.
thư viện Arduino md_max72xx
  • Tạo một sketch mới. Đặt cho nó một cái tên, ví dụ, ArduinoGetStarted.com.ino.
  • Sao chép mã được cung cấp ở phía dưới và dán vào tệp đã tạo.
/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-led-matrix-via-web */ #include <UnoR4WiFi_WebServer.h> #include <MD_Parola.h> #include <MD_MAX72xx.h> #include "index.h" #define HARDWARE_TYPE MD_MAX72XX::FC16_HW #define MAX_DEVICES 4 // 4 blocks #define CS_PIN 3 // create an instance of the MD_Parola class MD_Parola ledMatrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); // WiFi credentials const char WIFI_SSID[] = "YOUR_WIFI_SSID"; // change your network SSID (name) const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD"; // change your network password // Create web server instance UnoR4WiFi_WebServer server; // Handler for LED matrix control void handleMatrix(WiFiClient& client, const String& method, const String& request, const QueryParams& params, const String& jsonData) { // Check for message parameter in query string for (int i = 0; i < params.count; i++) { if (String(params.params[i].key) == "message") { String message = params.params[i].value; Serial.print("message: "); Serial.println(message); ledMatrix.displayClear(); // clear led matrix display ledMatrix.displayScroll(message.c_str(), PA_CENTER, PA_SCROLL_LEFT, 100); break; } } String html = String(HTML_CONTENT); server.sendResponse(client, html.c_str()); } void setup() { Serial.begin(9600); delay(1000); // Initialize LED matrix ledMatrix.begin(); // initialize the object ledMatrix.setIntensity(15); // set the brightness of the LED matrix display (from 0 to 15) ledMatrix.displayClear(); // clear led matrix display ledMatrix.displayScroll("Hello, DIYables", PA_CENTER, PA_SCROLL_LEFT, 100); Serial.println("Arduino Uno R4 WiFi - LED Matrix Web Control"); // Connect to WiFi Serial.print("Connecting to "); Serial.println(WIFI_SSID); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(" connected!"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); // Configure routes server.addRoute("/", handleMatrix); // Start server server.begin(); Serial.println("\n=== Web Server Ready! ==="); Serial.print("Visit: http://"); Serial.println(WiFi.localIP()); } void loop() { server.handleClient(); if (ledMatrix.displayAnimate()) { ledMatrix.displayReset(); } }
  • Thay đổi thông tin WiFi (SSID và mật khẩu) trong mã thành của bạn
  • Tạo tập tin index.h trên Arduino IDE bằng:
Arduino ide 2 thêm tệp tin
  • Nhấp vào nút ngay bên dưới biểu tượng monitor nối tiếp và chọn Tab Mới, hoặc dùng các phím Ctrl+Shift+N.
  • Đặt tên cho tệp index.h và nhấp nút OK.
Arduino ide 2 thêm tệp index.h
  • Sao chép mã dưới đây và dán nó vào index.h.
/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-led-matrix-via-web */ const char *HTML_CONTENT = R"=====( <!DOCTYPE html> <html> <head> <title>Arduino LED Matrix Web</title> <meta name="viewport" content="width=device-width, initial-scale=0.7"> <link rel="icon" href="https://diyables.io/images/page/diyables.svg"> <style> body { font-size: 16px; } .user-input { margin-bottom: 20px; } .user-input input { flex: 1; border: 1px solid #444; padding: 5px; } .user-input input[type="submit"] { margin-left: 5px; background-color: #007bff; color: #fff; border: none; padding: 5px 10px; cursor: pointer; } </style> </head> <body> <h2>Arduino - LED Matrix via Web</h2> <form class="user-input" action="" method="GET"> <input type="text" id="message" name="message" placeholder="Message to LED Matrix..."> <input type="submit" value="Send"> </form> <div class="sponsor">Sponsored by <a href="https://amazon.com/diyables">DIYables</a></div> </body> </html> )=====";
  • Bây giờ bạn có mã ở hai tệp: ArduinoGetStarted.com.inoindex.h
  • Nhấn nút Upload trên Arduino IDE để tải mã lên Arduino
  • Xem kết quả trên Serial Monitor.
COM6
Send
Arduino Uno R4 WiFi - LED Matrix Web Control Connecting to YOUR_WIFI_SSID connected! IP address: 192.168.0.254 Starting web server on IP: 192.168.0.254 === Web Server Ready! === Visit: http://192.168.0.254
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Bạn sẽ thấy một địa chỉ IP, ví dụ: 192.168.0.254. Đây là địa chỉ IP của Máy chủ Web Arduino
  • Mở trình duyệt web và nhập một trong các địa chỉ IP vào thanh địa chỉ.
  • Hãy lưu ý rằng địa chỉ IP có thể thay đổi. Vui lòng xác nhận giá trị hiện tại trên Serial Monitor.
  • Bạn cũng sẽ thấy đầu ra dưới đây trên Serial Monitor
COM6
Send
Arduino Uno R4 WiFi - LED Matrix Web Control Connecting to YOUR_WIFI_SSID connected! IP address: 192.168.0.254 Starting web server on IP: 192.168.0.254 === Web Server Ready! === Visit: http://192.168.0.254 Method: GET Requested path: / Query param: message=Hello message: Hello Client disconnected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Bạn sẽ thấy trang web của bo mạch Arduino trên trình duyệt web như dưới đây
trình duyệt web cho ma trận LED Arduino UNO R4
  • Gõ một tin nhắn và nhấp nút gửi để gửi tin nhắn đến Arduino.
  • Xem màn hình ma trận LED.

※ Lưu ý:

  • Nếu có sự chỉnh sửa nội dung HTML trong tệp index.h mà không có bất kỳ sửa đổi nào đối với tệp ArduinoGetStarted.com.ino, IDE Arduino sẽ không tự động làm mới hoặc cập nhật nội dung HTML trong quá trình biên dịch và tải mã lên ESP32.
  • Để buộc IDE Arduino cập nhật nội dung HTML trong trường hợp như vậy, cần thực hiện một sự chỉnh sửa trong tệp ArduinoGetStarted.com.ino. Ví dụ, bạn có thể thêm một dòng trống hoặc chèn một chú thích. Hành động này sẽ thúc đẩy IDE nhận diện các thay đổi trong dự án, đảm bảo nội dung HTML đã chỉnh sửa được đưa vào quá trình tải lên.