免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

医疗无人机实战:样本舱温控、自主航线与失效保护设计

医疗无人机实战:样本舱温控、自主航线与失效保护设计 我最近在推进一个医疗样本运输无人机项目——COVID Test Drone说白了就是用无人机把鼻拭子样本从采样点送到实验室。第一版装完之后飞机能飞起来了但离“能干活”还差得很远。于是有了这篇文章也就是整个项目的 Part 2。这一部分我并没有把时间花在继续堆硬件上而是解决真正影响医疗运输落地的三个问题样本安全、自主飞行以及软件版本失控。特别是最后一个问题我一度以为无人机项目只要飞控和电调没问题就行结果发现机载程序更新混乱比飞机本身更让我头疼。本文就是我在这段过程中的实操记录覆盖样本舱设计、航线和失效保护配置以及一套用 Gitea、Drone CI、Harbor、Docker 和 Nginx 搭建的软件交付流水线。想做物流无人机或医疗无人机或者单纯想在嵌入式项目里引入规范开发流程的朋友应该能从中找到不少可以直接抄作业的内容。1. Part 1 之后还差什么才敢让无人机“上岗”1.1 Part 1 的边界我只是在“让飞机飞起来”Part 1 做的是什么机架用了六轴布局飞控选的是 Pixhawk 4运行 PX4 固件电机电调、电源模块、GPS、遥控接收机都接好了电池能成功供电在地面站上完成首次手动起降。当时的结论是满载 2 公斤时悬停电流约 34A能飞 12-15 分钟飞行基本稳定。但这些在我看来只算是一台航模不算无人机任务设备。因为它只能通过遥控飞行缺乏任务航线、样本保护、失效安全、日志回放这些医疗运输必要的功能。所以 Part 2 我给自己定的目标是把这架飞机从“遥控直升机”变成“自主任务节点”。1.2 医疗运输任务的四个硬约束我梳理了一下要把检测样本交到实验室必须满足四个硬约束。第一是温度鼻拭子样本通常要求在 2-8℃ 的冷链环境中运输巡航三十分钟后舱内温度必须还在这个范围。第二是密封样本舱不能漏水也不能在气流冲刷下让舱门意外打开。第三是可追溯每次飞行的 GPS 轨迹、舱门开启时刻、温度曲线都要被记录万一样本异常能回放整个运输过程。第四是失效安全低电量、断链路、丢卫星时无人机要能自动进入预先设定的安全状态而不是让飞手慌乱接管。这四个约束决定了后面几乎所有部件的选型和软件设计。1.3 系统架构四个层次对应哪些责任为了不把硬件和软件混在一起改我把整个系统拆成四层。飞行平台层负责最基本的飞行能力包括机架、飞控、电调、GPS 和电池。载荷层是样本舱、温湿度传感器、舱门开关状态以及把数据回传到飞控或机载电脑的接口。地面控制层是地面站软件、数传电台和 4G 网桥负责航线规划和实时监控。软件交付层是我这轮新加的用 Gitea 存代码Drone CI 做自动构建Harbor 存 Docker 镜像Nginx 做统一入口再在机载电脑上跑一个 Agent把最新镜像部署到设备上。这四个层各有各的坑但后两层往往被无人机玩家忽视。2. 样本舱不是快递箱温控、密封与状态回传2.1 为什么不能直接拿保温箱上飞机刚开始我想得挺简单买一个现成的医药保温箱绑在机架腹部就完事。但飞了一次就发现问题一是普通保温箱的合页在飞行振动中容易松动高空舱门一旦弹开就没法看管二是箱体没有传感器接口温度到底是多少你完全不知道三是重量太大一个 5L 保温箱加冰袋能到 1.8 公斤六轴勉强带起来但续航掉得厉害。所以我决定自己做一个轻量模块化样本舱既要符合保温要求又要能采集状态。2.2 结构选型与3D打印我的方案是三层结构。外层用 1.5mm 厚度 PETG 材料 3D 打印选 PETG 是因为它的耐冲击性和耐温性都优于 PLA不会在夏天暴晒的机身里变软。中层是 20mm 的 EPP 闭孔泡沫重量轻保温效果也够裁剪成六面体拼装。内层是一个可拆卸的 PVC 内衬每次运输后可以直接更换相当于一次性保护壳避免交叉污染。舱盖用双道硅胶中空密封条压紧后基本能达到防溅水级别。整体重量控制在 850 克左右比现成保温箱轻了一半。2.3 主动温控与被动冷链的取舍这里有个常见的误区很多人以为冷链无人机一定要在舱内装半导体制冷片。实际算一笔账就清楚了。TEC1-12705 半导体制冷片最大功率约 60W飞行时电池要同时负担动力系统和制冷巡航 12 分钟会多用近 0.15kWh 的能量对一块 6S 8000mAh 电池来说直接减少四分之一续航而且制冷片本身有热量散热不好反而会把舱内温度拉高。所以我最后采用的方案是起飞前用一台小型半导体制冷模块对舱体预冷 15 分钟同时用医用级冰袋维持低温飞行过程中制冷模块断电完全靠冰袋和保温材料维持温区。实测在环境温度 32℃、满载飞行 30 分钟后舱内温度从起飞时的 5℃ 升到 7.3℃完全落在 2-8℃ 区间内。这个取舍的核心逻辑是被动冷链更适合短时任务主动制冷更适合长航时或极端高温区域别一上来就往无人机上加空调。2.4 状态传感器网络和数据回传为了让地面站随时知道样本舱的状态我在舱内装了一个 ESP32 开发板接了三类传感器一个 DS18B20 数字温度传感器一个舱门干簧管开关还有一个三轴加速度传感器作为落地冲击检测。ESP32 每 5 秒把数据打包成 JSON通过 UART 发给树莓派树莓派再用 MQTT 协议通过 4G 网桥上报到地面站。实测这套链路非常稳唯一的坑是 ESP32 和树莓派的串口波特率要设置一致否则会出现乱码。我在程序里加了数据帧头和 CRC 校验丢包时自动重发在飞机周围电磁环境比较复杂的情况下也基本不丢数据。2.5 消毒与防漏细节样本舱内部会直接接触可能的污染源所以每次任务后我会用 75% 酒精对整个内衬和舱壁擦拭再放在紫外线灯下照射 10 分钟。这个流程虽然不复杂但最好留给自动化程序去做我在 ESP32 上记录一个“消毒时间戳”只有消毒时间在 24 小时之内地面站才允许解锁起飞。另外试管本身要放进带密封条的样本运输袋里再装入舱内相当于双重保护这样就算冰袋融化渗水也不会直接泡到样本管。3. 地面站、任务规划与安全逻辑3.1 地面站选型QGroundControl 还是 Mission Planner飞控我用的是 PX4 固件所以地面站直接选了 QGroundControl也就是 QGC。很多飞手更习惯 Mission Planner认为它调参更直观。但 PX4 上的参数协议和 MAVLink 消息和 ArduPilot 有差异用 Mission Planner 经常会遇到部分参数读不出来或者写不进去的问题。QGC 在 PX4 下是原生支持航线规划、状态显示和失效保护设置都在同一个页面里省去很多来回切换的时间。如果你用 ArduPilot 固件那反过来选 Mission Planner 更合适。这个选择没有绝对好坏关键是固件先定下来地面站跟着固件走。3.2 航线设计从采样点到实验室的必经之处航线设计不是在地图上随便点几个点就行。我的航线从采样点停车场起飞高度 80 米经过三个航点最后在实验室楼顶的起降坪降落。选择 80 米的原因有两条一是避开大多数树木、电线杆和低层建筑二是如果 GPS 在飞行中出现偏差这个高度还有时间让飞控触发返航进行修正。航点之间的飞行速度设置在 9m/s六轴能稳定响应样本舱不会因为过大的侧风冲击而剧烈晃动。在 QGC 里我会给每个航点设置“到达后悬停 2 秒”的停留动作避免飞机还没到位就开始转向轨迹更平滑。3.3 失效保护参数宁可保守也别赌运气这部分是整个 Part 2 里我最看重的。PX4 里有完整的失效保护机制我把参数调成了这样|
返回列表