Objetivos
Material requerido.
Un ESP32 | |
Un PCF8575 | |
Un módulo de 16 relés |
Mas pines para ESP32
Lo de andar falto de pines es una constante cunado hacemos proyectos con Arduino UNO, que suelen ser bastante fácilmente subsanable si pasamos a un Arduino MEGA, pero la falta de éste de WIFI o Bluetooh, y su baja velocidad de reloj, nos ha llevado a casi todos a usar con más frecuencia el ESP32 como base de nuestros proyectos.
Y si la falta de pines era frecuente con el Arduino UNO, en el caso del ESP32 es dramática porque nos quedaremos sin entradas salidas con mucha mas facilidad, debido a la escasez de este micro controlador de pines IO disponibles.
Por eso parece interesante hacer una sesión para hablar de como usar el PCF8575 para ampliar el numero de pines disponibles y para ello vamos a usar el mismo circuito que usamos en la última sesión donde lo conectábamos al Arduino UNO.
Diagrama de conexión PCF8575 con ESP32
<
La cosa no tiene perdida. Basta con conectar los pines I2C del PCF8575 a los correspondientes del ESP32:
Tensión | Ground | SCL | SDA | |
---|---|---|---|---|
PCF8575 | Vcc | GND | SCL | SDA |
ESP32 | 3V | GND | 22 | 21 |
Como ves, las conexiones son triviales, pero hay un par de cuestione por las que merecía la pena hacer el montaje:
16 x 70 mA + 500 mA = 1.620 mA
El programa es el mismo de la última sesión:
#include "PCF8575.h" PCF8575 EXT(0x20); int pause = 400; void setup() { Serial.begin(115200); EXT.begin(); for (int i=0; i<16; i++) EXT.pinMode(i, OUTPUT); } void loop() { for (int i=0; i<16; i++) { Serial.println(i); EXT.digitalWrite(i, LOW); delay (pause); EXT.digitalWrite(i, HIGH); delay (pause); } }
Usando varios PCF8575 simultáneamente
Vale, podemos añadir 16 entradas / salidas a mi ESP32 ¿Y que pasa si aun necesito más?
Pues en realidad puedes combinar 8 para generar un total de 8x 16 = 128 pines adicionales, sin mas que modificar la dirección I2C de ellos. Si te fijas en la parte inferior de la Breakout veras algo como esto:
Hay 3 columnas rotuladas como A0, A1, A2 que son los 3 bits que podemos usar para cambiar la dirección del chip a partir de la dirección de base (0x20). En principio al no estar conectadas ninguna entiende que la dirección es la base 0x20.
Sin embargo, podemos usar estos 3 pines para crear una cantidad de 0 a 7 que se sumara a la dirección base. Por ejemplo, si conecto con el soldador A0 a VDD (Este pin valdrá 1) conecto A1 a VDD (También valdrá 1) y dejo libre A2 o bien lo conecto a GND, el resultado será
011 -> 3
Es decir que la dirección final será la suma de 0x20 Hex + 3 = 0x23 hex como resultado, y mediante este procedimiento podemos cambiar la dirección de otros 7 chips PCF8575 para conseguir las direcciones 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26 y 0x27. De este modo podemos conectar hasta los 8 unidades del PCF8575 al mismo bus I2C, permitiéndonos hasta 128 entradas salidas adicionales.
Y si soy tan de especial que aun necesito más de 128 pines… ¿Qué? Bueno, esto… ese será el tema de los próximos capítulos porque a mi no me corta nadie que soy de Bilbao.
<