自制S

您所在的位置:网站首页 自制信号接收器视频教程 自制S

自制S

2024-04-25 15:44| 来源: 网络整理| 查看: 265

自制一个SBUS的接收器吧~

RoboMaster S1资料汇总.1

RoboMaster S1 高清大图+改装建议

以前玩穿越机接触过这个SBUS的协议,后来不玩就忘记了。后来迷上大疆家的东西

S-BUS接口

因为知道这个东西,所以一直想做一些改装S1的通用可编程性,一直不是那么好。。。可是你说都折腾这个了,买个接收器插上意思不大,自己做一个最好了~

代码语言:javascript复制https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=10&createType=0&token=258000972&lang=zh_CN

200-300之间

emmmm,我上面价钱去闲鱼看的

算了,请记住这个

这个也行,上面的接收器是建议购买

这个是平民的价钱,可能合适

代码语言:javascript复制https://bbs.dji.com/thread-233471-1-1.html

以上的这些请看大疆论坛的这个帖子,图都是来源于这里

代码语言:javascript复制https://dl.djicdn.com/downloads/robomaster-s1/20200324/RoboMaster_S1_User_Manual_v1.8_CHS.pdf

震惊。。。我居然没有看车子的文档

这个是写的,PWM输出接口

代码语言:javascript复制https://item.taobao.com/item.htm?spm=a2126o.11854294.0.0.747b4831TNo5w4&id=597135404779

发现一个将SBUS信号转换为电压信号的小东西

这是这个小玩意儿的输出情况

后来又找到一个完整的diy的接收器+遥控器的图

代码语言:javascript复制https://www.bilibili.com/read/cv8758980?share_medium=android&share_plat=android&share_source=COPY&share_tag=s_i×tamp=1608033941&unique_k=kZVcqT

这篇文章是菜籽写的,讲解各种

代码语言:javascript复制字节[0]:SBUS头,0x0F 字节[1-22]:16个伺服通道,每个伺服通道采用11位编码 字节[23]: 位7:数字通道17(0x80) 位6:数字通道18(0x40) 位5:丢帧(0x20) 位4:用来激活故障安全(0x10) 位0-3:n/a 字节[24]:SBUS结束字节,0x00

一帧SBUS的内容

我买的电子零件还在路上,所以这篇文章就先看原理图。

国内的参考文章,可能一查就是下面就是这几篇,所以就是看这个吧。

看这个

这里是先加了一个降压电路

这个通道是可以翻转的,就是以前是上,现在是下

串口下载的接口,没有什么好说的

无线发送的模块,这里是SPI的接口

其实是使用了5个

Arduino的板子,里面分为几个部分,无线发射+通道+通道翻转+串口

一个简单的电压检测电路

蜂鸣器

遥控器的输入IO口

大致的样子

代码语言:javascript复制TX0--RXD RX1--TXD VCC--3V3 GND--GND

遥控器端的烧录串口的连接

代码语言:javascript复制#include #include #include

用到的库只有这些

代码语言:javascript复制RF24 radio(7, 8); // SPI通信,引脚对应关系:CE ->7,CSN ->8 struct Signal { byte roll; byte pitch; byte throttle; byte yaw; byte gyr; byte pit; };

前面的是声明引脚

下面搞一个结构体,把遥控器的即时数据保存去

写了一个函数来回中所有的摇杆

代码语言:javascript复制Signal data;

忘了说这样去声明一个结构体

还有这个函数,读取对应的电位器以后

换算成arduino规定的数据范围

代码语言:javascript复制 // Serial.print("\t");Serial.print(data.roll); // Serial.print("\t");Serial.print(data.pitch); // Serial.print("\t");Serial.print(data.throttle); // Serial.print("\t");Serial.print(data.yaw); // Serial.print("\t");Serial.print(data.gyr); // Serial.print("\t");Serial.println(data.pit);

如果你想在串口打印一下当前的数据,可以在loop里面写这个

发送于获取的主要逻辑

setup里面对按钮声明

最后测试一下电压情况

代码语言:javascript复制/* ArduinoProMini-6通道发射器 * by Bilibili 蔡子CaiZi * * A0~5 -> 模拟输入,2~5 -> 通道正反开关 * A6 -> 电压检测 * 6 -> 蜂鸣器 * * NRF24L01 | Arduino * CE -> 7 * CSN -> 8 * MOSI -> 11 * MISO -> 12 * SCK -> 13 * IRQ -> 无连接 * VCC -> 小于3.6V * GND -> GND */ #include #include #include const uint64_t pipeOut = 0xBBBBBBBBB; //为何这么多B币?与接收器中相同的地址进行通信 RF24 radio(7, 8); // SPI通信,引脚对应关系:CE ->7,CSN ->8 struct Signal { byte roll; byte pitch; byte throttle; byte yaw; byte gyr; byte pit; }; Signal data; void ResetData() { data.roll = 127; // 横滚通道AIL(中心点127) data.pitch = 127; // 俯仰通道ELE data.throttle = 0; // 信号丢失时,关闭油门THR data.yaw = 127; // 航向通道RUD data.gyr = 0; //第五通道 data.pit = 0; //第六通道 } void setup() { radio.begin(); radio.openWritingPipe(pipeOut);//pipeOut通信地址 radio.stopListening(); //发射模式 ResetData();//初始化6个通道值 Serial.begin(115200); pinMode(2,INPUT);//正反通道开关为数字输入 pinMode(3,INPUT); pinMode(4,INPUT); pinMode(5,INPUT); pinMode(6,OUTPUT);//蜂鸣器推挽输出 if (analogRead(A6)*3.28*3/1023


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3