ESP8266解析S-BUS协议

2023-05-16

Talk is cheap, show you code!
编译平台:Arduino IDE

/**
 *  功能:软件串口读取S-BUS数据;解析;串口打印
 */
#include <SoftwareSerial.h>
#define None 5//D1(空)
#define DataPort 14//D5

uint8_t Data_packet[26];
uint16_t CH[16];  // 通道值

//声明一个软件串口
SoftwareSerial swSerial;

void setup() 
{
  Serial.begin(115200);   
  //设置软件串口波特率  
  //begin(uint32_t baud, SoftwareSerialConfig config,int8_t rxPin, int8_t txPin, bool invert,int Data_packetCapacity = 64, int isrData_packetCapacity = 0);
  swSerial.begin(100000,SWSERIAL_8E2,DataPort,None,true);
}

void loop() 
{
  readSerial();
  Sbus_Data_Count();
  DebugPrint();
}

void DebugPrint()
{
  //Serial.printf("%4d ",Data_packet[1]);//0x0F
  for(int i=0;i<6;i++)//mc6c遥控器只有6个通道
  {
    Serial.printf("%4d ",CH[i]);
  }
  Serial.println();
  //Serial.printf("%4d\n",Data_packet[25]);//0x00

  /*for(int i=1;i<=25;i++)
  {
    Serial.printf("%4d ",Data_packet[i]);
  }
  Serial.println("");*/
}

void readSerial()
{
  for(int i=1;i<=25;i++)
  {
    if(swSerial.available())
    {
      Data_packet[i] = swSerial.read();
      //Serial.printf("Byte%d:%d\n",i,Data_packet[i]);
    }
  }
}

