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协议 的相关文章

  • STM32---ESP8266-CH340G----PC端通信成功记录----含代码 AP模式已成功

    1为什么要记录呢 是因为这个问题困扰了我很久 终于 解决了 也为看到这篇文章的小伙伴提一个醒 真的很重要 实验成功示意图1 11 1 使用工具 串口调试助手 都可以 网络调试助手 选择TCP CLient 具体的设置见我的另一篇文章CSDN
  • 基于STM32串口通信的ESP8266WiFi模块使用

    掌握esp8266的使用可以实现真正的万物物联 esp8266wifi通信对于MCU而言归结到底还是串口或spi通信 因此 掌握RS232通信协议 SPI通信协议以及esp8266的配置就可以基本搞定WiFi模块的使用 参考文章 1 ESP
  • ESP8266使用邮件客户端 Arduino 库发送邮件(兼容ESP32)

    使用 ESP8266 发送邮件可以方便地处理各种事情 可以让 ESP8266 直接访问您的邮件服务器 例如 Gmail Hotmail Outlook 并通过它发送邮件 但许多邮件服务器会拒绝从不同于邮件服务器的域 您的 ip 发送的邮件
  • ESP8266与网络服务器实时通讯

    目前 所有已呈现的通信都是基于请求响应方法的 其中一个实体正在发送请求 另一实体正在发送回响应 但是在某些情况下 您需要ESP8266模块与服务器之间的实时通信 而不仅仅是事务 实时通讯协议 ESP8266流数据 要从ESP8266流传输数
  • STM32F407+ESP8266连接机智云过程详解

    工程创建 代码调试过程参见 STM32F407 ESP8266 程序源码下载 STM32F407 ESP8266连接机智云程序源码
  • 使用Jupyter分析Wi-Fi数据

    在嗅探Wi Fi时 Wireshark是跨平台的 能够捕获大量数据 弄清这些数据完全是另一项任务 这就是Jupyter Notebook的用武之地 它可以帮助分析Wi Fi数据包 并确定特定电话以前连接过的网络 从而使我们可以了解所有者的身
  • NodeMcu arduino ESP8266 使用WIFIManager 库

    WiFiManager库使用说明 提示 这里可以添加系列文章的所有文章的目录 目录需要自己手动添加 例如 第一章 Python 机器学习入门之pandas的使用 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 W
  • ESP8266 RTOS SDK 移植 u8g2 移植代码

    LED屏驱动ssd1306 屏幕128x64大小 1 移植代码核心 方法1 port c define SCL Pin GPIO SCL define SDA Pin GPIO SDA void delay us uint32 t time
  • STM32学习笔记:ESP8266模块(1)

    由于项目要求要涉及到物联网 公司要采用wifi 于是就采购了一块串口wifi模块 ESP8266 开始拿到后首先应该掌握的就是测试 熟悉AT指令 因为串口wifi通信是采用AT指令进行通信的 在这里需要注意一点的就是 在编写程序的时候 一个
  • esp8266学习笔记(5)——连接wifi、AP、UDP通信

    终于开始接触网络了 基础不行 这个摸索了有点久 还好网上资料多 有些细节还是没有怎么吃透 哈哈 开始联网了 ESP8266有三种模式 station模式 0x01 soft AP模式 0x02 soft AP station模式 0x03
  • ESP8266红外检测安全系统

    我们每个人都想知道不在家时 家中所发生的事情 这与安全性或天然气 火或水等关键要素有关 知道发生了什么事情的瞬间对于将最终损坏降至最低至关重要 我们将重点介绍PIR传感器 但是相同的原理也适用于其他传感器 例如湿度 气体或烟雾传感器 无源红
  • 通过AT指令控制ESP8266

    目录 简介 1 串口无线 WIFI COM WIFI AP 1 1串口无线 WIFI AP 模式 TCP 服务器配置 1 2 串口无线 WIFI AP 模式 TCP 客户端配置 1 3 串口无线 WIFI AP 模式 UDP 配置 2 串口
  • 解决vscode找不到arduino esp8266头文件

    用Arduino IDE写ESP8266没有代码补全 不能跳转查看头文件 个人觉得这是最难受的 vscode装上Microsoft的arduino扩展后 有时候会找不到头文件 刚开始自己傻傻的一个个往includePath里面添加 后来在引
  • ESP8266_MQTT协议

    1 了解下MQTT协议 虽然上一篇用起来了MQTT 但是并不十分了解 基本就局限于 发布主题是发送数据 订阅主题是接收数据 今天就再好好了解一下吧 分享下网页版的 MQTT协议中文版 链接 Introduction MQTT协议中文版 1
  • 基于ESP8266的CMSIS-DAP调试器

    前言 前段时间用8266制作了一个STM32的下载器 可以进行远程下载固件 不过我们用STM32的时候 经常需要进行各种调试 这时候一个调试器就很重要了 于是我想到也许可以做一个无线调试器 本来我打算自己写一个的 不过在github发现居然
  • 在原子变量的上下文中什么是总线锁定?

    我使用 C 很长时间了 现在我开始学习汇编并了解处理器的工作原理 不仅仅是为了好玩 而且我必须将其作为测试程序的一部分 在学习汇编时 我开始听到一些在讨论多线程时到处听到的术语 因为我在科学计算中进行了大量的多线程处理 我正在努力了解全貌
  • 如果循环正在运行,wifi.sta 模块会连接吗?

    我试图检测模块何时实际连接到我的 wifi AP 因为 connect 没有回调 我做了如下简单的事情 wifi sta config SSID password wifi sta connect tmr delay 1000000 i 0
  • ESP8266 在简单的 http 请求后崩溃

    我正在使用 NodeMCU V3 模块 每当我尝试向服务器发出 http 请求时 模块就会崩溃 这是代码 void setup WiFi begin wifi name wifi password while WiFi status WL
  • “org.apache.cxf.jaxrs.bus.providers”不工作

    我正在使用 我想保留一些常见的东西 例如 JSON 提供程序 验证拦截器 使用 cxf 总线的异常处理 下面是我的应用程序上下文
  • Sntp.sync() 忽略服务器

    我一直在尝试与 ntp 服务器同步时间 但是 nodemcu 似乎忽略了服务器参数 sync lua sntp sync fr pool ntp org function tm rtctime epoch2cal rtctime get p

随机推荐

  • 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