Raspberry Pi – I2C-bus gebruiken

i2c bus logo

raspberry pi logo

Wat is de I2C-bus?

De I2C-bus? (spreek uit als: I kwadraat C bus), eertijds aangeduid met IIC-bus (Inter-IC-bus), is een synchrone, seriële bus, ontwikkeld voor datacommunicatie tussen microprocessoren en andere IC’s, meestal op één enkele printplaat.

Meer informatie over de I2C-bus

Welke core versie heb ik?

Voordat je de I2C bus aanzet op de Raspberry Pi, controleer eerst de Linux core versie met het commando uname -a , de manier van inschakelen verschilt op bepaalde core versies.


Aanzetten van de I2C-bus op een Raspberry Pi met Core 3.18+:

Het aanzetten van de I2C bus op de raspberry pi met core 3.18 is makkelijker gemaakt, dit is aan te zetten via het configuratiemenu van de Raspberry Pi (het commando: sudo raspi-config ), onder advanced options –> I2C kun je i2c op de raspberry Pi 2 inschakelen.

raspi-config advanced options

raspi-config advanced options i2c bus aanzetten 01

raspi-config advanced options i2c bus aanzetten 02

Er wordt dan het volgende weggeschreven naar /boot/config.txt :

dtparam=i2c_arm=on

In scriptform via de bash:
sudo bash -c "echo 'dtparam=i2c_arm=on' >> /boot/config.txt"

Bron


Aanzetten van de I2C-bus op een Raspberry Pi met Core < 3.18:

Volg de bovenste stappen, als extra komt erbij dat je i2c-dev  toe moet voegen aan /etc/modules bewerk dit bestand met het commando:  sudo nano /etc/modules

Wanneer bovenstaande regel is toegevoegd voer het volgende commando uit: sudo modprobe i2c-dev


Controleren of I2C aan staat

Controleren of I2C aan staat kan met het commando: lsmod | grep i2c_

raspberry pi i2c lsmod

Of (uitgevoerd op de RPi2):


I2C hardware controleren/testen

1) Installeer i2c-tools met het commando:  sudo apt-get install i2c-tools

2) Zet de Raspberry Pi uit met het commando:  sudo shutdown -h now
3) Sluit de hardware aan op de juiste GPIO pinnen van de Raspberry Pi
4) Zet de Raspberry Pi aan en gebruik het volgende commando:

Rasberry Pi 2/3 :  sudo i2cdetect -y 1

Rasberry Pi 1:  sudo i2cdetect -y 0

Dan krijg je ziets als dit te zien (aangesloten is een lichtsensor BH1750 met 0x23):

Of zoals hier een BMP180 sensor:

Foutmeldingen

Krijg je foutmeldingen als deze (hardware aangesloten en Raspberry niet opnieuw opgestart?):

Probeer dan dit commando: sudo modprobe i2c-dev, dan verschijnt I2C in de devices:

raspberry pi i2c in dev


Gebruik van de I2C bus in Python

Om de I2C in Python te gebruiken moet je een module installeren, genaamd SMBUS, dit kan via APT-GET met het commando:

sudo apt-get install python-smbus

Je kan dan de module importeren in python door middel van: import smbus