Open Electronics publicó el 28 de octubre la primera entrega de un proyecto de placa de prototipado para el ESP32, pensada para alojar y manejar sensores y actuadores que se prueban con un firmware escrito para la ocasión.

Los módulos basados en el SoC ESP32 de Espressif son muy usados en aplicaciones conectadas por WiFi, y la revista los lleva años usando en sus propios proyectos. Por esa demanda de desarrolladores y aficionados, el equipo decidió construir una placa de demostración que sirva para escribir firmware de prueba para una amplia gama de sensores y, a la vez, para aprender a programar el ESP32 y armar aplicaciones conectadas, partiendo por el Internet de las cosas.

La placa tiene como núcleo un módulo inalámbrico con ESP32 y suma una serie de cabezales donde se enchufan tarjetas de expansión y módulos que funcionan como periféricos. Hay sensores de presión, ultravioleta, calidad del aire, rayos y gestos, más un lector RFID compatible con NFC. La interfaz de usuario la completan una pantalla OLED, botones y LED, todos configurables según el modo de uso que se busque.

La placa

La demoboard se basa en la Board with ESP32 (código YB555), que trae un conector MicroUSB para programarla. Ese mismo conector puede alimentar toda la demoboard, siempre que la corriente que pidan los módulos no supere lo que entrega la placa del ESP32. La alternativa es aplicar 12 V en el conector de alimentación PWR, y en ese caso el regulador U2 de la demoboard (código MP1584ENDCDC) genera los 5 V para el resto del circuito.

Estos son los módulos que se pueden montar en la placa:

  • Sensor de calidad del aire, código SGP30CO2 (U3)
  • Sensor de rayos, código FT1324M (U4)
  • Sensor de gestos, código APDS9960BOUT (U5)
  • Sensor UVB, código GYLM8511 (U6)
  • Sensor de presión, código BMP280 (U7)
  • Lector NFC/RFID, código PN532 (U8)
  • Pantalla OLED de 0,96 pulgadas, código OLED096C u OLEDGVSCSD (OLED1)
  • Relé de 5 V (RL1)
  • LED rojo (LD1)
  • LED verde (LD2)
  • 5 botones (P1, P2, P3, P4 y P5)
  • Conexión para dispositivos SPI de 3,3 V (SPI)
  • Conexión para otros dispositivos I²C de 3,3 V (I²C)

Conectores adicionales y periféricos externos

Además de lo anterior, se pueden conectar otros dispositivos aprovechando los pines libres de la placa del ESP32. Quedan sin conexión D1/TX0, D2, D3/RX0 y D34, más los pines SPI que no se usan para ninguna tarjeta de expansión.

Para sensores y tarjetas externas a la placa, el diseño trae estos conectores:

  • Sensor de turbidez de líquidos, código TORBISENS (CNU9)
  • Sensor PIR, código PIRMOD o MINIPIRMOD (CNU10)
  • Servomotor, por ejemplo el código SERVO206 (CNU11)

Los códigos entre paréntesis corresponden a productos de la tienda de la revista y están para identificarlos más rápido.

¿Cómo es el circuito?

Diagrama del circuito de la demoboard con ESP32

El circuito gira en torno a la placa del ESP32, designada U1, que recibe su alimentación principal por el pin Vin. Su regulador interno entrega 3,3 V estabilizados, que alimentan a las tarjetas de interfaz que trabajan con ese voltaje. Son todas las que se montan en la placa salvo U6.

El contacto Vin de U1 recibe los 5 V que la fuente principal obtiene del voltaje aplicado en el conector DC PWR. Ese voltaje de entrada pasa primero por los condensadores de filtrado C1 y C2 y después lo baja a 5 V el regulador U2, un módulo reductor DC/DC MP1584ENDCDC capaz de entregar 3 A a 5 V estabilizados. Alcanza para hacer funcionar todos los módulos de expansión que admite la placa.

La salida de 5 V, filtrada por C3, C4 y C11 para atenuar el residuo de conmutación del módulo, alimenta a los módulos que trabajan con ese voltaje (el módulo UVB) y a los conectores del servo (CNU11), del PIR (CNU10) y del sensor externo de turbidez (CNU9). También alimenta la bobina del relé, que conmuta el transistor NPN T1 bajo el mando de la línea de E/S D32 del módulo ESP32.

La bobina de RL1 lleva un diodo en antiparalelo que protege la unión de colector de T1 cuando se apaga. Del relé salen los tres contactos conmutados, para manejar distintos tipos de carga y condiciones de operación. El relé es un actuador que se puede asociar, por ejemplo, a sensores que detectan que se superó un umbral, o a las lecturas del módulo RFID/NFC.

Pantalla OLED y comunicación I²C

La pantalla de la placa es una OLED pequeña que se conecta por bus I²C. La revista la ha usado varias veces por su bajo costo y porque existen bibliotecas de Arduino para manejarla. Es la OLED096C, un módulo con pantalla OLED azul de 128 × 64 píxeles, interfaz I²C, controlador gráfico SSD1306, ángulo de visión de cerca de 180° y compatibilidad con Arduino.

La biblioteca del controlador gráfico tiene estructura modular, así que algunos módulos se pueden excluir de la compilación para ahorrar memoria Flash. Ocupa muy poca RAM y admite I²C y también SPI. En el primer caso usa una implementación por software (biblioteca Wire, AVR Twi, Linux i2c-dev) y en el segundo una implementación SPI de 4 hilos (biblioteca SPI de Arduino, AVR Spi, módulo AVR USI).

El controlador permite dibujar primitivas gráficas (líneas, rectángulos, píxeles y mapas de bits) e imprimir texto con caracteres de distintos tamaños. Para crear caracteres nuevos se puede usar GLCD Font Creator.

La pantalla la maneja el módulo U1 a través del bus I²C, que comparte con otras unidades de la placa. Son U3 (sensor de calidad del aire), U4 (detector de rayos), U5 (detector de gestos), U7 (sensor de presión) y U8 (módulo RFID/NFC). El bus sale además por el conector rotulado I2C, para conectar la demoboard con unidades externas.

En el diagrama se ve que OLED1 se alimenta a través de dos puentes de tres vías que deben ponerse uno en posición complementaria al otro. El objetivo es aceptar las distintas versiones del módulo que hay en el mercado, porque algunas traen invertidos los pines de alimentación + y, (1 y 2). Si el pin 1 es positivo, se cierra J1 en +3V3 y J2 en GND. Si es negativo, al revés (J1 en GND y J2 en +3V3).

Bus SPI, LED y botones

El módulo ESP32 también implementa un bus SPI de 4 hilos (MISO, MOSI, SCK y CS), útil para conectar la demoboard con dispositivos SPI a través del conector del mismo nombre y con varios sensores. El sensor U4 de la placa admite comunicación bidireccional por SPI o I²C, pero el equipo prefirió conectarlo a U1 por el bus I²C ya descrito, que usa las líneas D21/SDA y D22/SCL del ESP32.

El bus SPI completo usa las líneas de E/S D13 (MOSI), D12 (MISO), D14 (SCK) y D15 (CS, selección de chip) del ESP32. En su conector salen también GND y la alimentación de +3,3 V.

La placa suma dos LED multifunción manejados por las líneas D25 y D26 del módulo U1. Durante la comunicación USB indican la conmutación del canal de datos, y el firmware los puede usar según la aplicación. Completan el circuito cinco botones unipolares normalmente abiertos, que sirven para fijar valores o umbrales o para navegar por menús en pantalla. Su disposición en el circuito impreso recuerda a la de un control de videojuegos clásico. Quien quiera usarlos para otras funciones puede hacerlo modificando el firmware de ejemplo que se irá publicando y renombrarlos según lo que necesite.

Al centro de la demoboard va una pequeña protoboard de 170 contactos. Sirve para cablear tarjetas de expansión con cables de puente de Arduino y los contactos SIL o conectores de los módulos de la placa, o para conectar componentes activos y pasivos a partes específicas del circuito y armar pequeños circuitos propios.

¿Cómo se arma?

El montaje parte por el circuito impreso de doble cara, donde van todos los componentes. Para que el proyecto sea más accesible a los makers, todos son THT, es decir, de montaje pasante o tradicional. Con el circuito impreso en la mano, la placa se arma con un equipo mínimo, que es un cautín de electrónica, estaño y un alicate de corte para recortar los terminales sobrantes.

El circuito impreso se fabrica en un servicio de PCB a partir de las dos caras de cobre que la revista ofrece para descargar. Con la placa lista, se pasa al montaje propiamente tal.

Se empieza soldando los componentes de menor perfil, o sea resistencias, LED, condensadores no polarizados, tiras de pines macho y tiras hembra para las conexiones y los módulos que irán montados. Después van los LED, los botones y los condensadores electrolíticos, y al final el conector de alimentación. La protoboard no tiene pines ni terminales, así que se pega con cinta de doble contacto en la posición que indica el plano de montaje. En los componentes polarizados (semiconductores y electrolíticos) hay que respetar con rigor el sentido de inserción que muestra ese plano.

Hay que fijarse en la polaridad de los contactos de alimentación de la pantalla OLED y ajustar los puentes J1 y J2 como se explicó más arriba, para que reciba la alimentación con la polaridad correcta.

Para alimentar la placa se necesita una fuente, no necesariamente estabilizada, que entregue entre 8 y 12 V de corriente continua y al menos 1 A. La corriente real depende de cuántos módulos se monten y de cuáles.

Aunque las fotos del artículo muestran la demoboard con todos los módulos puestos, no hace falta montarlos todos, solo los que se vayan a usar en cada momento. Dos tienen que estar siempre, el DC/DC (U2) y por supuesto U1, el módulo que contiene el SoC ESP32.

Lista de materiales

  • C1, C4, C6, C8, C10 y C11: cerámicos de 100 nF
  • C2, C3, C5, C7 y C9: electrolíticos de 100 µF y 16 V
  • LD1: LED rojo de 5 mm
  • LD2: LED verde de 5 mm
  • P1, P2, P3, P4 y P5: microinterruptores
  • R1 y R2: 330 ohm
  • R3: 4,7 kohm
  • R4: 10 kohm
  • R5: 6,8 kohm
  • R6: 3,3 kohm
  • RL1: relé de 5 V con un contacto conmutado
  • U1: placa de expansión ESP32-WROOM-32
  • U2: módulo reductor de 5 V y 3 A
  • U3: módulo de calidad del aire SGP30
  • U4: sensor de rayos AS3935
  • U5: módulo de gestos PDS-9960
  • U6: módulo sensor UVB
  • U7: módulo sensor de presión
  • U8: módulo NFC/RFID
  • OLED1: pantalla OLED de 0,96 pulgadas
  • Tira de pines macho de 2 vías, paso 2,54 mm (4 unidades)
  • Tira de pines macho de 3 vías, paso 2,54 mm (5 unidades)
  • Tira de pines macho de 4 vías, paso 2,54 mm (1 unidad)
  • Tira de pines macho de 6 vías, paso 2,54 mm (3 unidades)
  • Tira de pines macho de 7 vías, paso 2,54 mm (1 unidad)
  • Tira de pines macho de 15 vías, paso 2,54 mm (2 unidades)
  • Tira de pines hembra de 2 vías, paso 2,54 mm (4 unidades)
  • Tira de pines hembra de 4 vías, paso 2,54 mm (2 unidades)

Esta es la primera parte del proyecto. Las siguientes entregas de Open Electronics traerán el firmware de prueba para cada módulo.