ESP32 Bluetooth Temperature Example Hướng Dẫn Hiển Thị Đồng Hồ Đo Nhiệt Độ
Tổng Quan
Ví dụ Bluetooth Temperature cung cấp màn hình đồng hồ đo nhiệt độ chuyên dụng có thể truy cập qua ứng dụng DIYables Bluetooth STEM. Được thiết kế cho các board ESP32 với hỗ trợ cả kết nối BLE (Bluetooth Low Energy) và Classic Bluetooth. Gửi dữ liệu nhiệt độ với phạm vi tối thiểu/tối đa và nhãn đơn vị có thể cấu hình — hoàn hảo cho nhiệt kế, trạm thời tiết, giám sát HVAC và bất kỳ ứng dụng cảm biến nhiệt độ nào.
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
- Đồng Hồ Nhiệt Độ: Hiển thị trực quan kiểu nhiệt kế
- Phạm Vi Cấu Hình: Thiết lập giá trị nhiệt độ tối thiểu và tối đa
- Đơn Vị Tùy Chỉnh: Hiển thị °C, °F, K, hoặc bất kỳ chuỗi đơn vị tùy chỉnh nào
- Cập Nhật Thời Gian Thực: Gửi dữ liệu nhiệt độ trực tiếp
- Request Callback: Ứng dụng có thể yêu cầu nhiệt độ hiện tại theo nhu cầu
- 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
- Tùy Chọn Tiết Kiệm Năng Lượng: Chế độ BLE tiêu thụ ít điện năng hơn Classic Bluetooth
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
Các Bước Thực Hiện
Thực hiện theo hướng dẫn từng bước:
- Nếu đây là lần đầu 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 board ESP32 với máy tính bằng cáp USB.
- Khởi chạy Arduino IDE trên máy tính.
- Chọn board ESP32 và COM port thích hợp.
- Điều hướng đến 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 hỏi về việc 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 theo nhu cầu của bạn:
Code ESP32 Classic Bluetooth (chỉ hoạt động với ứng dụng 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.
- Trên Arduino IDE, vào File Examples DIYables Bluetooth Esp32Bluetooth_Temperature 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ó trông như thế này:
Code ESP32 BLE (hoạt động với ứng dụng trên cả Android và iOS)
- Trên Arduino IDE, vào File Examples DIYables Bluetooth Esp32BLE_Temperature 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ó trông như thế này:
Ứng Dụng Di Động
- Nếu bạn đang sử dụng code ESP32 Classic Bluetooth, bạn cần ghép nối ESP32 với điện thoại Android trước khi mở ứng dụng:
- Vào Settings > 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_Temp" trong danh sách thiết bị có sẵn
- Xác nhận yêu cầu ghép nối (không cần PIN)
- Chờ đến khi hiển thị "Paired" dưới tên thiết bị
- Nếu bạn đang sử dụng code ESP32 BLE, không cần ghép nối. Chỉ cần tiến hành bước tiếp theo.
- Mở DIYables Bluetooth App
- 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 thiết bị Bluetooth
- Quyền Location (chỉ Android 11 và thấp hơn) - được yêu cầu bởi 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 vào 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_Temp"
- Đối với BLE: nhấn "ESP32BLE_Temp"
- Sau khi kết nối, ứng dụng tự động quay về màn hình chính. Chọn ứng dụng Temperature 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 thị ứng dụng trên màn hình chính. Để biết thêm chi tiết, xem Hướng Dẫn Sử Dụng DIYables Bluetooth App.
- Đồng hồ đo nhiệt độ sẽ hiển thị giá trị nhiệt độ hiện tại

Bây giờ nhìn lại Serial Monitor trên Arduino IDE. Bạn sẽ thấy:
- Xem đồng hồ đo nhiệt độ cập nhật theo thời gian thực trong ứng dụng
Tùy Chỉnh Sáng Tạo - Điều Chỉnh Code Cho Dự Án Của Bạn
Cấu Hình Phạm Vi Nhiệt Độ và Đơn Vị
Thiết lập phạm vi hiển thị và đơn vị:
Gửi Giá Trị Nhiệt Độ
Xử Lý Yêu Cầu Nhiệt Độ Từ Ứng Dụng
Xử Lý Sự Kiện Kết Nối
Cách Sử Dụng Hiển Thị Nhiệt Độ
Giao Diện Ứng Dụng
Giao diện nhiệt độ trong DIYables Bluetooth App hiển thị:
- Đồng Hồ Đo Nhiệt Độ: Nhiệt kế trực quan hiển thị giá trị hiện tại
- Hiển Thị Số: Hiển thị giá trị nhiệt độ chính xác
- Nhãn Đơn Vị: Hiển thị chuỗi đơn vị đã cấu hình
- Chỉ Báo Phạm Vi: Hiển thị min và max của phạm vi đã cấu hình
Đơn Vị Nhiệt Độ
Cấu hình phổ biến:
- Celsius: DIYables_BluetoothTemperature(-10.0, 50.0, "°C")
- Fahrenheit: DIYables_BluetoothTemperature(14.0, 122.0, "°F")
- Kelvin: DIYables_BluetoothTemperature(263.0, 323.0, "K")
Ví Dụ Lập Trình
Đọc Cảm Biến DHT22
Cảm Biến DS18B20 One-Wire
Đọc NTC Thermistor
Hiển Thị Fahrenheit
Kỹ Thuật Lập Trình Nâng Cao
Làm Mượt Nhiệt Độ / Tính Trung Bình
Phát Hiện Ngưỡng Cảnh Báo
Ý Tưởng Tích Hợp Phần Cứng
DHT22 / DHT11
Kết nối với bất kỳ chân GPIO nào để đọc độ ẩm và nhiệt độ. Lựa chọn phổ biến cho giám sát trong nhà.
DS18B20 Waterproof Probe
Sử dụng giao thức OneWire để đo nhiệt độ chống nước. Tuyệt vời cho chất lỏng, đất và ứng dụng ngoài trời.
BME280 / BMP280
Cảm biến I2C cho nhiệt độ, độ ẩm và áp suất khí quyển. Độ chính xác cao cho trạm thời tiết.
NTC Thermistor
Cảm biến nhiệt độ analog đơn giản. Chi phí thấp, hoạt động với mạch chia điện áp.
Thermocouple (MAX6675 / MAX31855)
Để đo nhiệt độ cao (lên đến 1000°C+). Được sử dụng trong lò nướng, lò nung và ứng dụng công nghiệp.
BLE vs Classic Bluetooth - Nên Chọn Loại Nào?
| Tính Năng | BLE (Esp32BLE_Temperature) | Classic Bluetooth (Esp32Bluetooth_Temperature) |
|---|---|---|
| Hỗ Trợ iOS | ✓ Có | ✗ Không |
| Hỗ Trợ Android | ✓ Có | ✓ Có |
| Tiêu Thụ Điện | 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 Nối | Không (tự động kết nối) | Có (ghép nối thủ công) |
| Tốt Nhất Cho | Thiết bị pin, đa nền tảng | Throughput cao, chỉ Android |
Khắc Phục Sự 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à Location của điện thoại được bật
- Đối với Classic Bluetooth: Ghép nối thiết bị trước trong cài đặt Bluetooth của điện thoại
- Kiểm tra partition scheme đúng được chọn (Huge APP)
2. Nhiệt độ hiển thị 0 hoặc giá trị không chính xác
- Xác minh kết nối dây và kết nối cảm biến
- Kiểm tra loại cảm biến và cấu hình thư viện
- Sử dụng Serial Monitor để xác nhận dữ liệu đọc được trước Bluetooth
- Đối với cảm biến DHT: đảm bảo điện trở pull-up (4.7k-10k) trên chân data
3. Nhiệt độ không cập nhật
- Kiểm tra khoảng thời gian cập nhật trong loop()
- Xác minh bluetoothServer.loop() được gọi trong vòng lặp chính
- Đảm bảo cảm biến đọc giá trị hợp lệ (kiểm tra NaN)
4. Phạm vi hiển thị đồng hồ đo không khớp
- Xác minh tham số constructor: DIYables_BluetoothTemperature(min, max, unit)
- Sử dụng setRange() để điều chỉnh động
- Giá trị nhiệt độ ngoài phạm vi vẫn sẽ hiển thị nhưng có thể bị cắt
5. Kết nối thường xuyên bị ngắt
- Di chuyển gần ESP32 hơn (giảm khoảng cách)
- Đối với BLE: Kiểm tra can nhiễu từ thiết bị BLE khác
- Đối với Classic Bluetooth: Đảm bảo nguồn cung cấp ổn định cho ESP32
6. Sketch quá lớn / không đủ không gian
- Trong Arduino IDE, vào 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 app code, 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
Nhà & Môi Trường
- Nhiệt kế phòng trong nhà
- Trạm thời tiết ngoài trời
- Giám sát nhiệt độ tủ lạnh/tủ đông
- Giám sát khí hậu nhà kính
Bếp & Thực Phẩm
- Giám sát nhiệt độ nấu ăn
- Hiển thị bộ điều khiển sous vide
- Theo dõi nhiệt độ lên men
- Nhiệt kế lò nướng
Công Nghiệp & Phòng Thí Nghiệm
- Cảnh báo nhiệt độ phòng server
- Giám sát quy trình hóa học
- Hiển thị nhiệt độ tủ ấm
- Đọc nhiệt độ mỏ hàn
Nước & Thủy Sản
- Nhiệt kế bể cá
- Hiển thị nhiệt độ bể bơi/spa
- Giám sát máy nước nóng
- Nhiệt độ nước thủy canh