更新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模塊供電,請確保連接所有場地