ESP32 Bluetooth Plotter Example Hướng Dẫn Tạo Giao Diện Vẽ Đồ Thị Dữ Liệu Thời Gian Thực
Tổng Quan
Ví dụ Bluetooth Plotter cung cấp khả năng vẽ đồ thị dữ liệu thời gian thực trên smartphone thông qua ứng dụng DIYables Bluetooth STEM. Được thiết kế cho các bo mạch ESP32 với hỗ trợ cả kết nối BLE (Bluetooth Low Energy) và Classic Bluetooth. Vẽ đồ thị tối đa 10 chuỗi dữ liệu đồng thời với trục tọa độ có thể cấu hình, tự động điều chỉnh tỷ lệ, nhãn chú giải và hiển thị cuộn — hoàn hảo cho việc trực quan hóa cảm biến, phân tích tín hiệu và giám sát dữ liệu.
Ví dụ này hỗ trợ hai chế độ Bluetooth:
- ESP32 BLE (Bluetooth Low Energy): Hoạt động trên cả Android và iOS
- ESP32 Classic Bluetooth: Chỉ hoạt động trên Android. iOS không hỗ trợ Classic Bluetooth. Sử dụng BLE nếu bạn cần hỗ trợ iOS.

Tính Năng
- Vẽ Đồ Thị Đa Chuỗi: Vẽ tối đa 10 chuỗi dữ liệu đồng thời
- Hiển Thị Thời Gian Thực: Đồ thị cuộn liên tục với cập nhật trực tiếp
- Trục Tọa Độ Có Thể Cấu Hình: Đặt phạm vi trục Y tùy chỉnh, nhãn trục và tiêu đề đồ thị
- Tự Động Điều Chỉnh Tỷ Lệ: Tự động điều chỉnh phạm vi trục Y để phù hợp với dữ liệu
- Chú Giải Tùy Chỉnh: Gắn nhãn cho từng chuỗi dữ liệu để dễ nhận diện
- Điều Chỉnh Số Mẫu: Cấu hình số điểm dữ liệu hiển thị
- BLE & Classic Bluetooth: Chọn chế độ Bluetooth phù hợp với dự án của bạn
- Đa Nền Tảng: Chế độ BLE hoạt động trên cả Android và iOS; Classic Bluetooth hoạt động trên Android
Linh Kiện 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 | × | breadboard | ||
| 1 | × | Dây Jumper | ||
| 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) |
Code ESP32
Hướng Dẫn Nhanh
Làm theo các hướng dẫn từng bước sau:
- 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ề ESP32 - Cài Đặt Phần Mềm.
- Kết nối bo mạch ESP32 với máy tính bằng cáp USB.
- Khởi động Arduino IDE trên máy tính.
- Chọn bo mạch ESP32 và cổng COM phù hợp.
- Điều hướng tới biểu tượng Libraries trên thanh bên trái của Arduino IDE.
- Tìm kiếm "DIYables Bluetooth", sau đó tìm thư viện DIYables Bluetooth của DIYables
- Nhấp nút Install để cài đặt thư viện.

- Bạn sẽ được yêu cầu cài đặt một số thư viện phụ thuộc khác
- Nhấp nút Install All để cài đặt tất cả các thư viện phụ thuộc.

