打开 Arduino 官方软件下载页,Windows 客户优先下载 Arduino IDE 2.x 的 Windows 版本。官方说明 Windows 版下载后双击 .exe 安装即可。
MMC5603 · SKU 0805
MMC5603 三轴磁力计模块资料
适用于 Arduino、ESP32、STM32、树莓派等主控的三轴磁力计模块。页面整理 I2C 接线、Qwiic/STEMMA QT 线序、Arduino 测试、STM32 HAL 参考模板、磁力计校准和淘宝客户排查话术。
Quick Facts
- 芯片:MEMSIC MMC5603NJ
- 接口:I2C / I3C;模块常用 I2C
- 常见地址:0x30
- 用途:磁场检测、电子罗盘、方向/位置感应
Product
产品图与说明
MMC5603 是三轴 AMR 磁场传感器,适合检测 X/Y/Z 三个方向的磁场变化。做电子罗盘或方向角时,必须做软硬铁校准,不能只把原始 X/Y 数据直接当最终角度。

实物图来自店铺产品图。图中可见 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 UNO / Nano | ESP32 常用接法 | 说明 |
|---|---|---|---|
| VIN / VCC | 5V | 3.3V | 以模块说明为准;3.3V 主控建议 3.3V 供电 |
| GND | GND | GND | 必须共地 |
| SDA | A4 / SDA | GPIO21 | I2C 数据线 |
| SCL | A5 / SCL | GPIO22 | I2C 时钟线 |
Arduino IDE
新手怎么下载和运行 Arduino 测试
本页保留 MMC5603 的快速步骤;更完整的下载、开发板包、库管理器、端口和串口监视器说明,请打开通用教程页。
打开 Arduino IDE 通用教程安装完成后从开始菜单打开 Arduino IDE。第一次打开可能会提示安装驱动或工具链,按提示允许即可。
在左侧 Library Manager 或菜单“工具/库管理器”里搜索 Adafruit MMC56x3,安装 Adafruit MMC56x3,同时按提示安装依赖库。
UNO/Nano 选择对应板型;ESP32 需要先安装 ESP32 开发板包。插上 USB 后,在“工具 → 端口”里选择新出现的 COM 口。
打开本页提供的 .ino,点击上传。上传成功后打开串口监视器,波特率选 115200,正常会看到 X/Y/Z 磁场数据。
如果提示找不到库,说明库没有安装;如果上传失败,先检查板型/端口;如果显示 No MMC5603 detected,再检查接线和 I2C 地址。
Arduino / STM32
测试程序
Arduino 优先用 Adafruit MMC56x3 库。客户问 STM32 程序时,可以先给 HAL I2C 参考模板做通信排查,完整 XYZ 数据读取需要按官方寄存器流程移植。
#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#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 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
淘宝客户回复话术
References