ESP32 MQTT
Trong hướng dẫn này, chúng ta sẽ khám phá cách sử dụng ESP32 để gửi và nhận dữ liệu từ MQTT broker bằng giao thức MQTT. Cụ thể, chúng ta sẽ tìm hiểu:
- Thiết lập kết nối giữa ESP32 và MQTT broker.
- Lập trình ESP32 để gửi dữ liệu đến MQTT broker bằng cách publish dữ liệu lên MQTT topic.
- Lập trình ESP32 để nhận dữ liệu bằng cách subscribe MQTT topic.

Chúng ta sẽ tìm hiểu hai tình huống khác nhau:
- ESP32 với MQTT broker trực tuyến.
- ESP32 với MQTT broker được cài đặt trên PC của bạn.
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 | × | USB Cable Type-A to Type-C (for USB-A PC) | ||
| 1 | × | USB Cable Type-C to Type-C (for USB-C PC) | ||
| 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) |
Về ESP32 và MQTT
Nếu bạn đã quen thuộc với giao thức MQTT thì tuyệt vời! Nếu chưa, bạn có thể tìm hiểu online. Hướng dẫn này tập trung vào việc sử dụng ESP32 để gửi và nhận dữ liệu bằng MQTT.
Dưới đây là một số cách ESP32 có thể hoạt động với MQTT:
- Kết nối ESP32 với MQTT broker trực tuyến như Mosquitto hoặc AWS IoT.
- Kết nối ESP32 với MQTT broker được cài đặt trên máy tính của bạn, như Mosquitto hoặc HiveMQ.
- Kết nối ESP32 với MQTT broker chạy trên Raspberry Pi của bạn, ví dụ Mosquitto.
- Kết nối ESP32 với MQTT broker dựa trên cloud, như Mosquitto hoặc HiveMQ trên AWS EC2.
Trong hướng dẫn này, chúng ta sẽ bắt đầu bằng việc xem ESP32 có thể kết nối với Mosquitto broker trực tuyến hay không. Chúng ta sẽ có ESP32 gửi và nhận dữ liệu thông qua broker này qua internet.
Sau đó, chúng ta sẽ thiết lập Mosquitto broker trên máy tính của chúng ta. Chúng ta sẽ kết nối ESP32 với broker cục bộ này và tiếp tục gửi và nhận dữ liệu.
Khi bạn đã hoàn thành hướng dẫn này, bạn có thể khám phá thêm bằng cách xem những hướng dẫn khác:
Những liên kết này sẽ cung cấp hướng dẫn thêm về các chủ đề liên quan.
Kết nối ESP32 với MQTT broker trực tuyến
Trong phần này, chúng ta sẽ học cách kết nối ESP32 với test.mosquitto.org, một MQTT broker trực tuyến được tạo bởi Mosquitto. Xin lưu ý rằng broker này chỉ nên được sử dụng cho mục đích thử nghiệm.
Code ESP32
Code ESP32 dưới đây sẽ:
- Kết nối với MQTT broker
- Subscribe một topic
- Định kỳ publish tin nhắn đến cùng topic mà nó subscribe
Các Bước Thực Hiện
- Mới sử dụng ESP32? Hãy bắt đầu với hướng dẫn ESP32 - Cài Đặt Phần Mềm để học các kiến thức cơ bản trước.
- Thực hiện đấu nối như hình trên.
- Kết nối bo mạch ESP32 với PC của bạn qua cáp USB
- Mở Arduino IDE trên PC của bạn.
- Chọn đúng bo mạch ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
- Mở Arduino IDE trên PC của bạn
- Mở Library Manager bằng cách click vào biểu tượng Library Manager trên thanh điều hướng bên trái của Arduino IDE
- Gõ MQTT trong hộp tìm kiếm, sau đó tìm thư viện MQTT của Joel Gaehwiler.
- Click nút Install để cài đặt thư viện MQTT.

- Gõ ArduinoJson trong hộp tìm kiếm, sau đó tìm thư viện ArduinoJson của Benoit Blanchon.
- Click nút Install để cài đặt thư viện ArduinoJson.

