EBYTE

EBYTE

简化Arduino和Teensy无线通信的强大解决方案

这个库为UART型EBYTE收发器提供支持,适用于Arduino和Teensy等MCU。用户可通过该库配置模块参数、发送和接收数据。它兼容多种EBYTE模块,提供简洁接口以及详细的连接指南。库中还包含使用技巧和调试建议,有助于开发者快速实现稳定的无线通信功能。

EBYTE无线传输模块ArduinoMCU串口通信Github开源项目

<b><h2><center>更新 </center>

<li>2024年8月10日,修复了连接未建立时的尝试迭代器 </li> </h1></b> <br> <b><h2><center>EBYTE 收发器</center></h1></b>

本库旨在与UART型EBYTE收发器(如E44-TTL-100)一起使用,这些是适用于Teensy和Arduino等微控制器的小型无线单元。本库允许用户编程操作参数,并可以发送和接收数据。 该公司生产多种具有不同功能的模块,但此处的大多数#defines应该与它们兼容。 所有常量都是从多个数据表中提取的,并以二进制形式列出,因为数据表就是这样表示每个设置的。 希望对常量的任何更改或添加都可以直接从数据表复制到#defines中。 使用本库大约消耗970字节。

您实际上只需要这个库来编程这些EBYTE单元。

要读取数据结构,您可以直接在EBYTE的Serial对象上调用readBytes方法: <br> <br> <b>ESerial.readBytes((uint8_t*)& MyData, (uint8_t) sizeof(MyData));</b> <br> <br> 要写入数据结构,您可以直接在EBYTE的Serial对象上调用write方法: <br> <br> <b>ESerial.write((uint8_t*) &MyData, (uint8_t) sizeof(MyData) );</b> <br> <br> <br> <b> EBYTE型号(仅显示部分列表)</b> 旧型号命名方案 E30-TTL-100,E30-490T20D, E31-TTL-100, E32-TTL-100, E32-TTL-500, E32-TTL-1W, E41-TTL-100, E41-TTL-100, E44-TTL-100, E44-TTL-500, E44-TTL-1W, E50-TTL-100, E50-TTL-500, E51-TTL-100, E51-TTL-500, E51-TTL-1W

新型号命名方案 E22-900T22S, E22-230T22S, E22-400T22S, E22-230T30S, E22-400T30S, E22-900T30S, E30-433T20S3, E30-170T20D, E30-170T27D, E30-780T20S, E30-868T20S, E30-868T20D, E30-915T20D, E30-490T20D, E30-433T20S, E30-433T20D, E30-915T20S, E30-490T20S, E31-433T30S, E31-433T17S3, E31-230T33D, E31-230T17D, E31-230T27D, E31-433T17S, E31-433T17D, E31-433T27D, E31-433T30D, E31-433T33D, E32-433T20DC, E32-433T20S, E32-433T20S2T, E32-433T27D, E32-433T30D, E32-433T30S, E32-868T20D, E32-868T20S, E32-868T30D, E32-868T30S, E32-915T20D, E32-915T20S, E32-915T30D, E32-915T30S, E32-170T30D, E32-400T20S

注意:请查看EBYTE网站,确保所选模块支持UART通信,某些模块仅支持SPI。

这里有一个关于库使用的YouTube视频:https://youtu.be/hMjArKGucFA

<b><h3> 模块连接 </b></h3> 模块 MCU 描述

  1. MO 任意数字引脚* 控制工作/编程模式的引脚
  2. M1 任意数字引脚* 控制工作/编程模式的引脚
  3. Rx 任意数字引脚* 连接到MCU的TX引脚(模块向MCU发送数据,因此MCU必须从模块接收数据)
  4. Tx 任意数字引脚* 连接到MCU的RX引脚(模块向MCU发送数据,因此MCU必须从模块接收数据)
  5. AUX 任意数字引脚 指示操作完成的引脚(低电平表示忙碌,高电平表示完成)(可以用-1省略,但会使用固定恢复时间,可能不足以完成操作)
  6. Vcc +3.3V或5.0V,注意使用5.0V时单元可能会更热并消耗更多电力
  7. Vcc 接地 模块和MCU必须共地

注意

  1. 连接到Arduino的0和1引脚时要小心,因为这些引脚用于与PC的USB连接,所以在编程时不能连接EBYTE。我建议不要使用Arduino的0和1引脚。
  2. 这些单元的信号线为3.3V,但可以承受5V,然而5V可能导致通信失败。如果使用5V的MCU(如Arduino),您可能需要执行以下操作: a) 如果使用Arduino,可能需要在Rx和AUX引脚(可能还有Tx)上加4.7K-10K的上拉电阻。 b) 如果使用Arduino,可能需要在MCU的Tx和收发器的Rx之间加一个4.7K的串联电阻。
  3. 在我的一些应用中,没有足够的数字引脚来连接Aux引脚。不用担心(只需在创建对象的参数列表中传入-1)。库中内置了适当的延迟,以确保传输完成——您可能需要实验来确定合适的延迟时间。
  4. 连接的串行引脚取决于MCU,例如Teensy 3.2:Serial1的Rx=0,Tx=1,Serial2的Rx=9,Tx=10,Serial3的Rx=7,Tx=8。Arduino可以使用SoftwareSerial(MCU_Rx_pin, MCU_Tx_pin)在大多数串行引脚上使用,除了0和1号引脚,因为这些是用于USB的。
  5. 一些MCU,如Teensy和ESP32,不允许使用SoftwareSerial创建通信端口。不用担心,只需将EBYTE直接连接到专用的UART端口(例如Teensy 3.2上的0号和1号引脚用于Serial1)。

