Tecnología Informática      Técnico en Instalaciones de Telecomunicaciones About

App Inventor, Firebase y NodeMcu

El trinomio anterior nos va a permitir

app inventorAppInventor -> Crear aplicaciones para móviles por medio de programación de bloques. No es necesario conocer  el lenguaje de programación.

Veremos que AppInventor genera algunos errores que nos impide avanzar. En ese caso, cambiaremos a la plataforma de kodular, que es similar pero que, aun mostrando los mismos errores, nos dejara crear la APK

Firebase -> Base de datos de google en tiempo real. Conociendo una clave y  la dirección URL de la base de datos, vamos a poder guardar  y leer datos para nuestros proyectos

NodeMcu, nuestra placa de desarrollo

 

Empezamos con App Inventor.

Importante

1º Como las aplicaciones móviles son casi imprescindibles en todo proyecto, el primer paso es hacer algunas de las prácticas que tenemos en este Tutorial de App Inventor

2º  Hacer una aplicación de forma que en pantalla aparezca el Cigala, y cuando se mueva  de atrás a adelante, salga su sonido " atraassss"

3º  Hacer la tarea que se indica en este tutorial pero con otras palabras diferentes a las mostradas en el video->https://www.youtube.com/watch?v=4JBYXEzrLAg

Tenemos otro video parecido en ->https://www.youtube.com/watch?v=oF59dQM-5YA

4º Si decidimos usar  APP inventor, ampliar con proyectos  que encontramos en la web ->http://kio4.com/


 

2º Práctica. Encender y apagar una bombilla usando App Inventor, firebase y NodeMcu

 

Firebase

La base de datos se genera en la página oficial, que nos va a reconocer si ya estamos logeados

 Ver y hacer la actividad que viene en ->https://www.youtube.com/watch?v=1vHqDSKnObk

Una vez que tengamos algo de conocimientos sobre el NodeMcu en   un  breve curso de  Luis del Valle sobre Arduino en este LINK , pasaremos a los enlaces entre firebase y NodeMcu

5º Ver video de introducción de cómo crear una base firebase->https://www.youtube.com/watch?v=-DU41rcVcs0  y ->https://www.youtube.com/watch?v=c5_1DUZ5Oko

 

Visto la teoría general, vamos a por un proyecto concreto que use todo lo anterior.

Veremos cómo abrir la puerta del parking de nuestro Instituto con Kodular, firebase y NodeMcu

pantalla kodularAbrimos nuestro editor Kodular, donde ya hemos añadido las etiquetas para que aparezcan los datos que necesitamos

Añadimos las etiquetas que necesitamos. He puesto 5, para latitud, longitud, altura, localización de la calle y otro para mostrar si la puerta esta abierta o cerrada. Además nuestro botón de abrir la puertabloque3

Vamos al la sección de Blocks y explicamos que hemos añadido

En la imagen tenemos que Cuando el sensor de localización cambia la posición  el sensor 1, entonces se ejecuta las siguientes tareas

a) Se pone el texto en la etiqueta 1 el obtenido al tomar la latitud ( esto lo hace el sensor de ubicación )

b ) Se pone el texto en la etiqueta 2 el obtenido al tomar la longitud

c ) Se pone el texto en la etiqueta 3 el obtenido al tomar la altitud

d ) Se pone el texto en la etiqueta 4 el obtenido  al obtener la dirección actual

Bloque 2

bloque 2

En el bloque de arriba se trabaja con la base de datos

Cuando hacemos click en el botón, se ejecuta la llamada a la base de datos y guardamos el número 1 en la etiqueta valor ( si no existe, la base de datos, la crea )

Hemos tomado el valor 1 para referir que la puerta se abre. Veremos en nuestro NodeMcu, que si esto ocurre porque hemos dado orden de abrir la puerta, pasado un tiempo el nodemcu parará este valor a 0

 En las dos siguientes líneas guardamos los valores de latitud y longitud, necesarias para saber si le coche está cerca de la puerta o no.

En la línea final, ponemos el color de fondo del botón en verde

Bloque 3:

bloque 1

En este bloque, ponemos la etiqueta 5 el contenido  que tiene el campo valor de la base de datos

Primero aparece el cuando cambia la base de datos, luego un ejecutar tareas, pero con un condicional

Si comparamos las etiquetas de la base y vemos la denominada valor, entonces ponemos la etiqueta 5 el contenido que hemos obtenido en el campo valor

Luego ponemos el color de fondo del botón como azul

 

 

rele y nodemcuConexión del relé y el NodeMcu

En la imagen tenemos la conexión necesaria para nuestro sistema.

Hay que considerar que la salida de la placa es 3,3 voltios y la tensión de trabajo de la placa que tiene el relé es 5 voltios

Aún así, hemos comprobado que es suficiente para que se active el relé cuando recibe la señal

La conexión de la señal ( cable verde ) es la salida de D7 de la placa del NodeMCU

