Breakout board I2C cheat sheet


  • Breakout board GPIO 1.8V
MRAA Physical Pin Edison Pin(SYSFS) Pinmode0 Pinmode1
6 J17-7 GP27 GPIO-27 I2C-6-SCL
7 J17-8 GP20 GPIO-20 I2C-1-SDA
8 J17-9 GP28 GPIO-28 I2C-6-SDA
19 J18-6 GP19 GPIO19 I2C-1-SCL
29 J19-2 V_V1P80
30 J19-3 GND
42 J20-1 V_VSYS
43 J20-2 V_V3P30

I2C hookup guide

1. Configure I2C-6 IO

First you must set IO18/IO19 ready for I2C. More info on Intel Edison GPIO multiplexing: http://www.emutexlabs.com/project/215-intel-edison-gpio-pin-multiplexing-guide

In intel edison:

mkdir scripts
cd scripts
vi configureIO.sh
    vi:
        i (input mode)
        copy code below
        [shift] + [insert] (paste)
        [ESC] (back to control mode)
        ZZ (Save and quit)

chmod u+x configureIO.sh

./configureIO.sh

configureIO.sh

echo 28 > /sys/class/gpio/export 
echo 27 > /sys/class/gpio/export 
echo 204 > /sys/class/gpio/export 
echo 205 > /sys/class/gpio/export 
echo 236 > /sys/class/gpio/export 
echo 237 > /sys/class/gpio/export 
echo 14 > /sys/class/gpio/export 
echo 165 > /sys/class/gpio/export 
echo 212 > /sys/class/gpio/export 
echo 213 > /sys/class/gpio/export 
echo 214 > /sys/class/gpio/export 
echo low > /sys/class/gpio/gpio214/direction 
echo low > /sys/class/gpio/gpio204/direction 
echo low > /sys/class/gpio/gpio205/direction 
echo in > /sys/class/gpio/gpio14/direction 
echo in > /sys/class/gpio/gpio165/direction 
echo low > /sys/class/gpio/gpio236/direction 
echo low > /sys/class/gpio/gpio237/direction 
echo in > /sys/class/gpio/gpio212/direction 
echo in > /sys/class/gpio/gpio213/direction 
echo mode1 > /sys/kernel/debug/gpio_debug/gpio28/current_pinmux 
echo mode1 > /sys/kernel/debug/gpio_debug/gpio27/current_pinmux 
echo high > /sys/class/gpio/gpio214/direction

2. Create Circuit

3. Testing

i2cdetect -y -r 6
node i2ctest.js

i2ctest.js

Modify to your needs. Made for Soil moisture sensor. https://www.tindie.com/products/miceuz/i2c-soil-moisture-sensor/

var mraa = require('mraa'); //require mraa

// helper function to go from hex val to dec
function char(x) { return parseInt(x, 16); }

i2c = new mraa.I2c(6);
i2c.address(0x20);
i2c.writeByte(char('0x06'));

function readMoisture() {
    i2c.address(0x20);
    i2c.writeByte(char('0x00'));
    d = i2c.read(2);
    console.log("Reading Moisture..");  
    console.log( ">> Moisture sensor value(capacitance):  INT:" + parseInt(d.toString('hex'),16) + "  HEX:" + d.toString('hex'));  
}

function outputLight() {
    //d = i2c.read(2);
    d = i2c.readWordReg(char('0x04'));
    //d = i2c.read(2);
    console.log("Reading Light..");  
    console.log( ">> Light sensor value(resistance): INT:" + d);  
}  

function readLight() {
    i2c.address(0x20);
    i2c.writeByte(char('0x03'));
    setTimeout(function (e) { outputLight(); }, 3000);
}

function readTemperature() {
    i2c.address(0x20);
    i2c.writeByte(char('0x05'));
    d = i2c.read(2);
    console.log("Reading Temperature..");  
    console.log( ">> Temperature sensor value(resistance): INT:" + parseInt(d.toString('hex'),16) + "  HEX:" + d.toString('hex'));  
}

setTimeout(function (e) { readMoisture(); }, 1000);
setTimeout(function (e) { readTemperature(); }, 1000);
setTimeout(function (e) { readLight(); }, 1000);