Mise à jour du 3 juillet 2026 : utiliser l’I2C avec Arduino et Raspberry Pi aujourd’hui
Le bus I2C reste l’un des moyens les plus simples pour relier capteurs, écrans OLED, RTC, extensions GPIO ou convertisseurs à un projet Arduino, Raspberry Pi ou domotique. En 2026, le principe n’a pas changé, mais quelques bonnes pratiques évitent les pannes intermittentes : vérifier les niveaux logiques, l’adresse de chaque module et la qualité du câblage.
Les 3 points clés à retenir
- Deux fils de données suffisent : SDA pour les données et SCL pour l’horloge, avec une masse commune entre toutes les cartes.
- Chaque périphérique doit avoir une adresse unique sur le bus ; en cas de doublon, utilisez les broches de configuration du module, un multiplexeur I2C ou un second bus si disponible.
- Attention aux tensions : un Raspberry Pi fonctionne en logique 3,3 V sur ses GPIO. Ne lui appliquez pas directement un signal I2C tiré à 5 V sans convertisseur de niveau adapté.
Verdict rapide
Pour un montage court avec quelques capteurs, l’I2C est généralement le meilleur choix : moins de fils que SPI, plus simple qu’une liaison série multiple, et largement supporté par les bibliothèques Arduino comme par Linux sur Raspberry Pi. Pour un câble long, un environnement électrique bruyant ou beaucoup de modules, mieux vaut réduire la vitesse du bus, soigner les masses et envisager une liaison plus robuste.
Checklist avant de brancher un module I2C
| Vérification | Pourquoi c’est important |
|---|---|
| SDA, SCL et GND reliés correctement | Sans masse commune, la communication devient instable ou impossible. |
| Adresse I2C connue | Deux modules à la même adresse peuvent bloquer le bus. |
| Niveau logique compatible | Arduino 5 V et Raspberry Pi 3,3 V ne se mélangent pas toujours directement. |
| Résistances de pull-up adaptées | Trop de modules avec pull-up peuvent charger le bus ; pas assez de pull-up peut empêcher les fronts propres. |
| Test avec un scanner I2C | Sur Arduino, un sketch de scan confirme l’adresse ; sur Raspberry Pi, i2cdetect -y 1 aide à repérer les périphériques. |
Sur Raspberry Pi : activation et diagnostic
Sur Raspberry Pi OS récent, activez l’I2C via sudo raspi-config puis installez les outils utiles avec sudo apt install i2c-tools. Le bus principal apparaît généralement sur /dev/i2c-1 et se teste avec i2cdetect -y 1. Les broches courantes sont GPIO 2 pour SDA et GPIO 3 pour SCL sur le connecteur 40 broches, mais vérifiez toujours le pinout de votre modèle avant câblage.
Questions fréquentes
Peut-on mettre Arduino et Raspberry Pi sur le même bus I2C ? Oui, à condition de partager la masse, d’éviter les conflits d’adresses et de respecter les niveaux logiques. Un convertisseur 3,3 V / 5 V est recommandé dès qu’un module tire le bus vers 5 V.
Pourquoi mon scanner I2C ne trouve rien ? Les causes les plus fréquentes sont SDA/SCL inversés, absence de masse commune, alimentation insuffisante, adresse différente de celle attendue ou interface I2C non activée côté Raspberry Pi.
Faut-il choisir I2C ou SPI ? I2C est pratique pour plusieurs petits capteurs avec peu de fils. SPI est souvent préférable pour les écrans rapides, cartes mémoire, convertisseurs performants ou besoins de débit plus élevé.
Note éditoriale : mise à jour par Vincent Vandegans, passionné de Raspberry Pi, Linux, domotique et projets DIY, afin de relier ce tutoriel Arduino aux usages actuels sur Raspberry Pi.
Communication avec les périphériques Arduino
Vous désirez pouvoir établir une communication entre votre board Arduino et les différents périphériques de la carte, voir des périphériques externes disponibles dans le commerce, tels des capteurs de température, d’humidité, des accéléromètres ou des gyroscopes, ou divers types d’actionneurs ? Pour cela la solution la plus simple est l’utilisation du bus I2C, directement intégré à votre carte; il existe en effet des milliers de composants disposant d’une interface I2C, et toutes les cartes Arduino sont basées sur des microcontrôleurs disposant de cette fonction.Le protocole I2C
I2C, pour Inter Integrated Circuit , est un protocole de communication crée à la base par Philips en 1982 pour standardiser l’échange de données entre différents circuits intégrés d’un même système. Elle est aujourd’hui assurée par le fabricant NXP, spin-off de l’entreprise. Ce protocole est basé sur un bus de communication sériel, ce qui signifie qu’un seul câble est utilisé pour le transfert de données. En pratique, le bus I2C est constitué de deux câbles, un donc pour les données, nommé SDA (Serial Data) et l’autre faisant office d’horloge pour déterminer la fréquence de la communication, nommé SCL (Serial Clock). Dans la mesure où tous les périphériques sont connectés sur le même bus, comment donc faire pour qu’un seul des capteurs ne communique ses données en même temps et éviter une saturation de la ligne? Ceci est garanti par le protocole à proprement parler. Tout d’abord, il n’y a qu’un maître (le microcontrôleur de votre board Arduino), et une multitude d’esclaves (vos périphériques), chacun identifiés par une adresse unique. Seul le maître peut initier une communication. Le maître envoie tout d’abord l’adresse du périphérique dont il désire recevoir les données. L’esclave envoie un premier signal de confirmation (acknowledgement) pour signifier qu’il a bien reçu la demande. Puis le maître envoie l’adresse d’un registre interne du périphérique. Par exemple, pour un accéléromètre, on a trois registres stockant respectivement les données de l’accélération selon X, Y et Z. Un deuxième signal de confirmation est envoyé par le périphérique. Enfin c’est le périphérique qui émet cette fois le message, en transférant la valeur du registre qui a été sollicité. Il termine avec une dernière confirmation, après quoi le maître envoie un signal spécifique pour mettre fin à la communication. Le processus est similaire pour l’écriture sur un périphérique par le microcontrôleur, pour piloter un actionneur ou sauvegarder des données par exemple. Dans ce cas une commande spécifique est envoyée lors de l’adressage du registre et c’est le maître qui transmet les données. À noter que les deux lignes SDA et SCL sont liées à une résistance de pull-up. L’état 0 est donc l’état dominant. D’un point de vue hardware, vous n’aurez pas à implémenter ces résistances qui sont en place par défaut.[/vc_column_text][vc_column_text]
[/vc_column_text][/vc_column][vc_column width=”1/3″][vc_row_inner equal_height=”yes” content_placement=”top”][vc_column_inner][vc_column_text css=”.vc_custom_1549001272441{margin-bottom: 10px !important;}”]
[/vc_column_text][vc_column_text css=”.vc_custom_1549000737694{margin-top: 0px !important;margin-bottom: 10px !important;padding-top: 0px !important;padding-bottom: 0px !important;}”]
[/vc_column_text][vc_btn title=”Acheter” color=”orange” align=”center” i_icon_fontawesome=”fa fa-cart-arrow-down” add_icon=”true” link=”url:https%3A%2F%2Famzn.to%2F2D5HX5h||target:%20_blank|rel:nofollow” css=”.vc_custom_1549000708662{margin-top: 0px !important;padding-top: 0px !important;}”][/vc_column_inner][/vc_row_inner][vc_empty_space][vc_separator][vc_empty_space][vc_row_inner equal_height=”yes” content_placement=”top”][vc_column_inner][vc_column_text css=”.vc_custom_1549001280715{margin-bottom: 10px !important;}”]
[/vc_column_text][vc_column_text css=”.vc_custom_1549000952401{margin-top: 0px !important;margin-bottom: 10px !important;padding-top: 0px !important;padding-bottom: 0px !important;}”]
Starter Kit ELEGOO Carte Arduino UNO R3 52,99 €
[/vc_column_text][vc_btn title=”Acheter” color=”orange” align=”center” i_icon_fontawesome=”fa fa-cart-arrow-down” add_icon=”true” link=”url:https%3A%2F%2Famzn.to%2F2sVoYWi||target:%20_blank|rel:nofollow” css=”.vc_custom_1549000960436{margin-top: 0px !important;padding-top: 0px !important;}”][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row]






Bonjour je suis en République démocratique du Congo comment faire pour trouver le kit complet d’arduino ?
bonjour paris, c’est tanguy david cet article est super genial,la bise.