¿Qué cómo afronto la creación de un nuevo circuito?

Cuando me planteo un nuevo cacharreo, puede ser por varios motivos:

  1. Solo por hacerlo, ver que funciona y aprender por el camino
  2. Para ver qué resultado da y si es bueno pasarlo a «producción» e instalarlo definitivamente en mi casa
  3. Para su instalación en mi casa si o si (siempre y cuando funcione)

Está claro que cuando solamente quiero cacharrear, lo hago de cualquier manera «al aire», sobre una breadboard o una perfboard.

En muchos casos el proceso es el siguiente:

  • Hago las pruebas de la manera más rápida posible con los sensores que quiero poner, de uno en uno, y veo si todo funciona bien
  • Me planteo que sensores voy a combinar en base a lo bien que me venga combinar esos sensores concretos (por idoneidad del emplazamiento, pines disponibles, caja, etc)
  • Pienso en que caja le voy a poner para que tenga un acabado «más o menos» profesional y que no sean un enjambre de cables colgando por la casa

Aunque parezca mentira, de los puntos anteriores, el que más quebraderos de cabeza suele darme es la caja. Además la caja, en muchos montajes, suele ser una parte «activa» del montaje ya que la aprovecho para el cableado del circuito.
Me gusta que las cosas que se quedan «fijas en la casa» tengan una buena terminación, y soy bastante perfeccionista, por lo que nunca estoy satisfecho con el resultado obtenido.
La realidad es que suelo decir «lo dejo de momento así, que está aceptable, y en cuanto tenga un rato lo mejoro» y… se suele quedar así.

Un ejemplo

El mejor ejemplo que puedo poner en este momento, es el proyecto que estoy terminando y del que ya he publicado algunas entradas en el blog sobre sus partes: un nodo para el dormitorio principal, basado en ESPEASY con un emisor de infrarojos para controlar el aire acondicionado y un sensor de CO2.

Por supuesto, antes de hacer nada con hardware o firmware hay que realizar un poquito de investigación y toma de decisiones preliminares. ¿Qué funcionalidades quiero que tenga el cacharro? ¿Cómo lo voy a alimentar? ¿Qué componentes voy a utilizar para conseguir estas funcionalidades? ¿Voy a diseñar una caja que pueda imprimir en 3D, usar una caja estándar, quizá hay una caja ya diseñada para imprimir en 3D que me pueda valer? Con todas estas decisiones tomadas podemos ya ensuciarnos las manos:

Primero monté el circuito con los diodos emisores de infrarrojos y probé y ajusté el firmware, de forma que funcionara correctamente de forma independiente. Posteriormente, y una vez satisfecho con el funcionamiento del emisor de infrarrojos, hice lo mismo con el sensor de CO2.

La siguiente etapa es juntarlo todo y asegurarme de que tanto el hardware como el firmware está funcionando correctamente, haciendo todas las pruebas que sean necesarias y dejándolo todo funcionando «en sucio».

La parte de pruebas es muy importante. Nada peor que tener un cacharro aparentemente terminado y luego darnos cuenta de que algo no funciona correctamente. No hay que ahorrar tiempo en las pruebas.

El siguiente paso importante fue la caja. Para esto, partí de la caja estándar que suelo utilizar para la mayoría de mis montajes con NodeMCU, y que imprimo en mi impresora 3D,  pero la modifiqué adecuadamente en tamaño y le añadí las aberturas necesarias (dos para los dos LED de infrarrojos que iba a utilizar y otras dos para las dos zonas «activas» del sensor MH-Z19 que iba a montar.

El último paso: ajustar y cablear todo dentro de la caja y volver a hacer todas las pruebas necesarias, antes de instalarlo en su ubicación definitiva.

 

 

Datos de radiactividad de Madrid en tiempo real

Tras tener mi detector Geiger terminado y funcionando, el siguiente paso es, enviar esta información a la red. Se da la circunstancia, además, de que no he sido capaz de encontrar en internet una sola estación de Madrid enviando datos de radiación Beta/Gamma en tiempo real, por lo que puede que esta sea la primera estación de Madrid en enviar este tipo de datos (y me hace ilusión, porque mira que es difícil ser el primero en algo en internet hoy en día :-))

El contador Geiger que he construido dispone de un puerto serie por el que se transmiten cada 15 segundos los datos de radiación detectada. Esto ha facilitado mucho las cosas, ya que lo único que he tenido que hacer es dotarlo de «algo» que los lea y los envíe a mi sistema de domótica y a la red .

Como en otras ocasiones, he recurrido a un NodeMCU con el firmware ESPEASY. En esta ocasión no existía un plugin de ESPEASY para leer la salida serie de mi contador Geiger pero no ha sido muy difícil adaptar otro plugin, ya existente, para que los lea.

El nuevo dispositivo lee la salida serie del contador Geigery la procesa para extraer el dato concreto de Pulsos Por Minuto y envía este dato mediante MQTT a mi broker.

