Este interface Pode ser interligado em um Raspberry Pi3, em um Arduíno, ou outro tipo de plataforma por I2C. Além disso pode ser interligado com as nossas plataformas Arduíno e ESP32.
Em um mesmo bus I2C podem ser ligadas 8 interfaces iguais, com endereçamentos diferentes:
A0|A1 |A2 EndereçoA interface pode ser ligada e controlada diretamente pelos GPIOS de um Raspberry PI:
Inputs GPIOS MCP23008RASP-IOS é uma interface para interligar a um Raspberry ou compatível, com 4 entradas isoladas, 4 saídas por relé. As entradas e as saídas podem ser controladas / lidas por I2C ou então diretamente pelos GPIOS do Raspberry Pi. Em cada entrada é detetado um sinal que pode ir de 5V até 28V DC ou AC, passa por um optocoupler de isolamento. Cada saída é um contacto seco de um relé que suporta até 10A.
Para comunicação das entradas e saídas por I2C é utilizado o integrado MCP23008 de 8 bits da Microchip, como controlador de I2C de IOS. As linhas I2C SDA e SCL são ligadas pelo barramento do Raspberry, ou então como alternativa estão disponíveis também nos conectores CN1 e CN2, para ser possível o seu funcionamento com qualquer microcontrolador.
Siga as seguinte imagem para saber como interligar a interface. Tome cuidado nas ligações.
Siga a explicação da imagem anterior. Os conectores laterais correspondem aos contactos dos relés, sendo que para cada relé existe um contacto normalmente fechado e um normalmente aberto. Nos conectores de baixo é para ligar as entradas, se for uma entrada com uma corrente continua, deverá respeitar a polaridade que a imagem indica. A linha preta é o GND a linha vermelha é o VCC da entrada. A interface pode ser interligada em um Raspberry Pi no bus de expansão, ou então pelos conectores externos de bus I2C. A alimentação pode ser recebida em ambos os conectores.
#!/usr/bin/python
import smbus
import time
import RPi.GPIO as GPIO
# Configurando o modo dos pinos como BCM
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
# I2C port especifica
I2C = smbus.SMBus(1)
DEVICE_ADDRESS = 0x20
MCP230xx_IODIRA = 0x00
MCP23017_IODIRB = 0x01
MCP23017_GPIOA = 0x12
MCP23017_GPIOB = 0x13
MCP23017_GPPUA = 0x0C
MCP23017_GPPUB = 0x0D
MCP23017_OLATA = 0x14
MCP23017_OLATB = 0x15
MCP23008_GPIOA = 0x09
MCP23008_GPPUA = 0x06
MCP23008_OLATA = 0x0A
#Configurar MCP23008
I2C.write_byte_data(DEVICE_ADDRESS, MCP230xx_IODIRA, 0x0F)
print("RASP-OUT TESTE I2C")
while (1):
time.sleep(2)
print ("I2C Inputs:")
MyInputsA = I2C.read_byte_data(DEVICE_ADDRESS, MCP23008_GPIOA)
print (MyInputsA)
time.sleep(5)
I2C.write_byte_data(DEVICE_ADDRESS, MCP23008_OLATA, 0x1F)
time.sleep(2)
I2C.write_byte_data(DEVICE_ADDRESS, MCP23008_OLATA, 0x2F)
time.sleep(2)
I2C.write_byte_data(DEVICE_ADDRESS, MCP23008_OLATA, 0x4F)
time.sleep(2)
I2C.write_byte_data(DEVICE_ADDRESS, MCP23008_OLATA, 0x8F)
time.sleep(2)
I2C.write_byte_data(DEVICE_ADDRESS, MCP23008_OLATA, 0x0F)
time.sleep(2)
Fim
Copyright Algarhard 2020. Todos os direitos reservados.