Cómo crear un sensor de lluvia DIY (Parte II)

    • Tutorial paso a paso para crear desde cero un sensor de lluvia DIY integrable en un sistema domótico. Segunda entrega: Preparación de la tarjeta ESP8266.

    Segunda entrega de nuestra serie de artículos sobre  cómo crear desde cero un sensor de lluvia integrable en sistemas domóticos (concretamente en el Home Center 2 de Fibaro). Si te perdiste la primera entrega, aquí la tienes.

    Hoy abordamos el capítulo 2 de nuestro índice de contenido, referente a la preparación de la ESP8266.

    Este capítulo será más largo que el primero de introducción. ¿Preparad@s? Vamos allá…

    Recordad que si tenéis consultas o preguntas, podéis plantearlas en los comentarios de cada post y/o en nuestro foro.

    Sensor de lluvia DIY

    2. Preparación de ESP8266

    Comencemos por los más complicado, así luego todo será mas fácil. 😉

    Para conseguir que nuestro chip quede en suspenso la mayor parte del tiempo, éste tiene que entrar en un estado conocido como DEEP_SLEEP y luego despertar cuando sea conveniente. Para esto necesitamos que dos terminales estén conectados: EXT_RSTB y D0. El problema es que uno de estos terminales no se encuentra cableado al conector al que tenemos acceso y tendremos que hacerlo nosotros soldando un puente.

    Os recomiendo que leáis este tutorial.

    Ahora os explico cómo lo he hecho yo:

    De un cable multihilo, debéis sacar un único hilo. Es importante encontrar un hilo de cobre no demasiado fino ni demasiado grueso.

    Hilo de cobre

    Dar un toque de estaño en la punta (casi nada), lupa, pinzas de relojero, pulso y paciencia, nunca sale a la primera.

    Comenzad por el integrado, acercando la punta del hilo con ayuda de las pinzas. Nunca debéis acercar la punta del soldador directamente al integrado. Hay que soldar calentando el hilo cuando la punta esté tocando el pin.

    Notaréis cuando queda sujeto al tacto. Con cuidado id doblando con la pinza hasta llevar al pin marcado del conector y cortad el sobrante. Con cuidado fijad con pegamento tipo super-glue y terminad soldando al terminal EXT_RSTB.

    Hilo de cobre soldado

    Tres imágenes valen más que cien palabras:

    Soldadura hilo de cobre

    2.1 Cargando el firmware

    Éste es un buen momento para cargar el firmware que gestionará nuestro sistema de detección de lluvia, así podremos comprobar si la preparación de la ESP ha sido correcta.

    Este programa se encargará de poner nuestra tarjeta en modo DEEP_SLEEP y despertar únicamente cuando detecte lluvia, manteniendo un chequeo cada cierto tiempo hasta que deje de llover enviando de nuevo a dormir al sistema hasta el próximo chaparón. Asímismo, será el encargado de enviar al controlador domótico los valores que indican el cambio de estado lluvia/seco y la medición de carga de batería, además de disparar una escena, lo que permitirá desde el controlador realizar acciones en relación con la información recibida.

    Para cargar el firmware, nos hará falta utilizar un adaptador USB a FTDI.

    El chip ESP tiene dos modos de funcionamiento: UART y FLASH. Usaremos el modo UART para la carga del programa en la memoria del ESP.

    Cuando queremos cargar un programa en el ESP, debemos encenderlo teniendo el pin GPIO0 a nivel bajo (LOW = 0V = GND) y el GPIO2 a nivel alto (HIGH = 3,3V =Vcc). El pin GPIO2 está por defecto a HIGH, ya que tiene un pull-up interno, por lo que podemos dejarlo simplemente desconectado, pero el pin GPIO0 tendremos que puentearlo a GND para poder cargar el frmmare.

    Modo FLASH: ejecución de programa en el ESP.

    Una vez cargado el programa, hay que ejecutarlo: esto lo conseguimos teniendo el GPIO0 y el GPIO2 a nivel alto (3,3V).Tanto el GPIO0 como el GPIO2 están por defecto a HIGH, ya que ambos tienen un pull-up interno, por lo que podemos dejarlos simplemente desconectados.

    He puenteado GPIO0 y GND en el adaptador FTDI usando un puente que se puede retirar, de forma que se pueda poner y quitar para pasar de modo UART a modo FLASH según nos convenga.

    Modos UART y FLASH

    2.1.1 Arduino IDE

    Para cargar el programa necesitaremos un entorno de desarrollo capaz de compilar el firmware para nuestra tarjera ESP. Usaremos Arduino IDE. Seguid las indicaciones de la pagina para descargar e instalad dependiendo del sistema operativo que tengáis.

    Una vez instalado, necesitaremos asegurarnos de que tenemos el driver adecuado para nuestro interfaz serie “usbserial1430”. A continuación, arrancamos el IDE Arduino.

    Arduino IDE

    En el menú “Preferencias”, añadiremos la URL para la carga de librerías adicionales para nuestra tarjeta ESP.

    Cortamos y pegamos esta URL en la opción “Gestor de URLs Adicionales de Tarjetas”:

    http://arduino.esp8266.com/stable/package_esp8266com_index.json.

    Librerías adicionales

    Ok para grabar, y listo.

    Pinchamos nuestra ESP en el adaptador y éste al puerto USB del ordenador.

    Si todo es correcto, en el menú “Herramientas->Puerto” podremos escoger el puerto al que hemos conectado la ESP.

    Elección de puerto

    Y en “Herramientas->Placa”, escogemos la tarjeta adecuada.

    Elección de la tarjeta

    El código correspondiente al programa se indica un poco más adelante, pero antes de copiarlo dentro de la IDE de Arduino, debemos hacer alguna tarea.

    Como comentamos al principio, en este tutorial haremos la integración con Fibaro HC2. Éste es el momento de crear una escena usando la opción “Agregar escena en LUA” en el HC2.

    Por el momento, dejaremos sin modificar el espacio destinado al código LUA y procederemos a guardar la escena vacía (podemos ponerle un nombre). Lo importante es anotar el ID que se le ha asignado a la escena.

    Tendremos que adecuar el código que usaremos como firmware de la tarjeta ESP modifcando las líneas siguientes adaptándolas a nuestra instalación.

    Modificación del firmware de la tarjeta ESP

    Para calcular la HCBasicAuth, hay que usar la cadena “usuario:contraseña” y cifrarlo en base64.

    La apiURL en la dirección de la API REST del HC2, sustituye la ip por la de tu controlador Home Center.

    HCVarName, indica el nombre de la variable que se creará automáticamente en el controlador para almacenar la información del sensor de lluvia.

    Debemos indicar en sceneID el iD de la escena que acabamos de crear en el controlador, que se lanzará cuando se produzcan cambios en el estado del sensor.

    El nombre de nuestro SID WiFi en mif_ssid y la contraseña en mif_passmd.

    Ahora sí, una vez sustituidos los valores de las variables, hay que copiar y sustituir el código dentro del IDE de Arduino. A continuación, podemos ir al menú “Archivo -> Salvar” y guardar nuestro programa.

    Para cargar el firmware en la tarjeta ESP, hay que ir a “Programa -> Subir”. Esto compilará y subirá el firmware a la memoria de nuestra tarjeta ESP.

    Firmware

    Pincha en la imagen para ampliarla

    Firmware

    Pincha en la imagen para ampliarla

    Aquí tenéis el archivo para cargar en la tarjeta ESP (para descargar el archivo, debes ser usuario de nuestro foro. Si no lo eres, ¡súmate!)

    Si todo ha ido bien, veremos algo así en la interfaz Arduino:

    Resultado en Interfaz Arduino

    Si falla tendremos mensajes del tipo:

    Mensajes de error

    En ese caso desconectad el adaptador, aseguraos de que está bien el puente y volved a conectar. Puede que tengamos que desconectar/conectar alguna vez hasta que funcione. Si no funciona, probad a salir y entrar a la IDE de Arduino.

    Con el 100% cargado, podemos chequear si el cable que soldamos en la preparación de la tarjeta es correcto.

    Desconectamos el adaptador del ordenador y soltamos el puente entre GPIO0 y GND. Volvemos a conectar el adaptador con la ESP al ordenador y en el menú de IDE de Arduino vamos a la opción “Herramientas->monitor serie”.

    Monitor Serie

    Se abrirá un monitor por el que aparecerán los mensajes enviados desde la tarjeta ESP por el puerto serie USB. Dejamos un par de minutos ejecutando y deberemos observar cómo cada minuto aparecen mensajes indicando que la tarjeta se está reiniciando.

    Monitor serie

    Puede ser que en alguno de los mensajes aparezcan mensajes de error que no debemos tener en cuenta. Se deben a que la tarjeta está intentando crear la variable en el controlador HC2 y ésta ya se encuentra creada. Es el funcionamiento normal, los nuevos valores para almacenar en la variable se envían cuando desde el firmware se detecta este código de error.

    Lo importante es comprobar que la tarjeta se reinicia cada minuto. Eso es señal de que el cable que soldamos en el proceso de preparación está correctamente conectado.

    Tendremos que volver a cargar el firmware modifcando el parámetro que hace que la tarjeta se esté reiniciando cada minuto. Para ello, en el editor del IDE de Arduino, modifcamos la línea 27:

    Modificación línea 27

    sustituyendo 60e6 por 0.

    Modificación línea 27

    De forma análoga a como cargamos el firmware la primera vez, procedemos a volver a cargar, ahora con la modifcación efectuada. Cuando hayamos conseguido cargar el nuevo frmmare, podemos desconectar el adaptador USB y quitar la tarjeta ESP, que habrá quedado totalmente configurada.

    La próxima semana publicaremos la tercera entrega del tutorial. No os lo perdáis.

    Lee aquí la tercera entrega.

    Manuel Pascual

    Madrileño, técnico de sistemas y apasionado de la tecnología. Autodidacta, le encanta enredar todo tipo de aparatos electrónicos. En la actualidad, investigando el apasionante mundo de la domótica.


    3 Respuestas

    1. David dice:

      Y para jeedom podría ser??

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *