Project Icon

EBYTE

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

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

更新

  • 2024年8月10日,修复了连接未建立时的尝试迭代器

  • EBYTE 收发器

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

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

    要读取数据结构,您可以直接在EBYTE的Serial对象上调用readBytes方法:

    ESerial.readBytes((uint8_t*)& MyData, (uint8_t) sizeof(MyData));

    要写入数据结构,您可以直接在EBYTE的Serial对象上调用write方法:

    ESerial.write((uint8_t*) &MyData, (uint8_t) sizeof(MyData) );


    EBYTE型号(仅显示部分列表) 旧型号命名方案 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

    模块连接

    模块 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)。

    制造商网站

    http://www.ebyte.com/en/ 本库适用的示例模块 http://www.ebyte.com/en/product-view-news.aspx?id=174

    一般代码用法

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

    使用技巧

    为获得最佳范围:

    • 数据表表明,天线离地2米时效果最佳
    • 理想情况下应视线可见,但根据我的个人测试,即使有一些障碍物,传输仍然可以成功
    • 较慢的空中数据率可以改善范围,但由于传输时间较长,数据发送频率会受到影响
    • 考虑使用高增益天线(可从制造商处购买),详情请参见他们的网站
    • 数据表称,为获得最大范围,应使用5.0伏电压供电(信号线保持3.3V)。我个人发现更高的供电电压对范围影响不大
    • 数据表称,为获得最大范围,应将空中数据率设置为2.4 bps。我个人发现较低的数据率对范围影响不大,而且较低的数据率可能会限制数据发送的频率。

    数据传输数据包

    • 该库有一个发送单字节的方法,但如果需要发送更多数据,请创建一个数据结构,并使用库的SendStruct(&struct, sizeof(struct))方法发送数据结构。注意传递引用,所以在结构名前加上&
    • 同样,较慢的数据速率需要更长时间,你需要根据数据大小实验理想的空中数据速率范围
    • 如果你需要在不同的MCU之间使用结构体发送数据,每个处理器的打包方式可能会有所不同。如果在接收端得到损坏的数据,有一些方法可以强制编译器不优化结构体打包——我还没能让它们正常工作。对我有效的方法是使用一个创建结构体并处理发送的库。查看EasyTransfer.h(搜索并选择你喜欢的作者)。在这些库中,你将使用它们的方法来发送和获取结构体(有硬件和软件库,请根据情况使用。这意味着你可以使用这个库来编程和管理设置,但使用EasyTransfer来处理通过EBYTE使用的串行线发送数据。听起来很奇怪,但这与使用Serial1.sendBytes(...)没有什么不同,因为这实际上就是这个库在调用的内容。也许有一天我会将EasyTransfer技术集成到这个sendstruct库中)。

    调试

    • 如果你的无线模块在PrintParameters()方法中返回全0或只返回型号,并且你正在使用硬件串口,并且你正在使用ESP32,请确保在begin()语句中使用完整的串口定义,如下所示:

      • #include <HardwareSerial.h>

      • #define Serial_0 Serial2

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

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

    豆包MarsCode

    豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

    Project Cover

    AI写歌

    Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

    Project Cover

    有言AI

    有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

    Project Cover

    Kimi

    Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

    Project Cover

    阿里绘蛙

    绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

    Project Cover

    吐司

    探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

    Project Cover

    SubCat字幕猫

    SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

    Project Cover

    美间AI

    美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

    Project Cover

    稿定AI

    稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

    投诉举报邮箱: service@vectorlightyear.com
    @2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号