En la parte izquierda tenemos la salida del relé, siendo NA = Normalmente abierto

NC -> Normalmente cerrado

El terminal que falta es el común

Si queremos mandar la señal al motor de la puerta, tenemos que usar el común ( abajo ) y el NA

Programa del NodeMCU

Esto va muy rápido. Queremos poner nuestra placa en marcha pero todavía no hemos hablado de la interface para programar y , sobre todo, los problemas que nos vamos a encontrar.

En otras secciones de esta web hemos dicho que para poder volcar nuestros proyectos a la placa necesitamos instalar el IDE de arduino, que tenemos en la página oficial, así que el primer paso es hacer la instalación de dicho programa,.

Consejo. Antes de entrar en aguas mas profundas, es mejor probar algo sencillo. Por ejemplo, elegir el ejemplo blink que ya viene en nuestro IDE y comprobar que podemos volcar programas sencillos a nuestra placa, para lo cual, tenemos que instalar el gestor de placa de la familia esp8266 ( ver punto 1 que se indica en caja roja )

Nuestro proyecto necesita librerías extra y en su instalación hemos encontrado los siguientes problemas que detallo:

 

  Nuestra placa se llama NodeMcu, pero al buscarla en el IDE no la encontramos. Tenemos que instalar todos los gestores de tarjetas en el programa para que se pueda cargar nuestros proyectos. Para ello, debemos seguir los pasos que se indican en este Manual ->https://www.esploradores.com/instalacion-del-gestor-del-microprocesador-es8266-en-el-ide-de-arduino/
  Para nuestro proyecto  necesitamos tener instalados varias librerías. Para ello vamos a Programa-> incluir libreria. Luego tenemos la opción de añadir la librería si  la tenemos en ZIP o bien buscarla ( Administrar biblioteca ). La pagina para descargar la primera librería es  -> https://github.com/FirebaseExtended/firebase-arduino
También tenemos que instalar  la librería ArduinoJson.

JSON (acrónimo de JavaScript Object Notation) es un formato de texto sencillo para el intercambio de datos con base en el lenguaje Javascript, que desde el 2019 ya se considera lenguaje independiente, siendo una alternativa muy potente a XML dentro del intercambio de datos.

Para instalar esta librería, vamos a herramientas-> añadir librería -> Administrar librería  y buscarnos arduinojson. Van a salir varias. Si elegimos la última, vamos a tener errores. Estas cosas pasan, así que elegimos la 5.13.5. Hemos comprobado que la última nos genera errores y tuvimos que desinstalar y pasar a la 5.13.5 ( funciones que están en una versión y en otras no )  

Cuando intentamos cargar nuestro programa, eligiendo la placa  Nodemcu 0.9, se muestra un error en la consola.

a la hora de instalar las placas, hemos instalado la úttima versión y este es el problema. El mensaje en el foro , como muchas nos dice

-->***  you might have installed 'esp8266 3.0.0', try changing it to 'esp8266 2.7.X' by the esp8266 community.  <- ****

Otra vez tenemos que corregir la versión de alguna librería o gestor de tarjetas. En este caso, vamos a gestor de placas , ponemos esp8266  y cuando se muestra la versión cambiamos a la 2.7.0  
 

Ya podemos entrar nuestro programa.

Recordamos que todo lo que empieza por // son comentarios y no se ejecutan en el programa

//Código de Arduino para crear una clave aleatoria en una base de datos firebase mas el código necesario para actuar sobre la variable valor que según sea , se abre ( valor=1 ) o no se abre ( valor=0 )

Mejoras

A nuestro proyecto básico le podemos añadir mejoras como la activación del sistema cuando  se detecte que el coche se aproxima o un sistema de autentificación de usuarios

Respecto a lo primero

Diseñar un sistema  ( APK ) que detecte un cambio brusco de movimiento, de forma dada unas condiciones establecidas ( el coche se aproxima a nuestro zona de influencia ( coordenadas ) )  se detecte una parada en seco en la puerta del garaje y, de esa forma, provocando la apertura de la misma

 

Sería interesante saber los sistemas sobre posicionamiento y decisión. Por ejemplo, que se detecte el coche que llega por la calle y si se detiene antes de la puerta , se abra de forma automática.

¿ Con el podómetro quizás ?.

¿ Grabando las coordenadas a 50 metros de la puerta y tomar la decisión de abrir? .

Trabaja sobre ello para una posible incorporación al proyecto

 

Práctica final. Desarrollar una aplicación para móviles ( APK ) para controlar la apertura de la puerta de nuestro Instituto, con las mejoras que puedas crear en cuento a facilidad de uso, control de usuarios, bloqueos , mejorar imagen de la APK, aportar información que consideres adecuado, programar horas que no pueda abrirse, etc.

La originalidad y desarrollo dará lugar a mayor o menor nota

 

Diseño PCB Principios básicos de antenas

Ciclo de Grado Medio Instalaciones de Telecomunicaciones. Ies Mare Nostrum. Málaga