Phần 2: Xây dựng ứng dụng cơ bản cho ESP32
1. Tạo dự án mới trong Arduino IDE, 2. Viết mã nguồn cơ bản cho ESP32, 3. Kết nối ESP32 với WiFi, 4. Gửi dữ liệu lên server, 5. Kiểm tra và thử nghiệm kết nối.
Phần 2: Xây dựng ứng dụng cơ bản cho ESP32
Trong phần này, chúng ta sẽ xây dựng một ứng dụng cơ bản cho ESP32, cho phép thiết bị kết nối với WiFi và gửi dữ liệu lên server. Điều này sẽ giúp chúng ta chuẩn bị cho việc cập nhật firmware qua Cloud OTA sau này. Dưới đây là các bước chi tiết để thực hiện dự án này.
1. Tạo dự án mới trong Arduino IDE
Đầu tiên, bạn cần mở Arduino IDE và tạo một dự án mới. Hãy làm theo các bước sau:
- Mở Arduino IDE.
- Chọn File > New để tạo một dự án mới.
- Đặt tên cho dự án, ví dụ: ESP32_OTA.
Đảm bảo rằng bạn đã cài đặt thư viện ESP32 trong Arduino IDE. Nếu chưa, bạn có thể thêm nó từ Boards Manager.
2. Viết mã nguồn cơ bản cho ESP32
Tiếp theo, bạn sẽ viết mã nguồn cho ESP32. Mã nguồn này sẽ bao gồm các thư viện cần thiết và các biến cấu hình cho WiFi và server.
#include <WiFi.h>
const char* ssid = "YOUR_SSID"; // Thay YOUR_SSID bằng tên mạng WiFi của bạn
const char* password = "YOUR_PASSWORD"; // Thay YOUR_PASSWORD bằng mật khẩu mạng WiFi của bạn
const char* serverUrl = "https://maker.iotlabs.vn/ota/esp32-home-security_v1.2.0.bin"; // URL firmware
Trong đoạn mã trên, bạn cần thay thế YOUR_SSID và YOUR_PASSWORD bằng thông tin mạng WiFi của bạn. Server URL là địa chỉ nơi chứa firmware mà bạn muốn cập nhật.
3. Kết nối ESP32 với WiFi
Sau khi đã cấu hình thông tin WiFi, bạn cần viết mã để kết nối ESP32 với mạng WiFi. Dưới đây là đoạn mã để thực hiện điều này:
void setup() {
Serial.begin(115200);
delay(10);
// Kết nối tới WiFi
Serial.println();
Serial.print("Kết nối tới mạng WiFi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Đã kết nối tới mạng WiFi!");
Serial.print("Địa chỉ IP: ");
Serial.println(WiFi.localIP());
}
Trong hàm setup(), chúng ta khởi động Serial để có thể theo dõi trạng thái của thiết bị và thực hiện kết nối với WiFi. Nếu kết nối thành công, địa chỉ IP của thiết bị sẽ được in ra màn hình Serial.
4. Gửi dữ liệu lên server
Bây giờ, chúng ta sẽ viết mã để gửi dữ liệu lên server. Bạn có thể gửi một yêu cầu GET để kiểm tra xem thiết bị có thể kết nối với server hay không.
void loop() {
// Gửi yêu cầu GET đến server
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(serverUrl); // Khởi tạo HTTPClient với URL firmware
int httpResponseCode = http.GET(); // Gửi yêu cầu GET
if (httpResponseCode > 0) {
String response = http.getString(); // Nhận phản hồi từ server
Serial.println(httpResponseCode); // In mã phản hồi HTTP
Serial.println(response); // In dữ liệu nhận được
} else {
Serial.print("Lỗi: ");
Serial.println(httpResponseCode);
}
http.end(); // Kết thúc kết nối
} else {
Serial.println("Không có kết nối WiFi");
}
delay(10000); // Gửi yêu cầu mỗi 10 giây
}
Trong hàm loop(), chúng ta kiểm tra kết nối WiFi và gửi một yêu cầu GET đến server. Nếu yêu cầu thành công, chúng ta sẽ nhận được mã phản hồi và dữ liệu từ server, sau đó in chúng ra màn hình Serial.
5. Kiểm tra và thử nghiệm kết nối
Sau khi hoàn thành mã nguồn, bạn cần tải mã lên ESP32. Để làm điều này, hãy làm theo các bước sau:
- Kết nối ESP32 với máy tính thông qua cổng USB.
- Chọn đúng board và cổng COM trong Arduino IDE.
- Nhấn nút Upload để tải mã lên ESP32.
Sau khi tải lên hoàn tất, mở Serial Monitor để theo dõi thông tin. Bạn sẽ thấy thông báo kết nối WiFi thành công và địa chỉ IP của ESP32. Sau đó, thiết bị sẽ gửi yêu cầu đến server mỗi 10 giây.
Lưu ý: Đảm bảo rằng bạn đã kết nối ESP32 với mạng WiFi có internet và server URL là chính xác để có thể nhận dữ liệu từ server.
Với những bước này, bạn đã xây dựng thành công một ứng dụng cơ bản cho ESP32. Thiết bị hiện đã có khả năng kết nối với WiFi và gửi dữ liệu lên server. Trong phần tiếp theo, chúng ta sẽ tìm hiểu cách triển khai Cloud OTA để cập nhật firmware từ xa cho thiết bị này.
