This I2C relay controller was designed to function as a relay shield for Arduino Nano.
This controller consists of 16 relays. The on-board relays are controlled by a MCP230017 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. Sixteen LEDs indicate the status of the sixteen 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. The start address of this device is set using 3 on-board jumpers.
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.