This I2C relay controller was designed to function as a relay shield for Arduino Nano.
Three groups of 8 relays on this controller service all 24 on-board relays using dual MCP23017 GPIO interface processors. The first MCP23017 controls the first 2 groups of 8 relays using GPIOA0:7 and GPIOB0:7. The third group of 8 relays is controlled by the second MCP23017 interface processor using GPIOA0:7, while GPIOB0:7 is reserved for user-programmable digital input/output (accessible using the on-board screw terminals).
Controlling relays is easy: simply set the associated GPIO port to Digital Outputs. Next, set the on/off state of each output the associated GPIO port to directly control the 24 on-board relays. Twenty-four LEDs indicate the status of the 24 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 relay should not be used in inductive applications (power switching applications involving motors or transformers of any kind).
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 8 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.