ESP32 Query String Web Server Tham Số URL Động
Ví Dụ WebServerQueryStrings - Server Đa Trang Động
Tổng Quan
Ví dụ này minh họa cách tạo một web server đa trang động sử dụng tham số query URL để cung cấp nội dung tương tác và chức năng điều khiển với điều hướng trang liền mạch.
Tính Năng
- Điều hướng đa trang với nội dung động dựa trên tham số URL
- Chuyển đổi đơn vị nhiệt độ (Celsius/Fahrenheit) thông qua tham số query
- Điều khiển LED với tham số query string
- Tạo nội dung động dựa trên đầu vào người dùng
- Bố cục đa trang chuyên nghiệp với điều hướng nhất quán
- Phân tích và xác thực tham số URL
Phần Cứng Cần Thiết
| 1 | × | mô-đun phát triển ESP-WROOM-32 | ||
| 1 | × | Alternatively, ESP32 Uno-form board | ||
| 1 | × | Alternatively, ESP32 S3 Uno-form board | ||
| 1 | × | Cáp USB Type-C | ||
| 1 | × | (Khuyến nghị) Screw Terminal Expansion Board for ESP32 | ||
| 1 | × | (Khuyến nghị) Breakout Expansion Board for ESP32 | ||
| 1 | × | (Khuyến nghị) Power Splitter for ESP32 |
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Cài Đặt Thư Viện
Thực hiện theo các hướng dẫn sau từng bước:
- Nếu đây là lần đầu tiên bạn sử dụng ESP32, hãy tham khảo hướng dẫn về thiết lập môi trường cho ESP32 trong Arduino IDE.
- Kết nối board ESP32 với máy tính của bạn bằng cáp USB.
- Khởi động Arduino IDE trên máy tính của bạn.
- Chọn board ESP32 thích hợp (ví dụ: ESP32) và cổng COM.
- Mở Library Manager bằng cách nhấp vào biểu tượng Library Manager ở phía bên trái của Arduino IDE.
- Tìm kiếm Web Server for ESP32 và định vị thư viện mWebSockets của DIYables.
- Nhấp vào nút Install để thêm thư viện mWebSockets.

Ví Dụ Web Server Query Strings
- Trong Arduino IDE, đi tới File Examples Web Server for ESP32 WebServerQueryStrings để mở mã ví dụ
Cấu Trúc Code
- home.h: Template HTML trang chủ
- temperature.h: Template trang giám sát nhiệt độ
- led.h: Template trang điều khiển LED
- WebServerQueryStrings.ino: Logic server chính
Kết Nối Mạch
Không cần linh kiện ngoài - ví dụ này sử dụng LED tích hợp trên pin 13.
Tính Năng Tham Số Query
Tham Số Trang Nhiệt Độ
- unit=c hoặc unit=celsius - Hiển thị nhiệt độ theo Celsius
- unit=f hoặc unit=fahrenheit - Hiển thị nhiệt độ theo Fahrenheit
- Không có tham số - Mặc định là Celsius
Tham Số Điều Khiển LED
- state=on - Bật LED
- state=off - Tắt LED
Hướng Dẫn Thiết Lập
1. Cấu Hình Mạng
Chỉnh sửa thông tin WiFi trực tiếp trong file WebServerQueryStrings.ino:
2. Upload Code và Theo Dõi Đầu Ra
- Kết nối ESP32 với máy tính của bạn
- Chọn board và port đúng trong Arduino IDE
- Upload sketch WebServerQueryStrings.ino
- Mở Serial Monitor (9600 baud)
- Đợi kết nối WiFi
- Ghi chú địa chỉ IP được hiển thị
- Nếu bạn không thấy địa chỉ IP trong Serial monitor, nhấn nút reset trên board ESP32
Ví Dụ Sử Dụng
Mở trình duyệt web của bạn và nhập địa chỉ IP hiển thị trong Serial Monitor để truy cập web server.

Kiểm Tra Chức Năng Giám Sát Nhiệt Độ:
- Nhấp vào menu "Temperature".
- Xem hiển thị nhiệt độ. Nhấp vào từng nút để thay đổi đơn vị nhiệt độ

Kiểm Tra Chức Năng Điều Khiển LED:
- Nhấp vào menu "LED Control". Bạn sẽ thấy giao diện web như bên dưới:

- Bật và tắt LED bằng các nút được cung cấp.
- Quan sát trạng thái LED tích hợp trên board ESP32 cập nhật ngay lập tức.
Truy Cập Các Trang Khác Nhau
Trang Chủ
- URL: http://your-esp32-ip/
- Tính Năng: Trang chào mừng với menu điều hướng
Trang Nhiệt Độ (Mặc Định - Celsius)
- URL: http://your-esp32-ip/temperature
- Hiển Thị: Nhiệt độ theo Celsius với bộ chọn đơn vị
Nhiệt Độ Theo Fahrenheit
- URL: http://your-esp32-ip/temperature?unit=f
- URL: http://your-esp32-ip/temperature?unit=fahrenheit
- Hiển Thị: Nhiệt độ được chuyển đổi sang Fahrenheit
Điều Khiển LED
- Bật: http://your-esp32-ip/led?state=on
- Tắt: http://your-esp32-ip/led?state=off
Giải Thích Code
Xử Lý Tham Số Query
Điều Khiển LED với Tham Số Query
Xác Thực Tham Số
Template HTML với Nội Dung Động
Template Trang Nhiệt Độ
Template Điều Khiển LED
Tính Năng Nâng Cao
Cấu Hình Route
Hàm Hỗ Trợ Tham Số Query
Hàm Hỗ Trợ Xây Dựng URL
Ghi Chú Triển Khai Thực Tế
Hạn Chế Hiện Tại
Triển khai thực tế được đơn giản hóa so với web server đầy đủ tính năng:
- Chỉ hỗ trợ trích xuất tham số đơn lẻ cho mỗi handler
- Mô phỏng nhiệt độ đơn giản dựa trên chuỗi (không có chuyển đổi đơn vị)
- Điều khiển LED cơ bản chỉ với trạng thái bật/tắt
- Sử dụng pin 9 thay vì pin 13 tiêu chuẩn
Khắc Phục Sự Cố
Vấn Đề Phổ Biến
Tham Số Không Hoạt Động
- Kiểm tra định dạng URL: page?param=value
- Xác minh tên tham số khớp chính xác (phân biệt chữ hoa chữ thường)
- Triển khai hiện tại sử dụng state cho LED, không phải action
Vấn Đề Pin LED
- Ví dụ này sử dụng pin 9, không phải pin 13
- Xác minh hằng số LED_PIN khớp với phần cứng của bạn
Truy Cập Tham Số Query
- Sử dụng cấu trúc QueryParams, không phải server.arg()
- Lặp qua params.params[i] để tìm các tham số cụ thể
Debug Output
Tùy Chỉnh
Thêm Handler Mới với Tham Số
Cải Tiến Hệ Thống Template
Triển khai thực tế sử dụng thay thế placeholder đơn giản:
Bước Tiếp Theo
- Khám phá WebServerJson.ino để phát triển REST API
- Thử WebServerWithWebSocket.ino cho giao tiếp thời gian thực
- Triển khai xử lý form với tham số POST