BMM150 3-Axis Magnetometer Sensor
| |||||||||||||||||||||
| |||||||||||||||||||||
说明
产品概述
BMM150是一款低功耗、低噪声、尺寸非常小的的三轴数值地磁传感器,数字高性能传感器非常适合各种高度跟踪应用,模块支持I2C/SPI 接口,兼容 3.3V/5V 电平。可以轻松地集成到GPS模块、可穿戴设备、可听设备和无人机等项目,适用于精密高度计、环境监测和物联网等应用场景。
特点
- 支持 I2C/SPI 接口通信,默认为 I2C 接口
- 板载电平转换电路,可兼容 3.3V/5V 的工作电平
- 提供完善的配套资料手册(Raspberry/Arduino/pico 示例程序和用户手册等)
产品参数
- 工作电压: 5V/3.3V
- 通信接口: I2C/SPI
- 分辨率: 0.3μT
- 线性度: <1%FS
- 增益误差: ±2%
- 灵敏度温度漂移: ±0.01%/K
- 零点漂移: ±40μT(25℃)
- 测量范围: ±1300μT (x,y-axis),±2500μT (z-axis)
- 数据输出速率: 10Hz(nomal mode:Regular preset)
- 工作温度: -40~85℃
- 产品尺寸: 29mm × 20mm
接口说明
- 引脚功能
功能引脚 | 描述 |
VCC | 电源正 |
GND | 电源地 |
SDA | I2C 数据线 |
SCL | I2C 时钟线 |
INT | 中断输出引脚,可接 I/O 口 |
SDO | SPI 数据线接主机MISO |
SDI | SPI 数据线接主机MOSI |
CS | 片选信号输入,接 I/O 口 |
DRY | 数据就绪信号输出,在寄存器中有一组新数据时被使能 |
用于树莓派
函数库安装
- 安装wiringPi
sudo apt-get install wiringpi #对于树莓派4B可能需要进行升级: wget https://project-downloads.drogon.net/wiringpi-latest.deb sudo dpkg -i wiringpi-latest.deb gpio -v # 运行gpio -v会出现2.52版本,如果没有出现说明安装出错
前置工作
前置工作执行如下命令进行树莓派配置:
sudo raspi-config
选择 Interfacing Options -> I2C -> yes 启动 I2C 内核驱动 ;
选择 Interfacing Options -> SPI -> yes 启动 SPI 内核驱动 ;
保存退出后,重启树莓派:
sudo reboot
重启后检查SPI是否正常启动:
ls /dev/spi*
WiringPi 例程演示
下载示例程序并解压:
sudo apt-get update sudo apt-get unzip wget https://www.waveshare.net/w/upload/6/67/BMM150_3-Axis_Magnetometer_Sensor_code.zip unzip BMM150_3-Axis_Magnetometer_Sensor_code.zip
I2C
模块 | 树莓派 |
VCC | 3.3V/5V |
GND | GND |
SDA | SDA |
SCL | SCL |
INT | 不接 |
- 检查连接:
i2cdetect -y 1
模块默认I2C地址为0x13,可通过修改A0/SDO 和 A1/CS的电平来修改I2C地址,然后在代码bmm150_common.c
对应做修改;
/*! @name I2C ADDRESS */ #define BMM150_DEFAULT_I2C_ADDRESS UINT8_C(0x10) #define BMM150_I2C_ADDRESS_CSB_LOW_SDO_HIGH UINT8_C(0x11) #define BMM150_I2C_ADDRESS_CSB_HIGH_SDO_LOW UINT8_C(0x12) #define BMM150_I2C_ADDRESS_CSB_HIGH_SDO_HIGH UINT8_C(0x13)
- 进入到 I2C 目录下编译并运行程序 :
cd cd BMM150_3-Axis_Magnetometer_Sensor_code/RaspberryPi/I2C
- 运行程序:
make clean make sudo ./bmm150
- 将显示如下数据:
等待一会可以得到稳定的数据。从左至右分别显示了 BMM150 测得的X、Y、Z三轴磁感应强度。
SPI
模块默认为I2C模式,可以通过修改左上角模式选择焊盘切换为SPI模式使用。
模块 | 树莓派 |
VCC | 3.3V |
GND | GND |
SDO | MISO |
SDI | MOSI |
SCK | SCLK |
CS | 27(wiringPi编码) |
- 进入到 SPI 目录下编译并运行程序 :
cd cd BMM150_3-Axis_Magnetometer_Sensor_code/RaspberryPi/SPI
- 运行程序:
make clean make sudo ./bmm150
- 将显示如下数据:
等待一会可以得到稳定的数据。从左至右分别显示了 BMM150 测得的X、Y、Z三轴磁感应强度。
python
模块 | 树莓派 |
VCC | 3.3V/5V |
GND | GND |
SDA | SDA |
SCL | SCL |
INT | 不接 |
- 检查连接:
i2cdetect -y 1
cd RaspberryPi/python sudo python get_geomagnetic_data.py
得到下方数据:
等待一会可以得到稳定的数据。,依次显示模块测量到的三轴磁感应强度。
用于Arduino
I2C
- 按照如下方式将模块接到 arduino 开发板中。
模块 | Arduino |
VCC | 5V |
GND | GND |
SDA | SDA |
SCL | SCL |
INT | 不接 |
- 在正确接线,确定通信方式以及器件地址之后,编译,下载到 Arduino
- 打开:工具 -> 串口监视器,选择波特率为 115200,可得如下信息
等待一会可以得到稳定的数据。从左至右分别显示了 BMM150 测得的X、Y、Z三轴磁感应强度。
若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。
SPI
模块默认为I2C模式,可以通过修改左上角模式选择焊盘切换为SPI模式使用。
模块 | Arduino |
VCC | 3.3V |
GND | GND |
SDO | 12 |
SDI | 11 |
SCK | 13 |
CS | 10 |
- 在正确接线,确定通信方式以及器件地址之后,打开Arduino对应的程序,确认程序中宏定义USE_I2C为0,编译,下载到Arduino开发板
- 打开:工具 -> 串口监视器,选择波特率为 115200,可得如下信息
等待一会可以得到稳定的数据。从左至右分别显示了 BMM150 测得的X、Y、Z三轴磁感应强度。
若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。
ESP32
本示例使用ESP32-S3-DEV-KIT-N8R8开发板
I2C
- 按照如下方式将模块接到 ESB32开发板中。
模块 | ESP32 |
VCC | 5V |
GND | GND |
SDA | 13 |
SCL | 14 |
INT | 不接 |
- 在正确接线,确定通信方式以及器件地址之后,打开ESP32对应的程序,确认程序中宏定义USE_I2C为1,编译,下载到 Arduino
- 打开:工具 -> 串口监视器,选择波特率为 115200,可得如下信息
等待一会可以得到稳定的数据。从左至右分别显示了 BMM150 测得的X、Y、Z三轴磁感应强度。
若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。
SPI
模块默认为I2C模式,可以通过修改左上角模式选择焊盘切换为SPI模式使用。
模块 | ESP32-S3 |
VCC | 5V |
GND | GND |
SDO | 10 |
SDI | 11 |
SCK | 9 |
CS | 12 |
- 在正确接线,确定通信方式以及器件地址之后,打开ESP32对应的程序,确认程序中宏定义USE_I2C为0,编译,下载到 ESP32
- 打开:工具 -> 串口监视器,选择波特率为 115200,可得如下信息
等待一会可以得到稳定的数据。从左至右分别显示了 BMM150 测得的X、Y、Z三轴磁感应强度。
若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。
用于Raspberry Pi Pico
软件准备
安装Thonny
- 直接进入Thonny官网下载;
- 若无法进入官网或下载过慢,可以直接在此下载Thonny Python IDE (Windows版本 V3.3.3)。
烧录Micropython固件
- 软件在线安装方法:最新版的Thonny自带安装固件的功能。
- 首先需要按住Pico的boot按键同时将Pico使用USB数据线与PC连接;
- 之后打开Thonny依次点击Tool->Options...->Interpretere->INstall or update MicroPython;
- 在弹出的窗口中选择对应开发板和MicorPython版本,并点击安装,之后等待安装完毕即可。
若出现软件安装MicroPython窗口中一直提示downloading variants info...且长时间无变化,考虑为网络原因,可以选择使用代理或改为使用下面的离线安装方法。
- 离线安装方法:
- 下载固件,得到一个.uf2文件;
- 按住Pico的boot按键同时将Pico使用USB数据线与PC连接,之后电脑会弹出一个USB储存设备;
- 打开该设备文件夹,将.uf2文件直接拖入文件夹中,之后该储存设备自动弹出,开发板重启,此时代表安装完成,可以打开Thonny查看是否成功识别的Pico的micropython环境。更多细节参考Pico官网。
硬件连接
模块 | Pico |
VCC | 5V |
GND | GND |
SDA | GP2 |
SCL | GP3 |
INT | 不接 |
例程使用
步骤如图:
- 确认已连接写入了micropython固件的Raspberry Pi Pico开发板;
- 在左上角文件界面打开解压后的示例程序文件夹并打开Pico文件夹;
- 选中两个.py文件,右键选择上传;
- 上传后在左下的片内文件界面双击打开示例程序get_geomagnetic_data.py;
- 点击上方按钮运行。