Skip to Content

Trouver les broches par défaut I2C et SPI

Trouver les broches par défaut I2C et SPI

Dans ce tutoriel, vous apprendrez comment trouver les broches par défaut/matérielles pour les interfaces I2C et SPI des microcontrôleurs supportés par l’IDE Arduino, tels que Arduino, ESP32 et ESP8266.

De nombreux périphériques matériels externes comme les écrans ou capteurs utilisent le protocole I2C ou SPI pour communiquer avec votre microcontrôleur. I2C est un protocole à deux fils utilisant les signaux SDA et SCL, tandis que SPI est un protocole à quatre fils avec SS, MOSI, MISO, SCK.

I2C and SPI wiring
Câblage I2C et SPI (source)

Pour connecter un périphérique I2C ou SPI à votre microcontrôleur, vous devez connaître quelles broches de votre microcontrôleur correspondent auxbroches I2C (SDA, SCL) ou broches SPI (SS, MOSI, MISO, SCK).

I2C and SPI pins on Arduino Uno
Broches I2C et SPI sur Arduino Uno

Pour les cartes de développement les plus courantes, comme la plupart des cartes Arduino, ces broches sont généralement bien documentées, faciles à trouver ou étiquetées sur la carte. Cependant, pour certaines cartes plus exotiques, anciennes ou clones, notamment dans les familles ESP8266 et ESP32, la documentation fait souvent défaut.

Afficher les broches par défaut I2C et SPI

Tant que vous voyez votre carte (ou une carte compatible) dans le Board Manager, il existe un moyen simple d’afficher les broches par défaut pour les interfaces I2C et SPI. La capture d’écran ci-dessous montre comment sélectionner l’Arduino Uno dans le Board Manager, ainsi que d’autres cartes Arduino disponibles :

Board Manager in Arduino IDE
Board Manager dans l’IDE Arduino

Une fois votre carte sélectionnée, vous pouvez exécuter le code suivant. Il utilise les constantes définies pour ces broches sur toutes ou la plupart des cartes de développement afin deprint them to the Serial Monitor.

void print(const char* name, int pin) {
  Serial.print(name);
  Serial.println(pin);
}

void setup() {
  Serial.begin(9600);
}

void loop() {
  print("LED:  ", LED_BUILTIN);

  print("SDA:  ", SDA);
  print("SCL:  ", SCL);

  print("SS:   ", SS);
  print("MOSI: ", MOSI);
  print("MISO: ", MISO);
  print("SCK:  ", SCK);

  delay(5000);
}

Assurez-vous simplement de régler la bonne vitesse de transmission (baud rate) pour votre Moniteur Série. Elle peut varier selon la carte sélectionnée. D’autres vitesses que 9600 sont possibles, mais la vitesse dans le code (Serial.begin()) et dans le Moniteur Série doivent correspondre, sinon vous verrez des caractères illisibles.

Set baud rate for Serial Monitor
Réglez la vitesse (9600) pour le Moniteur Série

Si vous téléversez et exécutez le code ci-dessus sur un Arduino Uno, vous devriez voir la sortie suivante dans le Moniteur Série :

I2C and SPI default pins printed to Serial Monitor
Broches par défaut I2C et SPI affichées dans le Moniteur Série

Vous pouvez trouver les définitions des broches dans le fichier pins_arduino.h pour les Arduino standards. Pour les variantes comme Mega, Leonardo et autres, regardez dans le sous-dossier variants.

I2C et SPI pour ESP32 et ESP8266

Le code ci-dessus fonctionne de la même manière pour la plupart des cartes ESP32 ou ESP8266, mais vous devez d’abord avoir installé le core ESP32 ou ESP8266. Consultez notre tutoriel sur How to Program ESP32 with Arduino ID si vous rencontrez des difficultés pour installer le core ESP32.

L’installation du core ESP8266 fonctionne de la même façon. Mais si vous avez besoin d’aide, consultez le tutoriel Game of Life on a Dot Matrix Display with MAX7219, où j’explique en détail comment installer le core ESP8266 également.

Pour chaque type de carte, il existe différentes définitions de broches dans le fichier pins_arduino.h. Les différents types de cartes sont organisés dans un sous-dossier appelé « variants« . Voir ESP32 board variants et le ESP8266 board variants. La capture d’écran ci-dessous montre la structure des dossiers avec le dossier variants pour les cartes ESP32 :

GitHub Repo with ESP32 variants
Dépôt GitHub avec variantes ESP32 (source)

Chacun des sous-dossiers spécifiques à une carte contient un fichier pins_arduino.h. Par exemple, voici le pins_arduino.h pour l’ESP32 standard et voici le pins_arduino.h pour le WEMOS LOLIN32 lite – une carte que j’utilise fréquemment.

Notez que ce sont les définitions de broches par défaut et que pour la plupart des cartes ESP32 et ESP8266, vous pouvez modifier les broches utilisées pour I2C et SPI. Selon la carte, certaines définitions peuvent manquer et d’autres peuvent être ajoutées, par exemple A0, A1, … pour les entrées analogiques ou TX et RX pour l’interface série.

Conclusions

J’espère que ce petit bout de code vous sera utile et si vous avez des questions, n’hésitez pas à demander.

Bon bricolage ; )