IoTLabs

Nghiên cứu, Sáng tạo và Thử nghiệm

Series: Hướng dẫn lập trình ESP32 & module NRF24L01 – Từ cơ bản tới ứng dụng thực tế

1. Mục tiêu series

  • Board chính: ESP32 DevKit 38 pin (chuẩn phổ biến).
  • Module không dây: NRF24L01 / NRF24L01+ (SPI, 2.4GHz).
  • Mục tiêu:
    • Người học mới biết C/Arduino một chút là có thể theo.
    • Cuối series có thể tự thiết kế:
      • Bộ điều khiển từ xa không dây.
      • Mạng cảm biến: nhiều node cảm biến NRF → 1 ESP32 gateway → MQTT / IoTLabs Cloud.
  • Mỗi bài nên có chung format:
    1. Mục tiêu bài học
    2. Kiến thức nền cần biết
    3. Danh sách linh kiện
    4. Sơ đồ kết nối (ESP32 – NRF – cảm biến nếu có)
    5. Code mẫu (kèm giải thích từng phần)
    6. Bài tập mở rộng / Gợi ý project

2. Danh sách bài học

Bài 1 – Làm quen ESP32 & môi trường lập trình

  • Giới thiệu nhanh ESP32 38 pin (nguồn, 3V3/5V, GPIO, UART, SPI, I2C).
  • Cài đặt Arduino IDE / PlatformIO, chọn board, upload “Blink LED” test.
  • Giải thích cách debug qua Serial Monitor.

Bài 2 – GPIO cơ bản: Nhấn nút – bật/tắt LED

  • Kết nối 1 LED ngoài + 1 nút nhấn với ESP32.
  • Đọc nút nhấn (digitalRead), chống dội (debounce) đơn giản.
  • Bài tập: nhấn giữ → đổi trạng thái / chế độ.

Bài 3 – Giới thiệu module NRF24L01 & giao tiếp SPI

  • NRF24L01 là gì, nguyên lý cơ bản truyền RF 2.4GHz.
  • Giải thích chân NRF: VCC, GND, CE, CSN, SCK, MOSI, MISO, IRQ.
  • Mapping chân NRF24L01 ↔ ESP32 38 pin (SPI hardware & SPI software).
  • Lưu ý nguồn: dùng module có regulator 3.3V hoặc tách nguồn riêng.

Bài 4 – Cấu hình NRF24L01: Gửi “Hello World” giữa 2 board ESP32

  • Setup 2 bộ: ESP32 + NRF (TX)ESP32 + NRF (RX).
  • Sử dụng thư viện RF24 (hoặc tương đương) trên Arduino.
  • Gửi chuỗi “Hello World”, quan sát kết quả trên Serial Monitor.
  • Gợi ý kiểm tra lỗi: khoảng cách, nguồn, antenna, vị trí module.

Bài 5 – Thiết kế cấu trúc gói tin: gửi số & dữ liệu cảm biến

  • Giới thiệu struct trong C/C++ để đóng gói dữ liệu.
  • Ví dụ gói tin: struct SensorPacket { uint8_t nodeId; float temperature; float humidity; uint32_t uptime; };
  • Gửi/nhận struct qua NRF24L01.
  • Lưu ý sizeof, căn lề (alignment), ép kiểu.

Bài 6 – Mạng cảm biến nhiều node → 1 gateway ESP32

  • Thiết kế mô hình:
    • N node cảm biến (ESP32 nhỏ / Arduino + NRF)
    • 1 gateway ESP32 + NRF nhận dữ liệu.
  • Đánh địa chỉ node (nodeId), kênh RF, pipe address.
  • In log ra Serial / hiển thị lên OLED.

Bài 7 – Kết hợp cảm biến thực tế (DHT11/DHT22, MQ-2, v.v.)

  • Lấy ví dụ 1 node cảm biến:
    • ESP + NRF + cảm biến DHT (nhiệt độ/độ ẩm).
  • Node gửi dữ liệu định kỳ (5s/lần) về gateway.
  • Gateway hiển thị lên OLED hoặc gửi qua Serial.

Bài 8 – ESP32 gateway đẩy dữ liệu lên MQTT / IoTLabs Cloud

  • ESP32 dùng WiFi:
    • Nhận data từ NRF.
    • Đẩy lên MQTT broker (vd: topic: iotlabs/sensors/node1).
  • Gợi ý dashboard: dùng Node-RED / web đơn giản để show dữ liệu.

Bài 9 – Remote điều khiển: ESP32 + NRF điều khiển Relay/LED từ xa

  • 1 bộ phát: tay cầm remote với các nút nhấn (UP/DOWN/ON/OFF).
  • 1 bộ nhận: ESP32 + NRF điều khiển 1 relay / dải LED.
  • Thiết kế giao thức đơn giản: commandId, deviceId.

Bài 10 – Tổng kết series & gợi ý mở rộng

  • Tóm tắt kiến thức đã học:
    • ESP32 GPIO, SPI, NRF24L01, struct data, multi-node, gateway.
  • Gợi ý mở rộng:
    • Robot điều khiển từ xa.
    • Hệ thống giám sát môi trường trong nhà.
    • Kết hợp thêm LoRa / WiFi / Bluetooth.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *