PIIO Board


Steelsquid PIIO is a expansion board for Raspberry Pi 1 model B+ revision 1.2 and Raspberry Pi 2 model B. Has been working on this for a while now and have just some tests and coding for Steelsquid Kiss OS remaining.
The simple example is now finished :-)
The board is 120x100mm and is connected to the Raspberry Pi with a female PIN header and two 18mm spacers. It has DAC, ADC, PWMButtons, LED, LCDAccelerometer & GyroServo, DC motor controller and more... (see Features below).
If you use Steelsquid Kiss OS it is easy to control the board, you do not need to know the I2C address. 
If you do not use Steelsquid Kiss OS you can read the I2C addreas and PIN below (see I2C addresses and PIN/Terminal connections).

Working on a new version now with kickback diods for the motordriver SN754410NE.

If you want all the features the board is pretty expensive, if you take away the most expensive stuff like ACC & Gyro, External 3.3V regulator and the DAC it will cost about $160 if you count shipping from all suppliers.
I'm thinking of making a kit that you can buy, Buying in Bulk, I think i can sell it for about $99.
Is anyone interested?

Features

  • Power on and power off buttons
    Power is cut by a relay.
    Configurable power of delayed, 2 to 60 seconds (for clean shutdown).
  • Power is connected via screw terminals (8 to 26V)
  • Supply external devices from main power (Will also cut on power off).
  • Built in 5V step down regulator
  • Can bypassed 5V regulator and use 5V as input.
  • Built in variable step down regulator.
  • Can connect external 3.3v regulator if the Raspberry Pi's not enough
  • Screw terminals and PINS for 3.3v, 5v, GND and I2C
    Easy to connect external stuff.
  • You can read the main input voltage in your programs.
  • System will power of on to low voltage (if configured).
  • Dual DC motor controller (1A continuously 2A peek)
    Can easily be extended to handle higher current.
  • Only 4 of the 26 Raspberr Pi GPIOs is used by the board (GPIO 02, 03, 19 and 26).
    The rest you can use.
  • 8 of the Raspberry GPIO can handle 5V logic.
  • 8 extra GPIO (3.3v).
  • 8 extra power output GPIO with ULN2803A that can handle 500mA 50V.
  • Control 12 hobby servos.
  • 7 ADC (Analog-to-digital converter)
  • 4 DAC (Digital-to-analog converter)
  • Triple Axis Accelerometer & Gyro 

  • 4 PWM (Pulse-width modulation)
    Shared by the DC motorcontroller.
  • 6 DIP switches (Configure your device)
  • 6 Buttons (Control your device)
  • 6 LED's (View events)
  • One Buzzer (Alert)
  • LCD to print stuff
    By default the IP will print if you use Steelsquid KISS OS
  • One info button
    By default the IP will printed to LCD if you use Steelsquid KISS OS
  • One green OK LED.
    Will light on OK event if you use Steelsquid Kiss OS.
  • One red Error LED.
    Will light on ERROR event if you use Steelsquid Kiss OS.
  • One yellow Network LED.
    Will light when network is connected if you use Steelsquid Kiss OS.
  • One blue Bluetooth LED.
    Will light when Bluetooth is enabled if you use Steelsquid Kiss OS.
  • One red Low battery LED.
    Will light when low battery if configured on Steelsquid Kiss OS.
  • One power is on LED and one powering off LED.
    Powering off will light when the system is powering down.

Board overview

