sábado, 26 de octubre de 2024

No 10 Envio de Datos a Firebase Realtime Database por internet Tutorial...




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("---------------");
  }
}

domingo, 20 de octubre de 2024

No9 monitoreo de datos en internet con plataformas IOT y esp32 - ThingS...

codigo
// Importamos las librerías necesarias
#include <WiFi.h>           // Librería para la conexión WiFi en ESP32
#include "ThingSpeak.h"     // Librería para conectarnos a ThingSpeak

// Configuración de la conexión WiFi
const char* ssid = "el nombre de tu red wifi";         // Nombre de tu red WiFi
const char* password = "tu clave";   // Contraseña de tu red WiFi

// Configuración de ThingSpeak, copiar los datos de la página
unsigned long myChannelNumber = 123456;   // Reemplaza con tu número de canal en ThingSpeak
const char* myWriteAPIKey = "copia y pega tu clave write manten las comillas"; // Reemplaza con tu API Write Key de ThingSpeak

// Variables para manejar la conexión
WiFiClient client;          // Cliente para la conexión WiFi

// Pin analógico del ESP32 que queremos leer (puedes usar cualquier otro pin analógico disponible)
const int Pinadc = 34;   // En este ejemplo, usamos el pin GPIO 34 del ESP32

// Tiempo de espera entre envíos de datos (15 segundos como mínimo por restricciones de ThingSpeak)
unsigned long Tiempo_inicio = 0;  // Inicializamos el tiempo inicial
unsigned long Tiempo_final = 15000;     // 15000 ms = 15 segundos

void setup() {
  // Inicializamos la comunicación serial para depuración
  Serial.begin(115200); // Velocidad del puerto serial

  // Configuramos el pin como entrada analógica
  pinMode(Pinadc, INPUT);

  // Conectamos a la red WiFi
  WiFi.begin(ssid, password); // Inicia la conexión a la red WiFi
  Serial.print("Conectando a WiFi...");
  
  while (WiFi.status() != WL_CONNECTED) {
    // Esperamos hasta que se establezca la conexión
    delay(1000);
    Serial.print(".");
  }

  // Imprimimos la dirección IP obtenida
  Serial.println("Conectado a la red WiFi.");
  Serial.println("Dirección IP: ");
  Serial.println(WiFi.localIP());

  // Inicializamos ThingSpeak con el cliente WiFi
  ThingSpeak.begin(client); // Inicializamos la comunicación con ThingSpeak
  delay(2000);
}

void loop() {
  // Verificamos si ha pasado el tiempo suficiente desde el último envío
  if (millis() - Tiempo_inicio >= Tiempo_final) {
    // Leemos el valor analógico desde el pin configurado
    int bits = analogRead(Pinadc); // Leemos el valor desde el pin

    // Calculamos el voltaje correctamente
    float voltaje = (float(bits) / 4095.0) * 3.3;  // Corrección del cálculo del voltaje

    // Mostramos el valor leído en la consola serial
    Serial.print("Valor voltaje leído: ");
    Serial.println(voltaje);

    // Enviamos los datos a ThingSpeak
    ThingSpeak.setField(1, voltaje); // Configuramos el valor leído en el campo 1 del canal

    // Intentamos enviar los datos a ThingSpeak
    int estado_codigo = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); 

    // Verificamos el código de estado
    if (estado_codigo == 200) {
      // Si los datos se envían correctamente, lo indicamos en la consola serial
      Serial.println("Datos enviados a ThingSpeak con éxito.");
    } else {
      // Si hubo un error, mostramos el código de error
      Serial.print("Error al enviar los datos. Código de error: ");
      Serial.println(estado_codigo);
    }

    // Actualizamos el tiempo de la última actualización correctamente
    Tiempo_inicio = millis();  // Actualizamos el tiempo inicial correctamente
  }
}


sábado, 22 de junio de 2024

✅¿Quieres aprender electronica ?cursos recomendados de electronica digit...

#smartelectronics #cursodeelectronica los que se incriban por medio del link se les dara un curso GRATIS, debe especificar que biene de parte de EDITRONIKX ✅https://bit.ly/EditronikxCuponCursoGratuito ✅https://www.facebook.com/mmjembebidos1 hoy te traigo un sitio web recomendado donde podras aprender electronica o profundizar en diseño electronico con herramientas profesionales, hay una gran cantidad de cursos cursos de : 🔥IOT con arduino y esp32 🔥IOT con microcontroladores 🔥lavbiew 🔥diseño de pcb con altium designer 🔥electronica digital y analogica Conviértete en miembro de este canal para disfrutar de ventajas: https://www.youtube.com/channel/UCUJ6BMwZFHTnBozdGONtIhA/join ✅🔴 grupo telegram:. https://t.me/editronikx ✅🔴 grupo de whatsapp : https://chat.whatsapp.com/LLMu0bR73gp8EeeUIqOQ2w llena el formulario y recibe obsequios y entérate de cursos y videos publicados semanalmente via email ✅https://forms.gle/Vc8BMCRiMDW8Ryok7