ESP32 IoT Project Roadmap: Lộ trình từ LED đến sản phẩm
Roadmap tương tác giúp bạn học ESP32 qua project: từ LED và nút nhấn, sensor kết nối cloud, TinyML tại edge đến OTA và bảo mật cho thiết bị thật.
Chia sẻ

Học ESP32 rất dễ rơi vào cảnh mở mười tab tutorial, mua thêm một hộp sensor rồi vẫn chưa biết project tiếp theo nên là gì. Mình cũng từng đi theo kiểu đó. Sau vài tuần, code mẫu chạy khá nhiều nhưng kỹ năng để ghép chúng thành một thiết bị ổn định lại chưa tiến bao nhiêu.
Roadmap này đi theo một nguyên tắc đơn giản: mỗi chặng chỉ thêm một nhóm vấn đề mới. Beginner làm chủ GPIO. Intermediate thêm sensor và đường truyền dữ liệu. Advanced đưa xử lý ML xuống edge. Production tập trung vào những ngày thiết bị mất mạng, mất điện hoặc nhận nhầm firmware.
Roadmap tương tác
Chọn đúng chặng, làm một project vừa sức
Bấm vào từng cấp độ để xem project nên làm và dấu hiệu cho thấy bạn đã sẵn sàng đi tiếp.
Beginner · LED + Button
Chọn board, nạp code và hiểu GPIO trước khi gắn nhiều module.
Mục tiêu của chặng
Bạn tự đấu được LED, đọc nút nhấn và debug bằng Serial Monitor.
Bạn không cần hoàn thành mọi project. Chọn một project gần với nhu cầu của mình, làm nó chạy lặp lại được rồi mới sang chặng tiếp theo.
Chặng 1 — Beginner: LED + Button

Chặng đầu chỉ cần ít linh kiện. Mục tiêu không phải làm mạch lớn, mà là hiểu một input, một output và cách xem log khi chúng không chạy như dự kiến.
Nếu board còn nằm trong túi chống tĩnh điện, hãy bắt đầu bằng P1: chọn board ESP32. Nếu đã có board, P2: cài đặt và nạp code đầu tiên sẽ đưa bạn tới Serial Monitor mà không phải đoán board hay Port.
Project đầu tiên mình đề xuất có đúng hai chức năng:
- Nhấn nút thì đổi trạng thái LED.
- Mỗi lần đổi trạng thái, in một dòng log có thời gian lên Serial Monitor.
Nghe rất nhỏ, nhưng nó buộc mình phải hiểu GPIO output, input pull-up, mức logic 3,3 V, điện trở hạn dòng và debounce. Đừng copy số GPIO từ ảnh của board khác; mở pinout đúng revision và tránh các chân flash, PSRAM hoặc strapping.
Bạn có thể đi tiếp khi tự giải thích được vì sao LED cần điện trở, vì sao input không nên để floating và biết phân biệt lỗi code với lỗi dây/cáp. Nếu Blink không chạy, checklist lỗi ESP32 thường gặp hữu ích hơn việc đổi GPIO ngẫu nhiên.
Chặng 2 — Intermediate: Sensor + Cloud

Khi thêm sensor và kết nối mạng, hãy giữ đường dữ liệu đơn giản: đọc đúng, gắn timestamp, lưu tạm khi mất mạng rồi mới nghĩ tới dashboard đẹp.
Ở chặng này, thay LED bằng một sensor I2C như BME280 hoặc SHT30. Đọc giá trị mỗi vài giây, kiểm tra lỗi bus, gắn timestamp rồi gửi qua MQTT hoặc HTTP. Cloud ở đây không nhất thiết phải là dịch vụ lớn: một broker và dashboard chạy trong mạng nhà cũng đủ để học đúng luồng.
Project phù hợp nhất đang có trên Nastrotek là Smart Garden ESP32. Nó buộc mình xử lý hiệu chuẩn độ ẩm đất, ánh sáng, mực nước và bơm—tức là dữ liệu thật không sạch như ví dụ. Nếu dự án cần cấu hình gần thiết bị hoặc chạy bằng pin, bài giao tiếp BLE cho thiết bị IoT bổ sung phần packet, reconnect và bảo mật.
Đừng coi dashboard hiện số là đích cuối. Một node intermediate nên làm được bốn việc:
- Sensor lỗi không làm cả firmware treo.
- Mất Wi-Fi thì tự kết nối lại có backoff, không reset liên tục.
- Dữ liệu có đơn vị, timestamp và cờ chất lượng rõ ràng.
- Secret không nằm trực tiếp trong repository.
Khi đã làm được vậy, hãy thử ESP RainMaker hoặc một MQTT stack bạn tự quản lý. Mục tiêu là hiểu vòng đời dữ liệu, không phải khóa project vào một cloud cụ thể.
Chặng 3 — Advanced: Machine Learning tại edge

