SuperAPI AI 工具集

xiao-i2c-sensors

通用与其它

查看项目

更新于 10-16 09:50

技能介绍

用途:在 XIAO ESP32S3 上跑通 I2C 传感器并把数值持续输出到串口,涉及 BH1750 环境光、BME280 温度/气压/湿度和 BNO055 九轴融合。

硬件约定:SDA=D4=GPIO5,SCL=D5=GPIO6,必须用 Wire.begin(D4, D5),无参形式会选错引脚。编译上传参考 xiao-esp32s3 技能,看输出参考 xiao-serial-monitor 技能。

主要步骤:先扫描再用驱动。扫描可编译 assets/sketches/i2c_scan,打印所有响应地址、猜测器件,并读 0x76 与 0x29 的 ID 寄存器确认。参考板实测输出:0x23 BH1750、0x29 BNO055、0x76 BME280/BMP280,0x76 chip id=0x60 为 BME280,0x29 chip id=0xA0 为 BNO055。

现成 sketch(复制到工作区,文件夹名需与 .ino 同名,不要从零写驱动):i2c_scan、test_bh1750(5 项检查)、test_bme280(8 项)、test_bno055(10 项)、sensors_all(三路一起 1Hz 输出)。资料称五个都在真机上跑过,单元测试分别为 5/5、8/8、10/10。

库安装:arduino-cli lib install "BH1750";arduino-cli lib install "Adafruit BME280 Library";arduino-cli lib install "Adafruit BNO055"。

sensors_all 每秒一行示例:lux 48.3 | 25.86C 1006.31hPa 42.7%RH | H 359.9 R 7.9 P -5.2 | cal 1300,cal 为 BNO055 四个校准字节。

交付给用户:先用有界读取自检,再告诉用户如何自行打开,如 .\scripts\mon.ps1 -Seconds 15 为自检,mon 为用户侧直到 Ctrl+C。不要从工具调用启动交互式监视器,否则不会返回。

测试原则:按数据手册范围断言,不做目测;不自动断言需要人为刺激的项(如遮挡光线、对湿度传感器呼气、转动 IMU 校准),这些放在不计分的手工检查区。

已知坑:BNO055 在 0x29 时需显式构造 Adafruit_BNO055 bno(55, 0x29, &Wire);setExtCrystalUse(true) 在无晶振模块上会让输出全为 0.00,应用 getSystemStatus 检查模式,5 表示融合算法运行;0x76 不一定是 BME280,读 0xD0 判断(0x60 BME280、0x58 BMP280、0x61 BME680、0x55 BMP180);BH1750 在 begin() 后需约 120ms(测试等待 200ms);sensors_all 中各传感器独立探测,缺失只报告一次并跳过;串口输出保持 ASCII。

限制:仅覆盖上述三款器件与 XIAO ESP32S3 的固定引脚;其它传感器的接线、地址与驱动细节暂未提供。