void Sbus_Data_Count()
{
  CH[ 0] = ((int16_t)Data_packet[ 2] >> 0 | ((int16_t)Data_packet[ 3] << 8 )) & 0x07FF;
  CH[ 1] = ((int16_t)Data_packet[ 3] >> 3 | ((int16_t)Data_packet[ 4] << 5 )) & 0x07FF;
  CH[ 2] = ((int16_t)Data_packet[ 4] >> 6 | ((int16_t)Data_packet[ 5] << 2 )  | (int16_t)Data_packet[ 6] << 10 ) & 0x07FF;
  CH[ 3] = ((int16_t)Data_packet[ 6] >> 1 | ((int16_t)Data_packet[ 7] << 7 )) & 0x07FF;
  CH[ 4] = ((int16_t)Data_packet[ 7] >> 4 | ((int16_t)Data_packet[ 8] << 4 )) & 0x07FF;
  CH[ 5] = ((int16_t)Data_packet[ 8] >> 7 | ((int16_t)Data_packet[ 9] << 1 )  | (int16_t)Data_packet[10] <<  9 ) & 0x07FF;
  CH[ 6] = ((int16_t)Data_packet[10] >> 2 | ((int16_t)Data_packet[11] << 6 )) & 0x07FF;
  CH[ 7] = ((int16_t)Data_packet[11] >> 5 | ((int16_t)Data_packet[12] << 3 )) & 0x07FF;
  
  CH[ 8] = ((int16_t)Data_packet[13] << 0 | ((int16_t)Data_packet[14] << 8 )) & 0x07FF;
  CH[ 9] = ((int16_t)Data_packet[14] >> 3 | ((int16_t)Data_packet[15] << 5 )) & 0x07FF;
  CH[10] = ((int16_t)Data_packet[15] >> 6 | ((int16_t)Data_packet[16] << 2 )  | (int16_t)Data_packet[17] << 10 ) & 0x07FF;
  CH[11] = ((int16_t)Data_packet[17] >> 1 | ((int16_t)Data_packet[18] << 7 )) & 0x07FF;
  CH[12] = ((int16_t)Data_packet[18] >> 4 | ((int16_t)Data_packet[19] << 4 )) & 0x07FF;
  CH[13] = ((int16_t)Data_packet[19] >> 7 | ((int16_t)Data_packet[20] << 1 )  | (int16_t)Data_packet[21] <<  9 ) & 0x07FF;
  CH[14] = ((int16_t)Data_packet[21] >> 2 | ((int16_t)Data_packet[22] << 6 )) & 0x07FF;
  CH[15] = ((int16_t)Data_packet[22] >> 5 | ((int16_t)Data_packet[23] << 3 )) & 0x07FF;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ESP8266解析S-BUS协议 的相关文章

  • ESP8266-01高阶——OTA下载

    ESP8266高阶 OTA下载 OTA简介 OTA怎么用 基本控制原理 烧录代码 高级用法 题外话 工程资料 OTA简介 什么是OTA下载 空中下载 OTA 是通过移动通信的空中接口实现对移动终端设备及SIM卡数据进行远程管理的技术 之前做
  • wifi类物联产品配网之web

    文章目录 wifi类物联产品配网之web web配网介绍 web配网实现 wifi类物联产品配网之web 上接wifi类物联产品配网前言 web配网介绍 web主要连接设备建立的wifi 热点后 以网页的形式 让用户输入wifi ssid和
  • STM32---ESP8266-CH340G----PC端通信成功记录----含代码 AP模式已成功

    1为什么要记录呢 是因为这个问题困扰了我很久 终于 解决了 也为看到这篇文章的小伙伴提一个醒 真的很重要 实验成功示意图1 11 1 使用工具 串口调试助手 都可以 网络调试助手 选择TCP CLient 具体的设置见我的另一篇文章CSDN
  • 【esp8266】史上最详细的Arduino uno R3接入机智云教程

    原文地址 http club gizwits com thread 6728 1 1 html 本文使用arduino UNO板卡和esp8266无线WIFI模块实现了通过手机APP远程监测单片机系统采集的数据和控制一个LED的亮灭 读者将
  • 【转载】ESP8266 基ESP8266_RTOS_SDK (ESP-IDF )中嵌入网页文件

    场景 在写ESP8266 web服务的时候 免不了要将自己设计的网页html和css等文件放入到固件中 在arduino中有fs可以进行上传文件 然后通过文件系统读出 那在ESP IDF中该怎么办呢 有几个思路 通过flash downlo
  • vue 兄弟组件之间传值之bus

    有时候两个组件也需要通信 非父子关系 当然Vue2 0提供了Vuex 但在简单的场景下 可以使用一个空的Vue实例作为中央事件总线 参考 http blog csdn net u013034014 article details 54574
  • (2)STM32+ESP8266+手机网络助手实现AP模式通信

    文章目录 1 实验目的及资源 1 1 目的 1 2 资源 2 串口调试wifi模块 2 1 接线 2 2 AT指令测试 2 3 与手机app通信 3 STM32通过wifi与手机app通信 3 1 使用资源 3 2 串口3初始化 3 3 e
  • 使用安信可IDE开发ESP8266时出现error: ld returned 1 exit status

    在 app Makefile中COMPONENTS eagle app v6 后面添加driver libdriver a 并在 app driver中添加Makefile文件 这里建议直接复制 examples IoT Demo文件夹并删
  • 构建配置ESP8266 MQTT服务器

    我们将了解ESP8266模块如何通过消息队列遥测传输 MQTT 相互通信 MQTT术语 已经使用了诸如中央代理 主题 发布 订阅之类的术语 因此现在该用类似于邮局的方式来解释它们了 消息是报纸或杂志 代理 这是一个接收客户端消息的软件应用程
  • 【STM32F4】STM32F407+ESP8266连接机智云过程详解

    要求 通过手机上的机智云通用APP 点亮开发板载LED0 LED1 摘要 硬件组成 STM32F407ZGT6 esp8266 乐鑫 软件APP 机智云开发都者中心下载的通用APP Demo Xcom串口调试助手 Keil V5 调试过程详
  • 从零开始的ESP8266探索(04)-连接/建立网络

    文章目录 目的 连接到网络 建立新网络 更多方式 总结 目的 使用ESP8266主要就是为了用它的网络功能 使用网络功能首先的就是需要连接到一个现有的网络 STA模式 或是建立一个网络 soft AP模式 连接到网络 在Arduino fo
  • 从零开始的ESP8266探索(11)-定时任务调度器Ticker使用演示

    文章目录 目的 使用演示 基本使用1 基本使用2 动态设置和参数传递 停止和重启任务 注意事项 总结 目的 Arduino for esp8266属于无操作系统环境 对于开发多任务的复杂应用还是比较麻烦的 所以这里就提供了一个近似于操作系统
  • ESP8266开发板+mysql数据库+DHT11

    wemos D1 wifi ESP8266开发板连接mysql wemos D1 wifi ESP8266开发板是一款基于esp8266的开发板 使用这个开发板可以很方便的连接wifi 同时这个开发板有很多IO口供我们使用 这个开发板的可以
  • esp8266-12f介绍与使用

    nodemcu 体积相对较大 而且价格也相对较高 这时候 esp12f就可以用来代替 使用 nodemcu v2 v3 使用的是esp12e 与esp12f只有布线上有所差别 是esp8266 12的增强版 esp 12F 引脚图 各个引脚
  • STM32通过ESP8266利用机智云平台实现手机远程操作

    STM32通过ESP8266利用机智云平台实现手机远程操作 将STM32作为主控芯片 ESP8266作为外设 利用串口传递信息 通过机智云平台实现STM32与手机之间的数据传输 之所以选择机智云平台 是因为机智云平台相关配套的软件工具非常齐
  • ESP8266_MQTT协议

    1 了解下MQTT协议 虽然上一篇用起来了MQTT 但是并不十分了解 基本就局限于 发布主题是发送数据 订阅主题是接收数据 今天就再好好了解一下吧 分享下网页版的 MQTT协议中文版 链接 Introduction MQTT协议中文版 1
  • 在原子变量的上下文中什么是总线锁定?

    我使用 C 很长时间了 现在我开始学习汇编并了解处理器的工作原理 不仅仅是为了好玩 而且我必须将其作为测试程序的一部分 在学习汇编时 我开始听到一些在讨论多线程时到处听到的术语 因为我在科学计算中进行了大量的多线程处理 我正在努力了解全貌
  • 使用 MQTT 代理对 ESP8266 Wemos D1 Mini 进行 SSL 证书验证

    我有一个树莓派 3 其操作系统为 raspbianstretch 我已经按照本教程在树莓派上安装并完全配置了 MQTT 代理 https www digitalocean com community tutorials how to ins
  • 是否有通用 I2C 命令来查看设备是否仍然存在于总线上?

    是否有通用的 I2C 命令来查看设备在初始化一次后是否仍然存在于总线上 例如 OLED 显示器 我问这个的原因是为了避免主程序由于库代码中存在无限循环而冻结 当设备断开连接时 例如 Wire 库 在 MCU 启动时 我想检查设备是否可用 并
  • KAA 0.10.0 中使用 ESP8266 SDK 编译错误

    我根据以下内容构建了ESP8266 SDK这个文件 https kaaproject github io kaa docs v0 10 0 Programming guide Using Kaa endpoint SDKs C SDK ES

随机推荐

  • arduino烧写报错:can‘t open device “\\.\COM1“

    我的解决办法是拔掉usb xff0c 让它关机 xff0c 停止运行一会 xff0c 它便可恢复 记得之前也有一次 xff0c 那次解决好像是通过修改它的端口号 xff0c 例如我将它com8修改为com1 两个方法都可以尝试下 xff0c
  • UDP服务器/客户端Linux下C代码实现以及广播、组播

    目录 UDP广播流程 组播流程 UDP UDP xff08 User Datagram Protocol xff09 用户数据报协议 xff0c 是不可靠的无连接的协议 在数据发送前 xff0c 因为不需要进行连接 xff0c 所以可以进行
  • CMakeLists.txt常用语法

    CMakeLists txt常用语法 cmake minimum requiredprojectadd executableinclude directoriesadd libraryalias library xff08 别名库 xff0
  • git 合并分支

    假如我们现在在dev分支上 xff0c 刚开发完项目 xff0c 执行了下列命令 xff1a git add git commit m 39 提交的备注信息 39 git push u origin dev 想将dev分支合并到master
  • 月薪35k的简历是怎么包装的 ,让面试官心动的标准简历(附模板分享)

    有过面试的都知道 xff0c 不管怎样 xff0c 面试多多少少都和简历有这很重要的 毕竟面试官要通过简历了解面试者的基本信息 过往经历 xff0c 来判断面试者和岗位的匹配度 面试者期望通过简历把自己较好的一面体现给面试官 xff0c 所
  • 对无人机高度环的思考和第一次炸机体验

    前两天学长布置了一个任务 xff0c 大体就是在无人机起飞一段时间后再次改变飞行高度 一开始我觉得挺简单 xff0c 随便改改就行了 xff0c 所以今天才开始写 xff0c 然后 炸机了 先说说第一次炸机的体验 就是看到无人机炸机的疯狂往
  • 21年电赛无人机G题思路

    21年电赛结束了 xff0c 我们选择的题目是无人机G题 通过题目也能感受到今年的难度 xff0c 在这里旨在为大家提供一个G题的解题思路和方案 读完题目 xff0c 可以发现主要有两个难题需要解决 1 飞行路径问题 xff08 如何确保飞
  • 面试必问之Promise

    常见 Promise 面试题 1 了解 Promise 吗 xff1f 2 Promise 解决的痛点是什么 xff1f 3 Promise 解决的痛点还有其他方法可以解决吗 xff1f 如果有 xff0c 请列举 4 Promise 如何
  • js中的防抖和节流的原理

    在进行窗口的resize scroll xff0c 输入框内容校验等操作时 xff0c 如果事件处理函数调用的频率无限制 xff0c 会加重浏览器的负担 xff0c 导致用户体验非常糟糕 此时我们可以采用debounce xff08 防抖
  • 汽车CAN总线介绍

    CAN Controller Area Network 控制器局域网络 xff0c CAN网络在早期的整车应用中以BCM 车身控制器 为控制中心 xff0c 主要是车身零部件 雨刮 大灯 车窗 xff0c 智能硬件较少 xff0c 所以早期
  • /usr/bin/ssh-copy-id: ERROR

    搭建hadoop的时候不小心配错域名 导致配置免密码登陆的时候密码一直输入错误 重新修改域名后在配置就一直报错 解决办法 在 ssh目录下修改known hosts文件中配置错的域名 直接删除 重新执行命令 ssh copy id slav
  • 完整安装PX4/PX4-Autopilot,无需科学上网。

    安装自https github com PX4 PX4 Autopilot 的px4功能包 xff0c 因为需要科学上网似乎会失败 xff0c 这里采用其他方法来安装 截止到2022年9月 https hub fastgit xyz这个镜像
  • linux 安装docker报错解决

    出现问题说明 xff1a 当已经确定好了docker安装好了 xff08 用dockers version确认版本的情况下 xff09 一般可以正常运行 xff0c 但是用命令查看systemctl status docker运行状态时 x
  • 网络编程——UDP编程

    一 网络编程基础 计算机网络是指两台或更多的计算机组成的网络 xff0c 在同一个网络中 xff0c 任意两台计算机都可以直接通信 xff0c 因为所有计算机都需要遵循同一种网络协议 因此 xff0c 为了把计算机网络接入互联网 xff0c
  • Ubuntu20.04配置ORB-SLAM3环境并运行

    Ubuntu20 04配置ORB SLAM3环境并运行 1 安装依赖 安装Pangolin 安装OPENCV 安装Eigen 安装Python DBow2和g2o 2 源码下载3 遇到的问题1 编译第三方库出现问题 xff0c 安装Boos
  • toString()方法的作用

    将当前函数的函数名 和引用地址 以数组的形式返回 toString 方法是自带object类中的方法 如果不对toString 方法进行重写 xff0c 那么默认返回对象名和引用地址 重写示例 xff1a package com artis
  • Windows通过FTP服务上传20G大文件到Linux服务器

    场景描述 xff1a 在工作中 xff0c 需要将Windows中的文件上传到Linux服务器中 xff0c 文件大小为20G 通过xshell和rz lrzsz软件提供 xff0c rz上传文件 xff0c sz下载文件 的方式均无法上传
  • Postman Pre-request Script(预处理脚本) SNIPPETS所有用法解释

    获取环境变量 xff0c 全局变量 Get an environment variable 获取环境变量variable key pm environment get 34 variable key 34 Get a global vari
  • 编译ros工程时catkin_make 报错:This file requires compiler and library support for the ISO C++ 2011 standard

    This file requires compiler and library support for the ISO C 43 43 2011 standard This support must be enabled with the
  • ESP8266解析S-BUS协议

    Talk is cheap show you code 编译平台 xff1a Arduino IDE span class token comment 功能 xff1a 软件串口读取S BUS数据 xff1b 解析 xff1b 串口打印 s