Sensor Wi-Fi sin soldar y sin programar*

4 minute read

Las plataformas para desarrollo de software no-code/low-code permiten crear aplicaciones escribiendo muy poco codigo y en algunos casos, ningun codigo, de forma tal que reducen el tiempo de desarrollo para poner en produccion aplicaciones en muy poco tiempo.

Este proyecto combina dos ideas: plataforma de software no-code/low-code, con un sistema de prototipado rapido y robusto que no requiere soldar. De esta forma en un par de horas se puede pasar de una idea, a un dispositivo operando en condiciones reales.

Sensor Wi-Fi desarrollado mediante herramientas de prototipado rapido de SW y HW, en operacion en condiciones reales

Componente clave: ESP 32 D1 MINI

Prototipado rapido robusto hardware-software

Se construira la siguiente aplicacion como ejemplo: un termometro WiFi basado en ESP32, sensor de temperatura DS18B20, e indicador local I2C. Todo esto dentro de una caja a prueba de agua para montaje en pared y alimentado a 5V. Lo anterior se realizara usando los siguientes proyectos:

  • HARDWARE: Sistema de prototipado rapido robusto, MISISTEMITA

  • SOFTWARE: Se realizaran pruebas tanto con TASMOTA como con ESPHome.

Listado de materiales
Componentes usados en el proyecto
Partes discretas necesarias
Componente Enlace de compra Hoja de datos
ESP32 D1 MINI compralo aqui esp32-d1-mini.pdf
Pantalla OLED 0.96 I2C compralo aqui 096-i2c-oled-display.pdf
Sensor de temperatura DS18B20 a prueba de agua compralo aqui ds18b20-waterproof.pdf
Resistencias TH 1/4W 1% compralo aqui MGR-SERIES.pdf
Caja generica a prueba de agua “Sonoff” 100x68x50mm compralo aqui SONOFF-IP66-waterproof-case.pdf
Componentes necesarios para los modulos misistemita requeridos
Componente Enlace de compra Hoja de datos
Espaciador separador de nylon de bloqueo inverso compralo aqui G228.pdf
Tornillo M2.6 autorroscante tipo B compralo aqui M2.6x5-6-8-12mm.pdf
Terminal de tornillo para PCB kf350 3.5mm 2 y 3 pines compralo aqui KF350.pdf
Conector tipo header hembra 2.54mm compralo aqui FHA3-S1XX.pdf
Tarjetas de circuito impreso necesarias para los modulos misistemita requeridos
Tarjeta de circuito impreso (PCB) Enlace de compra Repositorio con archivos fuente
Bastidor para caja generica a prueba de agua de 100 x 68 x 52 mm compralo aqui a06 backplate
Bornera de conexiones 2x7 de terminal de tornillo 3.5mm compralo aqui b02 Bornera de conexiones
Tarjeta breakout para ESP32 D1 MINI de terminales de tornillo 3.5mm compralo aqui c12 Breakout
Tarjeta breakout para pantalla I2C de terminales de tornillo 3.5mm compralo aqui c10 Breakout
Software repositorio
ESPHome descargalo aqui
TASMOTA descargalo aqui

Ensamblaje del hardware

No se requerira soldadura si los modulos a usar han sido construidos o adquiridos con anterioridad. El primer paso consiste en ubicar las tarjetas en el bastidor, como buena practica las tarjetas de puentes mediante borneras de tornillos deberan ponerse algun lugar en el borde del bastidor y lo mas cerca posible del sitio del ingreso de los cables.

Componentes ubicados en el bastidor

El segundo paso consiste en cablear los diferentes modulos dependiendo del proyecto originalmente planteado. Puede usarse tanto cable de cobre solido como cable de cobre de multiples hilos. Se recomienda cargar un firmware minimo de prueba para probar la conectividad de los componentes.

Componentes ubicados en el bastidor e interconectados mediante cable

El tercer paso consiste en retirar las conexiones externas, ubicar el bastidor en la carcasa y fijarlo mediante tornillos autorroscantes. Introducir los cables de alimentacion por medio de los pasacables y conectarlos nuevamente a la tarjeta.

Bastidor fijado en la caja y cables de alimentacion externos conectados

El paso final consiste en cerrar la tapa, ajustar los pasacables e instalar en muro

Caja cerrada, lista para instalar en muro

Configuracion del Firmware

Los siguientes puntos no pretenden ser una guia completa de instalacion ni configuracion, para mayor informacion referirse a la documentacion de cada una de las plataformas usadas(Tasmota, ESPHome). Se presentara brevemente algunas pistas acerca de como se creo el sensor en cada una de ellas:

Tasmota
Firmware del sensor usando Tasmota

La filosofia de tasmota consiste en un firmware basico pre-compilado que se descarga al dispositivo y una vez descargado se personaliza mediante templates. El instalador de Tasmota esta basado en navegador Web, por lo tanto no se requiere instalar software adicional. Los parametros que se usaron fueron los siguientes:

  • Firmware usado como base: Display
  • Configuracion del template: Pines del puerto I2C, pin del sensor DS18B20
  • Modo del display: 0
  • Tipo del display: SSD1306
  • Regla para visualizacion de temperatura: rule 1 ON DS18B20#Temperature DO Displaytext[zs2y20] %value% C ENDON
ESPHome
Firmware del sensor usando ESPHome

La filosofia de ESPHome consiste en compilar un firmware personalizado, usando archivo de configuracion YAML. Esto significa que se requiere tener instalado Home Assistant, y una vez se tiene este en funcionamiento, ESPHome se debera instalara como un add-on. Una vez realizados estos dos pasos, ya es posible crear sensores. Se muestra aqui una parte del archivo de configuracion en las secciones mas significativas:

# GPIO setup
dallas:
  - pin: 26
i2c:
  sda: 21
  scl: 22

# Sensor setup
sensor:
  - platform: dallas
    address: 0x8c01131b44162184
    id: outside_temperature
    name: "External temperature"
font:  
  # gfonts://family[@weight]
  - file: "gfonts://Roboto"
    id: roboto
    size: 20
display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    address: 0x3c
    lambda: |-
      it.printf(90, 35, id(roboto), TextAlign::BASELINE_RIGHT , "%.1f °C", id(outside_temperature).state);           
Resultados
hardware:

El ensamblaje del hardware, partiendo de modulos pre-construidos tomo aproximadamente una hora.

firmware:

La configuracion del sensor mediante Tasmota tomo aproximadamente 10 minutos. Realizar algun tipo de cambio como configuracion de algun pin o regla de visualizacion toma aproximadamente 1 minuto.

La misma tarea mediante ESPHome tomo aproximadamente 2 horas la primera vez, pues se requiere instalar Home Assistant (En un Raspberry Pi o en otro computador independiente). Una vez esta instalado ESPHome, realizar algun tipo de cambio puede tomar de 5 a 10 minutos dependiendo de la velocidad del Rpi para compilar el codigo.

Con ambas plataformas, las actualizaciones se hacen de manera inalambrica (OTA) despues de la programacion inicial que debe realizarse conectando el ESP32 a un PC

El unico “codigo” que debio digitarse en ambas plataformas fue el necesario para visualizar la temperatura en el display I2C. Cada plataforma tiene su propio lenguaje para realizar esto. En ambos casos fue cuestion de una sola linea