Skip to content

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

Transmission-Dynamics/node-i2c

 
 

Repository files navigation

i2c

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

Based on kelly/node-i2c, converted from CoffeeScript to TypeScript and from callbacks to promises, but with only a subset of the original project's methods.

Install

$ yarn add @jcoreio/i2c

Usage

import I2C from '@jcoreio/i2c'
const i2c = new I2C({ device: '/dev/i2c-1', address: 0x50 })
const OFFSET = 16

// In an async function
const writeData = Buffer.alloc(8)
try {
  await i2c.write(OFFSET, writeData)
  // wait 1 ms before reading back
  await new Promise(resolve => setTimeout(resolve, 1))
  // read back
  const readData = await i2c.read(OFFSET, 8)
} finally {
  i2c.close()
}

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

Releases

No releases published

Packages

No packages published

Languages

  • C 66.5%
  • C++ 26.6%
  • TypeScript 5.1%
  • JavaScript 1.3%
  • Python 0.5%