- Copy code ở trên và mở bằng Arduino IDE
- Thay thế thông tin WiFi (SSID và password) trong code bằng thông tin của bạn.
- Trong code, bạn sẽ thấy từ 'YOUR-NAME' ba lần. Thay thế từ này bằng tên của bạn hoặc các ký tự ngẫu nhiên (chỉ ký tự chữ cái, không có dấu cách). Điều này cần thiết vì nếu bạn không thực hiện thay đổi này, có thể nhiều người chạy code này cùng lúc, điều này có thể dẫn đến xung đột vì MQTT client ID và topic giống nhau cho mọi người.
- Click nút Upload trên Arduino IDE để upload code lên ESP32
- Mở Serial Monitor
- Xem kết quả trên Serial Monitor.
Như bạn có thể quan sát, ESP32 publish tin nhắn đến MQTT broker và sau đó nhận lại cùng tin nhắn đó. Điều này xảy ra vì code được cung cấp subscribe cùng topic mà nó publish dữ liệu. Nếu bạn muốn ESP32 không nhận tin nhắn mà nó publish, bạn có thể dễ dàng thực hiện điều này bằng cách làm cho SUBSCRIBE topic khác với PUBLISH topic.
Kết nối ESP32 với MQTT broker được cài đặt trên PC của bạn
Cài đặt Mosquitto MQTT Broker
- Tải xuống Mosquitto MQTT Broker
- Cài đặt nó trên ổ D: thay vì ổ C:. Tránh cài đặt Mosquitto broker trên ổ C: để tránh các vấn đề tiềm ẩn.
Chạy Mosquitto MQTT broker
Bây giờ, hãy kiểm tra xem MQTT broker có hoạt động đúng không bằng cách làm theo các bước sau:
- Đi đến thư mục nơi Mosquitto được cài đặt. Ví dụ: D:\Draft\mosquitto>
- Tạo một file mới có tên test.conf, copy nội dung dưới đây và lưu nó trong thư mục đó:
- Chạy Command Prompt với quyền Administrator trên PC của bạn. Gọi nó là Broker Window. Đừng đóng nó cho đến khi kết thúc hướng dẫn.

- Chạy các lệnh dưới đây từng lệnh một:
- Bạn sẽ thấy:
- Mở một Command Prompt khác với quyền Administrator trên PC của bạn.
- Tìm địa chỉ IP của PC bằng cách chạy lệnh dưới đây:
- Ghi lại địa chỉ IP để sử dụng sau này. Trong ví dụ trên: 192.168.0.26
Kiểm tra xem Mosquitto Broker có hoạt động không
- Mở một Command Prompt khác với quyền Administrator trên PC của bạn. Gọi nó là Subscriber Window
- Subscribe một topic bằng cách chạy các lệnh dưới đây từng lệnh một (thay thế bằng địa chỉ IP của bạn):
- Mở một Command Prompt khác với quyền Administrator trên PC của bạn. Gọi nó là Publisher Window
- Publish một tin nhắn đến cùng topic bằng cách chạy các lệnh dưới đây từng lệnh một (thay thế bằng địa chỉ IP của bạn):
- Bạn sẽ thấy:
Bạn sẽ thấy tin nhắn được chuyển tiếp đến Subscriber Window như sau:
Bây giờ, bạn đã cài đặt thành công Mosquitto MQTT broker trên PC của mình. Vui lòng KHÔNG đóng ba cửa sổ: Broker Window, Subscriber Window, và Publisher Window. Chúng ta sẽ sử dụng chúng tiếp theo.
Code ESP32
Code ESP32 dưới đây sẽ:
- Kết nối với MQTT broker
- Subscribe một topic
- Định kỳ publish tin nhắn đến topic khác
Các Bước Thực Hiện
- Copy code ở trên và mở bằng Arduino IDE
- Thay thế thông tin WiFi (SSID và password) trong code bằng thông tin của bạn.
- Thay thế địa chỉ MQTT broker trong code (tên miền hoặc địa chỉ IP).
- Click nút Upload trên Arduino IDE để upload code lên ESP32
Gửi tin nhắn từ ESP32 đến PC qua MQTT
Code ESP32 publish dữ liệu đến MQTT topic esp32-001/send, Subscriber Window trên PC subscribe topic đó để nhận dữ liệu.
- Mở Serial Monitor, bạn sẽ thấy ESP32 định kỳ publish tin nhắn đến một topic.
- Kiểm tra Subscriber Window, bạn sẽ thấy nó nhận được tin nhắn được publish bởi ESP32 như dưới đây:
Gửi tin nhắn từ PC đến ESP32 qua MQTT
ESP32 subscribe topic esp32-001/receive, Publisher Window trên PC publish tin nhắn đến topic đó để gửi nó đến ESP32.
- Publish một tin nhắn đến topic mà ESP32 đã subscribe bằng cách chạy lệnh sau trên Publisher Window:
- Bạn sẽ thấy tin nhắn này được nhận bởi ESP32 trên Serial Monitor như dưới đây:
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.