Comment définir les adresses I²C et utiliser un scanner I²C pour les LCD1602 et LCD2004

Comment définir les adresses I²C et utiliser un scanner I²C pour les LCD1602 et LCD2004

Dans ce tutoriel, nous allons explorer comment définir les adresses I²C et utiliser un scanner I²C pour les écrans LCD1602 et LCD2004. Comprendre la communication I²C est essentiel pour intégrer ces modules LCD à vos projets Arduino, car cela permet une transmission de données et un contrôle efficaces. À la fin de ce guide, vous serez en mesure d'identifier efficacement les adresses I²C de vos écrans LCD et de vérifier qu'ils fonctionnent correctement.

LCD1602-I2C display module with 4 wires

Nous utiliserons le capteur BMP-180 dans le cadre de ce projet, qui communique via I²C. Le capteur fournit des mesures de température et de pression, qui peuvent être affichées soit sur le LCD1602, soit sur le LCD2004. Ce tutoriel comprendra les instructions de câblage, des extraits de code et une démonstration des résultats attendus. Pour une compréhension plus visuelle, n'oubliez pas de consulter la vidéo associée (à 00:00).

Le matériel expliqué

Les principaux composants de ce projet comprennent le capteur BMP-180, un afficheur LCD1602 ou LCD2004 et une carte Arduino. Le BMP-180 est un capteur de pression numérique qui communique via le protocole I²C, ne nécessitant que deux lignes de données : SDA (ligne de données) et SCL (ligne d'horloge). Les afficheurs LCD sont également compatibles I²C et peuvent être facilement contrôlés en utilisant le même protocole de communication, ce qui permet une configuration propre et efficace.

Le BMP-180 fonctionne avec une tension d'alimentation comprise entre 1,8 V et 3,6 V, ce qui signifie qu'il peut être alimenté via un régulateur de tension si vous utilisez une source de tension plus élevée. Les écrans LCD, en revanche, fonctionnent généralement à 5 V, ce qui facilite leur connexion à une carte Arduino sans composants supplémentaires.

Détails de la fiche technique

Fabricant Bosch
Numéro de pièce BMP-180
Tension logique/E/S 1.8 - 3.6 V
Tension d'alimentation 1,8 - 3,6 V
Courant de sortie (par canal) 3.6 µA
Courant de crête (par canal) 1 mA
Conseils sur la fréquence PWM Non applicable
Seuils logiques d'entrée Sans objet
Chute de tension / RDS (en conduction) / saturation Sans objet
Limites thermiques -40 à +85 °C
Paquet 3,6 × 3,8 mm
Notes / variantes Capteur de température et de pression

  • Veillez à fournir une tension d'alimentation appropriée : 1.8V à 3.6V pour le BMP-180.
  • Utilisez des résistances de pull-up sur les lignes SDA et SCL pour une communication I²C stable.
  • Gardez les fils courts pour éviter la dégradation du signal.
  • Vérifiez que l'adresse I²C est correcte lors du balayage.
  • Plage de température : -40 à +85 °C pour le BMP-180.

Instructions de câblage

Arduino wirng for LCD1602 with I2C
Arduino wirng for LCD1602 with I2C

Pour câbler le capteur BMP-180 et l'écran LCD à votre Arduino, suivez ces étapes :

Commencez par connecter le BMP-180.VnConnectez la broche à la sortie 5 V de l'Arduino. Ensuite, connectez laGNDbroche du BMP-180 à la masse de l'Arduino. LeSDAla broche du BMP-180 doit être reliée à celle de l'Arduino.A4goupille, tandis que leSCLla broche se connecte àA5.

Pour le LCD1602 ou le LCD2004, connectez leVCCbroche au 5V de l'Arduino et leGNDmettre la broche à la masse également. LeSDAla broche de l'écran LCD doit également être connectée àA4 (partagé avec le BMP-180), et leSCLla broche doit se connecter àA5.

Cette configuration permet aux deux appareils de communiquer sur le même bus I²C, garantissant une installation propre et efficace.

Exemples de code et guide pas à pas

Pour scanner les adresses I²C, nous utiliserons un simple extrait de code. L'extrait suivant initialise la communication I²C et prépare le moniteur série :


#include 

void setup() {
  Wire.begin();
  Serial.begin(9600);
  while (!Serial); // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
}

Ce code initialise la bibliothèque Wire pour la communication I²C et configure le moniteur série pour la sortie. Il est essentiel pour le débogage et pour s'assurer que les périphériques I²C sont reconnus.

La fonction loop recherche les appareils sur le bus I²C et affiche leurs adresses :


void loop() {
  byte error, address;
  int nDevices = 0;
  Serial.println("Scanning...");

  for(address = 1; address < 127; address++) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      Serial.println(address, HEX);
      nDevices++;
    }
  }
  if (nDevices == 0) Serial.println("No I2C devices found\n");
  delay(5000); // wait 5 seconds for next scan
}

Cette boucle vérifie chaque adresse de 1 à 127, en tentant de communiquer avec les appareils présents. Si un appareil répond, son adresse est affichée sur le moniteur série. C'est une étape cruciale pour identifier l'adresse I²C de votre écran LCD ou d'autres appareils connectés.

Démonstration / À quoi s'attendre

Lorsque le scanner I²C est lancé, vous devriez voir des messages dans le moniteur série indiquant si des périphériques I²C ont été détectés. Si l'opération réussit, la sortie affichera les adresses des périphériques connectés, formatées en valeurs hexadécimales (par exemple, Périphérique I²C trouvé à l'adresse 0x27). Si aucun périphérique n'est trouvé, vous verrez un message correspondant.

Il est important de s'assurer que toutes les connexions sont sécurisées et que les niveaux de tension corrects sont fournis afin d'éviter des problèmes de détection de l'appareil (dans la vidéo à 05:30).

Images

Arduino wirng for LCD1602 with I2C
Arduino wirng for LCD1602 with I2C
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD2004_display-1
LCD2004_display-1
LCD2004_display-2
LCD2004_display-2
I2C_module
I2C_module
125-Arduino code for finding an I2C address
Langue: C++
Copié !

Ce dont vous pourriez avoir besoin

Ressources et références

Aucune ressource pour le moment.

Fichiers📁

Bibliothèques Arduino (zip)

Fichier Fritzing