This I2C relay controller was designed to function as a relay shield for Arduino Micro.
This controller consists of 32 relays. Two groups of 16 relays on this controller service all 32 on-board relays. The on-board relays are controlled by dual MCP230017s using GPIOA0:7 and GPIOB0:7.
Controlling on-board relays is easy. Simply set GPIOA0:7 and GPIOB0:7 as Digital Outputs. Next, set the on/off status of GPIOA0:7 and GPIOB0:7 to activate the sixteen corresponding relays. Thirty-two LEDs indicate the status of the 32 on-board relays.
External devices may be wired to turn on when the relay turns on. Optionally, external devices may be wired to turn off when the relay turns on.
This controller includes an on-board I2C expansion port, allowing an easy pathway to expansion for controlling more relays, reading sensors, or expanding to any I2C device we develop in the future. Up to eight MCP23017 based devices may be connected to a single I2C port. This controller counts as two MCP23017s on the I2C bus. The start address of this device is set using 2 on-board jumpers. Up to four 32-Channel controllers are supported on a single I2C bus.
NOTE: Address A0 is permanently tied low on the first MCP23017 of this device. Address A0 is permanently tied high on the second MCP23017 of this device. This architecture prevents the possibility of on-board conflicts. Jumpers A1 and A2 must be set to unique positions on each subsequent 32-Channel relay controller on the I2C chain.