(SKU:SEN0252)BMX160+BMP388 10轴传感器
来自DFRobot Product Wiki
目录 |
简介
BMX160 是一款高度集成且低功耗的9轴传感器,集成了三轴16位数字加速度传感器、三轴16位陀螺仪、地磁传感器(电子罗盘)。
BMP388 是一款基于博世成熟的压电式压力传感器技术,具有高EMC稳健性,高精度,低功耗等特点。可用于高度检测。
特性
- BMX160九轴传感器
- 集成三个传感器:
- 16位陀螺仪
- 16位加速度
- 地磁传感器
- 智能电源管理系统:正常、低功耗、睡眠
- 集成三个传感器:
- BMP388气压&温度传感器
- 温度检测
- 大气压强检测
- 海拔高度检测
- 室内导航(楼层检测、电梯检测)
- 户外导航、休闲和运动的应用程序
- 医疗保健应用程序(如肺活量测定法)
- 垂直速度指示(如上升/下沉速度)
技术规格及尺寸
- 工作电压:3.3V-5.5V
- BMX160九轴传感器
- BMX160加速度:
- 加速度:±2g/±4g/±8g/±16
- BMX160加速度:
- BMX160陀螺仪:
- 范围:±125°/s~2000°/s
- BMX160陀螺仪:
- BMX160地磁:
- 范围:±1150uT(x-,y-axis);±2500uT(z-axis)
- 地磁分辨率:~0.3
- BMX160 默认IIC地址:0X68
- BMX160地磁:
- BMP388气压&温度传感器
- 测量范围:300-1250 hPa
- 相对气压测量精度:±0.08 hPa(等价±0.66m @700-900hPa,25℃-40℃)
- 绝对气压测量精度:±0.5 hPa(0℃-65℃@300-1100hPa)
- 温度漂移系数:±0.75 Pa/K(-20℃-65℃@700-1100hPa)
- 绝对温度测量精度:±0.5℃(@0℃-65℃)
- 工作温度:-40℃~80℃(在0℃-65℃测量更精确)
- BMP388 默认IIC地址:0X76
- 外形尺寸:27mm x 32mm
- 安装孔位置:20mm
- 安装孔尺寸:内径3mm/外径6mm
- 接口:Gravity-IIC PH2.0-4P
引脚说明
丝印 | 功能描述 |
+/VCC | 电源正极 |
-/GND | 电源负极 |
C/SCL | IIC时钟线 |
D/SDA | IIC数据线 |
3V3 | 3.3V电源线 |
ADDR(BMP388) | BMP388IIC地址选择 |
ADDR(BMX160) | BMX160IIC地址选择 |
CSB2 | BMX160协议选择引脚 |
INIT2 | BMX160外部中断2 |
INIT3 | BMX160外部中断1 |
CSB1 | BMP388协议选择引脚 |
INIT1 | BMP388外部中断 |
API接口函数
class DFRobot_BMX160 { /* * @功能 枚举陀螺仪范围,单位为 G */ typedef enum{ eGyroRange_2000DPS, /*Gyroscope sensitivity at 2000dps*/ eGyroRange_1000DPS, /*Gyroscope sensitivity at 1000dps*/ eGyroRange_500DPS, /*Gyroscope sensitivity at 500dps*/ eGyroRange_250DPS, /*Gyroscope sensitivity at 250dps*/ eGyroRange_125DPS /*Gyroscope sensitivity at 125dps*/ }eGyroRange_t; /* * @功能 枚举加速度计范围,单位为 m/s^2 */ typedef enum{ eAccelRange_2G, /* Macro for mg per LSB at +/- 2g sensitivity (1 LSB = 0.000061035mg) */ eAccelRange_4G, /* Macro for mg per LSB at +/- 4g sensitivity (1 LSB = 0.000122070mg) */ eAccelRange_8G, /* Macro for mg per LSB at +/- 8g sensitivity (1 LSB = 0.000244141mg) */ eAccelRange_16G /* Macro for mg per LSB at +/- 16g sensitivity (1 LSB = 0.000488281mg) */ }eAccelRange_t; /* * @功能 重置传感器 * @返回 true为成功 */ bool softReset(); /* * @功能 初始化传感器 * @返回 true为成功 */ bool begin(); /* * @功能 设置陀螺仪范围,单位为 G * @参数 一个来自eGyroRange_t 的变量 */ void setGyroRange(eGyroRange_t bits); /* * @功能 设置加速度计范围,单位为 m/s^2 * @参数 一个来自eAccelRange_t 的变量 */ void setAccelRange(eAccelRange_t bits); /* * @功能 获取磁力计,陀螺仪,加速度计数据 * @参数 用于存储各个数据的地址 */ void getAllData(struct bmx160SensorData *magn, struct bmx160SensorData *gyro, struct bmx160SensorData *accel); /* * @功能 关闭磁力计,陀螺仪进入低功耗模式(加速度计有数据读出) */ void setLowPower(); /* * @功能 打开磁力计,陀螺仪进入正常模式 */ void wakeUp(); |
使用教程
10Dof板载BMX160传感器和BMP388传感器,可以用I2C接口分别访问BMX160(默认0x68)和BMP388(0x76)的I2C地址,从而获取相应的位置数据和环境信息。
准备
硬件
- 1 x UNO控制板
- 1 x BMX160+BMP388智能10轴绝对定向传感器模块
- 杜邦线若干
软件
- Arduino IDE, 点击下载Arduino IDE
- BMX160库
- BMP388库
关于如何安装库文件,点击链接
硬件连接示意图
BMX160使用例程
程序功能:通过I2C接口读取BMX160传感器的磁力计、陀螺仪、加速度计数据,并将读取到的数据通过串口打印出来
/*! * file readAllData.ino * * Through the example, you can get the sensor data by using getSensorData: * get all data of magnetometer, gyroscope, accelerometer. * * With the rotation of the sensor, data changes are visible. * * Copyright [DFRobot](http://www.dfrobot.com), 2016 * Copyright GNU Lesser General Public License * * version V0.1 * date 2019-6-25 */ #include <DFRobot_BMX160.h> DFRobot_BMX160 bmx160; void setup(){ Serial.begin(115200); delay(100); //init the hardware bmx160 if (bmx160.begin() != true){ Serial.println("init false"); while(1); } //bmx160.setLowPower(); //disable the gyroscope and accelerometer sensor //bmx160.wakeUp(); //enable the gyroscope and accelerometer sensor //bmx160.softReset(); //reset the sensor /** @typedef enum{eGyroRange_2000DPS, * eGyroRange_1000DPS, * eGyroRange_500DPS, * eGyroRange_250DPS, * eGyroRange_125DPS * }eGyroRange_t; **/ //bmx160.setGyroRange(eGyroRange_500DPS); /** @typedef enum{eAccelRange_2G, * eAccelRange_4G, * eAccelRange_8G, * eAccelRange_16G * }eAccelRange_t; */ //bmx160.setAccelRange(eAccelRange_4G); delay(100); } void loop(){ bmx160SensorData Omagn, Ogyro, Oaccel; /* Get a new sensor event */ bmx160.getAllData(&Omagn, &Ogyro, &Oaccel); /* Display the magnetometer results (magn is magnetometer in uTesla) */ Serial.print("M "); Serial.print("X: "); Serial.print(Omagn.x); Serial.print(" "); Serial.print("Y: "); Serial.print(Omagn.y); Serial.print(" "); Serial.print("Z: "); Serial.print(Omagn.z); Serial.print(" "); Serial.println("uT"); /* Display the gyroscope results (gyroscope data is in g) */ Serial.print("G "); Serial.print("X: "); Serial.print(Ogyro.x); Serial.print(" "); Serial.print("Y: "); Serial.print(Ogyro.y); Serial.print(" "); Serial.print("Z: "); Serial.print(Ogyro.z); Serial.print(" "); Serial.println("g"); /* Display the accelerometer results (accelerometer data is in m/s^2) */ Serial.print("A "); Serial.print("X: "); Serial.print(Oaccel.x ); Serial.print(" "); Serial.print("Y: "); Serial.print(Oaccel.y ); Serial.print(" "); Serial.print("Z: "); Serial.print(Oaccel.z ); Serial.print(" "); Serial.println("m/s^2"); Serial.println(""); delay(500); }
BMP388使用例程
BMP388使用方式请参照BMP388模块WIKI
本产品BMP388 SDO引脚默认为低,需要改变IIC地址为:BMP3_I2C_ADDR_PRIM
常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。