<b><h3>制造商网站</b></h3> http://www.ebyte.com/en/ 本库适用的示例模块 http://www.ebyte.com/en/product-view-news.aspx?id=174

<b><h3>一般代码用法</b></h3>

  1. 创建一个串行对象
  2. 创建使用该串行对象的EBYTE对象
  3. 初始化串行对象
  4. 初始化EBYTE对象
  5. 设置参数(可选,但如果发送方和接收方不同则必需)
  6. 发送或接收数据(单字节)或创建并发送数据结构

<b><h3>使用技巧</b></h3>

为获得最佳范围:

<ul> <li> 数据表表明,天线离地2米时效果最佳</li> <li> 理想情况下应视线可见,但根据我的个人测试,即使有一些障碍物,传输仍然可以成功</li> <li> 较慢的空中数据率可以改善范围,但由于传输时间较长,数据发送频率会受到影响</li> <li> 考虑使用高增益天线(可从制造商处购买),详情请参见他们的网站</li> <li> 数据表称,为获得最大范围,应使用5.0伏电压供电(信号线保持3.3V)。我个人发现更高的供电电压对范围影响不大</li> <li> 数据表称,为获得最大范围,应将空中数据率设置为2.4 bps。我个人发现较低的数据率对范围影响不大,而且较低的数据率可能会限制数据发送的频率。 </li> </ul> <b><h3>数据传输数据包</b></h3> <ul> <li>该库有一个发送单字节的方法,但如果需要发送更多数据,请创建一个数据结构,并使用库的SendStruct(&struct, sizeof(struct))方法发送数据结构。注意传递引用,所以在结构名前加上&</li> <li>同样,较慢的数据速率需要更长时间,你需要根据数据大小实验理想的空中数据速率范围</li> <li>如果你需要在不同的MCU之间使用结构体发送数据,每个处理器的打包方式可能会有所不同。如果在接收端得到损坏的数据,有一些方法可以强制编译器不优化结构体打包——我还没能让它们正常工作。对我有效的方法是使用一个创建结构体并处理发送的库。查看EasyTransfer.h(搜索并选择你喜欢的作者)。在这些库中,你将使用它们的方法来发送和获取结构体(有硬件和软件库,请根据情况使用。这意味着你可以使用这个库来编程和管理设置,但使用EasyTransfer来处理通过EBYTE使用的串行线发送数据。听起来很奇怪,但这与使用Serial1.sendBytes(...)没有什么不同,因为这实际上就是这个库在调用的内容。也许有一天我会将EasyTransfer技术集成到这个sendstruct库中)。 </ul> <b><h3>调试</b></h3> <ul> <li>如果你的无线模块在PrintParameters()方法中返回全0或只返回型号,并且你正在使用硬件串口,并且你正在使用ESP32,请确保在begin()语句中使用完整的串口定义,如下所示:</li> <br>
  • #include <HardwareSerial.h>

  • #define Serial_0 Serial2

  • Serial_0.begin(9600, SERIAL_8N1, 16, 17);

<li>如果你的无线模块在PrintParameters()方法中返回全0,请确保你的接线正确且工作正常,MCU的Rx需要连接到EBYTE的Tx,反之亦然。同时确保M0、M1和AUX连接到有效的数字端口。大多数问题都是由于数据线连接不正确造成的</li> <li>如果你的无线模块在PrintParameters()方法中返回全0,并且你确定接线正确,你的模块在模式更改期间可能反应较慢,无法及时响应pinMode的变化。数据手册说需要2毫秒的延迟,但我发现10毫秒更可靠。对于某些单元,甚至需要更多时间。库的默认值是50毫秒,但如果参数读取不正确,请在.h文件中增加这个值。</li> <li>如果你的无线模块在PrintParameters()方法中返回全0,并且你确定接线正确,且你的MCU是5V的,你可能需要在MCU的Tx和AUX线上添加电压分压器。如果向这些模块发送5V信号,它们可能会变得不稳定。当使用单独的3.3V电源为模块供电时,我得到了非常可靠的结果。我通常使用降压转换器或线性稳压器。</li> <li>如果使用5V MCU,你可能需要在MCU的Tx线到EBYTE的Rx线以及可能的M0和M1线上加串联电阻。这些EBYTE单元应该能承受5V,但小心为上。制造商还声称MCU的Tx线和AUX可能需要4.7K上拉电阻。我在UNO、MEGA和NANO上使用这些收发器时没有使用任何电阻,一切正常。但我确实遇到过一次NANO无法与这些收发器一起工作,需要一些奇怪的供电方式。</li> <li>如果你使用的是他们的1W单元(30dB功率输出),请将单元与MCU的板载电源分开供电。电流消耗可能超过板载额定值,导致MCU损坏。我在尝试为1W单元供电时曾经烧毁了NANO的板载电压调节器。</li> <li>如果发射器和接收器使用不同的MCU(Arduino <-> Teensy),发送数据结构的打包方式会有所不同,无论结构数据类型如何。这是由于8位处理器和32位处理器处理打包过程的方式不同。选项1)使用EasyTransfer库。我使用这个库,效果很好。选项2)尝试使用__attribute__((packed))变量属性。选项3)别笑,但如果发送浮点数,考虑将浮点数乘以100(并重新转换为整数),然后在接收端将该值除以100(重新转换为浮点数)</li> <li>如果你从.PrintParameters得到的数据似乎损坏了,试着在你的.INO程序中添加#include "avr/io.h"</li> <li>如果你从单独的电源为EBYTE模块供电,请确保所有接地都已连接</li> </ul>

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多