arduino解码sbus-Arduino中文社区 - Powered by Discuz!
查看: 4502|回复: 26

[项目] arduino解码sbus

[复制链接]

该用户从未签到

发表于 2021-2-20 20:57 | 显示全部楼层 |阅读模式
本帖最后由 wzzzq 于 2021-2-20 20:57 编辑

市面上有很多sbus接收机,它只有一根线就可以实现很多通道的通信,其本质利用了串口通讯的原理,所以arduino也可以解码sbus有很多优点,特别是应用于单片机开发的时候
传统的PWM接收机一根线对应一个通道,要用n个通道就要n根线,而sbus用n个通道(n<=遥控支持的最大通道数)只要1根线,只要一根线!而这还不是最大的优点,有人会说PPM也是一根线,arduino也能解码呀.但是,PPM和PWM读取方式都是pulseIn读取,具体说就是计时脉冲的时间.
那就是说,读取一个1500微秒的脉冲就要1500微秒
u=706920821,357289013&amp;fm=26&amp;gp=0.jpg
反观sbus,sbus的原理是串口通信,信号会被放到arduino的缓冲区,arduino按固定周期读取时只要读取一下信号即可,时间缩短了很多很多
bd315c6034a85edf0c83d7cd49540923dc5475d4.jpg 215530okooj7agvu9vvp9p.png
但是sbus的缺点就是读取复杂,不像PWM只要计时就行

一 硬件准备
你需要一个sbus接收机,可以是天地飞的,也可以是futaba的,等等,是sbus都行
还需要一个取反器,线若干
u=1090873840,2661225553&amp;fm=26&amp;gp=0.png
前面我做的机甲大师就用了这种接收机,非常好用
但是sbus的输出信号是反的,所以我们需要一个反向电路来对它取反
204936piccgeige3t11ace.jpg 204930vj4cj1t10x10p11z.jpg
淘宝上也有很多这样的取反器,自己做也可以,按照上面的图就可以
然后按照图上接线
将5V,GND接好,这里很简单,然后要接信号线
信号线取反完以后连接至arduino的RX,如果用的是mega这种有很多RX的主板,建议连接到RX2,RX3这样的串口,不要连到RX
因为arduino的RX是用于和电脑串口通讯的,串口监视器就是依靠RX0,TX0实现的,如果连到RX的话会导致串口监视器不可用,会给调试带来大麻烦
如果用的是UNO,NANO这样的主板,那就没有办法 ,只能用RX0了,这时烧程序的时候要把RX0拔掉,烧好了再插回去,否则会烧不上去

二 软件

我们需要一个sbus的库,有国外的大佬已经开发好了这个库,我们只要用就行了,省去了很多程序(文末下载库)
实例代码:
如果用的是Serial n,就把sbus.begin(Serial);改成sbus.begin(Serialn);
游客,如果您要查看本帖隐藏内容请回复

在void dataReceived(ChannelData channels) 对数据操作
可以写一个这样的函数
  1. void dataReceived(ChannelData channels) {
  2.         // do something with the data
  3.         for(int i=1;i<=16;i++)
  4.         {
  5.           rcsig[i]=channels.data[i-1];
  6.         }
  7.         rcsig[17]=channels.channels.channel17;
  8.         rcsig[18]=channels.channels.channel18;
  9. }
复制代码
这样就存起来了数据可以再打印一下数据,看一下对不对
你会发现sbus的精确度和时间优势令人赞叹

最后,希望本文能帮到你,有问题可以回帖

该用户从未签到

发表于 2021-2-20 21:48 | 显示全部楼层
牛批,一直的梦想

该用户从未签到

 楼主| 发表于 2021-2-20 22:08 | 显示全部楼层
arduino-futaba-sbus-master.zip (19.24 KB, 下载次数: 58)

该用户从未签到

发表于 2021-3-9 08:16 | 显示全部楼层
好东西,感谢分享

该用户从未签到

发表于 2021-3-23 10:07 | 显示全部楼层
您好,想请教您一下关于arduino的sbus通信如何实现的问题。方便留个联系方式吗?谢谢~

该用户从未签到

发表于 2021-4-9 13:25 | 显示全部楼层
刚好需要 学习了 很厉害的样子
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

【Arduino】168种传感器模块系列实验(159)---MAX9814咪头传感器
【Arduino】168种传感器模
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
【Arduino】108种传感器模块系列实验(61)---WS2812直条8位模块
【Arduino】108种传感器模
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
【Arduino】108种传感器系列实验(06)---声音传感器模块
【Arduino】108种传感器系
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
有没有大佬用过CC1101 模拟433遥控器的 来帮忙解答一下感谢
有没有大佬用过CC1101 模
主控用的是 ESP-WROOM-02(ESP8266) CC1101 用的是这个!对应ESP8266的脚位图 库用
开学季新/老会员回馈活动!
开学季新/老会员回馈活动
开学季:社区会员回馈活动!Arduino中文社区联合openjumper推出开学季会员福利回馈活
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表