串口通信原理

地面站和飞控之间怎么说话?说白了,就是靠串口。我最早接触无人机时,总觉得这玩意儿很神秘,一根线就能传数据?后来搞明白了,串口通信其实就是最基础的“数字对讲机”。

这一章,咱们把串口通信的底裤扒干净。从原理到驱动,从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下安装

  1. 插上USB转串口模块
  2. 打开设备管理器(Win+X → 设备管理器)
  3. 看“端口(COM和LPT)”下面有没有黄色感叹号
  4. 有感叹号 → 右键更新驱动 → 手动选择驱动文件
  5. 没感叹号 → 记下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,保证每次插上都是同一个名字。

本章知识体系

下面这张图,把串口通信的核心逻辑串起来了。你一看就明白。

串口通信知识体系 串口通信知识体系 串口通信 通信参数 波特率:115200(默认) 数据位:8位 停止位:1位 / 无校验 硬件接口 USB转串口(CH340/CP2102) TX/RX/GND 三线制 TTL电平(3.3V/5V) 驱动与识别 Windows:设备管理器COM口 Linux:/dev/ttyUSB0 驱动安装(CH340/CP2102) 核心要点 串口通信三要素必须匹配:波特率、数据位、停止位 驱动安装是新手最容易卡住的地方,先检查设备管理器或dmesg

这张图把串口通信拆成了三块:通信参数、硬件接口、驱动与识别。你只要把这三块搞明白,地面站连接这块就通了八成。