Cómo configurar direcciones I²C y usar un escáner I²C para LCD1602 y LCD2004

Cómo configurar direcciones I²C y usar un escáner I²C para LCD1602 y LCD2004

En este tutorial exploraremos cómo configurar las direcciones I²C y utilizar un escáner I²C para las pantallas LCD1602 y LCD2004. Entender la comunicación I²C es crucial para integrar estos módulos LCD con tus proyectos Arduino, ya que permite una transmisión de datos y control eficientes. Al final de esta guía, podrás identificar de manera efectiva las direcciones I²C de tus LCD y asegurarte de que funcionan correctamente.

LCD1602-I2C display module with 4 wires

Usaremos el sensor BMP-180 como parte de este proyecto, que funciona mediante comunicación I²C. El sensor proporciona lecturas de temperatura y presión, que pueden mostrarse en la LCD1602 o en la LCD2004. Este tutorial incluirá instrucciones de cableado, fragmentos de código y una demostración de los resultados esperados. Para una comprensión más visual, asegúrate de revisar el video asociado (a las 00:00).

Hardware explicado

Los componentes principales de este proyecto incluyen el sensor BMP-180, una pantalla LCD1602 o LCD2004 y una placa Arduino. El BMP-180 es un sensor de presión digital que se comunica mediante el protocolo I²C, requiriendo solo dos líneas de datos: SDA (línea de datos) y SCL (línea de reloj). Las pantallas LCD también son compatibles con I²C y pueden controlarse fácilmente usando el mismo protocolo de comunicación, lo que permite una configuración ordenada y eficiente.

El BMP-180 funciona con una tensión de alimentación entre 1.8V y 3.6V, lo que significa que puede alimentarse mediante un regulador de tensión si está utilizando una fuente de mayor voltaje. Las pantallas LCD, por otro lado, normalmente funcionan a 5V, lo que facilita su conexión con una placa Arduino sin componentes adicionales.

Detalles de la ficha técnica

Fabricante Bosch
Número de pieza BMP-180
Tensión lógica/E/S 1.8 - 3.6 V
Tensión de alimentación 1.8 - 3.6 V
Corriente de salida (por canal) 3.6 µA
Corriente de pico (por canal) 1 mA
Guía sobre la frecuencia PWM No aplica
Umbrales de la lógica de entrada No aplica
Caída de tensión / RDS(on)/ saturación No aplica
Límites térmicos de -40 a +85 °C
Paquete 3.6 x 3.8 mm
Notas / variantes Sensor de temperatura y presión

  • Asegúrese de un suministro de voltaje adecuado: 1.8V a 3.6V para el BMP-180.
  • Utilice resistencias pull-up en las líneas SDA y SCL para una comunicación I²C estable.
  • Mantenga los cables cortos para evitar la degradación de la señal.
  • Compruebe la dirección I²C correcta durante el escaneo.
  • Rango de temperatura del monitor: -40 a +85 °C para BMP-180.

Instrucciones de cableado

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

Para cablear el sensor BMP-180 y la pantalla LCD a tu Arduino, sigue estos pasos:

Primero, conecta el BMP-180VnConecta el pin a la salida de 5V del Arduino. A continuación, conecta elGNDpin del BMP-180 a la tierra del Arduino. ElSDAel pin del BMP-180 debe estar conectado al del ArduinoA4pasador, mientras que elSCLel pin se conecta aA5.

Para la LCD1602 o la LCD2004, conectaVCCpin al 5V en el Arduino y elGNDconectar el pin a tierra también. ElSDAEl pin del LCD también debe conectarse aA4(compartido con BMP-180), y elSCLel pin debería conectarse aA5.

Esta configuración permite que ambos dispositivos se comuniquen a través del mismo bus I²C, garantizando una configuración limpia y eficiente.

Ejemplos de código y guía paso a paso

Para buscar direcciones I²C, utilizaremos un fragmento de código sencillo. El siguiente extracto inicializa la comunicación I²C y prepara el monitor serie:


#include 

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

Este código inicializa la librería Wire para la comunicación I²C y configura el monitor serie para la salida. Es esencial para la depuración y garantizar que los dispositivos I²C sean reconocidos.

La función loop busca dispositivos en el bus I²C e imprime sus direcciones:


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
}

Este bucle comprueba cada dirección desde 1 hasta 127, intentando comunicarse con cualquier dispositivo presente. Si un dispositivo responde a la comunicación, su dirección se imprime en el monitor serie. Este es un paso crucial para identificar la dirección I²C de tu LCD u otros dispositivos conectados.

Demostración / Qué esperar

Al ejecutar el escáner I²C, debería ver mensajes en el monitor serie que indiquen si se encontraron dispositivos I²C. Si tiene éxito, la salida mostrará las direcciones de los dispositivos conectados, formateadas como valores hexadecimales (por ejemplo, Dispositivo I²C encontrado en la dirección 0x27). Si no se encuentran dispositivos, aparecerá un mensaje correspondiente.

Es importante asegurarse de que todas las conexiones estén seguras y de que se suministren los niveles de voltaje correctos para evitar problemas con la detección del dispositivo (en el video a 05:30).

Imágenes

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
Idioma: C++
¡Copiado!

Cosas que podrías necesitar

Recursos y referencias

Aún no hay recursos.

Archivos📁

Bibliotecas de Arduino (zip)

Archivo de Fritzing