Skip to content
forked from kelly/node-i2c

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

License

Notifications You must be signed in to change notification settings

ulsmith/node-i2c

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

i2c

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

Update ulsmith

Removed coffee script, underscore. Removed need for wrapper class and added native async support. Allowed write bytes to take a single or array of bytes.

Install

$ npm install node-i2c-js

Usage

var i2c = require('node-i2c-js');
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

Contributors

Thanks to @alphacharlie for Nan rewrite, and @J-Cat for Node 14 updates.

Questions?

http://www.twitter.com/korevec

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 66.9%
  • C++ 26.8%
  • JavaScript 5.8%
  • Python 0.5%