BMM150 3-Axis Magnetometer Sensor

来自Waveshare Wiki
跳转至: 导航搜索
BMP388-Barometric-Pressure-Sensor
{{{name2}}}
{{{name3}}}
功能简介
特性 BMM150三轴磁强计传感器
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 I2C SPI

说明

产品概述

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*

BMP390 RaspberryPi C SPIinit.png

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

BMM150 RasberryPi C I2C Addr.png
模块默认I2C地址为0x13,可通过修改A0/SDO 和 A1/CS的电平来修改I2C地址,然后在代码bmm150_common.c对应做修改;
BMM150 RasberryPi C I2C Addr2.png
BMM150 RasberryPi C I2C Addr1.png

/*! @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 RasberryPi C I2C.png
等待一会可以得到稳定的数据。从左至右分别显示了 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 RasberryPi C SPI.png
等待一会可以得到稳定的数据。从左至右分别显示了 BMM150 测得的X、Y、Z三轴磁感应强度。

python

模块 树莓派
VCC 3.3V/5V
GND GND
SDA SDA
SCL SCL
INT 不接

  • 检查连接:
i2cdetect -y 1

BMM150 RasberryPi C I2C Addr.png
进入python程序文件夹并运行程序:

cd RaspberryPi/python
sudo python get_geomagnetic_data.py

得到下方数据:
Bmm150 raspberry python.png
等待一会可以得到稳定的数据。,依次显示模块测量到的三轴磁感应强度。

用于Arduino

I2C

  • 按照如下方式将模块接到 arduino 开发板中。
模块 Arduino
VCC 5V
GND GND
SDA SDA
SCL SCL
INT 不接

BMM150 Arduino connect.png

  • 在正确接线,确定通信方式以及器件地址之后,编译,下载到 Arduino
  • 打开:工具 -> 串口监视器,选择波特率为 115200,可得如下信息

Bmm150 Arduino I2C.png
等待一会可以得到稳定的数据。从左至右分别显示了 BMM150 测得的X、Y、Z三轴磁感应强度。
若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。

SPI

模块默认为I2C模式,可以通过修改左上角模式选择焊盘切换为SPI模式使用。

模块 Arduino
VCC 3.3V
GND GND
SDO 12
SDI 11
SCK 13
CS 10

BMM150 Arduino SPI connect.png

  • 在正确接线,确定通信方式以及器件地址之后,打开Arduino对应的程序,确认程序中宏定义USE_I2C为0,编译,下载到Arduino开发板
  • 打开:工具 -> 串口监视器,选择波特率为 115200,可得如下信息

Bmm150 Arduino SPI.png
等待一会可以得到稳定的数据。从左至右分别显示了 BMM150 测得的X、Y、Z三轴磁感应强度。
若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。

ESP32

本示例使用ESP32-S3-DEV-KIT-N8R8开发板

I2C

  • 按照如下方式将模块接到 ESB32开发板中。
模块 ESP32
VCC 5V
GND GND
SDA 13
SCL 14
INT 不接

BMM150 ESP32 connect I2C.png

  • 在正确接线,确定通信方式以及器件地址之后,打开ESP32对应的程序,确认程序中宏定义USE_I2C为1,编译,下载到 Arduino
  • 打开:工具 -> 串口监视器,选择波特率为 115200,可得如下信息

Bmm150 ESP32 I2C.png
等待一会可以得到稳定的数据。从左至右分别显示了 BMM150 测得的X、Y、Z三轴磁感应强度。
若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。

SPI

模块默认为I2C模式,可以通过修改左上角模式选择焊盘切换为SPI模式使用。

模块 ESP32-S3
VCC 5V
GND GND
SDO 10
SDI 11
SCK 9
CS 12

BMM150 ESP32 connect SPi.png

  • 在正确接线,确定通信方式以及器件地址之后,打开ESP32对应的程序,确认程序中宏定义USE_I2C为0,编译,下载到 ESP32
  • 打开:工具 -> 串口监视器,选择波特率为 115200,可得如下信息

Bmm150 ESP32 SPI.png
等待一会可以得到稳定的数据。从左至右分别显示了 BMM150 测得的X、Y、Z三轴磁感应强度。
若未成功显示数据,或数据显示不正常请检查连线,通信方式,以及器件地址是否有误。

用于Raspberry Pi Pico

软件准备

安装Thonny

烧录Micropython固件

  • 软件在线安装方法:最新版的Thonny自带安装固件的功能。
  1. 首先需要按住Pico的boot按键同时将Pico使用USB数据线与PC连接;
  2. 之后打开Thonny依次点击Tool->Options...->Interpretere->INstall or update MicroPython;
  3. 在弹出的窗口中选择对应开发板和MicorPython版本,并点击安装,之后等待安装完毕即可。

企业微信截图 16826472081409.png
若出现软件安装MicroPython窗口中一直提示downloading variants info...且长时间无变化,考虑为网络原因,可以选择使用代理或改为使用下面的离线安装方法。

  • 离线安装方法:
  1. 下载固件,得到一个.uf2文件;
  2. 按住Pico的boot按键同时将Pico使用USB数据线与PC连接,之后电脑会弹出一个USB储存设备;
  3. 打开该设备文件夹,将.uf2文件直接拖入文件夹中,之后该储存设备自动弹出,开发板重启,此时代表安装完成,可以打开Thonny查看是否成功识别的Pico的micropython环境。更多细节参考Pico官网

硬件连接

模块 Pico
VCC 5V
GND GND
SDA GP2
SCL GP3
INT 不接

Bmm150 pico connect.png

例程使用

步骤如图:

  1. 确认已连接写入了micropython固件的Raspberry Pi Pico开发板;
  2. 在左上角文件界面打开解压后的示例程序文件夹并打开Pico文件夹;
  3. 选中两个.py文件,右键选择上传;
  4. 上传后在左下的片内文件界面双击打开示例程序get_geomagnetic_data.py;
  5. 点击上方按钮运行。

BMM150 Pico.png

资料

文档

程序

软件

相关资料

FAQ


售后


联系人:黄工
EMAIL:3005423122@qq.com
电话:0755-83040712
QQ:3005763927
微信:扫下方二维码添加
Hkx-wx.jpg

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证