Explanation about the different parts of the board.

  • 01: V_IN, MAIN_POWER_IN
    Connect to main power here.
    8V to 26V. If you have jumper on BYPASS_5V_REG this must be 5V.
  • 02: V_MAIN, MAIN_POWER_OUT
    Same voltage as V_IN. Will be 0V when power is off.
  • 03: V_ADJ
    Variable voltage regulator.
    Use this to generate the voltage you need for your project.
  • 04: V_ADJ
    Output for the V_ADJ
  • 05: V_ADJ_ON
    To use the variable voltage regulator V_ADJ add jumper here.
  • 06: 5V_REG
    5V out
  • 07: 5V_REG
    If you do not have 5V V_IN set the jumper here. You can then use 8V to 26V on V_IN
  • 08: BYPASS_5V_REG
    Jumper here if you has 5V on V_IN.
  • 09: 3V3_REG
    3.3V out.
    If you want to use external 3.3V. 
    E.g. this one: D24V10F3
    You need to remove the PI_3V3_REG jumper.
  • 10: PI_3V3_REG
    Short circuit (jumper) to use Raspberry Pi internal 3.3V regulator.
  • 11: POWER_ON
    The power on button.
  • 12: GPIO_5V
    8 of the Raspberry PI GPIO can handle 5V. Add jumper GPIO_5V_ON to enable it.
  • 13: GPIO_5V_ON
    To use the 8 Raspberry Pi GPIO with 5V add jumper here.
  • 14: GND
    Ground
  • 15: GPIO
    Raspberry Pi ordinary 3.3v GPIO.
  • 16: DELAY_POW_OFF
    On shutdown a signal will delay a while then turn of the power.

    With this trim potentiometer  you can set the delay from about 2 to 60 seconds.
  • 17: PWM
    Pulse-width modulation
    This is shared by the motor driver 
    MOTOR_2 and 
    MOTOR_2.
  • 18: MOTOR_1, MOTOR_2
    Drive 2 DC motors
    This is shared by the PWM.
  • 19: V_M
    Put a jumper her to enable the 
    motor controller MOTOR_1 and MOTOR_2.
  • 20: POWER_IS_ON
    Will light when power is on
  • 21: LOW_BAT
    If use Steelsquid Kiss OS this can be configured to light when low voltage on V_IN
  • 22: POWERING_OFF
    If use Steelsquid Kiss OS this will light when the system power down
  • 23: POWER_OFF
    If Steelsquid Kiss OS this will power of the system after a configurable number of seconds (DELAY_POW_OFF)
  • 24: INFO
    Push this to get info, on Steelsquid Kiss OS it will show the IP on LCD and Display.
  • 25: SWITCH_1 to 6
    Use this to control your device...You decide what do to with them.
  • 26: LED_1 to 6
    Use this to show output from your device...You decide what do to with them.
  • 27: BUZ
    Will buz on error and restart.
    You can also use it in your programs.
  • 28: BT_ON
    If use Steelsquid Kiss OS this will light when bluetooth is enabled.
  • 29: NET
    If use Steelsquid Kiss OS this will light when the device is connected to a network.
  • 30: ERROR
    If use Steelsquid Kiss OS this will light when error occur
  • 31: OK
    If use Steelsquid Kiss OS this will light on event...print to LCD and other... 
  • 32: ADC_1 to 7
    Analog to digital converter, 0 to 3.3V
  • 33: DAC_1 to 4
    Digital to analog converter, 0 to 3.3V
  • 34: BUTTON_1 to 6
    Use this to control your device...You decide what do to with them.
  • 35: OLED_LCD
    Connect a OLED LCD
  • 36: POWER_1 to 8
    Output GPIO for larger voltage and current (28V, 500mA).
  • 37: XGPIO_1 to 8
    Extra gpio to use.
  • 38: ACC_GYRO
    Connect a Geeetech MPU-6050
  • 39: SERVO_1 to 12
    Connect 12 servos
  • 40: V_SERVO
    Voltage for the servos.
    Put jumper if you want to us 5V.
  • 41: I2C
    C0nnect I2C devices

I2C addresses

Below is a list of I2C addresses to all the circuits on the board.

PIN/Terminal/Button/LED connections...

Here I describe how pins, terminals, buttons, LED and other stuff are connected (To which device). 
First those who need a little extra explanation, then a table with all.
  • GPIO (22 PINS)
    The ordinary Raspberry Pi GPIOs (3.3V)
    PIN=Pin on PCB      GPIO=The Raspberry Pi GPIO number
    PIN GPIO    PIN GPIO    PIN GPIO    PIN  GPIO    PIN GPIO    PIN GPIO
    1 14   5 24   9 12   13 4   17 10   21 6
    2 15   6 25   10 16   14 17   18 9   22 13
    3 18   7 8   11 20   15 27   19 11  

    4 23   8 7   12 21   16 22   20 5  

  • GPIO_5V (8 PINS)
    14, 15, 18, 23, 24, 25, 8 and 7 of the Raspberry Pi GPIOs can handle 5V.
  • POWERING_OFF (Orange LED, 2 PIN)
    Trigger when system powering off (If use Steelsquid Kiss OS).
    Is connected to  IO1 on P016-I2C.
    IO1 is also connected to transistor BC547B that trigger the power off.
    The SRD-05VDC-SL-C relay will power of in configurable seconds (TRIM).

  • POWER_OFF (Red button, 2 PIN)
    Push button to trigger shutdown of system.
    Is connected to B7 on 
    MCP23017 (I2C=0x21).
    The system will start to shutdown and send power off signal (see 
    POWERING_OFF)
  • I2C
    GPIO 2 and 3 is used for the I2C
  • Trigger for MCP23017 (will trigger gpio when chnage on MCP23017)
    The GPIO 19 is connected to trigger A on the MCP23017 (I2C=0x20)
    The GPIO 26 is connected to trigger A on the MCP23017 (I2C=0x21)
  • MOTOR_1 (2 Screw Terminal)
    Drive a DC motor forward and reverse.
    Is connected to M1 on the SN754410NE.
    The forward PWM for M1 is connected to PWM1 on P016-I2C.
    The reverse PWM for M1 is connected to PWM4 on P016-I2C.

  • MOTOR_2 (2 Screw Terminal)
    Drive a DC motor forward and reverse.
    Is connected to M2 on the SN754410NE.
    The forward PWM for M2 is connected to PWM3 on P016-I2C.
    The reverse PWM for M2 is connected to PWM2 on P016-I2C.

