#define ERA_LOCATION_VN
#define ERA_AUTH_TOKEN "0cc98a91-f6fd-428c-bfcc-d8202aae0ceb"
#include <Arduino.h>
#include <ERaSimpleEsp32.hpp>
#include <DHT.h>
#include<Buzzer.h>
#define led1 27 // chân led cảnh báo
#define DHTPIN 22 // Chân DATA của DHT22 nối với GPIO15
#define DHTTYPE DHT22 // Loại cảm biến: DHT22
#define buzzerPin 23 // chân của còi
DHT dht(DHTPIN, DHTTYPE);
//thiết lập wifi
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
/* hàm này sẽ chạy mỗi khi ERa được kêt nối*/
ERA_CONNECTED() {
ERA_LOG("ERa", "ERa connected!");
}
/* hàm này sẽ chạy mỗi khi ERa ngắt kêt nối */
ERA_DISCONNECTED() {
ERA_LOG("ERa", "ERa disconnected!");
}
/* cập nhật các sự kiện */
void timerEvent() {
ERA_LOG("Timer", "Uptime: %d", ERaMillis() / 1000L);
senddata();
}
// gửi data từ cảm biến DHT22 qua các chân ảo cho lên ERa
void senddata() {
float humidity = dht.readHumidity();// độ ẩm
float temperature = dht.readTemperature();// nhiệt độ
// Check if the readings are valid
if (isnan(humidity) || isnan(temperature)) {
ERA_LOG(ERA_PSTR("DHT"), ERA_PSTR("Failed to read from DHT sensor!"));
return;
}
if (temperature >= 50) { // kiểm tra xem nhiệt độ có quá 50 độ hay không
tone(buzzerPin, 1000); // Còi kêu
while (temperature >= 50) {
digitalWrite(led1, HIGH); // cho led nhấy nháy để cảnh báo
delay(500);
digitalWrite(led1, LOW);
delay(500);
// Cập nhật lại giá trị nhiệt độ
temperature = dht.readTemperature();
}
noTone(buzzerPin); // Dừng còi khi thoát vòng lặp
digitalWrite(led1, LOW); // Tắt LED
}
ERa.virtualWrite(V3, humidity); // gửi dữ liệu độ ẩm đến chân V3
ERa.virtualWrite(V5, int(temperature)); // gửi dữ liệu nhiệt độ đến chân V5
// Ghi lại các số đọc
ERA_LOG(ERA_PSTR("DHT"), ERA_PSTR("Humidity: %.2f%% Temperature: %.2f°C"), humidity, temperature);
}
void setup() {
/* Thiết lập bảng điều khiển gỡ lỗi */
Serial.begin(115200);
ERa.begin(ssid, pass);
/* Thiết lập bộ đếm thời gian gọi hàm mỗi giây */
ERa.addInterval(1000L, timerEvent);
}
void loop() {
ERa.run(); //chạy Era
delay(10);
}