[ACTUALIZADO] Nodemcu + App Inventor + Firebase
Que tal queridos Arduineros, seguimos haciendo practicas con el maravilloso NODEMCU!!!
En esta ocasion haremos un pequeño sistema para monitorear 2 sensores conectados a la placa por medio de una aplicacion echa en APP INVENTOR y utilizaremos un servicio de Google de Base de Datos en tiempo real llamado FIREBASE, conforme pasa el post les dejare los enlaces necesarios para seguirla.
Cabe señalar que en este post no detallare la forma de usar el App Inventor solo comentare algunas cosas importantes. La verdad no soy ningun experto en el uso de esta plataforma, los conocimientos que tengo de ella son gracias a videotutoriales que sigo en el canal de un amigo MIRXTREM APPS en el cual habla detalladamente de el uso de App Inventor de una forma muy bien explicada, al final tambien dejare el enlace a su canal.
Bien vamos de lleno con la practica.
Materiales necesarios:
1 NODEMCU (yo en concreto uso la version 1.0).
1 LDR (fotoresistencia).
1 Resistencia de 220 ohms.
1 Sensor magnetico. (como este!)
Conexion WIFI.
Primero tenemos que ir a FIREBASE y loguearnos con una cuenta de gmail, en caso de no tenerla hay que crearla. Oprimimos el boton "Ira a la Consola".
Seguido de esto vamos a crear un proyecto nuevo oprimiendo "Add project"
En el cuadro que se despliega debemos elegir un nombre para nuestro proyecto y seleccionar la region en la que nos encontramos y oprimir el boton "Create Project".
Ahora tenemos que cambiar las "reglas" de la Base de Datos ya que por default estan restringidas a solo usuarios autenticados, pero para efectos de esta practica no es necesario que sea asi. Para esto entramos a la BD (Base de Datos) oprimiendo el boton correspondiente.
En la pestaña de reglas (rules) debemos cambiar lo que esta dentro de el recuadro negro por lo siguiente:
{ "rules": { ".read": "true", ".write": "true" } }
Al momento de cambiar las reglas tenemos que oprimir el boton "Publish" para que los cambios surtan efecto. En caso de que nos aparezca una leyenda advirtiendo que cualquiera podra leer y escribir en la BD solo damos clic al boton "Dismiss" y listo.
Hecho esto ya podemos leer y escribir en nuestra BD.
Por ultimo tenemos que copiar la URL de la BD para despues usarla en App Inventor y en el codigo de el Nodemcu, para esto regresamos a la pestaña "Data" y damos clic a la URL, copiamos con CTRL+C y pegamos en algun Archivo de texto para utilizarla posteriormente.
Listo, ya terminamos con la parte de Firebase, ahora continuemos con App Inventor.
Vamos a App Inventor siguiendo este ENLACE, igual que en Firebase tenemos que loguearnos con una cuenta de Google. Al momento de entrar nos mostrara la pantalla principal que es la de nuestros proyecto, damos clic a "Start new project"...
Y escribimos el nombre de nuestro proyecto, tener en cuenta que no acepta espacios ni simbolos especiales.
A continuacion dejare una tabla con los objetos que agregaremos y las propiedades que hay que modificar(las propiedades que no se mencionen se quedan tal como estan).
Hecho esto ya podemos leer y escribir en nuestra BD.
Por ultimo tenemos que copiar la URL de la BD para despues usarla en App Inventor y en el codigo de el Nodemcu, para esto regresamos a la pestaña "Data" y damos clic a la URL, copiamos con CTRL+C y pegamos en algun Archivo de texto para utilizarla posteriormente.
Listo, ya terminamos con la parte de Firebase, ahora continuemos con App Inventor.
Vamos a App Inventor siguiendo este ENLACE, igual que en Firebase tenemos que loguearnos con una cuenta de Google. Al momento de entrar nos mostrara la pantalla principal que es la de nuestros proyecto, damos clic a "Start new project"...
Y escribimos el nombre de nuestro proyecto, tener en cuenta que no acepta espacios ni simbolos especiales.
A continuacion dejare una tabla con los objetos que agregaremos y las propiedades que hay que modificar(las propiedades que no se mencionen se quedan tal como estan).
Objeto | Propiedades a modificar | Valor |
---|---|---|
Screen1 | AlignHorizontal | Center:3 |
AlignVertical | Center:2 | |
BackgroundColor | Black | |
Label1 | FontSize | 36 |
Text | Luminosidad | |
TextColor | White | |
Label2 | FontSize | 32 |
Text | % | |
TextColor | Cyan | |
Label3 | FontSize | 36 |
Text | Estado del Sensor | |
TextColor | White | |
Label4 | FontSize | 24 |
Text | Desactivado | |
TextColor | Orange | |
FirebaseDB1 | FirebaseToken | Se deja vacio |
FirebaseURL | Pegamos la URL de nuestra BD | |
ProjectBucket | Se deja vacio | |
Button1 | FontSize | 46 |
Height y Width | 100 pixeles | |
Shape | oval | |
Text | Se deja vacio |
Este sera el aspecto final de la App antes de ejecutarla en el dispositivo movil.
Diagrama de conexion.
Primero tenemos que descargarnos la libreria de Firebase, para eso pulsa sobre este ENLACE, una vez descargada la guardaremos en cualquier carpeta para despues ir al IDE de Arduino.
Abrimos el menu Programa - Incluir Libreria - Añadir librerias .ZIP...
Hecho esto nos abrira una ventana en donde tenemos que buscar el archivo .ZIP que descargamos anteriormente, lo seleccionamos y listo, ya tenemos agregada la libreria Firebase.
Para agregar la otra libreria (ESP8266WiFi.h), basta con seguir este sencillo TUTORIAL .
Seguido de esto vamos a agregar la placa Nodemcu para que aparezca en la lista de tarjetas del IDE de Arduino.
Vamos a el menu Archivo->Preferencias y veremos esta ventana:
En el cuadro te texto de la opción "Gestor de URLs Adicionales de Tarjetas" pondremos esta URL
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Damos clic en Ok, y vamos a el menu Herramientas->Placa->Gestor de Tarjetas.
Para llegar a la siguiente ventana en la cual vamos a escribir en el cuadro de búsqueda "ESP8266" e instalaremos la placa que nos aparezca(en mi caso ya la tengo instalada es por eso que el boton me sale des-habilitado).
Después de que termine de instalarse podemos cerrar la ventana e ir a el menú Herramientas->Placa y al desplazarnos hacia abajo veremos que ya tenemos disponibles las placas de la familia ESP.
Y LISTO!!!. Ahora solo resta cargar el codigo que dejo a continuacion explicado linea por linea, para que surja la "magia".
int LDR = A0; #include#include #define FIREBASE_HOST "nodemcu-5e733.firebaseio.com" //definimos el HOST al que se conectara el Nodemcu //debemos quitar el "https://" y el ultimo "/" de la URL #define WIFI_SSID "TU_WIFI" //Cambiar por el nombre de tu WIFI #define WIFI_PASSWORD "TU_PASSWORD" //Cambiar por el Password de tu WIFI void setup() { Serial.begin(9600); // conectamos el wifi. WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi Conectado!"); Firebase.begin(FIREBASE_HOST); //inicializamos la comunicacion con firebase pinMode(4, INPUT_PULLUP); //declaramos el pin de el Sensor como una entrada } void loop() { int luz = analogRead(A0); //Guardamos el valor de la LDR en la variable luz Firebase.setInt("luz", luz); //Mandamos el valor de la variable Luz a firebase como un entero. //Con este if decimos que si el sensor se activa nos mande un "1" a Firebase y si no nos mande un "0" if (digitalRead(4) == 0) { Firebase.setInt("Sensor", 0); } else { Firebase.setInt("Sensor", 1); } delay(500); }
Abrimos el monitor serial y si todo ha salido bien veremos algo como esto:
Cuando se nos muestre "WiFi Conectado!" iremos a la consola de Firebase en la pestaña de Database y veremos algunos cambios.
Esto nos indica que ya hay comunicacion entre el Nodemcu y Firebase, ahora vamos a la aplicacion que emularemos en nuestro dispositivo por medio del "Companion" de App Inventor y veremos tambien los cambios.
Hasta aqui llega este post. Espero sea de su agrado y si tienen alguna duda comentenla para poder resolverla juntos.
Les dejo tambien el Videotutorial!!!
Descargas...
Proyecto App Inventor
Codigo Nodemcu
Companion APK
Libreria Firebase ACTUALIZADA.