This extension board is designed to have 8 output ports over the SPI protocol on a ULN2803 Darlington array. It uses an MCP23S08 SPI controller to drive the ULN2803 Darlington array to switch relays, LEDs, etc. With the DIP switch, You can choose the SPI address, if You need to have two or more board connectors on the same SPI bus.

Technical data:
I2C controler: MCP23S08-E/SO
Darlington array: ULN2803
Protocol: SPI
Operating Voltage for VCC: 1.8VDC to 5.5VDC
Maximum output current: 500mA
Board dimensions: 43 x 30mm

Example of Arduino IDE code, to turn off/on pins:

#include <Adafruit_MCP23X08.h>
#include <SPI.h>

// MCP23S08 Pin Setup
#define PIN0 0 
#define PIN1 1
#define PIN2 2
#define PIN3 3
#define PIN4 4
#define PIN5 5
#define PIN6 6
#define PIN7 7
#define PIN8 8

#define CS_PIN 10

Adafruit_MCP23X08 mcp;

void setup() {
Serial.begin(115200);
Serial.println("MCP23xxx switching test");

if (!mcp.begin_SPI(CS_PIN)) {
Serial.println("Error!");
while (1);
}

// PIN Settings
mcp.pinMode(PIN0, OUTPUT);
mcp.pinMode(PIN1, OUTPUT);
mcp.pinMode(PIN2, OUTPUT);
mcp.pinMode(PIN3, OUTPUT);
mcp.pinMode(PIN4, OUTPUT);
mcp.pinMode(PIN5, OUTPUT);
mcp.pinMode(PIN6, OUTPUT);
mcp.pinMode(PIN7, OUTPUT);
mcp.pinMode(PIN8, OUTPUT);
Serial.println("Loop...");
}

void loop() {
Serial.println("Switch all ON");
mcp.digitalWrite(PIN0, HIGH);
mcp.digitalWrite(PIN1, HIGH);
mcp.digitalWrite(PIN2, HIGH);
mcp.digitalWrite(PIN3, HIGH);
mcp.digitalWrite(PIN4, HIGH);
mcp.digitalWrite(PIN5, HIGH);
mcp.digitalWrite(PIN6, HIGH);
mcp.digitalWrite(PIN7, HIGH);
mcp.digitalWrite(PIN8, HIGH);
delay(500);
Serial.println("Switch all OFF");
mcp.digitalWrite(PIN0, LOW);
mcp.digitalWrite(PIN1, LOW);
mcp.digitalWrite(PIN2, LOW);
mcp.digitalWrite(PIN3, LOW);
mcp.digitalWrite(PIN4, LOW);
mcp.digitalWrite(PIN5, LOW);
mcp.digitalWrite(PIN6, LOW);
mcp.digitalWrite(PIN7, LOW);
mcp.digitalWrite(PIN8, LOW);
delay(500);
}