3. 数据采集硬件平台:嵌入式平台选型与传感器集成
做机器人数据采集,说白了就是给机器人装上「眼睛、耳朵和神经」。硬件平台选对了,后面建模事半功倍;选错了,调试能让你怀疑人生。我这些年踩过的坑,十有八九都出在硬件选型上。
这一章咱们就聊聊嵌入式平台怎么挑、传感器怎么配、电源和信号怎么处理。嗯,都是实战里绕不开的硬骨头。
3.1 嵌入式平台选型:STM32、树莓派、Jetson
选平台之前,先想清楚一个问题:你的机器人要处理什么级别的数据?
- STM32:适合传感器少、实时性要求高的场景。比如电机控制、IMU 数据读取。
- 树莓派:适合中等算力需求,比如摄像头图像采集、简单视觉处理。
- Jetson:适合深度学习推理、多路传感器融合,比如自动驾驶小车。
我个人习惯先列一个需求清单,再对着清单选型。下面这个表格是我常用的对比维度:
| 维度 | STM32 (F4/H7) | 树莓派 4B | Jetson Nano |
|---|---|---|---|
| 算力 | 低 (~200MHz) | 中 (1.5GHz 四核) | 高 (128核 GPU) |
| 实时性 | 硬实时 (中断响应 <1μs) | 软实时 (Linux 调度) | 软实时 (Linux 调度) |
| 功耗 | 低 (~0.5W) | 中 (~5W) | 高 (~10W) |
| 接口丰富度 | SPI/I2C/UART/CAN | USB/HDMI/GPIO | USB/CSI/GPIO |
| 典型场景 | 底层驱动、传感器轮询 | 图像采集、日志记录 | 视觉 SLAM、目标检测 |
我的经验: 别指望一个平台干所有事。我做过一个项目,非要用树莓派同时做电机控制和图像处理,结果电机控制周期抖得跟心电图似的。后来老老实实加了一块 STM32 做底层,树莓派只管视觉,问题全解决了。
3.2 传感器选型与集成
传感器是数据采集的「第一公里」。选错了传感器,后面建模再漂亮也是白搭。
3.2.1 常用传感器类型
- 惯性测量单元 (IMU):加速度计 + 陀螺仪,用于姿态估计。我常用 MPU6050 或 ICM-20948。
- 激光雷达 (LiDAR):测距、建图。单线 RPLIDAR A1 入门够用,多线就上 Velodyne。
- 摄像头:视觉数据来源。USB 摄像头方便,但 CSI 接口摄像头延迟更低。
- 编码器:轮式机器人必备,测速、测里程。
3.2.2 选型要点
我总结了三步走:
- 明确测量范围:比如测距传感器,室内 2 米用超声波,室外 10 米用 LiDAR。
- 看接口兼容性:STM32 用 SPI/I2C 最稳,树莓派用 USB 最省事。
- 考虑采样率:IMU 一般 100Hz 够用,但做振动分析得上 kHz。
避坑指南: 我曾经选了一款高精度 IMU,结果发现它的 I2C 速率只有 400kHz,而我的 STM32 默认配成了 1MHz。通信直接乱码。后来才意识到,传感器 datasheet 里的「最大速率」不是摆设。
3.3 电源管理与信号调理
电源是机器人的「心脏」。信号调理是「血管」。这两块搞不好,数据采集就是垃圾进垃圾出。
3.3.1 电源管理
机器人通常用锂电池供电,但不同器件需要的电压不一样:
- STM32:3.3V
- 树莓派:5V
- 电机驱动:12V 或更高
- 传感器:3.3V 或 5V
我习惯用 DC-DC 降压模块做一级转换,再用 LDO 做二级稳压。DC-DC 效率高,但纹波大;LDO 纹波小,但效率低。两者搭配,既省电又干净。
关键点: 模拟传感器(比如麦克风、模拟输出的距离传感器)对电源纹波极其敏感。我建议单独用一路 LDO 给模拟电路供电,别跟数字电路混在一起。
3.3.2 信号调理
传感器输出的信号,很少能直接进 ADC。你需要做三件事:
- 滤波:用 RC 低通滤波器去掉高频噪声。截止频率 f = 1/(2πRC)。
- 放大/衰减:让信号幅度匹配 ADC 的输入范围(通常是 0~3.3V)。
- 电平转换:5V 传感器接 3.3V 的 STM32,必须加电平转换芯片(比如 TXS0108)。
举个例子,一个模拟输出的红外测距传感器,输出 0~5V,但 STM32 的 ADC 只能接受 0~3.3V。你需要用电阻分压,把 5V 降到 3.3V,再串一个 100Ω 电阻 + 10nF 电容做滤波。
// 分压计算示例
// 输入: 0~5V
// 输出: 0~3.3V
// 分压比: 3.3 / 5 = 0.66
// 用 10kΩ 和 20kΩ 电阻串联,中间抽头输出
// Vout = Vin * 20k / (10k + 20k) = Vin * 0.666
3.4 整体架构图
下面这张图是我做数据采集硬件平台时的典型架构。你可以看到数据从传感器到处理器的完整路径。
3.5 实战建议
最后,给你几条我这些年攒下来的经验:
- 先搭最小系统:别一上来就焊全板。先让 STM32 跑个点灯程序,再挂传感器。
- 电源先上电,再插信号线:热插拔信号线容易烧 IO 口。我烧过一块树莓派,就是因为先插了 GPIO 线再上电。
- 用示波器看信号质量:别信「感觉没问题」。示波器一看,噪声、毛刺全现形。
- 留足调试接口:至少留一个串口打印日志。不然出了问题,你只能干瞪眼。
小技巧: 做信号调理时,先在面包板上搭电路验证,确认没问题了再画 PCB。面包板改起来快,PCB 打样一次几百块,改不起。
嗯,硬件平台选型这块,说白了就是「匹配」二字——算力匹配需求、接口匹配传感器、电源匹配功耗。你想想看,是不是这个理?