Qu'est ce que l'i2c ? Comment le mettre en place sur la Raspberry Pi ?

Introduction

L’Inter-Integrated Circuit (I2C) est un protocole de communication série utilisé pour connecter des composants électroniques sur un même circuit imprimé ou entre différents périphériques. Sur la Raspberry Pi, le bus I2C est une méthode populaire pour permettre à la carte de communiquer avec divers capteurs, modules et autres composants externes. L’I2C utilise deux fils : SDA qui permet la transmission de donnée et le SCL qui transmet l’horloge entre la carte raspberry pi et votre composant .

La Raspberry Pi dispose de broches dédiées pour l’I2C, facilitant la connexion à des périphériques externes. Ce bus permet une communication bidirectionnelle entre le maître (Raspberry Pi) et plusieurs esclaves (périphériques). Chaque périphérique I2C possède une adresse unique permettant au maître de sélectionner spécifiquement le périphérique avec lequel il souhaite communiquer.

Voici ou se situe les pins de l’i2C sur la raspberry pi :

Installation

On a besoin d’installer le package i2c-toolfs pour utiliser l’i2c de la carte Raspberry pi :

On a besoin d’installer le package i2c-toolfs pour utiliser l’i2c de la carte Raspberry pi :

Voici le menu de raspi-config. Vous devez cliquer sur Interface Options  :

Une fois dans interface options on clique sur I2C :

On clique sur yes pour activer l’i2C sur la raspberry Pi :

On a ensuite une fenêtre pour co

Test

On va maintenant voir comment envoyer des données sur l’i2c à un périphérique connecté à la raspberry pi ou bien recevoir des données de celui-ci.

Tout d’abord en utilisant la fonciton i2cdetect présent dans le package i2c-tools, on peut voir les composants et leurs adresses qui sont connectées à l’i2c de la raspberry pi :

Ici on peut voir notre module RTC connecté avec l’adresse 0x68. Vous pouvez l’adresse de votre périphérique dans sa fiche technique.

Lecture du périphérique

Voici un programme qui permet de lire les valeurs sur l’adresse 0x68. Celui-ci permet de lire les minutes, heures et secondes d’un module RTC mais qui peut être facilement adapté à vos besoins :

Envoie vers le périphérique

Voici un deuxième programme qui permet d’envoyer des valeurs à travers l’i2c à l’adresse 0x10 :

Voici le résultat du SDA et SCL sur l’oscilloscope :