Un nodo en Nore-Red recibe los datos de radiactividad enviados por el dispositivo y los reenvía a Radmon.org. Radmon.org es un sitio donde cientos de voluntarios en todo el mundo envían, en tiempo real, los datos obtenidos por sus detectores para facilitar su visualización, generación de gráficos, etc.

La función «Build Radmon url» es muy sencilla y, simplemente, construye una url, siguiendo las especificaciones del API del Radmon con mi usuario, password y la última medida.

Otro nodo de Node-Red inserta los datos en una base de datos InfluxDB lo que me permite, posteriormente, crear gráficas de estos datos en Grafana.

ESP8266-Pro (O a veces, en Aliexpress, lo barato sale caro)

htb1l6k2nxxxxxx-xpxxq6xxfxxx1Hace unas semanas en uno de mis habituales «paseos» por Aliexpress me encontré con una placa ESP8266 que, en principio, parecía muy interesante; un verdadero chollo.

Se trataba de la placa ESP8266-Pro con 8 MB (si, mega bytes) de RAM.

Parecía una placa prácticamente igual que la NodeMCU sin USB, con el doble de memoria y bastante más barata.
La realidad es que, aunque la placa tiene muy buena pinta no existe absolutamente ninguna información y el vendedor, cuando le preguntas simplemente te dice que no tiene nada de información (con todo su morro). Muchos clientes se han quejado en las opiniones de Aliexpress pero siguen dejando 5 o 4 estrellas (incomprensible).

Tratando de utilizarla como las placas habituales no hay manera… pruebas y pruebas y no se puede… vamos, una placa que no vale para nada. No es que sea mucho dinero (pedí dos placar y el envío por Aliexpress Stantard Shipping, unos 8€ en total) pero, ¡joder! me siento engañado…

El caso es que me puse a investigar con el multímetro en una mano y el datasheet del ESP8266EX en la otra y he encontrado por qué no funciona y como solucionarlo…

Lo que sucede con esta placa es que engaña… uno se espera que sea algo como el NodeMCU y es, más bien, algo como un módulo ESP12E más un regulador de voltaje de 3.3V, nada más (bueno, si 8 MB de memoria en vez de 4).

Total, ¿por qué no funciona y que hay que hacer para que funcione?

1312726806898Bueno pues lo primero es que el ESP8266EX tiene un pin CH_EN (o chip_enable) que hace que el ESP8266EX funcione. Este pin hay que ponerlo a 3.3V (preferiblemente a través de una resistencia de unos 10K) para que el chip empiece a funcionar; hasta ese momento el chip está muerto.

1312726794469 En mi caso, y puesto que la resistencia tiene que estar siempre puesta y no hay que quitarla para nada, opté por soldarla directamente entre el pin CH_EN (marcado como EN en esta placa) y el punto de 3.3V del regulador. Añado las fotos detalladas por si pueden ayudar.

1312726800979E1312726804014l siguiente problema, y el que más me ha costado localizar, es que el bootloader que incorpora la placa espera en el momento del arranque que el pin 15 tenga un nivel bajo, y hasta que no esté a novel bajo no arranca. De manera que tenemos que poner dicho pin a negativo (preferiblemente a través de una pequeña resistencia, yo he usado una de 74ohm).

En este caso, como no necesito el pin 15 he soldado, igual en en el caso anterior, la resistencia directamente como se puede ver en las fotos detalladas.1312726778772

Por ultimo nos falta el último paso, y es que para ponerlo en modo programaci1312726789726ón (para poder flashearlo) hay que poner el pin IO0 a nivel bajo (es decir, a negativo).

A diferencia del NodeMCU, y placas similares, que entran de forma automática en el modo programación simplemente dando a la opción correspondiente desde el Arduino IDE, esta placa hay que meterla manualmente en el modo de programación, lo que es bastante incomodo.

Para Entrar en el modo de programación, como se hace de forma puntual, simplemente conecto con un cablecillo el IO0 con GND para entrar en el modo de programación. Es un poco incomodo porque hay que ponerlo y quitarlo manualmente cada vez que queremos flashearlo pero bueno…

1312726809399Por cierto… ya que estaba metido en harina, he aprovechado para comprobar ese pulsador misterioso (antes de empezar la investigación, no sabía si era un pulsador de reset o para entrar en el modo de programación) y, efectivamente, he comprobado que está conectado entre el terminal RST y GND para poder hacer reset al ESP8266.

Resumiendo: Tras unas horas de investigación, he conseguido programar el ESP-8266 Pro pero mi conclusión es que no merece la pena comprarlo para ahorrar un euro. Es mucho mejor comprar el NodeMCU, que es mucho más fácil de programar, está perfectamente documentado y no hay que andar haciendo «ñapas» para que funcione correctamente. Otra cosa será ver si se le puede sacar provecho a esos 8 MB de memoria, aunque mucho me temo que, para la mayoría de aplicaciones, tendremos más que de sobar con los 4 MB del NodeMCU.

Edito: Tras unos días, lo he vuelto a coger para un proyecto real y tengo una mala noticia: Puedo programarlo pero, por algún motivo, no se activa el wifi. Seguiré investigando otro día…