node-i2c

by kelly

kelly / node-i2c

Node.js native bindings for i2c-dev. Plays well with Raspberry Pi and Beaglebone.

202 Stars 88 Forks Last release: Not found Other 61 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

i2c

Bindings for i2c-dev. Plays well with Raspberry Pi and Beaglebone.

Install

$ npm install i2c

Usage

var i2c = require('i2c');
var address = 0x18;
var wire = new i2c(address, {device: '/dev/i2c-1'}); // point to your i2c address, debug provides REPL interface

wire.scan(function(err, data) { // result contains an array of addresses });

wire.writeByte(byte, function(err) {});

wire.writeBytes(command, [byte0, byte1], function(err) {});

wire.readByte(function(err, res) { // result is single byte })

wire.readBytes(command, length, function(err, res) { // result contains a buffer of bytes });

wire.on('data', function(data) { // result for continuous stream contains data buffer, address, length, timestamp });

wire.stream(command, length, delay); // continuous stream, delay in ms

// plain read/write

wire.write([byte0, byte1], function(err) {});

wire.read(length, function(err, res) { // result contains a buffer of bytes });

Raspberry Pi Setup

$ sudo vi /etc/modules

Add these two lines

i2c-bcm2708 
i2c-dev
$ sudo vi /etc/modprobe.d/raspi-blacklist.conf

Comment out blacklist i2c-bcm2708

#blacklist i2c-bcm2708

Load kernel module

$ sudo modprobe i2c-bcm2708
$ sudo modprobe i2c-dev

Make device writable

sudo chmod o+rw /dev/i2c*

Install gcc 4.8 (required for Nan)

sudo apt-get install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
sudo update-alternatives --config gcc 

Set correct device for version

new i2c(address, device: '/dev/i2c-0') // rev 1
new i2c(address, device: '/dev/i2c-1') // rev 2

Beaglebone

$ ntpdate -b -s -u pool.ntp.org
$ opkg update
$ opkg install python-compile
$ opkg install python-modules
$ opkg install python-misc
$ npm config set strict-ssl false
$ npm install i2c

Node 0.11 and under

npm install [email protected]

Projects using i2c

  • bonescript https://github.com/jadonk/bonescript/
  • ADXL345 https://github.com/timbit123/ADXL345
  • HMC6343 https://github.com/omcaree/node-hmc6343
  • LSM303 https://github.com/praneshkmr/node-lsm303
  • MPU6050 https://github.com/jstapels/mpu6050/
  • MCP3424 https://github.com/x3itsolutions/mcp3424
  • blinkm https://github.com/korevec/blinkm
  • click boards https://github.com/TheThingSystem/node-click-boards
  • more: https://www.npmjs.org/browse/depended/i2c

Contributors

Thanks to @alphacharlie for Nan rewrite!

Questions?

http://www.twitter.com/korevec

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.