codigo
// Proyecto basado en: https://randomnerdtutorials.com/esp32-firebase-realtime-database/
// Adaptado por Mg.ing Edison V, www.editronikx.com.co, 2024
#if defined(ESP32)
#include <WiFi.h>
#elif defined(ESP8266)
#include <ESP8266WiFi.h>
#endif
#include <Firebase_ESP_Client.h>
// Insertar credenciales de red
#define WIFI_SSID "el nombre de su red wifi"
#define WIFI_PASSWORD "su clave"en
// Proporcionar la informacion del proceso de generacion del token.
#include "addons/TokenHelper.h"
// Proporcionar la informacion de impresion de la carga util de RTDB y otras funciones de ayuda.
#include "addons/RTDBHelper.h"
// Definir el pin digital del LED integrado
#define LED 2
// Insertar la API Key del proyecto Firebase
#define API_KEY " su clave api"
// Insertar la URL de la base de datos RTDB
#define DATABASE_URL "su URL de firebse/"
// Definir objeto de datos de Firebase
FirebaseData fbdo;
// Definir autenticacion de Firebase
FirebaseAuth auth;
// Definir configuracion de Firebase
FirebaseConfig config;
// Variable millis para enviar/almacenar datos en la base de datos Firebase
unsigned long sendDataPrevMillis = 0;
const long timerDelay = 5000; // Enviar/almacenar datos en la base de datos cada 5 segundos
// Variable booleana para el estado de registro
bool signupOK = false;
const int Pinadc = 34;
void setup() {
Serial.begin(115200);
pinMode(LED, OUTPUT);
pinMode(Pinadc, INPUT);
// Conectar a la red WiFi
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.println("-------Conectando a wifi------");
Serial.print("Conectando a: ");
Serial.println(WIFI_SSID);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
digitalWrite(LED, HIGH);
delay(250);
digitalWrite(LED, LOW);
delay(250);
}
digitalWrite(LED, LOW);
Serial.println();
// Verificar si la conexión fue exitosa
if (WiFi.status() != WL_CONNECTED) {
Serial.println("No se pudo conectar al WiFi.");
} else {
Serial.println(" Conectado a WiFi. Dirección IP: ");
Serial.println(WIFI_SSID);
Serial.print("IP asignada: ");
Serial.println(WiFi.localIP()); // Imprimir la dirección IP obtenida
Serial.println("---------------");
}
// Asignar la API Key (requerido)
config.api_key = API_KEY;
// Asignar la URL de la base de datos RTDB (requerido)
config.database_url = DATABASE_URL;
// Registrarse en Firebase
Serial.println();
Serial.println("--Registrandose ----");
Serial.print("Nuevo usuario... ");
if (Firebase.signUp(&config, &auth, "", "")) {
Serial.println("ok");
signupOK = true;
} else {
Serial.printf("%s\n", config.signer.signupError.message.c_str());
}
Serial.println("---------------");
// Asignar la funcion de callback para el estado del token
config.token_status_callback = tokenStatusCallback;
Firebase.begin(&config, &auth);
Firebase.reconnectWiFi(true);
}
void loop() {
// Enviar datos a Firebase si esta listo, registrado y ha pasado el tiempo especificado
if (Firebase.ready() && signupOK && (millis() - sendDataPrevMillis > timerDelay || sendDataPrevMillis == 0)) {
sendDataPrevMillis = millis();
int bits = analogRead(Pinadc); // Leer el valor analogico (0-4096)
// Convertir el valor ADC (0-4096) a un valor de voltaje para enviar
float voltaje = (bits / 4096.0) * 3.3; // Asumiendo un voltaje de referencia de 3.3V
Serial.println();
Serial.println("-------Bits enteros:------");
Serial.print("Bits enteros : ");
Serial.println(bits);
Serial.println();
Serial.println("-------Voltaje:------");
Serial.print("Voltaje : ");
Serial.println(voltaje);
// Almacenar datos en la base de datos Firebase
Serial.println();
Serial.println("---------------Almacenando Datos");
digitalWrite(LED, HIGH);
// Escribir un valor de voltaje tipo float en la base de datos
if (Firebase.RTDB.setFloat(&fbdo, "voltaje", voltaje)) {
Serial.println("PASSED");
Serial.println("PATH: " + fbdo.dataPath());
Serial.println("TYPE: " + fbdo.dataType());
} else {
Serial.println("FAILED");
Serial.println("REASON: " + fbdo.errorReason());
}
// Escribir un valor de bits tipo int en la base de datos
if (Firebase.RTDB.setInt(&fbdo, "bits_enteros", bits)) {
Serial.println("PASSED");
Serial.println("PATH: " + fbdo.dataPath());
Serial.println("TYPE: " + fbdo.dataType());
} else {
Serial.println("FAILED");
Serial.println("REASON: " + fbdo.errorReason());
}
digitalWrite(LED, LOW);
Serial.println("---------------");
}
}
No hay comentarios:
Publicar un comentario