#include <LiquidCrystal_I2C.h>
#include "DHTesp.h"
#include <WiFi.h>
#include <HTTPClient.h>
#define DHT_PIN 15
#define LED_PIN 32
DHTesp dhtSensor;
LiquidCrystal_I2C lcd(0x27, 16, 2);
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* serverUrl = "https://postman-echo.com/post";
/*const char* serverUrl = "https://postman-echo.com/get";*/
void setup() {
Serial.begin(9600);
Serial.println("ESP32 collecting sensor data");
lcd.init();
lcd.backlight();
lcd.setCursor(1, 0);
lcd.print("ESP32 collecting data ...");
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
connectToWiFi();
delay(1000);
}
void loop() {
lcd.clear();
TempAndHumidity data = dhtSensor.getTempAndHumidity();
int temp = data.temperature;
int humid = data.humidity;
String stemp = String(temp) + "C";
String shumid = String(humid) + "%";
lcd.setCursor(0, 0);
lcd.print("Temp: " + stemp);
lcd.setCursor(0, 1);
lcd.print("Humidity: " + shumid);
sendDataToServer(temp, humid);
delay(2000);
}
void connectToWiFi() {
Serial.println("Connecting to WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
/*--------------------------------------------------------
Gửi dữ liệu HTTP get request, dữ liệu đóng gói url-encoded
----------------------------------------------------------*/
/*void sendDataToServer(int temp, int humid) {
if(WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String url = String(serverUrl);
http.begin(url);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
int httpCode = http.GET();
if (httpCode > 0) {
Serial.print("HTTP GET status code: ");
Serial.println(httpCode);
} else {
Serial.print("HTTP GET request failed, error code: ");
Serial.println(httpCode);
}
http.end();
} else {
Serial.println("Error: Not connected to WiFi");
}
}*/
/*--------------------------------------------------------
Gửi dữ liệu HTTP post request, dữ liệu đóng gói url-encoded
----------------------------------------------------------*/
/*void sendDataToServer(int temp, int humid) {
if(WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String url = String(serverUrl);
http.begin(url);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
String postData = "temperature=" + String(temp) + "&humidity=" + String(humid);
int httpCode = http.POST(postData);
if (httpCode > 0) {
Serial.print("HTTP POST status code: ");
Serial.println(httpCode);
} else {
Serial.print("HTTP POST request failed, error code: ");
Serial.println(httpCode);
}
http.end();
} else {
Serial.println("Error: Not connected to WiFi");
}
}*/
/*--------------------------------------------------------
Gửi dữ liệu HTTP post request, dữ liệu đóng gói json (trong request body)
----------------------------------------------------------*/
void sendDataToServer(int temp, int humid) {
if(WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String url = String(serverUrl);
http.begin(url);
http.addHeader("Content-Type", "application/json");
String postData = "{\"temperature\": " + String(temp) + ", \"humidity\": " + String(humid) + "}";
int httpCode = http.POST(postData);
if (httpCode > 0) {
Serial.print("HTTP POST status code: ");
Serial.println(httpCode);
String response = http.getString();
Serial.println("Server Response: ");
Serial.println(response);
} else {
Serial.print("HTTP POST request failed, error code: ");
Serial.println(httpCode);
}
http.end();
} else {
Serial.println("Error: Not connected to WiFi");
}
}