前段时间很多人咨询我怎样把sbus信号,通过4G模块,或者数传DTU传输,实现远程的控制。他们的应用是远程消费机器人,无人机送货,水下机器人等项目。
回答这个问题前我们先来了解一下sbus的协议。
SUBS是一种纯数字的控制协议,标准的sbus包含了18通道的舵机信号,能表示0-2048的舵机通量。什么是舵机通量,就是舵机工作的PWM的信号,PWM就是一个脉宽的信号,一般用us来表示。正常的舵机的PWM信号范围是1100us-1900us之间、400us-1900us。也有500us-2500us的,但比较少。基本无人机的多是前面两种。那我们的sbus协议就是把18个PWM通道的数字信号首先进行压缩编码打包,再通过类串口(非正常的UART哦)的协议发出去。我们的单片机和电脑等的标准的UART设备是无法直接读取sbus的信息,需要通过电平整形,波特率调整后才能顺利读取。
SBUS的通讯波特率比较奇葩,100k,2停止位,偶校验,7-15ms的帧率。这并非我们常用的波特率:4800,9600,38400,57600,115200等。而且2位的停止位,很多低端的单片机是不支持的。这就要求我们普通的串口要完成正常接收到sbus的就需要把sbus的通讯协议进行必要的修改,首先是把100k的波特率改成正常的波特率,把2位停止位改成1位停止位,如果觉得帧率过快的话,还需要把帧率降下来。
到这里大伙应该知道可以怎样做了吧。实现原理是,把sbus转成标准的协议,通过dtu发射,当DTU接收到数据后,翻译出来sbus。相当于sbus透传了。
1:发射端
遥控器-》接收机(sbus输出)-》sbus转232-》数传DTU
2:接收端
数传DTU-》232转sbus-》sbus转PWM-》舵机。
这里的配置清单:
遥控器,接收机,sbus转232模块。数传DTU,232转sbus,sbus转PWM
这样就是一个闭环了。
有兴趣的可以到某宝搜集一下。也就是拼装一下的问题了。这里有个视频,