|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  Raspberry Pi Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  AutoIt (Programación) Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

Tutorial del Internet de las Cosas y Bluetooth con el ESP32
Juan Antonio Villalpando

Volver al índice del tutorial

____________________________

117.- ESP32. FirebaseDB y App Inventor.

https://community.appinventor.mit.edu/t/esp32-mqtt-broker-publish-subscribe-thingspeak/10490

- En el tutorial anterior vimos cómo podiamos cambiar los valores casi en tiempo real mediante el protocolo MQTT y varios Brokers.

- Ahora vamos a crear una aplicación con App Inventor y FirebaseDB. Cuando cambie algún valor, casi automáticamente, sin necesidad de refrescar llegará al cliente.

- En el ESP32 pondremos un código que generará un número aleatorio cada 3 segundos, enviará ese número a FireBaseDB y de ahí a App Inventor, de manera que veremos cómo ese número cambia su valor según vaya llegando a la aplicación.

- Además desde App Inventor podremos enviar un número y un texto a FireBaseDB, de ahí llegará a ESP32 y lo podremos visualizar en el Monitor Serie.

_________________________________________________________

- Registro de FireBaseDB y creación de la base de datos.

- Previamente debemos registrarnos en FireBaseDB y crear una base de datos.

https://firebase.google.com/

-

- Database. Crear base de datos.

- Empezar con el modo de prueba.

- Nos situamos en Realtime Database. Esta es nuestra base de datos.
- Observa la dirección: https://kio4-3c240.firebaseio.com/ la necesitaremos en el código del ESP32.

- Más adelante entraremos en esta pantalla para ver los datos almacenados.

- Nos situamos en Realtime Database. Reglas y ponemos read y write en true. Pulsamos en Publicar.

- Vamos a obtener el código Secreto de la base de datos.

- Aquí tenemos el código secreto de la base de datos que necesitaremos para el ESP32.

_________________________________

- Código del ESP32.

- Instalamos la librería Firebase ESP32 Client.

https://github.com/mobizt/Firebase-ESP32/blob/master/src/FirebaseESP32.h

http://www.lib4dev.in/info/mobizt/Firebase-ESP32/144101498

aleatorios.ino


// Juan A. Villalpando
// http://kio4.com/arduino/117_Wemos_Firebase.htm

#include <FirebaseESP32.h>
#include <WiFi.h>
FirebaseData firebaseData;

const char* ssid = "Nombre_de_tu_Red_Wifi";
const char* password = "Clave_Red_Wifi";

String numero = "";
String texto = "";

unsigned long tiempo_actual = 0;

void setup() {
  Serial.begin(115200);
  delay(10);
  Serial.println();
  Serial.print("Connecting with ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
  }
  
  Serial.println("");
  Serial.print("WiFi conected. IP: ");
  Serial.println(WiFi.localIP());

  Firebase.begin("https://kio4b-3c240.firebaseio.com/", "1lzi12VLgSecreto_de_la_base_de_datos");
}


void loop() {
  if (Firebase.getString(firebaseData, "/ESP32/numero")) {
      String numero_fb = firebaseData.stringData();
      if (numero_fb != numero) {
        numero = numero_fb;
        Serial.println(numero);
      }
    }

    if (Firebase.getString(firebaseData, "/ESP32/texto")) {
      String texto_fb = firebaseData.stringData();
      if (texto_fb != texto) {
        texto = texto_fb;
        Serial.println(texto);
      }
    }

// Send a random number every 3 seconds.
    if((millis()-tiempo_actual)>= 3000){
          String alea = (String) random(0,100);
          tiempo_actual = millis();
          Serial.println(alea);
          Firebase.setString(firebaseData, "/ESP32/aleatorio", alea);
    }
  
}

__________________________________________________

1.- App Inventor. App envía número y texto. Recibe aleatorio.

p117_wemos_firebase.aia

__________________________________________

- Diseño.

- En FirebaseURL, debemos poner la dirección de la base de datos, en mi caso:

https://kio4-3c240.firebaseio.com/

- En ProjectBucket, cualquier nombre, por ejemplo ESP32.

____________________________________________

- Bloques.

_________________________________________________

- Resultado.

__________________________________________________
__________________________________________________

2.- App Inventor enciende/apaga LED12 y LED14 en ESP32 mediante Firebase.

p117_firebase_led.aia

____________________________________________

- Diseño.

- FirebaseURL: https://kio4-3c240.firebaseio.com/

- ProjectBucket: ESP32

____________________________________________

- Bloques.

____________________________________________

- Código ESP32.

firebase_led.ino


// Juan A. Villalpando
// http://kio4.com/arduino/117_Wemos_Firebase.htm

#include <FirebaseESP32.h>
#include <WiFi.h>
FirebaseData firebaseData;