Chọn một trong hai chế độ Bluetooth dưới đây tùy thuộc vào nhu cầu của bạn:
Code ESP32 Classic Bluetooth (chỉ hoạt động với app trên Android)
Lưu ý: Classic Bluetooth KHÔNG được hỗ trợ trên iOS. Nếu bạn cần hỗ trợ iOS, hãy sử dụng code BLE bên dưới.
- Trong Arduino IDE, đi tới File Examples DIYables Bluetooth Esp32Bluetooth_Plotter example, hoặc sao chép code trên và dán vào editor của Arduino IDE
- Nhấp nút Upload trên Arduino IDE để tải code lên ESP32
- Mở Serial Monitor
- Kiểm tra kết quả trên Serial Monitor. Nó sẽ như sau:
Code ESP32 BLE (hoạt động với app trên cả Android và iOS)
- Trong Arduino IDE, đi tới File Examples DIYables Bluetooth Esp32BLE_Plotter example, hoặc sao chép code trên và dán vào editor của Arduino IDE
- Nhấp nút Upload trên Arduino IDE để tải code lên ESP32
- Mở Serial Monitor
- Kiểm tra kết quả trên Serial Monitor. Nó sẽ như sau:
Ứng Dụng Di Động
- Nếu bạn đang sử dụng ESP32 Classic Bluetooth code, bạn cần ghép đôi ESP32 với điện thoại Android trước khi mở ứng dụng:
- Vào Cài đặt > Bluetooth của điện thoại
- Đảm bảo Bluetooth đã được bật
- Điện thoại sẽ quét các thiết bị có sẵn
- Tìm và nhấn "ESP32_Plotter" trong danh sách các thiết bị có sẵn
- Xác nhận yêu cầu ghép đôi (không cần PIN)
- Đợi cho đến khi hiển thị "Paired" dưới tên thiết bị
- Nếu bạn đang sử dụng ESP32 BLE code, không cần ghép đôi. Chỉ cần chuyển sang bước tiếp theo.
- Mở ứng dụng DIYables Bluetooth
- Khi mở ứng dụng lần đầu tiên, nó sẽ yêu cầu quyền. Vui lòng cấp những quyền sau:
- Quyền Nearby Devices (Android 12+) / quyền Bluetooth (iOS) - cần thiết để quét và kết nối với các thiết bị Bluetooth
- Quyền Location (chỉ Android 11 trở xuống) - cần thiết cho các phiên bản Android cũ để quét thiết bị BLE
- Đảm bảo Bluetooth đã được bật trên điện thoại
- Trên màn hình chính, nhấn nút Connect. Ứng dụng sẽ quét cả thiết bị BLE và Classic Bluetooth.

- Tìm và nhấn thiết bị của bạn trong kết quả quét để kết nối:
- Đối với Classic Bluetooth: nhấn "ESP32_Plotter"
- Đối với BLE: nhấn "ESP32BLE_Plotter"
- Sau khi kết nối, ứng dụng tự động quay về màn hình chính. Chọn ứng dụng Plotter từ menu ứng dụng.

Lưu ý: Bạn có thể nhấn biểu tượng cài đặt trên màn hình chính để ẩn/hiện các ứng dụng. Để biết thêm chi tiết, xem Hướng dẫn sử dụng DIYables Bluetooth App.
- Xem đồ thị dữ liệu thời gian thực cuộn trên màn hình

