#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
// Pines para el sensor ultrasónico
int Trig_pin = 5;
int Echo_pin = 18;
long duration;
float Speed_of_sound = 0.034;
float dist_in_cm;
// Pines del LED
int ledPin = 2;
// Información de red WiFi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// URL de la API de Thinger.io (DEBES SUSTITUIRLA POR LA CORRECTA)
String url = "https://backend.thinger.io/v3/users/Daleska/devices/esp_ultrasonico/callback/data";
// Token de autorización (DEBES SUSTITUIRLO POR TU TOKEN DE AUTORIZACIÓN)
String token = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJEZXZpY2VDYWxsYmFja19lc3BfdWx0cmFzb25pY28iLCJzdnIiOiJ1cy1lYXN0LmF3cy50aGluZ2VyLmlvIiwidXNyIjoiRGFsZXNrYSJ9.cWHkx0oY99Ojb3uHxzN2BGg1CAyAo57CM4FKMK0pkeM";
void setup() {
Serial.begin(115200);
// Configuración de pines del sensor ultrasónico y LED
pinMode(Trig_pin, OUTPUT);
pinMode(Echo_pin, INPUT);
pinMode(ledPin, OUTPUT);
// Conexión WiFi
Serial.print("Conectando a WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nConectado a WiFi");
digitalWrite(ledPin, HIGH); // Enciende el LED cuando se conecta a WiFi
}
void loop() {
// Generar el pulso para el sensor ultrasónico
digitalWrite(Trig_pin, LOW);
delayMicroseconds(2);
digitalWrite(Trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(Trig_pin, LOW);
// Leer la duración del eco
duration = pulseIn(Echo_pin, HIGH);
// Calcular la distancia en cm
dist_in_cm = duration * Speed_of_sound / 2;
Serial.print("Distancia en cm: ");
Serial.println(dist_in_cm);
// Crear el JSON con los datos de la distancia
StaticJsonDocument<200> doc;
doc["value"] = dist_in_cm;
String body;
serializeJson(doc, body);
// Enviar la petición POST a Thinger.io
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(url); // Inicia la conexión con la URL de la API
http.addHeader("Content-Type", "application/json");
http.addHeader("Authorization", token); // Agrega el token de autorización
int httpResponseCode = http.POST(body); // Enviar la solicitud POST
if (httpResponseCode > 0) {
String response = http.getString(); // Obtener la respuesta del servidor
Serial.println("Respuesta de Thinger.io: ");
Serial.println(response);
} else {
Serial.print("Error en la solicitud POST: ");
Serial.println(httpResponseCode);
}
http.end(); // Terminar la conexión
}
delay(1000); // Esperar 1 segundo entre cada lectura
}