更新8/10/2024,如果未建立连接,则修复了尝试迭代器
EBYTE收发器
该库旨在与UART类型的EBYTE收发器(例如E44-TTL-100)一起使用,MCU的小无线单元(例如Teensy和Arduino)。该库使用户可以对操作参数进行编程,并发送和接收数据。该公司制作了具有不同功能的几个模块,但是这里的大多数#Defines应该与它们兼容所有常数,这些常数都是从几个数据表中提取的,并在二进制中列出,因为这是数据表代表每个设置的方式。希望对常数的任何更改或添加都可以是将数据表常数直接复制到#Defines中的问题。该图书馆的用法消耗了约970个字节。
您只需要这个库来编程这些EBYTE单元。
对于读取数据结构,您可以直接在EBYTE的串行对象上调用readbytes方法:
eSerial.ReadBytes(((uint8_t*)和mydata,(uint8_t)sizeof(mydata));
对于编写数据结构,您可以直接在EBYTE的串行对象上调用写入方法
eSerial.write(((Uint8_t*)和mydata,(uint8_t)sizeof(mydata));
EBYTE Model numbers (only a partial list shown) Old model number scheme 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
New model number scheme 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-433T30S,E31-433T17S3,E31-433T17S3,E313,E333333333D33D33D33D33D33D33D33D33D 30零售E31-230T27D,E31-433T17S,E31-433T17D,E31-433T27D,E31-433T30D,E31-43333D,E32-433T33D,E32-433T20DC,E32-433T20S,E32-433T20S,E32-433T20S,E32-22-2202202202202202202202202202220220T22022022202号 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描述
- mo任何数字销*用于控制工作/程序模式的销钉
- M1任何数字销*控制工作/程序模式
- rx任何数字销*引导到MCU TX PIN(模块传输到MCU,因此MCU必须从模块接收数据
- TX任何数字销*引导到MCU RX PIN(模块传输到MCU,因此MCU必须从模块接收数据
- 辅助任何数字引脚指示操作完成何时完成(低繁忙,完成高)(您可以使用-1省略,但使用了固定的恢复时间,并且可能不足以完成操作)
- VCC +3V3或5V0,请注意,该单元可能会以5V0的速度运行,并消耗更多功率
- VCC地面必须是模块和MCU的常见
笔记
- 请注意连接到Arduino引脚0和1,因为这些引脚是用于USB连接到PC的,因此您在编程过程中无法连接EBYTE。我建议不要使用Arduino Pins 0和1
- 这些单元的信号线为3V3,但耐力为5伏,但是5伏可能会导致通信故障。如果使用5伏MCU(例如Arduino),则可能需要执行以下操作。 a)如果使用Arduino,则可能需要4K7-10K的套拉,如果使用Arduino,则需要4K7-10K的套件,而Aux Pins(可能是TX),如果使用Arduino,则可能需要MCU TX和收发器RX之间的4K7电阻器。
- 在我的某些应用中,我没有足够的数字引脚来连接Aux Pin。不用担心(只需在对象创建代码中的参数列表中通过-1)即可。该库有一个内置的延迟,可以提供适当的延迟以使变速箱完成 - 您可能必须尝试一下金额。
- 连接的串行引脚取决于MCU,Teensy 3.2例如:Serial1为Rx = 0,TX = 1,Serial2 Rx = 9,Tx = 10,Serial3 Rx = 7,TX = 8。 Arduino可以使用软件(MCU_RX_PIN,MCU_TX_PIN)是大多数串行引脚,除了引脚0和1,因为它们适用于USB使用
- 某些MCU(例如Teensy)和ESP32不允许使用软件来创建通信端口。不用担心,只需将eBtye固定到专用的UART端口(针对Serial1的Teensy 3.2上的引脚0和引脚1即可。
制造商网站
http://www.ebyte.com/en/示例模块此库旨在与http://www.ebyte.com/en/product-view-news.aspx?id = 174一起使用
常规代码使用
- 创建一个序列对象
- 创建使用串行对象的ebyte对象
- 开始串行对象
- init()ebyte对象
- 设置参数(可选,但如果发件人和接收器不同,则需要)
- 发送或收听已发送的数据(单个字节)或创建并发送数据结构
有关使用的提示
最佳范围:
- 数据表表明最佳结果是天线2米分米
- 视线理想,但是我的个人测试,传播仍然成功,有一些障碍
- 缓慢的空气数据速率可以提高范围,但是由于传输时间较长,可以发送数据的频率将被牺牲。
- 考虑高收益天线(可以从制造商那里购买)有关详细信息
- 数据表表示,对于最大范围,用5.0伏(信号线保持3V3)为单位供电。我的个人发现范围与较高的电源电压几乎没有不同的范围
- 数据表表示最大范围,将空气数据速率设置为2.4 bps。我的个人发现,范围很小,数据速率较低,而低数据速率可能会限制您可以发送数据的频率。
数据传输数据包
- 该库具有发送单个字节的方法,但是如果要发送更多数据,请创建数据结构并使用库SendStruct(&struct,sizeof(struct))方法发送数据结构。注意通过ref,请包括&之前的结构名称
- 同样,缓慢的数据速率需要更长的时间,您需要根据数据大小进行理想的空气数据速率范围
- 如果您需要使用不同MCU的更改之间的结构来发送数据,则每个处理器包的方式可能会有所不同。如果您在接收端获得损坏的数据,则有一些方法可以迫使编译器不优化结构包装 - 我尚未使它们能够工作。对我有用的是使用创建支柱和手柄发送的库。查看easytransfer.h(Google IT并获取您喜欢的作者)。在这些液体中,您将使用他们的发送和获取结构的方法(有硬件和软件libs,相应地使用。您可以使用此库来编程和管理设置,但使用EasyTransfer来通过Ebyte使用的串行线来处理发送数据。听起来很奇怪。听起来很奇怪,但实际上是see sayial1.sendbytes(...),这是shise nyd shie the nyd shie the shie the shie ny Day ny the shie ny the shie the ny the ny ny ny the ny nighters。 lib。
调试
- 如果您的无线模块正在返回printParameters()方法或仅返回模型,并且您使用的是硬件串行,并且您正在使用ESP32,请确保您在开始()语句中使用完整的序列定义:
- 如果您的无线模块正在为printParameters()方法返回所有0,请确保您的接线正确并且可以正常工作,MCU RX需要连接到EBYTE TX,反之亦然。还要确保M0,M0和AUX连接到有效的数字端口。大多数问题是由于数据线连接不正确
- 如果您的无线模块正在为printParameters()方法返回所有0,并且您确定接线是正确的,则您的模块可能会慢速对在模式更改期间执行的Pinmode更改做出反应。数据表说需要2 ms的延迟,但是我发现10 ms更可靠。有了一些单位,需要更多的时间。库默认值为50 ms,但是如果参数未正确读取,则将其增加在.h文件中。
- 如果您的无线模块正在为printParameters()方法返回所有0,并且您确定接线是正确的,并且MCU为5V0,则可能必须在MXU TX和AUX线上添加电压分隔线。如果将5V0信号发送到该模块,这些模块可能是挑剔的。用单独的3V3电源为模块供电时,我会获得非常可靠的结果。我通常使用降压转换器或线性调节器。
- 如果使用5V0 MCU,则可能需要在MCU TX线上仅在EBYTE RX线上以及可能的M0和M1线路上进行串联电阻。这些EBYTE单元应该宽容5伏,但比后悔更好。同样,MFG声称在MCU TX系列和AUX上可能需要4K7上拉。我已经在UNO,Mega和Nano的带有任何电阻的情况下使用了这些收发器,一切都很好。我确实有一个案例,纳米没有与这些收发器一起使用,需要一些奇怪的动力。
- 如果您使用的是其1W单元(30 dB电源输出),请与MCU的机载电源分开为单元供电。当前平局可能会超过船上等级,从而破坏MCU。试图为1W设备供电时,我已经在纳米上摧毁了板上电压调节器。
- 如果发射器和接收器是不同的MCU(Arduino <-> teensy),则无论结构数据类型如何,数据结构的支付包都不同。这是由于8位处理器和32位处理器如何处理包装过程所致。选项1)是使用Eastransfer lib。我使用此lib,它运行良好。选项2)尝试__ATTRIBUTE __(((包装))变量属性。选项3)并且不要笑,但是如果将浮子发送乘以浮子到100(并将其重新铸造为int),则在接收端将该值除以100
- 如果您似乎从.printparameters获取损坏的数据,请尝试添加#include #include“ avr/io.h”。
- 如果您要从单独的电源源为EBYTE模块供电,请确保连接所有场地