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.
Felicidades! muy bueno, aplica con arduino uno?
ResponderBorrarGracias bro, Si aplica. Arduino UNO y un Etherneth Shield o el Esp8266-1
BorrarHola, yo he tratado de hacer un programa parecido con el Arduino Uno y el Ethernet Shield pero cuando trato de compilar me aparece el error no such file or directory y para probar cambié la placa en la ide por una 8266 genérica y la compila sin problema alguno, estás seguro de que el firebase funciona con la placa de Arduino Uno ? Ya lo has probado ? Gracias de antemano y espero tu respuesta
BorrarHola, si funciona con arduino uno y el esp8266-01, ya que se utiliza la misma libreria para firebase, con el ethernet shield no he visto nada
BorrarHola te felicioto por este tutorial, esta muy bueno... lastima que ha mi no me conecto nada con nada.... pero la sola idea de saber que se pueden hacer cosas como estas ya para mi es suficiente... LO FELICITO
ResponderBorrarGracias.
BorrarSi pudieras detallar el problema con gusto lo resolvemos.
Buenas tardes, de nuevo retome este proyecto, ya entiendo un poco mas acerca del tema. ya la base de datos me reconoce el sensor de luz, pero el magnetico (INPUT_PULLUP) no. pero de todas formas gracias por compartir su conocimiento y tiempo con nosotros
BorrarSaludos, he seguido al pie de la letra las indicaciones, en cuanto al sketch de arduino, loguearme en mi Wifi local, pero la pagina de DATOS del FIREBASE no tiene comunicación con el NODEMCU y no adquiere ningún dato. No entiendo cual es el problema.
ResponderBorrarFijate en las reglas... Tienen que ser Read: true y Write: true sin comillas
BorrarHe encontrado la solución después de mucho buscar... está solucionada en https://forum.arduino.cc/index.php?topic=495817.0
ResponderBorrar;-)
buenas, a mi no me aparecieron los cambios en firebase despues de que apareciera contectado, y la app de companion no funciona al 100, que puede ser?
ResponderBorrarHola, gracias por comentar!!
BorrarEl problema es que la libreria de Firebase que subi al momento de hacer el post ya esta desactualizada.
Acabo de actualizar el link que podras encontrar al final del post.
Y respecto a lo del companion te recomiendo bajarlo directo del PlayStore ya que tambien hace poco tuvo una actualizacion.
Saludos!!
hola he actualizado la libreria firebaseArduino.h pero no hay respuesta no conecta NODEMCU con FIREBASE
ResponderBorrarHola
BorrarPuedes compartir el codigo para descartar problemas
Para los que no le conecta el DataBase. Lo que tiene que hacer es actualizar la linea de codigo de la libreira FirebaseHttpClient.h, por este:
Borrarstatic const char kFirebaseFingerprint[] = "B8 4F 40 70 0C 63 90 E0 07 E8 7D BD B4 11 D0 4A EA 9C 90 F6";
Al parecer hubo cambios en Firebase.
Para los que no le conecta el DataBase. Lo que tiene que hacer es actualizar la linea de codigo de la libreira FirebaseHttpClient.h, por este:
ResponderBorrarstatic const char kFirebaseFingerprint[] = "B8 4F 40 70 0C 63 90 E0 07 E8 7D BD B4 11 D0 4A EA 9C 90 F6";
Al parecer hubo cambios en Firebase.
Buenas, tengo un problema a la hora de conectar el arduino y es que me da un error:
ResponderBorrarwarning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed
Me podrías decir a qué se debe?
Un saludo
Hola. Gracias por comentar.
BorrarEse error parece de comunicacion con la placa.
Si tienes los drivers instalados?
Excelente tu vídeo y toda tu información, te felicito, a ese código que subiste como le puedo agregar un botón de encendido y apagado para un led, espero y me puedas apoyar
ResponderBorrarsaludos
Hola. Gracias por comentar!!
BorrarEn el lado de App Inventor hay un bloque de firebase que se llama store value. Es cuestion de que agregues un boton que sl hacer click guarde un valor en firebase con este bloque. Del lado de Arduino la libreria tiene la instruccion getInt o getString, esta sirve para leer un valor de firebase.
Esto lo metes dentro del loop y que cads cierto tiempo este checando el dato. Y ahi programas lo que quieras como encender el led.
Saludos!!
Conseguí solucionar mi error. Ahora estoy probando a usar un sensor de vibración sw-420 nc en vez del sensor de iluminación. Pero el sensor me falla y siempre me marca 0. Estoy usando el código:
ResponderBorrarint ledPin = 13;
int EP =2;
void setup(){
pinMode(ledPin, OUTPUT);
pinMode(EP, INPUT);
Serial.begin(9600);
}
void loop(){
long measurement =TP_init();
delay(50);
Serial.println(measurement);
if (measurement > 1000){
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(ledPin, LOW);
}
}
long TP_init(){
delay(10);
long measurement=pulseIn (EP, HIGH);
return measurement;
}
Me podrías ayudar a solucionarlo?
Un saludo
ME FUNCIONA A LA PERFECCION, EXELENTE APORTE PARA MIS PROYECTOS FELICITACIONES Y GRACIAS X COMPARTIR..!!!
ResponderBorrarGracias por comentar
BorrarEste comentario ha sido eliminado por el autor.
ResponderBorrarWiFi Conectado! ok ama fakat frebase baglantı yok hata
ResponderBorrarHola buenas tardes!!! Hay que cambiar el "FirebaseToken" dentro de app inventor para que enlace con firebase??? Saludos
ResponderBorrarhola buenos dias un saludo muy especial y primero darte las gracias por tomarte el tiempo para realizar estos tutoriales tan completos
ResponderBorrarquiciera hacerte una pregunta estoy utilizando el esp32 y me envia este error
Arduino:1.8.7 (Windows 10), Tarjeta:"ESP32 Dev Module, Disabled, Default, QIO, 80MHz, 4MB (32Mb), 115200, None"
C:\Users\User\Documents\Arduino\hardware\espressif\esp32\libraries\firebase-arduino-master\src\FirebaseHttpClient_Esp8266.cpp:8:25: fatal error: ESP8266WiFi.h: No such file or directory
Se encontraron múltiples librerías para "WiFi.h"
compilation terminated.
Usado: C:\Users\User\Documents\Arduino\hardware\espressif\esp32\libraries\WiFi
No usado: C:\Program Files\Arduino\libraries\WiFi
exit status 1
Error compilando para la tarjeta ESP32 Dev Module.
Este reporte podría tener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.
cualquier información te lo agradecería
att: fernando sanchez
fernandosanchez248@outlook.es
Buen Día, encontraste la solución a este problema? tengo el mismo error. Gracias.
BorrarExcelente tutorial felicidades, ayuda por favor, si quisiera unsae mi NodeMCU con 2 pulsadores, firebase y app inventor, como mandaría un string o(Me llamo NodeMCU) y el otro botón un (bienvenido), con y sin firebase? Te agradecería mucho
ResponderBorrarExcelente tutorial felicidades, ayuda por favor, si quisiera unsae mi NodeMCU con 2 pulsadores, firebase y app inventor, como mandaría un string o(Me llamo NodeMCU) y el otro botón un (bienvenido), con y sin firebase? Te agradecería mucho
ResponderBorrarMuy buen aporte, tengo un problema cuando cargo el programa a la tarjeta nodemcu me aparece el siguiente error en el monitor serie del programa Arduino.
ResponderBorrar.............
WiFi Conectado!!!
Exception (29):
epc1=0x4000e1b2 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000004 depc=0x00000000
ctx: cont
sp: 3fff0b40 end: 3fff1130 offset: 01a0
>>>stack>>>
3fff0ce0: 3fff00b8 00001441 00001441 40224d2f
3fff0cf0: 00000208 3fff5d6c 3fff8304 40224ec8
3fff0d00: 00000104 00009ff8 000013ff 3fff5d6c
3fff0d10: 00000040 00000082 3fff82ec 4022517a
3fff0d20: 00800000 00000080 00000000 00000041
3fff0d30: 00000040 0000003f 40206f2c 00000041
3fff0d40: 3fffb634 3fff5d6c 3fff233c 3fff22dc
3fff0d50: 3fffbb48 ffffffff 3fff5d6c 3fff5d6c
3fff0d60: 00000040 3fff5d6c 3fff82ec 3fff5d6c
3fff0d70: 00000040 3fff5d6c 3fff82ec 40225cd6
3fff0d80: 3fff24fc 0000003f cfd1ad48 00000001
3fff0d90: 3fff5d6c 3fff82d4 3fff82ec 00000001
3fff0da0: 00000010 3fff5d6c 0000000f 40225f31
3fff0db0: 3fff233c 3fff252c 0000000f 00000001
3fff0dc0: 00000001 3fff230c 3fff89c7 40224d94
3fff0dd0: 00000100 3fff200c 3fff8907 00000000
3fff0de0: 00000100 3fff200c 3fff8907 40226fbd
3fff0df0: 3fff0e20 00000000 000000d0 00000030
3fff0e00: e33e1d61 2352453d 3e61befc 00000004
3fff0e10: 00000004 3fff317c 3fff8901 402230c8
3fff0e20: 3b8b0203 81c46f55 50e535e8 6a8d3ca2
3fff0e30: 6fdb9563 8c0c6102 30659788 ca2cef97
3fff0e40: a38c110e 612b731e 866657b8 1d61d6fe
3fff0e50: 00000004 3fff8901 3fff317c 402234c9
3fff0e60: a81040ea 743e5abe e277bd7a 3fff5b04
3fff0e70: 00000000 00000004 00000004 402044df
3fff0e80: 3fff8905 3fff8901 3fff324c 00000880
3fff0e90: 00000905 3fff91db 0000002a 00000004
3fff0ea0: 3fff317c 3fff8901 00000004 00000004
3fff0eb0: 00000004 3fff8901 3fff317c 40222ec0
3fff0ec0: 00000000 3fff8901 3fff317c 40223268
3fff0ed0: 0000001b 3fff24d4 0000001c 401004d8
3fff0ee0: 3fff0f30 0000000e 00000010 00000000
3fff0ef0: 3fff219c 3fff24d4 3fff317c 01000000
3fff0f00: 3fff0f30 3fff1ad4 3fff317c 40223018
3fff0f10: 402042f0 00000000 3fff0110 00001387
3fff0f20: 00020dce 3fff1ad4 3fff57d4 40204981
3fff0f30: 000001bb 3fff30c4 3fff1ad4 40203d6e
3fff0f40: 5561c923 00000000 3fff1af4 3fff7ab0
3fff0f50: 000001bb 3fff1ad4 3fff24d4 40204cd5
3fff0f60: 3ffe95b8 5561c923 3ffe95b8 5561c923
3fff0f70: 3fff1f0c 00000000 3fff1f10 40205414
3fff0f80: 00000000 00000533 00000533 40206d2c
3fff0f90: fffffffd 00000001 3fff1f10 40205be4
3fff0fa0: 3ffe9158 0000000c 3ffe8f33 40202dff
3fff0fb0: 3fff43ec 3fff1020 3fff1f0c 40202e58
3fff0fc0: 3fff43f8 00000000 00000000 3ffe8f30
3fff0fd0: 3fff1f0c 3fff1000 3ffe8f30 3ffe8f30
3fff0fe0: 3fff1f0c 3ffeffa8 3fff1090 402036e2
3fff0ff0: 3ffeff8c 3ffeffa8 3fff1090 402025ab
3fff1000: 3fff43f8 3fff57ec 00000001 401004d8
3fff1010: 3fff00b8 3fff1100 00000000 40206d2c
3fff1020: 3fff1ac0 3fff0031 3fff1f10 40202ceb
3fff1030: 00000000 3fff109c 3fff10c4 3fff10c8
3fff1040: 402036cc 3fff10e0 3fff106c 40202b94
3fff1050: 3fff00b8 3fff1100 3ffeff88 3fff0104
3fff1060: 3fff10e0 3fff1100 3fff1090 40202772
3fff1070: 3fff1f0c 3fff1100 00000000 4010053d
3fff1080: 4023dbc9 3fff1100 3ffeff88 402034c7
3fff1090: 3ffe8f88 3fff1f0c 00000000 3ffeffa8
3fff10a0: 3ffeffa8 3ffe8f60 3fff1100 00000000
3fff10b0: 00000100 00000006 3fff57ec 0000000f
3fff10c0: 00000001 3fff7ab0 3fff2330 40206419
3fff10d0: 3fffdad0 00000001 3ffeff88 40203521
3fff10e0: 00000004 00000001 000001f4 4020633c
3fff10f0: 00000000 00000001 3ffeff88 402022de
3fff1100: 3fff44bc 0000000f 00000006 40206f4d
3fff1110: 3fffdad0 00000000 3fff00fc 40206f78
3fff1120: feefeffe feefeffe 3fff0110 40100718
<<<stack<<<
Este comentario ha sido eliminado por el autor.
ResponderBorrar