🛠 Lire le capteur de distance (ToF) embarqué
Objectifs
Interroger le capteur de distance temps-de-vol (ToF) embarqué du Nicla Vision et afficher la distance en millimètrès sur la console série.
Matériel
- Arduino Nicla Vision (le capteur de distance est intégré à la carte, rien à câbler)
- IDE Arduino + core « Arduino Mbed OS Nicla Boards »
- >
- Note : contrairement à la Nicla Sense ME, la Nicla Vision n'embarque ni capteur d'humidité, ni pression, ni gaz ; le capteur d'environnement utile ici est le ToF, complété par l'IMU LSM6DSOXTR.
Code complet
// Lecture brute I2C du ToF embarque (bus interne)
// >
#include <Wire.h>
#define TOF_ADDR 0x29
#define REG_DISTANCE 0x51 // distance en mm sur VL53L0x (hypothese)
void setup {
Serial.begin(115200);
Wire.begin; // bus I2C interne (PF_0/PF_1 cote core)
delay(100);
Wire.beginTransmission(TOF_ADDR);
if (Wire.endTransmission != 0) {
Serial.println);
}
}
void loop {
Wire.beginTransmission(TOF_ADDR);
Wire.write(REG_DISTANCE);
Wire.endTransmission(false);
Wire.requestFrom(TOF_ADDR, (uint8_t)2);
if (Wire.available >= 2) {
uint16_t mm = (Wire.read << 8) | Wire.read;
Serial.print(F("distance = ")); Serial.print(mm); Serial.println(F(" mm"));
}
delay(200);
}
Vérification attendue
Approcher la main devant la façade de la carte : la valeur imprimée diminue, typiquement quelques centaines de millimètrès au repos. Un « ToF absent » indique qu'il faut balayer les adresses I²C (scan classique 0x08–0x77) pour trouver le capteur sur le bus interne.
Erreurs fréquentes
- Chercher le capteur sur le bus I²C externe (D11/D12) : les capteurs embarqués sont sur le bus interne PF_0/PF_1 géré par le core ; le Wire standard du core cible le bus externe — lire la doc du core NICLA_VISION et sélectionner le bon périphérique.
- Confondre avec la Nicla Sense ME : pas de BME680/HTS221 sur la Vision ; toute tentative de lire humidité ou pression échouera.
- Registres incorrects : le code ci-dessus suppose une cartographie VL53L0x ; >
- Surface non réfléchissante : le noir absorbant et les angles ras donnent des lectures erratiques.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_rgb.inoArduinoimu_lsm6dsox.inoArduinotof_distance.inoArduinomicro_pdm.inoArduinocamera_capture.inoArduinowifi_scan.inoArduino