前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >自制S-Bus接收器(控制dji EP车)

自制S-Bus接收器(控制dji EP车)

作者头像
云深无际
发布于 2021-09-14 07:50:34
发布于 2021-09-14 07:50:34
1.7K00
代码可运行
举报
文章被收录于专栏:云深之无迹云深之无迹
运行总次数:0
代码可运行

自制一个SBUS的接收器吧~

RoboMaster S1资料汇总.1

RoboMaster S1 高清大图+改装建议

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

S-BUS接口

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
https://bbs.dji.com/thread-233471-1-1.html

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://dl.djicdn.com/downloads/robomaster-s1/20200324/RoboMaster_S1_User_Manual_v1.8_CHS.pdf

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

这个是写的,PWM输出接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://item.taobao.com/item.htm?spm=a2126o.11854294.0.0.747b4831TNo5w4&id=597135404779

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://www.bilibili.com/read/cv8758980?share_medium=android&share_plat=android&share_source=COPY&share_tag=s_i&timestamp=1608033941&unique_k=kZVcqT

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
字节[0]SBUS头,0x0F

字节[1-22]16个伺服通道,每个伺服通道采用11位编码

字节[23]:         

位7:数字通道170x80)          

位6:数字通道180x40)          

位5:丢帧(0x20)          

位4:用来激活故障安全(0x10)          

位0-3:n/a

字节[24]SBUS结束字节,0x00 

一帧SBUS的内容

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

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

看这个

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

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

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

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

其实是使用了5个

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

一个简单的电压检测电路

蜂鸣器

遥控器的输入IO口

大致的样子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TX0--RXD
RX1--TXD
VCC--3V3
GND--GND

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

用到的库只有这些

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

前面的是声明引脚

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Signal data;

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

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

