树莓派传感器数据融合实战:GPS 与 MPU‑9150 IMU 的 I²C 与 UART 接入
摘要
学习在树莓派上通过 I²C 与 UART 接口连接读取 GPS 模块与 MPU‑9150 IMU 数据,并实时处理用于自主导航。
关键词:I2C 通信、UART 通信、Adafruit Ultimate GPS Breakout、Sparkfun MPU‑9150 Breakout、树莓派配置
引言
传感器数据采集是数字控制系统基石。嵌入式控制器处理这些输入时,通信接口选择至关重要。机器人导航项目需要持续 GPS 位置更新与精准航向测量。本教程演示如何在树莓派上接线 GPS 与磁力计、远程查看数据、并集成进控制软件。
目标
进阶教程,假设熟悉 Raspbian 与基本 bash 命令。引导你通过树莓派串口接口读取加速度计与 GPS 数据、接线传感器、配置硬件驱动。
硬件信息
硬件
- Sparkfun 9‑DoF Breakout (MPU‑9150)
- Adafruit Ultimate GPS Breakout
MPU‑9150 为多芯片模块,集成 MPU‑6050 (三轴陀螺仪与加速度计) 与 AK8975 数字罗盘。因低功耗高性能广泛用于智能手机、平板。
Adafruit Ultimate GPS 基于 MTK3339 芯片,提供 10 Hz 更新率、22 卫星追踪、外置天线口。红指示灯指示信号状态:搜星时 1 Hz 闪烁,定位成功后 15 秒闪烁一次。
通信标准
I²C 用两根双向线 (SDA、SCL) 连接主机 (树莓派) 与多从机,各从机有唯一地址。
UART 以程序员定义波特率异步传输 5–8 位帧,需独立 TxD 与 RxD 线。
物料清单
- 树莓派
- 电源适配器
- Wi-Fi 网卡
- Sparkfun MPU‑9150 扩展板
- Adafruit Ultimate GPS 扩展板
- USB‑TTL 适配器 (可选)
- 面包板
- 公对母跳线
假设
- 可联网。
- Raspbian 已安装并设为桌面模式。
- 已连鼠标、键盘、HDMI 显示器。
操作步骤
- 识别树莓派 GPIO:UART 用 GPIO 14 (Tx) 与 15 (Rx);I²C 用 GPIO 2 (SDA) 与 3 (SCL)。
- GPS 接线:GPS Tx 接树莓派 Rx,GPS Rx 接树莓派 Tx,Vin 接 3.3V 或 5V,GND 共地。
- MPU‑9150 接线:Vcc 接 3.3V,GND 接地,SDA 接 GPIO 2,SCL 接 GPIO 3。
- 启用树莓派 I²C:
- 执行
sudo apt-get update && sudo apt-get install i2c-tools libi2c-dev。 - 安装 WiringPi:
git clone git://git.drogon.net/wiringPi && cd wiringPi && sudo nano /etc/modules添加snd-bcm2835、i2c-bcm2708、i2c-dev。 - 编辑
/boot/config.txt添加dtparam=i2c1=on与dtparam=i2c_arm=on,重启。
- 执行
- 安装 MPU‑6050 演示:
- 克隆
git://github.com/richardghirst/PiBits.git,进入MPU6050-Pi-Demo,安装libgtkmm-3.0-dev。 - 修改
I2Cdev.cpp与setup-i2c.sh将/dev/i2c-0替为/dev/i2c-1。 make编译,运行./setup-i2c.sh,用sudo i2cdetect -y 1验证。- 执行
./demo_raw查看原始陀螺仪与加速度计数据。
- 克隆
- 配置 GPS 数据采集:
- Adafruit GPS Daemon 指南 为起点,但为自定义处理我们用开源 libgps 库。
- 克隆
git://github.com/wdalmut/libgps.git,make && sudo make install编译安装。 - 用提供的
position_logger.c测试:gcc -o position_logger position_logger.c -lgps -lm编译,运行./position_logger。定位成功后以十进制度打印经纬度。
结论
本教程覆盖双传感器硬件接线、通信协议启用、基础软件配置。示例侧重数据显示,同等原理可扩展至融合传感器输出的复杂导航或控制算法。精通各传感器库与扎实 C/C++ 开发能力是实现更复杂实时传感器融合的关键。
参考文献
- Kevin Townsend. Adafruit Ultimate GPS on the Raspberry Pi, 15 July 2014.
- Walter Dal Mut. UART NMEA GPS library for Raspberry Pi, 08 Sept 2014.
- InvenSense. MPU‑9150 Datasheet, 18 Sept 2013.
制造工艺
- 树莓派多路DS18B20 1-Wire温度监测:接线与编程全指南
- 树莓派专业温度监测:基于 DS18B20 传感器的完整指南
- 树莓派精准监测机柜温度:DS18B20 多点部署实战
- 树莓派 PIR 运动传感器控制 LED 实战指南
- 树莓派低成本土壤湿度传感器:智能灌溉 DIY 指南
- 树莓派实时人脸追踪云台:OpenCV + 舵机 + ServoBlaster 实战
- 直接将乐高 Mindstorms NXT 超声波传感器连接到树莓派
- 树莓派连接 HC-SR04 超声波传感器实战指南
- 树莓派 + DHT11 + ThingSpeak:打造你的第一个物联网项目
- 树莓派自动化气雾栽培系统:湿度传感器智能控制
- 树莓派 + MCP9808 + InfluxDB + Grafana:家庭温度监测系统
- 掌握树莓派 GPIO:在 B+/Model 2 上接入 PIR 运动传感器