Bây giờ nhìn lại Serial Monitor trên Arduino IDE. Bạn sẽ thấy:
- Đồ thị hiển thị các dạng sóng sine, cosine và nhiễu ngẫu nhiên theo thời gian thực
Tùy Chỉnh Sáng Tạo - Điều Chỉnh Code Cho Dự Án Của Bạn
Cấu Hình Cài Đặt Đồ Thị
Thiết lập giao diện đồ thị trước khi kết nối:
Gửi Dữ Liệu Tới Đồ Thị
Nhiều phương thức cho việc gửi từ 1 đến 4+ chuỗi dữ liệu:
Xử Lý Yêu Cầu Dữ Liệu Từ Ứng Dụng
Khi ứng dụng kết nối và mở màn hình Plotter, nó có thể yêu cầu dữ liệu:
Xử Lý Sự Kiện Kết Nối
Cách Sử Dụng Đồ Thị
Điều Khiển Giao Diện Ứng Dụng
Giao diện đồ thị trong ứng dụng DIYables Bluetooth cung cấp:
- Đồ Thị Thời Gian Thực: Biểu đồ đường cuộn với nhiều chuỗi
- Chú Giải: Nhãn mã màu cho mỗi chuỗi dữ liệu
- Cuộn Tự Động: Liên tục cuộn để hiển thị dữ liệu mới nhất
Định Dạng Dữ Liệu
Dữ liệu được gửi dưới dạng các giá trị float cách nhau bằng dấu phẩy:
- Chuỗi đơn: bluetoothPlotter.send(value)
- Nhiều chuỗi: bluetoothPlotter.send(val1, val2, val3)
- Tốc độ dữ liệu: Khuyến nghị khoảng thời gian 10-100ms để vẽ đồ thị mượt mà
Ví Dụ Lập Trình
Đồ Thị Cảm Biến Đơn
Đồ Thị Accelerometer Đa Cảm Biến
Đồ Thị Chân Analog
Máy Tạo Tín Hiệu
Kỹ Thuật Lập Trình Nâng Cao
Bộ Lọc Trung Bình Trượt
Cấu Hình Đồ Thị Động
BLE vs Classic Bluetooth - Nên Chọn Loại Nào?
| Tính Năng | BLE (Esp32BLE_Plotter) | Classic Bluetooth (Esp32Bluetooth_Plotter) |
|---|---|---|
| Hỗ Trợ iOS | ? Có | ? Không |
| Hỗ Trợ Android | ? Có | ? Có |
| Tiêu Thụ Điện Năng | Thấp | Cao hơn |
| Phạm Vi | ~30-100m | ~10-100m |
| Tốc Độ Dữ Liệu | Thấp hơn | Cao hơn |
| Cần Ghép Đôi | Không (tự động kết nối) | Có (ghép đôi thủ công) |
| Tốt Nhất Cho | Tiết kiệm pin, đa nền tảng | Thông lượng cao, chỉ Android |
Khắc Phục Sự Cố
Các Vấn Đề Thường Gặp
1. Không thể tìm thấy thiết bị trong ứng dụng
- Đảm bảo ESP32 đã được cấp nguồn và sketch đã được tải lên
- Đối với BLE: Đảm bảo Bluetooth và Vị trí của điện thoại đã được bật
- Đối với Classic Bluetooth: Ghép đôi thiết bị trước trong cài đặt Bluetooth của điện thoại
- Kiểm tra rằng đã chọn đúng partition scheme (Huge APP)
2. Đồ thị không cập nhật
- Kiểm tra trạng thái kết nối Bluetooth trong ứng dụng
- Xác minh bluetoothPlotter.send() đang được gọi trong loop
- Kiểm tra rằng bluetooth.isConnected() trả về true
- Thử ngắt kết nối và kết nối lại
3. Dữ liệu đồ thị trông gián đoạn
- Giảm khoảng thời gian vẽ đồ thị (ví dụ 50ms thay vì 500ms)
- Đảm bảo kết nối Bluetooth ổn định
- Giảm số chuỗi dữ liệu nếu băng thông bị hạn chế
4. Phạm vi trục Y không phù hợp với dữ liệu
- Sử dụng enableAutoScale(true) để tự động điều chỉnh
- Hoặc đặt phạm vi rộng hơn với setYAxisRange()
5. Nhãn chú giải không hiển thị
- Gọi setLegendLabels() trước khi kết nối được thiết lập
- Khớp số nhãn với số chuỗi dữ liệu
6. Sketch quá lớn / không đủ dung lượng
- Trong Arduino IDE, đi tới Tools > Partition Scheme và chọn "Huge APP (3MB No OTA/1MB SPIFFS)" hoặc "No OTA (Large APP)"
- Partition scheme mặc định chỉ cung cấp ~1.2MB cho code ứng dụng, không đủ cho thư viện Bluetooth
- Cài đặt này cung cấp ~3MB bằng cách hy sinh phân vùng OTA (over-the-air update)
Mẹo Debug
Thêm debug toàn diện:
Ý Tưởng Dự Án
Giám Sát Cảm Biến
- Hiển thị xu hướng nhiệt độ và độ ẩm
- Giám sát mức ánh sáng suốt cả ngày
- Theo dõi chuyển động bằng accelerometer
- Trực quan hóa dữ liệu cảm biến áp suất
Phân Tích Tín Hiệu
- Trực quan hóa tần số âm thanh
- Giám sát rung động
- Hiển thị nhịp tim
- Cường độ điện từ trường
Giáo Dục
- So sánh sóng sine, cosine và tangent
- Đường cong nạp/xả mạch RC
- Trực quan hóa phản hồi bộ điều khiển PID
- Ghi dữ liệu thí nghiệm vật lý
Công Nghiệp
- Giám sát rung động máy móc
- Theo dõi xu hướng biến số quy trình
- Theo dõi tiêu thụ điện năng
- Biểu đồ kiểm soát chất lượng
Tích Hợp Với Các Ứng Dụng Bluetooth Khác
Kết Hợp Với Bluetooth Slider
Sử dụng slider để điều khiển tham số tín hiệu được vẽ:
Kết Hợp Với Bluetooth Table
Hiển thị giá trị hiện tại trong bảng cùng với đồ thị:
...