#include <Arduino.h>
#include <ArduinoJson.h>
#include <HTTPClient.h>
#include <LiquidCrystal_I2C.h>
#include <time.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
HTTPClient client;
char timeStringBuff[20];
const int green = 2, red = 4;
#define trigPin 5
#define echoPin 18
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
void setup() {
Serial.begin(500);
configTime(-9000, -9000, "1.mx.pool.ntp.org");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
//Wait for connection
while (WiFi.status() != WL_CONNECTED){
delay(500);
}
client.begin("https://wokwi-m4-default-rtdb.firebaseio.com/Semana3.json");
client.addHeader("Content-Type", "application/json");
LCD.init();
LCD.backlight();
LCD.setCursor(0, 0);
LCD.print("Connecting to ");
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(green, OUTPUT);
pinMode(red, OUTPUT);
}
void loop() {
struct tm timeinfo;
if(!getLocalTime(&timeinfo)){
Serial.println("Time Error");
}
strftime(timeStringBuff, sizeof(timeStringBuff), "%d/%m/%Y %H:%M", &timeinfo);
String json;
StaticJsonDocument<200> doc;
long sure, mesafe;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
sure = pulseIn(echoPin, HIGH);
mesafe = (sure / 2) / 29.1;
if( mesafe > 200 || mesafe < 0){
LCD.clear();
LCD.setCursor(0, 0);
LCD.println("Distancia segura");
digitalWrite(green, HIGH);
delay(8000); // Wait for 1000 millisecond(s)
digitalWrite(green, LOW);
delay(1000); // Wait for 1000 millisecond(s)
doc["HC_SR04"] = mesafe;
doc["MENSAJE"] = "Distancia segura";
doc["LED"] = "Verde";
doc["TIME"] = String(timeStringBuff);
serializeJson(doc, json);
client.PATCH(json);
}else{
LCD.clear();
LCD.setCursor(0, 0);
LCD.print(mesafe);
LCD.println(" cm");
digitalWrite(red, HIGH);
delay(8000); // Wait for 1000 millisecond(s)
digitalWrite(red, LOW);
delay(1000); // Wait for 1000 millisecond(s)
doc["HC_SR04"] = mesafe;
doc["MENSAJE"] = "Distancia no segura";
doc["LED"] = "Rojo";
doc["TIME"] = String(timeStringBuff);
serializeJson(doc, json);
client.PATCH(json);
}
String payload = client.getString();
Serial.println(payload);
delay(500);
}
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL
led1:A
led1:C
led2:A
led2:C
r1:1
r1:2
r2:1
r2:2
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND