🛠 Lire le capteur de distance (ToF) embarqué
Objetivos
Consultar el sensor de distancia tiempo de vuelo (ToF) integrado en el Nicla Vision y mostrar la distancia en milímetros en la consola serie.
Material
- Arduino Nicla Vision (el sensor de distancia está integrado en la placa, no hay que cablear nada)
- IDE de Arduino + core «Arduino Mbed OS Nicla Boards»
- > NO VERIFICADO: referencia exacta del sensor ToF — la documentación de Arduino solo indica «distance sensor»; se sospecha fuertemente que es de la familia VL53Lx pero no está confirmado. La dirección I²C y los registros indicados a continuación deben validarse en la placa real.
- Nota: a diferencia de la Nicla Sense ME, la Nicla Vision no incorpora sensor de humedad, ni de presión, ni de gases; el sensor de entorno útil aquí es el ToF, complementado por la IMU LSM6DSOXTR.
Código completo
// 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);
}
Verificación esperada
Acerque la mano frente a la parte frontal de la placa: el valor impreso disminuye, típicamente unos cientos de milímetros en reposo. Un mensaje «ToF ausente» indica que es necesario escanear las direcciones I²C (escaneo clásico 0x08–0x77) para encontrar el sensor en el bus interno.
Errores frecuentes
- Buscar el sensor en el bus I²C externo (D11/D12): los sensores integrados están en el bus interno PF_0/PF_1 gestionado por el core; el Wire estándar del core apunta al bus externo — lea la documentación del core NICLA_VISION y seleccione el periférico correcto.
- Confundirlo con la Nicla Sense ME: no hay BME680/HTS221 en la Vision; cualquier intento de leer humedad o presión fallará.
- Registros incorrectos: el código anterior supone una cartografía VL53L0x; > NO VERIFICADO. En caso de que el valor quede fijo en 0 o 8190, verifique la inicialización completa del sensor (pin XSHUTDOWN si está cableado).
- Superficie no reflectante: el negro absorbente y los ángulos rasantes producen lecturas erráticas.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
led_rgb.inoArduinoimu_lsm6dsox.inoArduinotof_distance.inoArduinomicro_pdm.inoArduinocamera_capture.inoArduinowifi_scan.inoArduino