#include <WiFi.h>
//Nhập tên và mật khẩu wifi
const char* ssid = "Wokwi-GUEST";
const char* pass = "";
void setup() {
//Khởi tạo cổng giao tiếp
Serial.begin(115200);
delay(10);
Serial.println();
//Thiết lập kết nối wifi
WiFi.mode(WIFI_STA);
if(WiFi.status() != WL_CONNECTED){
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
while(WiFi.status() != WL_CONNECTED){
WiFi.begin(ssid, pass);
Serial.print(".");
delay(5000);
}
Serial.println("\nConnected.");
}
}
void sendDataToThingSpeak(float value1, float value2, float value3, float value4) {
if (WiFi.status() == WL_CONNECTED) {
const char* server = "api.thingspeak.com";
String data = "api_key=BSGUBE7WZ44YEFRZ";
data += "&field1=" + String(value1);
data += "&field2=" + String(value2);
data += "&field3=" + String(value3);
data += "&field4=" + String(value4);
WiFiClient client;
if (client.connect(server, 80)) {
//Gửi dữ liệu lên thingspeak bằng HTTP POST
client.println("POST /update HTTP/1.1");
client.println("Host: api.thingspeak.com");
client.println("Connection: close");
client.println("Content-Type: application/x-www-form-urlencoded");
client.print("Content-Length: ");
client.println(data.length());
client.println();
client.print(data);
int timeout = 5000;
while (client.available() == 0 && timeout > 0) {
delay(100);
timeout -= 100;
}
while (client.available()) {
Serial.write(client.read());
}
//Hiển thị giá trị dữ liệu lên Serial Monitor
Serial.print("Giá trị pH: ");
Serial.print(value1);
Serial.print(" pH, Giá trị COD: ");
Serial.print(value2);
Serial.print(" COD, Giá trị NH4: ");
Serial.print(value3);
Serial.print(" NH4, Giá trị TSS: ");
Serial.print(value4);
Serial.println("TSS. Send to Thingspeak.");
client.stop();
}
}
}
void loop() {
//mô phỏng dữ liệu bằng random
float data1 = random(25,40);
float data2 = random(40,70);
float data3 = random(1,14);
float data4 = random(20,70);
//gọi hàm gửi dữ liệu lên thingspeak
sendDataToThingSpeak(data1, data2, data3, data4);
// Thingspeak cập nhật dữ liệu sau mỗi 15s nên để 20s để gửi dữ liệu lên
delay(20000);
}