🛠 Connecter un capteur I2C sur le GIGA R1
Objetivos
Comunicarse con un dispositivo I2C externo. El GIGA R1 dispone de 3 buses I2C en el STM32H747XI; utilizaremos el bus predeterminado de la biblioteca Wire con un sensor de entorno (temperatura/humedad/presión) comercial, por ejemplo, un BME680 o BMP280. Atención: la placa en sí no incorpora un sensor de temperatura/humedad; el sensor es externo en este caso.
Material
- 1 placa Arduino GIGA R1 WiFi
- 1 sensor I2C externo (BME680, BME280 o BMP280) — alimentación 3,3 V
- 4 cables de conexión hembra, cable USB-C
- Opcionalmente, resistencias de pull-up de 4,7 kΩ si el módulo no las incluye
Código completo
// GIGA R1 WiFi — scanner I2C puis lecture d'un capteur BMP280/BME680 (adresse 0x76/0x77)
#include <Arduino.h>
#include <Wire.h>
const uint8_t ADRESSE_CAPTEUR = 0x76; // 0x77 selon le brochage ADDR du module
void setup {
Serial.begin(115200);
Wire.begin; // bus I2C par defaut (SDA/SCL)
delay(1000);
// Petit scanner : liste les peripheriques presents
Serial.println("Scan du bus I2C :");
for (uint8_t a = 1; a < 127; a++) {
Wire.beginTransmission(a);
if (Wire.endTransmission == 0) {
Serial.printf(" peripherique trouve a 0x%02X\n", a);
}
}
}
void loop {
// Lecture de l'identifiant de puce (registre 0xD0 pour BMP280/BME680)
Wire.beginTransmission(ADRESSE_CAPTEUR);
Wire.write(0xD0);
Wire.endTransmission(false);
Wire.requestFrom(ADRESSE_CAPTEUR, (uint8_t)1);
if (Wire.available) {
uint8_t chipId = Wire.read;
Serial.printf("Chip ID = 0x%02X (attendu 0x58/0x60/0x61)\n", chipId);
} else {
Serial.println("Capteur absent : verifiez SDA/SCL et l'adresse");
}
delay(2000);
}
Cableado: VCC a 3,3 V, GND a GND, SDA al pin SDA del GIGA, SCL al pin SCL.
Verificación esperada
El escaneo I2C lista la dirección del sensor (0x76 o 0x77). A continuación, el Monitor serie muestra un identificador de chip coherente (0x58 para BMP280, 0x60/0x61 para BME680) cada dos segundos.
Errores frecuentes
> NO VERIFICADO: la posición exacta de los pines SDA/SCL predeterminados en la serigrafía del GIGA R1 (tabla generada en el cliente en docs.arduino.cc); verifique el esquema de pines oficial antes de cablear.
- Dirección incorrecta: la pata ADDR del módulo no conectada cambia 0x76 a 0x77; ejecute primero el escáner.
- Ausencia de pull-up en SDA/SCL: el bus permanece bloqueado en estado bajo, el escáner no encuentra nada.
- Alimentación a 5 V de un módulo no tolerante: prefiera 3,3 V, la tensión lógica de la placa.
- Inversión de SDA/SCL: no se detecta ningún dispositivo, el bus parece inactivo.
- Dos sensores con la misma dirección: quedan disponibles dos buses I2C adicionales en la placa para separarlos.
Otros tutoriales para esta placa
- Faire clignoter la LED de l'Arduino GIGA R1
- Bouton poussoir et console série sur le GIGA R1
- Potentiomètre et sortie DAC sur la prise audio du GIGA R1
- Piloter un micro-servo avec la PWM du GIGA R1
- Publier des données en MQTT/HTTP via le Wi-Fi du GIGA R1
- Programmer les deux cœurs M7 et M4 du GIGA R1 et les faire communiquer
Ejemplos de código para esta placa
clignotante.inoArduinobouton.inoArduinorespiration.inoArduinoanalogique.inoArduinodac-onde.inoArduinooled-i2c.inoArduino