串口通信原理
地面站和飞控之间怎么说话?说白了,就是靠串口。我最早接触无人机时,总觉得这玩意儿很神秘,一根线就能传数据?后来搞明白了,串口通信其实就是最基础的“数字对讲机”。
这一章,咱们把串口通信的底裤扒干净。从原理到驱动,从Windows到Linux,你都会亲手走一遍。
串口通信基础
串口通信,全称串行通信接口。它一次只传一个bit,像排队过安检,一个一个来。与之对应的是并口,一次传一堆bit,像一群人挤电梯。
无人机地面站为什么选串口?两个原因:
- 线少——就两根数据线(TX、RX),加一根地线,搞定。
- 距离远——RS232标准下能传15米以上,USB才5米。
我做过一个项目,飞控装在机翼里,地面站电脑在50米外的帐篷里。USB线根本不够长,最后还是靠串口转485,拉了根双绞线搞定。
核心三要素:波特率、数据位、停止位。这三样必须配对,否则通信就是鸡同鸭讲。
波特率与数据位
波特率,就是每秒传多少个bit。单位是bps(bits per second)。
常见波特率:9600、19200、38400、57600、115200。
无人机地面站最常用的是115200。为什么?因为飞控传回来的数据量大——GPS坐标、姿态角、电压、电流……9600根本扛不住。
| 波特率 | 每秒字节数(8N1) | 适用场景 |
|---|---|---|
| 9600 | 约960字节 | 旧设备、调试终端 |
| 57600 | 约5760字节 | 中等数据量传感器 |
| 115200 | 约11520字节 | 无人机飞控、地面站 |
| 921600 | 约92160字节 | 高速数传、日志下载 |
数据位呢?一般是8位。为什么是8?因为一个字节就是8bit,传ASCII字符刚好。7位是给老式电传机用的,现在基本绝迹。
停止位通常是1位。它告诉接收方“这包数据完了”。2位停止位用在噪声大的环境,但会降低传输效率。
校验位分奇校验、偶校验、无校验。地面站默认无校验。为什么?因为飞控数据包本身有CRC校验,串口层再加校验就是脱裤子放屁。
我的习惯:新项目一律用115200-8-N-1。这是无人机行业的“普通话”,兼容性最好。
USB转串口驱动安装
现在的电脑哪还有串口?全是USB。所以你需要一个USB转串口模块,最常见的是CH340和CP2102。
我踩过最大的坑就是驱动没装对。有一次去外场调试,飞控连不上地面站,折腾了半小时,最后发现是CH340驱动被Windows自动更新给覆盖了。
Windows下安装
- 插上USB转串口模块
- 打开设备管理器(Win+X → 设备管理器)
- 看“端口(COM和LPT)”下面有没有黄色感叹号
- 有感叹号 → 右键更新驱动 → 手动选择驱动文件
- 没感叹号 → 记下COM号(比如COM3)
CH340驱动下载:从芯片厂商官网或驱动精灵获取。CP2102同理。
我曾经遇到过CH340在Win10下反复掉线的问题。后来发现是USB选择性暂停设置搞的鬼。去电源管理里关掉“USB选择性暂停设置”,世界清净了。
Linux下安装
Linux下驱动通常是内核自带的。插上就能用。
# 查看串口设备
ls /dev/ttyUSB*
# 如果没显示,检查内核模块
lsmod | grep ch341
lsmod | grep cp210x
# 查看串口详细信息
udevadm info --name=/dev/ttyUSB0 --attribute-walk
我习惯用dmesg | grep tty看插拔日志。插上USB转串口那一刻,终端会刷出设备信息,一目了然。
Windows/Linux下的串口识别
串口识别,说白了就是找到你的设备对应哪个端口号。
Windows
设备管理器里看“端口(COM和LPT)”。每个USB转串口都会分配一个COM号,比如COM3、COM5。
有个小技巧:拔掉设备,记下消失的COM号,那就是你的设备。
Linux
Linux下串口设备在/dev/目录下:
/dev/ttyUSB0— CH340/CP2102等USB转串口/dev/ttyACM0— Arduino等原生USB设备/dev/ttyS0— 板载串口(台式机后面那个DB9)
我常用ls -l /dev/ttyUSB*看设备权限。如果没权限,加当前用户到dialout组:
sudo usermod -a -G dialout $USER
然后注销重登,搞定。
避坑指南:Linux下多个USB转串口同时插着,设备名会按插入顺序分配。ttyUSB0、ttyUSB1……重启后顺序可能变。我习惯用udev规则绑定设备ID,保证每次插上都是同一个名字。
本章知识体系
下面这张图,把串口通信的核心逻辑串起来了。你一看就明白。
这张图把串口通信拆成了三块:通信参数、硬件接口、驱动与识别。你只要把这三块搞明白,地面站连接这块就通了八成。