I2C - Ruby I2C library¶ ↑
About¶ ↑
Interface to Linux I2C (a.k.a. TWI) implementations. Right now targeted at the Raspberry Pi, but should work with any linux i2c-dev I2C-hardware.
Structure¶ ↑
The library is split into two parts:
-
A backend for accessing the I2C bus (right now only through the i2c-dev
in Linux, other impementations are possible).
-
Drivers for I2C enabled ICs.
Installation¶ ↑
To use the i2c-dev backend it is necessary to load the “i2c-dev” linux kernel module. This is not done automatically even if the module for the underlying I2C-hardware is. To automatically load the i2c-dev driver on startup add it to /etc/modules. Also the device file (usually /dev/i2c-0) must be user accessible. A working (at least on a RaspberryPi running Raspbian) udev rule file is available (rules/88-i2c.rules) and can be installed to /etc/udev/rules.d/.
Backends¶ ↑
The backends are instantiated through the #I2C::create method. depending on the format of the passed bus descriptor the correct backend is invoked.
Right now there is only a i2c-dev backend available
i2c-dev Backend¶ ↑
Backend for the Linux I2C implementation. Accepts device file names as bus descriptors. E.g.
I2C.create(“/dev/i2c-0”) returns an instance of I2C::Dev attached to the first I2c bus on the system.
Drivers¶ ↑
MCP23017¶ ↑
16 bit IO-Expander MCP23017 from Microchip. Provides a wiringpi-ruby compatible API and may therefore be used as a drop-in replacement for IO tasks on a Raspberry Pi. Datasheet: ww1.microchip.com/downloads/en/DeviceDoc/21952b.pdf
MCP23008¶ ↑
8 bit IO-Expander MCP23008 from Microchip. Basically a small version of the MCP23017. Datasheet: ww1.microchip.com/downloads/en/DeviceDoc/21919e.pdf
Acknowledgements¶ ↑
The low-level IO (mainly in i2c-dev.rb) was extracted from Ruby-I2C (rubyforge.org/projects/i2c/) by Jonas Bähr <jonas.baehr@fs.ei.tum.de>
Contributions¶ ↑
-
[Gaëtan Duchaussois](github.com/gaetronik) I2C::Dev.read_byte.
Bugfixes¶ ↑
-
Pierre Paques
Copyright / Licence¶ ↑
This code may be used under the terms of the GNU General Public Licence, Version 2.
Copyright © 2018 David Bailey <davidbailey.2889@gmail.com> Copyright © 2012 Christoph Anderegg <christoph@christoph-anderegg.ch> Copyright © 2008 Jonas Bähr <jonas.baehr@fs.ei.tum.de>