Para permitir o aumento fácil da quantidade de entradas optoacopladas e saídas a relé das CPB, desenvolvemos módulos de expansão. Essas placas de expansão, conhecidas como Módulos I/O, possuem uma interface de conexão I2C isolada que aumenta a segurança da comunicação entre a CPB e os Módulos I/O.
Neste blog, vamos aprender como utilizar os módulos de expansão I/O com a CPB32h.
Sumário
1. Visão geral
Para a conexão entre os Módulos I/O e a CPB32h, devemos utilizar o Shield de Expansão I2C. O shield possui uma interface que permite a conexão de dispositivos I2C através de um conector RJ45, simplificando a conexão entre as placas. Além disso, ele possui hardware para isolar a I2C e a alimentação entre o microcontrolador e o campo, garantindo mais robustez. Na figura a seguir, podemos ver o Shield de Expansão I2C.
O Shield Expansão I2C utiliza os pinos de comunicação do microcontrolador. Na tabela a seguir podemos ver os pinos utilizados para I2C quando utilizamos o Shield com a CPB32h.
A região de conexão com shields da CPB32h segue o mesmo padrão de posição e distância utilizado nas placas Arduino. No entanto, a numeração dos pinos é adaptada para as necessidades da CPB32h e de alguns dos nossos shields. Na figura a seguir, podemos ver essa região em destaque.
Com a imagem ampliada, conseguimos ver onde cada pino do ESP32 está conectado, permitindo-nos projetar a aplicação com maior precisão. Veja a figura a seguir.
Na figura, podemos identificar 5 conectores, designados como J1, J2, J3, J4 e J5. O conector J1 nos concede acesso aos pinos de alimentação e ao Enable do ESP32, com algumas especificações adicionais. Por exemplo, Vin fornece uma tensão de 7 volts, essa tensão é destinada a alimentar shields do barramento, de modo que não necessitem utilizar os 3,3V da CPB32h caso consumam uma corrente alta (por exemplo, superior a 100mA). Nesse caso, se a corrente for superior, é recomendado que haja um regulador 3,3V na própria shield.
Os conectores J3 e J4 fornecem acesso direto aos outros pinos do ESP32, sendo que no J3 estão os pinos 21 e 22, comumente utilizados para comunicação I2C. O conector J5 fornece acesso aos pinos comumente usados para comunicação SPI.
De um modo geral, a disposição dos pinos permite a conexão com shields de outros fabricantes, entretanto, devemos sempre analisar a compatibilidade dos pinos da CPB32h com o shield que será utilizado. Na figura a seguir podemos ver um exemplo de conexão de dois módulos I/O com a CPB32h.
2. Como utilizar os módulos I/O
Para um exemplo mais detalhado da utilização dos módulos I/O, vamos controlar duas lâmpadas utilizando o Módulo I/O 9x7. No entanto, a lógica é a mesma para o Módulo I/O 4x4. Na figura a seguir, podemos ver a topologia utilizada neste exemplo.
Os relés irão acionar duas lâmpadas, e na entrada optoacoplada será conectada uma botoeira. Como exemplo, vamos controlar a lâmpada da direita utilizando a botoeira, enquanto a lâmpada da esquerda ficará piscando. A seguir, podemos ver o código utilizado no exemplo.
#include <Arduino.h>
#include <Wire.h>
#include "PCAL9535A.h"
PCAL9535A::PCAL9535A<TwoWire> gpio(Wire);
void setup() {
Wire.begin(21, 22); //Joing I2C bu
Serial.begin(9600);
gpio.begin(PCAL9535A::HardwareAddress::A001); // 0x20 - Pins = 000
for (int i = 9; i < 16; i++)
{
gpio.digitalWrite(i, 0); // LED Off
gpio.pinMode(i, OUTPUT);
}
}
bool pisca = 0;
void loop() {
for (int i = 0; i < 9; i++)
{
Serial.print(gpio.digitalRead(i));
}
Serial.println();
gpio.digitalWrite(9, gpio.digitalRead(0));
gpio.digitalWrite(10, pisca);
delay(500);
pisca = !pisca;
}
A biblioteca utilizada no código (PCAL9535A.h) está disponível para download neste link. Para incluí-la na IDE do Arduino, vá em Sketch -> Incluir Biblioteca -> Adicionar Biblioteca.zip.
Neste blog, vimos como utilizar o módulo I/O com a CPB32h. Estes módulos permitem que a CPB32h expanda a quantidade de entradas e saídas controladas por ela. Se você deseja ver mais detalhes sobre nossos produtos, clique neste link.
Autor: Thales Ferreira
Comments