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);