自制自主啤酒运输坦克:Walabot + Arduino + 树莓派 + Alexa语音控制
核心硬件清单
| 模块 | 型号/规格 | 用途 |
|---|---|---|
| 3D成像雷达 | Walabot Creator | 唯一导航传感器,检测移动目标 |
| 主控MCU | Arduino MKR1000 | 电机/舵机/步进电机控制,3路外部中断读取RC接收机PWM |
| 边缘计算 | Raspberry Pi 3 Model B | 运行Walabot SDK、Python自主跟随算法、AWS IoT MQTT客户端 |
| 语音交互 | Amazon Echo / echosim.io | Alexa技能“Beer Tank” |
| 底盘 | 履带式坦克底盘(含2路直流减速电机) | 移动平台 |
| 电机驱动 | TB6612FNG双H桥 | 控制两路履带电机 |
| 起重机构 | 28BYJ-48步进电机 + X113647驱动 + 渔线 | 升降吊臂送啤酒 |
| 舵机 | MG996R ×3 | 货舱盖、前灯盖、备用 |
| 电源 | 7.4V LiPo + 充电器 + 5V BEC | 驱动电机/舵机/树莓派/Arduino |
| 辅助 | 电位器(吊臂角度反馈)、电压表、RC遥控(可选)、木条加固等 |
机械结构演进
底盘修复与加固
购入履带底盘运输受损,耗时数小时胶水修复。后因吊臂受力导致金属骨架弯曲,加装两根30cm木尺+金属件三角支撑解决变形。
吊臂与货舱
- 吊臂由金属搭搭积木搭建,步进电机卷绕渔线升降,力矩大曾拉断渔线
- 货舱盖双舵机联动,隐藏啤酒罐,开盖同步升起吊臂,极具仪式感
- 前灯盖舵机驱动,内嵌LED灯带段(7.4V直驱12V灯带亮度足够)
Walabot安装
利用Walabot背部强磁吸附于金属前装甲,无需额外支架,可快速拆卸复用。
电路系统
- MKR1000提供5路PWM(3舵机+2电机),12路引脚支持软件PWM,但硬件PWM仅D2-D5。为避免软硬PWM冲突,舵机占用硬件PWM引脚,LED盖舵机用软件PWM(略有嗡嗡声)
- 3路外部中断读取RC接收机CH1/CH2/CH3脉宽(1000–2000µs)
- 树莓派通过USB串口与MKR1000通信,协议见下
- 5V BEC从LiPo降压供树莓派/Arduino/舵机/Walabot(Walabot功耗0.4–0.9A,需在
/boot/config.txt设置max_usb_current=1并拨动Walabot内部跳线供电)
Arduino固件逻辑
RC手动模式
motorSpeedBase = (ch1_pulse - 1500) / 2; // -255~255
motorSpeedChange = (ch2_pulse - 1500) / 3; // 转向差速
elevated = (ch3_pulse < 1500); // 吊臂/货舱开关
rightSpeed = constrain(motorSpeedBase + motorSpeedChange, -255, 255);
leftSpeed = constrain(motorSpeedBase - motorSpeedChange, -255, 255);
吊臂闭环控制
void handleCrane() {
int val = analogRead(POT_PIN);
if (elevated) {
if (val < CRANE_UP_THRESHOLD) elevateCrane(); else disableStepper();
openHatch();
} else {
if (val < CRANE_DOWN_THRESHOLD) { closeHatch(); disableStepper(); }
else dropCrane();
}
}
串口指令集(树莓派→Arduino)
| 指令 | 功能 |
|---|---|
| s | 切入串口控制模式,禁用RC中断1/2,回复OK |
| r | 恢复RC控制 |
| e / d | 吊臂升起 / 下降(含货舱盖联动) |
| m X Y | 设定基础速度X与差速Y |
| b | 查询电池电压(返回电压×100) |
| l / o | 前灯开 / 关 |
安全机制:串口模式下保留CH3中断作为急停开关。
树莓派自主跟随算法
- Walabot SDK
getTargets()+ MTI模式,最大4目标,距离1.5m,约6 FPS - 初始化:用户站在80cm处,最近且幅度足够的目标锁定为“人”
- 跟踪:每帧选距离上帧位置最近的目标为人,跳变过大则锁定位置不更新并停车
- 控制策略:目标在红框(目标区)内不动;右侧过近→右转+后退;左侧→左转+前进;过远→前进;过近→后退
- 受限于6 FPS帧率,运动解耦为“纯转向/纯前进/纯后退”,最低速度运行,避免超调丢失目标
Alexa语音控制
- 技能名“Beer Tank”(Alexa不识别WalaBeer),技能ID:
amzn1.ask.skill.a7453502-b1aa-47fa-a552-ed8e2c792b2e - 支持指令:
“start beer tank” / “turn on/off the lights” / “open/close the cargo hold” / “start/stop following me” / “stop/cancel” - 架构:Alexa → AWS Lambda → AWS IoT (MQTT topic
wbt) → 树莓派(Paho MQTT客户端) → 串口指令 → Arduino - 参考Kurt Braun YouTube教程搭建Lambda+IoT,弃用ngrok改用云端持久化
废弃方案:测速码盘
曾在主动轮安装黑白码盘+反射式红外传感器测速,原理可行但占用GPIO且低速分辨率差,最终拆除。
总结与展望
项目融合语音、视觉雷达、移动机器人、云端物联,实现“叫啤酒、送啤酒、跟着走”的完整体验。后续可优化跟随速度(更高帧率/预测滤波/双目/激光雷达)、增加自主避障、完善机械可靠性。代码开源:GitHub Beer-Tank
制造工艺
- 氧气瓶制造:从原材料到质量保证全流程
- 集成电路 (IC):微观世界里的算力引擎与制造极限
- 树莓派 + Python 让 Amazon Alexa 控制 Google Chromecast
- 用 NVIDIA Jetson Nano 与 Isaac SDK 打造低成本自主乐高坦克
- Arduino 数字骰子:LCD 显示随机点数的电子骰子
- 多位置温度传感器系统,助力智能家居集成
- MOSMusic 套件:MOSFET + Arduino 打造音乐同步灯光控制系统
- 钻床核心部件解析:从底座到主轴的完整拆解
- 内燃机核心零部件详解
- 掌握 SPICE 网表语法:元件命名、无源/有源元件与源定义
- 微电子学详解:微型电子器件的科学与制造
- 备用油箱/储备罐详解:车辆、市政与工业的燃料应急后盾