PIN/Terminal...
Name on PCB
PIN/Terminal...
Type
Device name
on PCB
I2C Address
on device
PIN on device   Short description
what is it used for
PWM_1PINP016-I2C0x36PWM3Pulse-width modulation
PWM_2PINP016-I2C0x36PWM2Pulse-width modulation
PWM_3PINP016-I2C0x36PWM1Pulse-width modulation
PWM_4PINP016-I2C0x36PWM4Pulse-width modulation
MOTOR_1 forward Screw Terminal P016-I2C 0x36 PWM1 Drive a DC motor forward and reverse
MOTOR_1 reverse Screw Terminal P016-I2C 0x36 PWM4
Drive a DC motor forward and reverse
MOTOR_2 forward Screw Terminal P016-I2C 0x36 PWM3 Drive a DC motor forward and reverse
MOTOR_2 reverse Screw Terminal P016-I2C 0x36 PWM4 Drive a DC motor forward and reverse
LOW_BAT Red LED and PINS P016-I2C 0x36 IO3 On low battery (If configured)
POWERING_OFF Orange LED and PINS P016-I2C 0x36 IO1 On system powering off
LED_1 White LED and PINS P016-I2C 0x36 IO2 A LED to use for whatever you want
LED_2 White LED and PINS P016-I2C 0x36 IO4 A LED to use for whatever you want
LED_3 White LED and PINS P016-I2C 0x36 IO5 A LED to use for whatever you want
LED_4 White LED and PINS P016-I2C 0x36 IO6 A LED to use for whatever you want
LED_5 White LED and PINS P016-I2C 0x36 IO7 A LED to use for whatever you want
LED_6 White LED and PINS P016-I2C 0x36 IO8 A LED to use for whatever you want
BUZ Buzzer P012_I2C 0x34 D2 Beep on error or other events
BT_ON Blue LED and PINS P012_I2C 0x34 D3 Is bluetooth enabled
NET Yellow LED and PINS P012_I2C 0x34 D1 Is connected to network
ADC_1 PIN P012_I2C 0x34 AN4 Analog-to-digital converter
ADC_2 PIN P012_I2C 0x34 AN5 Analog-to-digital converter
ADC_3 PIN P012_I2C 0x34 AN6 Analog-to-digital converter
ADC_4 PIN P012_I2C 0x34 AN7 Analog-to-digital converter
ADC_5 PIN P012_I2C 0x34 AN2 Analog-to-digital converter
ADC_6 PIN P012_I2C 0x34 AN8 Analog-to-digital converter
ADC_7 PIN P012_I2C 0x34 AN1 Analog-to-digital converter
--- Voltage divider P012_I2C 0x34 AN3 Voltage divider to read in voltage
DAC_1 PIN MCP4728 0x61 Vo0 Digital-to-analog converter
DAC_2 PIN MCP4728 0x61 Vo0 Digital-to-analog converter
DAC_3 PIN MCP4728 0x61 Vo0 Digital-to-analog converter
DAC_4 PIN MCP4728 0x61 Vo0 Digital-to-analog converter
OK Green LED and PINS MCP23017 0x21 A6 On OK event from system
ERROR Red LED and PINS MCP23017 0x21 A7 On ERROR event from system
BUTTON_1 Black button, 2 PIN MCP23017 0x21 A0 Button to use for whatever you want
BUTTON_2 Black button, 2 PIN MCP23017 0x21 A1 Button to use for whatever you want
BUTTON_3 Black button, 2 PIN MCP23017 0x21 A2 Button to use for whatever you want
BUTTON_4 Black button, 2 PIN MCP23017 0x21 A3 Button to use for whatever you want
BUTTON_5 Black button, 2 PIN MCP23017 0x21 A4 Button to use for whatever you want
BUTTON_6 Black button, 2 PIN MCP23017 0x21 A5 Button to use for whatever you want
SWITCH_1 DIP Switch, 2 PIN MCP23017 0x21 B5 DIP swith to use for whatever you want
SWITCH_2 DIP Switch, 2 PIN MCP23017 0x21 B4 DIP swith to use for whatever you want
SWITCH_3 DIP Switch, 2 PIN MCP23017 0x21 B3 DIP swith to use for whatever you want
SWITCH_4 DIP Switch, 2 PIN MCP23017 0x21 B2 DIP swith to use for whatever you want
SWITCH_5 DIP Switch, 2 PIN MCP23017 0x21 B1 DIP swith to use for whatever you want
SWITCH_6 DIP Switch, 2 PIN MCP23017 0x21 B0 DIP swith to use for whatever you want
INFO Yellow button, 2 PIN MCP23017 0x21 B6 Default print network IP
POWER_OFF Red button, 2 PIN MCP23017 0x21 B7 Send signal to power off
OLED_LCDFemale PINSOLED_LCD0x3C-Detachable OLED, print text to LCD
XGPIO_1 PIN MCP23017 0x20 B7 Extra 3.3V GPIO
XGPIO_2 PIN MCP23017 0x20 B6 Extra 3.3V GPIO
XGPIO_3 PIN MCP23017 0x20 B5 Extra 3.3V GPIO
XGPIO_4 PIN MCP23017 0x20 B4 Extra 3.3V GPIO
XGPIO_5 PIN MCP23017 0x20 B3 Extra 3.3V GPIO
XGPIO_6 PIN MCP23017 0x20 B2 Extra 3.3V GPIO
XGPIO_7 PIN MCP23017 0x20 B1 Extra 3.3V GPIO
XGPIO_8 PIN MCP23017 0x20 B0 Extra 3.3V GPIO
POWER_1 PIN MCP23017 0x20 A0 Extra out GPIO (via ULN2803A)
POWER_2 PIN MCP23017 0x20 A1 Extra out GPIO (via ULN2803A)
POWER_3 PIN MCP23017 0x20 A2 Extra out GPIO (via ULN2803A)
POWER_4 PIN MCP23017 0x20 A3 Extra out GPIO (via ULN2803A)
POWER_5 PIN MCP23017 0x20 A4 Extra out GPIO (via ULN2803A)
POWER_6 PIN MCP23017 0x20 A5 Extra out GPIO (via ULN2803A)
POWER_7 PIN MCP23017 0x20 A6 Extra out GPIO (via ULN2803A)
POWER_8 PIN MCP23017 0x20 A7 Extra out GPIO (via ULN2803A)
SERVO_1 PIN SERVO12C(HT) 0x28 S0 Drive hobby servo
SERVO_2 PIN SERVO12C(HT) 0x28 S1 Drive hobby servo
SERVO_3 PIN SERVO12C(HT) 0x28 S2 Drive hobby servo
SERVO_4 PIN SERVO12C(HT) 0x28 S3 Drive hobby servo
SERVO_5 PIN SERVO12C(HT) 0x28 S4 Drive hobby servo
SERVO_6 PIN SERVO12C(HT) 0x28 S5 Drive hobby servo
SERVO_7 PIN SERVO12C(HT) 0x28 S6 Drive hobby servo
SERVO_8 PIN SERVO12C(HT) 0x28 S7 Drive hobby servo
SERVO_9 PIN SERVO12C(HT) 0x28 S8 Drive hobby servo
SERVO_10 PIN SERVO12C(HT) 0x28 S9 Drive hobby servo
SERVO_11 PIN SERVO12C(HT) 0x28 S10 Drive hobby servo
SERVO_12 PIN SERVO12C(HT) 0x28 S11 Drive hobby servo
ACC_GYROFemale PINSMPU-60500x69-Detachable Acc/Gyro/Temp board