const char* ssid = "Nombre_de_tu_Red_Wifi";
const char* password = "Clave_Wifi";

#define LED12 12
#define LED14 14

String message12 = "";
String message14 = "";

void setup() {
  pinMode(LED12, OUTPUT);
  pinMode(LED14, OUTPUT);
  Serial.begin(115200);
  delay(10);
  Serial.println();
  Serial.print("Connecting with ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
  }
  
  Serial.println("");
  Serial.print("WiFi conected. IP: ");
  Serial.println(WiFi.localIP());

  Firebase.begin("https://kio4-3c240.firebaseio.com/", "1lzi12VLgSecreto_de_la_base_de_datos");
}

void loop() {
  if (Firebase.getString(firebaseData, "/ESP32/LED12")) {
      String message12_fb = firebaseData.stringData();
      if (message12_fb != message12) {
        message12 = message12_fb;
        Serial.println(message12);
        if(message12.indexOf("Set LED12 ON") != -1){digitalWrite(LED12, HIGH);}
        if(message12.indexOf("Set LED12 OFF") != -1){digitalWrite(LED12, LOW);}
      }
    }

  if (Firebase.getString(firebaseData, "/ESP32/LED14")) {
      String message14_fb = firebaseData.stringData();
      if (message14_fb != message14) {
        message14 = message14_fb;
        Serial.println(message14);
        if(message14.indexOf("Set LED14 ON") != -1){digitalWrite(LED14, HIGH);}
        if(message14.indexOf("Set LED14 OFF") != -1){digitalWrite(LED14, LOW);}
      }
    }

}

__________________________________________________
__________________________________________________

3.- ESP32 envía el estado de dos pulsadores a App Inventor mediante Firebase.

p117_firebase_pulsador.aia

____________________________________________

- Diseño.

____________________________________________

- Bloques.

____________________________________________

- Código ESP32.

firebase_pulsadores.ino


// Juan A. Villalpando
// http://kio4.com/arduino/117_Wemos_Firebase.htm

#include <FirebaseESP32.h>
#include <WiFi.h>
FirebaseData firebaseData;

const char* ssid = "Nombre_de_tu_Red_Wifi";
const char* password = "Clave_Red_Wifi";

#define LED12 12
#define LED14 14
#define Pulsa16 16
#define Pulsa17 17

String message12 = "";
String message14 = "";
String message16 = "";
String message17 = "";
boolean P16;
boolean P17;
boolean P16_old;
boolean P17_old;

void setup() {
  pinMode(LED12, OUTPUT);
  pinMode(LED14, OUTPUT);

  pinMode(Pulsa16, INPUT_PULLUP); // Pin16 and Gnd.
  pinMode(Pulsa17, INPUT_PULLUP); // Pin17 and Gnd.
  Serial.begin(115200);
  delay(10);
  Serial.println();
  Serial.print("Connecting with ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
  }
  
  Serial.println("");
  Serial.print("WiFi conected. IP: ");
  Serial.println(WiFi.localIP());

  Firebase.begin("https://kio4-3c240.firebaseio.com/", "1lzi12VLgSecreto_de_la_base_de_datos");
}

void loop() {
  if (Firebase.getString(firebaseData, "/ESP32/LED12")) {
      String message12_fb = firebaseData.stringData();
      if (message12_fb != message12) {
        message12 = message12_fb;
        Serial.println(message12);
        if(message12.indexOf("Set LED12 ON") != -1){digitalWrite(LED12, HIGH);}
        if(message12.indexOf("Set LED12 OFF") != -1){digitalWrite(LED12, LOW);}
      }
    }

  if (Firebase.getString(firebaseData, "/ESP32/LED14")) {
      String message14_fb = firebaseData.stringData();
      if (message14_fb != message14) {
        message14 = message14_fb;
        Serial.println(message14);
        if(message14.indexOf("Set LED14 ON") != -1){digitalWrite(LED14, HIGH);}
        if(message14.indexOf("Set LED14 OFF") != -1){digitalWrite(LED14, LOW);}
      }
    }

// Send messages PushButtons
    P16 = digitalRead(Pulsa16);
    if (P16 != P16_old) {
      P16_old = P16;
      if (P16 == HIGH){message16 = "'NO Pulsado 16'";} else {message16 = "'Pulsado 16'";}
      Serial.println(message16);
      Firebase.setString(firebaseData, "/ESP32/P16", message16);
    }

    P17 = digitalRead(Pulsa17);
    if (P17 != P17_old) {
      P17_old = P17;
      if (P17 == HIGH){message17 = "'NO Pulsado 17'";} else {message17 = "'Pulsado 17'";}
      Serial.println(message17);
      Firebase.setString(firebaseData, "/ESP32/P17", message17);
    }
   
}

_______________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información