MMC5603 · SKU 0805

MMC5603 三轴磁力计模块资料

适用于 Arduino、ESP32、STM32、树莓派等主控的三轴磁力计模块。页面整理 I2C 接线、Qwiic/STEMMA QT 线序、Arduino 测试、STM32 HAL 参考模板、磁力计校准和淘宝客户排查话术。

Quick Facts

  • 芯片:MEMSIC MMC5603NJ
  • 接口:I2C / I3C;模块常用 I2C
  • 常见地址:0x30
  • 用途:磁场检测、电子罗盘、方向/位置感应
三轴磁力计 MMC5603 For STEMMA QT / Qwiic 接口SKU:0805;淘宝链接已记录。订单截图不放入网站,页面仅使用产品实物图和自绘接线图。
进入淘宝购买

Product

产品图与说明

MMC5603 是三轴 AMR 磁场传感器,适合检测 X/Y/Z 三个方向的磁场变化。做电子罗盘或方向角时,必须做软硬铁校准,不能只把原始 X/Y 数据直接当最终角度。

0805 MMC5603 三轴磁力计模块实物图

实物图来自店铺产品图。图中可见 Qwiic/STEMMA QT 接口、VIN/GND/SCL/SDA 丝印和排针接口。

Parameters

重要参数

项目说明备注
传感器型号MMC5603NJ以实物芯片丝印为准
测量轴X / Y / Z 三轴磁场输出单位常用 uT
通信接口I2C,芯片资料也提到 I3C本模块客户测试优先按 I2C
常见 I2C 地址0x30如果扫不到,先用 I2C Scanner 确认
量程公开资料常见 ±30 Gauss约 ±3000 uT,强磁铁贴太近可能不适合
模块接口VIN、GND、SCL、SDA;Qwiic/STEMMA QT线序以实物丝印和模块说明为准
模块尺寸图片标注约 25.3mm × 17.8mm建议以实物测量为准

Wiring

Arduino / ESP32 接线

Qwiic/STEMMA QT 线常见颜色:黑 GND、红 VCC/VIN、蓝 SDA、黄 SCL。红线不要写死 5V,按主控电平和模块说明接。

MMC5603 Arduino ESP32 I2C 接线图
MMC5603 模块Arduino UNO / NanoESP32 常用接法说明
VIN / VCC5V3.3V以模块说明为准;3.3V 主控建议 3.3V 供电
GNDGNDGND必须共地
SDAA4 / SDAGPIO21I2C 数据线
SCLA5 / SCLGPIO22I2C 时钟线

Arduino IDE

新手怎么下载和运行 Arduino 测试

本页保留 MMC5603 的快速步骤;更完整的下载、开发板包、库管理器、端口和串口监视器说明,请打开通用教程页。

打开 Arduino IDE 通用教程
1. 下载 Arduino IDE

打开 Arduino 官方软件下载页,Windows 客户优先下载 Arduino IDE 2.x 的 Windows 版本。官方说明 Windows 版下载后双击 .exe 安装即可。

打开官方下载页
2. 安装并打开

安装完成后从开始菜单打开 Arduino IDE。第一次打开可能会提示安装驱动或工具链,按提示允许即可。

3. 安装 MMC5603 库

在左侧 Library Manager 或菜单“工具/库管理器”里搜索 Adafruit MMC56x3,安装 Adafruit MMC56x3,同时按提示安装依赖库。

4. 选择开发板和端口

UNO/Nano 选择对应板型;ESP32 需要先安装 ESP32 开发板包。插上 USB 后,在“工具 → 端口”里选择新出现的 COM 口。

5. 上传并看串口

打开本页提供的 .ino,点击上传。上传成功后打开串口监视器,波特率选 115200,正常会看到 X/Y/Z 磁场数据。

6. 常见卡住点

如果提示找不到库,说明库没有安装;如果上传失败,先检查板型/端口;如果显示 No MMC5603 detected,再检查接线和 I2C 地址。

Arduino / STM32

测试程序

Arduino 优先用 Adafruit MMC56x3 库。客户问 STM32 程序时,可以先给 HAL I2C 参考模板做通信排查,完整 XYZ 数据读取需要按官方寄存器流程移植。

Arduino / ESP32 测试
#include <Wire.h>
#include <Adafruit_MMC56x3.h>

Adafruit_MMC5603 mmc = Adafruit_MMC5603(12345);

void setup() {
  Serial.begin(115200);
  Wire.begin();
  if (!mmc.begin(MMC56X3_DEFAULT_ADDRESS, &Wire)) {
    Serial.println("No MMC5603 detected");
    while (1) delay(10);
  }
}
下载 Arduino .ino
STM32 HAL 参考模板
#define MMC5603_ADDR_7BIT 0x30
#define MMC5603_ADDR_HAL  (MMC5603_ADDR_7BIT << 1)

if (HAL_I2C_IsDeviceReady(&hi2c1,
    MMC5603_ADDR_HAL, 3, 100) == HAL_OK) {
  printf("MMC5603 ACK at 0x30\r\n");
}
下载 STM32 .c 模板
STM32 给客户说明

可以提供 STM32 HAL I2C 参考模板,但不能保证客户工程直接复制就能跑。不同 STM32 型号、CubeMX 生成的 I2C 句柄、串口 printf、时钟频率都不一样,必须按自己的工程改。

Troubleshooting

常见问题排查

I2C 扫不到 0x30

先检查 VIN/GND、SDA/SCL 是否接反、GND 是否共地、Qwiic 线是否插到底。ESP32 程序里要确认 Wire.begin(21, 22) 和实际接线一致。

为什么靠近磁铁读数很大或者乱跳?

MMC5603 适合地磁和普通磁场检测,不适合强磁铁贴得很近。强磁、螺丝、电机、大电流线都会影响读数。

能不能直接做电子罗盘?

能做方向参考,但必须校准。至少要做软铁/硬铁校准,并确认模块安装方向、板子附近没有铁磁材料和电流干扰。

STM32 地址要写 0x30 还是 0x60?

MMC5603 常见 7 位地址是 0x30。STM32 HAL 函数通常传左移一位后的地址,也就是 0x30 << 1,数值为 0x60。

Customer Reply

淘宝客户回复话术

您好,MMC5603 是 I2C 三轴磁力计,先用 I2C 扫描程序确认能否扫到 0x30。请检查 VIN/GND、SDA/SCL 是否接反,ESP32 的 SDA/SCL 是否和程序里的 GPIO21/GPIO22 一致。

您好,磁力计读数会受磁铁、螺丝、电机、电源线和桌面金属影响。做电子罗盘前需要校准,不能只看原始 X/Y/Z 数值是否固定。

您好,STM32 可以用 I2C 读这个模块。常见 7 位地址是 0x30,HAL 里一般写成 0x30 左移一位,也就是 0x60。不同 STM32 工程需要改 I2C 句柄和串口打印,例程只能作为参考模板。

您好,如果不会用 Arduino IDE,先到 Arduino 官方网站下载 Arduino IDE 2.x。安装后在库管理器搜索 Adafruit MMC56x3 并安装,再选择正确开发板和 COM 口,上传本页例程,串口监视器波特率选 115200 查看数据。

References

官方与公开资料