Edge ML chỉ có ý nghĩa khi đo trên board thật. Accuracy, latency, RAM và năng lượng đều là một phần của kết quả, không chỉ riêng việc model build thành công.
Edge ML không nên bắt đầu bằng câu “model nào xịn nhất?”, mà bằng câu “thiết bị cần đưa ra quyết định gì khi không có Internet?”. Ví dụ, vừa sức là nhận biết một âm thanh ngắn, phân loại trạng thái máy từ rung hoặc phát hiện có người trong khung hình độ phân giải thấp.
Bài TinyML trên ESP32 đi qua memory budget, inference và ví dụ person detection. Nếu chọn âm thanh, ESP32-S3 I2S Audio giúp chuẩn bị đường thu dữ liệu trước khi nghĩ tới model.
Mình chỉ xem một demo là hoàn thành khi đã ghi lại:
| Chỉ số | Cần đo trên board thật |
|---|---|
| Độ chính xác | Với dữ liệu gần môi trường lắp đặt, không chỉ tập mẫu |
| Latency | Từ lúc lấy mẫu đến khi có kết quả |
| Bộ nhớ | Flash, RAM nội và PSRAM ở lúc cao nhất |
| Năng lượng | Dòng khi lấy mẫu, inference và chờ |
| Lỗi | Sensor mất dữ liệu, model trả confidence thấp, watchdog |
Nếu chưa có cách xử lý confidence thấp, project vẫn là demo. Một luật fallback đơn giản thường đáng tin hơn việc ép model luôn phải đưa ra câu trả lời.
Chặng 4 — Production: OTA + Security

Production bắt đầu khi thiết bị vẫn có thể phục hồi sau bản cập nhật lỗi và mỗi unit được kiểm tra bằng cùng một quy trình trước khi rời bàn lab.
Prototype chạy trên bàn không đồng nghĩa với việc thiết bị sẵn sàng treo ngoài ban công hoặc giao cho người khác. Từ đây, OTA và security không còn là “tính năng thêm sau”. Chúng ảnh hưởng đến partition table, khóa ký, quy trình factory và cả cách support thiết bị lỗi.
Mình ưu tiên theo thứ tự này:
- Quan sát được: version, reset reason, uptime và lỗi cập nhật có log.
- OTA phục hồi được: hai app slot, kiểm tra firmware mới và tự rollback nếu self-test thất bại.
- Kênh cập nhật đáng tin: HTTPS, xác thực server và firmware có chữ ký.
- Danh tính riêng: không dùng chung credential cho cả lô thiết bị.
- Khóa đường debug trước khi sản xuất: thử Secure Boot, Flash Encryption và eFuse trên sample riêng trước; nhiều bước không thể hoàn tác.
Bài baseline bảo mật IoT thực tế giúp dựng threat model và checklist. Phần cứng cũng cần trưởng thành song song: thiết kế nguồn pin ESP32 xử lý brownout/xung tải, còn review schematic ESP32 rà các lỗi dễ bị che bởi DevKit.
Chọn project tiếp theo trong 30 giây
- Chưa tự nạp code và đọc log: đi P1 → P2 → LED + Button.
- GPIO đã ổn nhưng project chỉ chạy offline: thêm một sensor và MQTT/local dashboard.
- Đã có dữ liệu sạch, đều: thử một bài toán edge ML có tiêu chí đo cụ thể.
- Thiết bị sắp rời bàn lab: tạm dừng feature mới, làm OTA rollback, nguồn và threat model.
Roadmap không phải là cuộc đua lên Advanced. Một sensor node intermediate chạy ổn hai năm hữu ích hơn một demo AI chỉ chạy trong video. Mỗi khi thấy bị ngợp, mình quay lại câu hỏi: project hiện tại đang hỏng ở phần cứng, dữ liệu, kết nối hay vận hành? Câu trả lời sẽ chỉ đúng chặng cần học tiếp.
Tham khảo
Chia sẻ
Tiếp tục khám phá
Đọc tiếp
Bài viết liên quan
18 lỗi ESP32 thường gặp – Phần 2: Các lỗi nghiêm trọng
Cách mình đọc backtrace và xử lý crash, watchdog, heap, stack, FreeRTOS, Wi-Fi, ADC, deep sleep và OTA trên ESP32 theo một checklist runtime dễ áp dụng.
ESP32 Beginner Guide – P2: Cài đặt và nạp code đầu tiên
Cài Arduino IDE, thêm Arduino-ESP32, chọn đúng board và Port, nạp sketch đầu tiên rồi xử lý lỗi Failed to connect trên ESP32, ESP32-C3 và ESP32-S3.
ESP32 Beginner Guide – P1: ESP32 là gì? Chọn board nào?
Phân biệt chip, module và development board ESP32, rồi chọn ESP32-C3, ESP32-S3 hay ESP32 DevKit phù hợp với dự án đầu tiên mà không mua thừa phần cứng.