换算成arduino规定的数据范围

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 //  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
代码运行次数:0
运行
AI代码解释
复制
/* 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 <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
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<5){//调整3校准电压检测,5为报警电压
    for(int i=0;i<3;i++){
      digitalWrite(6,HIGH);//蜂鸣器响
      delay(100);
      digitalWrite(6,LOW);
      delay(100);
    }
  }
  else{
    digitalWrite(6,HIGH);//蜂鸣器响
    delay(100);
    digitalWrite(6,LOW);
  }
}
 
// 将ADC获取的0~1023转换到0~255
int chValue(int val, int lower, int middle, int upper, bool reverse)
{
  val = constrain(val, lower, upper);//将val限制在lower~upper范围内
  if ( val < middle )
    val = map(val, lower, middle, 0, 128);
  else
    val = map(val, middle, upper, 128, 255);
  return ( reverse ? 255 - val : val );
}
 
void loop()
{
  Serial.print("\t");Serial.print(analogRead(A0));//将数据通过串口输出
  Serial.print("\t");Serial.print(analogRead(A1));
  Serial.print("\t");Serial.print(analogRead(A2));
  Serial.print("\t");Serial.println(analogRead(A3));
  // 需要对摇杆的最值、中值进行设置
  data.roll     = chValue( analogRead(A0), 59,  517, 882, digitalRead(2));
  data.pitch    = chValue( analogRead(A1), 115, 525, 896, digitalRead(3));
  data.throttle = chValue( analogRead(A2), 145, 522, 920, digitalRead(4));
  data.yaw      = chValue( analogRead(A3), 70,  530, 925, digitalRead(5));
  data.gyr      = chValue( analogRead(A4), 0,   510, 1020, false ); 
  data.pit      = chValue( analogRead(A5), 0,   510, 1020, false );  
  radio.write(&data, sizeof(Signal));//将数据发送出去
//  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);
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
数学不解释系列之数列极限
私以为,所谓专业, 就是熟练, 有货要倒得出, 说的明白, 所有才有这一系列文章, 我将分享在学数学过程中的一些栗子, 我尽量讲的深入浅出, 希望大家能够喜欢.
devecor
2019/10/12
1.5K0
数列不解释系列之函数极限
私以为,所谓专业, 就是熟练, 有货要倒得出, 说的明白, 所有才有这一系列文章, 我将分享在学数学过程中的一些栗子, 我尽量讲的深入浅出, 希望大家能够喜欢.
devecor
2019/10/15
6890
烧脑证明别看系列之2
前面的文章已经证明\lim\limits_{n \rightarrow\infty}\begin{pmatrix}1 + \frac{1}{n} \end{pmatrix}^n = e ,点此查看
devecor
2019/10/15
4990
Latex基本语法简记
方法一: $$ f(x)=\left{ \begin{aligned} x & = & \cos(t) \ y & = & \sin(t) \ z & = & \frac xy \end{aligned} \right. $$ 方法二: $$ F^{HLLC}=\left{ \begin{array}{rcl} F_L & & {0 < S_L}\ F^_L & & {S_L \leq 0 < S_M}\ F^_R & & {S_M \leq 0 < S_R}\ F_R & & {S_R \leq 0} \end{array} \right. $$ 方法三: $$f(x)= \begin{cases} 0& \text{x=0}\ 1& \text{x!=0} \end{cases}$$
Cloud-Cloudys
2020/07/07
1K0
武忠祥老师每日一题|第240 - 255题
题目240 若 \lim\limits_{x\to0}\bigg(\dfrac{\ln(x+\sqrt{x^2+1})+ax^2+bx^3}{x}\bigg)^{\dfrac{1}{x^2}}=e^2 ,求 a,b 的值 解答 [ \begin{aligned} & \lim\limits_{x\to0}\bigg(\dfrac{\ln(x+\sqrt{x^2+1})+ax^2+bx^3}{x}\bigg)^{\dfrac{1}{x^2}} \\\\ =& \lim\limits_{x\to0}e^{\d
一只野生彩色铅笔
2022/09/20
7070
武忠祥老师每日一题|第356 - 367题
对于没有 抽象函数 在的极限,我们的手段就很多了,这里既可以 拆项 做,也可以 洛必达
一只野生彩色铅笔
2022/09/20
9160
markdown中的数学公式表示
\iint \limits_d {f(x,y)} {\rm d}x{\rm d}y
哲学家阿多诺
2024/10/15
1660
markdown中的数学公式表示
武忠祥老师每日一题|第288 - 303题
首先排除 罗尔定理,因为题目中没有明确给出相等的两点;而 泰勒中值 一般用于高阶,有些牛刀杀鸡的意思
一只野生彩色铅笔
2022/09/20
7400
武忠祥老师每日一题|第224 - 239题
先考虑一下 交换积分次序 的手段,能否解决这个问题(答案是显然的,因为积分域是一个三角形)
一只野生彩色铅笔
2022/09/20
8250
武忠祥老师每日一题|第304 - 319题
证明极限的存在性: 1. 单调有界准则(抽象型函数) 2. 夹逼准则(具体型函数)
一只野生彩色铅笔
2022/09/20
1.3K0
大学生数学竞赛非数专题一(8)
今天的题目就到这里了,关于介值定理以及零点定理都是常见的套路,一般证明唯一的话,再加上一个单调性就可以,其次证明极限用夹逼准则,注意放缩法的应用,注意左右夹逼的同一性,这个要进行练习。其次还有极限的求法,列方程求解。单调有界准则重要证明的是单调和有界,单调一般时采用函数或者作差或者相除,再利用常见的不等式进行放缩,有界可以利用假设归纳法或者函数法,求它的值的范围。
用户9628320
2022/11/23
3550
武忠祥老师每日一题|第272 - 287题
我是 跨阶凑导数定义 ,武老师 是用的 泰勒展开,我这里直接用 吴老师 的方法了
一只野生彩色铅笔
2022/09/20
1.5K0
武忠祥老师每日一题|第368 - 380题
设 \(f(x) = \begin{cases} \dfrac{x-\sin x}{x^3} &,x\ne0\\\\ a&,x=0 \end{cases}\) 处处连续,则
一只野生彩色铅笔
2022/09/20
1.1K0
武忠祥老师每日一题|第256 - 271题
题目256 设 f(x) = \lim\limits_{n\to\infty}\dfrac{x^{n+2}-x^{-n}}{x^n+x^{-n}} ,则函数 f(x) (A)仅有 1 个间断点 (B)仅有 2 个间断点,其中 1 个可去, 1 个无穷 (C)仅有 2 个间断点, 2 个都是跳跃 (D)有 2 跳跃间断点和 1 个可去间断点 解答 常用极限结论: \lim\limits_{n\to\infty} x^n = \begin{cases} 0 & ,|x| < 1 \\\\ \infty &
一只野生彩色铅笔
2022/09/20
6030
大学生数学竞赛非数专题二(5)
今天的题目就到这里了,这几个题目利用麦克劳林公式以及泰勒展开,综合运用,大家自己好好体验。有问题留言!
用户9628320
2022/11/23
3720
考研(大学)数学 极限与连续(2)
的重要极限,虽然直接看不出来,但是可以观察凑出来。再用等价无穷小。接着对分子有理化,同时乘以一个公因式
用户9628320
2022/11/23
4920
大学生数学竞赛非数专题一(7)
定理2:初等函数在有定义的区间均是连续的 补充一下:闭区间连续函数的几个性质
用户9628320
2022/11/23
3450
关于奈奎斯特定理(Nyquist's Theorem)和香农定理(Shannon's Theorem)的理解
我们需要对我们所收到的基带模拟信号(连续信号)进行采样;需要用到狄拉克梳妆函数(采样函数):
HandSomeHe_In_Fzu
2022/11/23
3.3K0
CSDN-markdown基本语法说明
MathJax是一款运行在浏览器中的开源的数学符号渲染引擎,使用MathJax可以方便的在浏览器中显示数学公式,不需要使用图片。这篇文章介绍如何使用LaTeX语法编写数学公式。
bear_fish
2018/09/20
1.2K0
每日一练5.30
今天的题目就到这里了,主要利用积分的计算方法,直角坐标和极坐标,注意应用的条件,一般带有绝对值的函数求
用户9628320
2022/11/23
4370
相关推荐
数学不解释系列之数列极限
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验