Skip to content

Library for working with I2C bus on Raspberry Pi

License

Notifications You must be signed in to change notification settings

crazycga/RPi.I2C.Net

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This project was born from the idea of using C# for a PiBorg. I started with a couple of other libraries, but faltered because of a bug in one of them that didn't read a ThunderBorg board properly. This made me search for something else, where I found a seemingly abandoned project to create an I2C library. Props to the original author from whom I forked the original library. I also had some correspondence with the PiBorg group who is / has helping / helped me out on this.

Cheers!

This project requires the following NuGet package:

install-package mono.posix-4.5

(Original Readme.md from original author)

RPi.I2C.Net

I2C library on C# for Raspberry Pi. About connecting Arduino and Raspberry Pi read this blog posts: hardware part and software part.

Description

The library provides basic read/write functionality with I2C-devices for Mono v. 2.10.x. It uses device files exposed by the I2C kernel drivers in Arch Linux.

Preparations

  1. Update your system to get I2C kernel drivers. For Arch Linux:
$ pacman -Syu
  1. Load I2C kernel module. You can do
$ modprobe i2c-dev

Or if you want to load the module automatically on boot add i2c-dev to /etc/modules/. If you're on Arch Linux create file /etc/modules-load.d/i2c.conf and add i2c-dev to the file.

Library Usage

  1. The RPi.I2C.Net library requires a native-C library libnativei2c.so, which is a part of this project.
    • It's precompiled for Arch Linux. If you need to compile it, run make from Lib/LibNativeI2C/src.
    • Put libnativei2c.so to /usr/lib/ or to the same folder where RPi.I2C.Net.dll is located.
  2. Create I2CBus instance with I2CBus.Open(). The function accepts path to an I2C device file, which is "/dev/i2c-0" for RPi rev.1 and "/dev/i2c-1" for RPi rev.2 by default.
  3. Use I2CBus.WriteBytes() or I2CBus.ReadBytes().
using (var bus = RPi.I2C.Net.I2CBus.Open("/dev/i2c-1"))
{
	bus.WriteByte(42, 77);
}

Performance

The performance testing was done using:

  • Raspberry Pi, Rev.2, not overclocked
  • Arduino Uno

####Writing Sending 3-byte packets to Arduino. Results: 1428 transactions per second (4284 Bytes/s)

####Reading Reading 3-byte packets from Arduino. Results: 1660 transactions per second (4980 Bytes/s)

####Reading and Writing Sending 3-byte packet to Arduino and reading back the respose 3-byte packet. Results: 830 transactions per second (4980 Bytes/s total)

License

The project uses MIT license: do whatever you want wherever you want it.

About

Library for working with I2C bus on Raspberry Pi

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 95.8%
  • C 3.5%
  • Makefile 0.7%