

Arduino Uno盾牌
您可以在此處訂購PCB
指南的6部分中的指導和集會視頻
WEMOS D1盾牌
您可以在此處訂購PCB
ESP32盾牌
您可以在此處訂購PCB
指南的6部分中的指導和集會視頻
我創建了一個庫來管理EBYTE E32系列洛拉設備,非常強大,簡單且便宜的設備。
Lora E32-TTL-100
您可以在此處找到Aliexpress(3公里設備)Aliexpress(8公里設備)
它們可以在3000m至8000m的距離上工作,並且具有許多功能和參數。
因此,我創建了此庫來簡化用法。
請參閱我的文章以獲取更新的模式
您可以在這裡找到我的圖書館。
下載。
單擊右上角的下載按鈕,重命名未壓縮文件夾lora_e32。
檢查lora_e32文件夾是否包含lora_e32.cpp和lora_e32.h。
將lora_e32庫文件夾放置您的 /庫 /文件夾。
如果您的第一個庫,則可能需要創建庫子文件夾。
重新啟動IDE。
E32 TTL 100
您可以在這裡購買Aliexpress
| 銷號 | 引腳項目 | 引腳方向 | 引腳應用 |
|---|---|---|---|
| 1 | M0 | 輸入(弱上拉) | 與M1一起工作並確定四種操作模式。不允許進行浮動,可以接地。 |
| 2 | M1 | 輸入(弱上拉) | 與M0一起工作並確定四種操作模式。不允許進行浮動,可以接地。 |
| 3 | rxd | 輸入 | TTL UART輸入,連接到外部(MCU,PC)TXD Outputpin。可以配置為開放式或上拉輸入。 |
| 4 | TXD | 輸出 | TTL UART輸出,連接到外部RXD(MCU,PC)輸入。可以將其配置為開放式或推力輸出 |
| 5 | 輔助 | 輸出 | 指示模塊的工作狀態並喚醒外部MCU。在自我檢查初始化過程中,PIN輸出低水平。可以將其配置為開放式輸出ORPUSH-PULL輸出(允許浮動)。 |
| 6 | VCC | 電源2.3V〜5.5V DC | |
| 7 | gnd | 地面 | 如您所見,您可以通過M0和M1引腳設置各種模式。 |
| 模式 | M1 | M0 | 解釋 |
|---|---|---|---|
| 普通的 | 0 | 0 | UART和無線通道很好 |
| wke | 0 | 1 | 與普通相同,但序列代碼被添加到傳輸數據中以喚醒接收器。 |
| 節能 | 1 | 0 | UART是禁用的,並且無線處於WOR(無線電上的喚醒)模式,這意味著在收到數據時將打開設備。不允許傳輸。 |
| 睡覺 | 1 | 1 | 用於設置參數。傳輸和接收殘疾。 |
如您所見,有一些可以以靜態方式使用的引腳,但是如果您將其連接到庫中獲得的庫,並且可以通過軟件控制所有模式,但是接下來我們將更好地解釋。
正如我已經說的那樣,將所有引腳連接到微控制器的輸出並不重要,您可以將M0和M1引腳放在高或低的位置以獲得應有的配置,如果您不連接AUX,則庫設置了合理的延遲,以確保操作完成。
當傳輸時,數據可用於喚醒外部MCU並返回數據傳輸飾面。
Lora E32輔助引腳在傳輸上
當接收輔助時,緩衝區為空時返回高。
洛拉E32輔助引腳接收
它也用於自我檢查以恢復正常操作(在電源和睡眠/程序模式下)。
Lora E32 Aux PIN上的自我檢查
ESP8266連接架構更簡單,因為它在邏輯通信(3.3V)的相同電壓下工作。
Lora E32 TTL 100 WEMOS D1完全連接
重要的是添加上拉電阻(4,7kOhm)以獲得良好的穩定性。
| M0 | D7 |
|---|---|
| M1 | D6 |
| Rx | 引腳D2(上拉4,7kΩ) |
| TX | 引腳D3(上拉4,7kΩ) |
| 輔助 | D5(輸入) |
| 3.3V | gnd |
Arduino工作電壓為5V,因此我們需要在LORA模塊的Rx PIN M0和M1上添加一個電壓分隔器,以防止損壞,您可以在此處獲得更多信息電壓分隔器:計算器和應用。
您可以使用信號的2KOHM電阻對GND和1KOHM使用,而不是放在RX上。
Lora E32 TTL 100 Arduino完全連接
| M0 | 7(電壓分隔器) |
|---|---|
| M1 | 6(電壓分隔器) |
| Rx | 引腳D2(上拉4,7kΩ和電壓分隔器) |
| TX | 引腳D3(上拉4,7kΩ) |
| 輔助 | 5(輸入) |
| VCC | 3.3V |
| gnd | gnd |
我製作了一組眾多的構造函數,因為我們可以有更多的選擇和情況來管理。
LoRa_E32 (byte rxPin, byte txPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (byte rxPin, byte txPin, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (byte rxPin, byte txPin, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);第一組構造函數是為將串行和其他引腳的管理委派給庫。
rxPin和txPin是連接到UART的引腳,它們是強制性的。
auxPin是一個檢查操作,傳輸和接收狀態的引腳(我們接下來要更好地解釋),該引腳不是強制性的,如果您不設置它,我會應用延遲以允許操作完成(延遲)。
m0pin和m1Pin是更改操作模式的引腳(請參閱表鞋面),我認為“生產”中的引腳將直接連接高或低,但是對於測試而言,它們可以由庫進行管理。
bpsRate是軟件的布料,通常為9600(程序明/睡眠模式中的唯一波特率)
一個簡單的例子是
# include " LoRa_E32.h "
LoRa_E32 e32ttl100 ( 2 , 3 ); // RX, TX
// LoRa_E32 e32ttl100(2, 3, 5, 6, 7); // RX, TX我們可以直接與另一個構造函數一起使用軟件
LoRa_E32 (HardwareSerial* serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (HardwareSerial* serial, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (HardwareSerial* serial, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);該構造函數的示例鞋面可以像這樣做。
# include < SoftwareSerial.h >
# include " LoRa_E32.h "
SoftwareSerial mySerial ( 2 , 3 ); // RX, TX
LoRa_E32 e32ttl100 (mySerial);
// LoRa_E32 e32ttl100(&mySerial, 5, 7, 6);最後一組構造函數是允許使用硬件而不是軟件。
LoRa_E32 (SoftwareSerial* serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (SoftwareSerial* serial, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (SoftwareSerial* serial, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);開始命令用於以輸入和輸出模式啟動串行和引腳。
void begin ();在執行中
// Startup all pins and UART
e32ttl100.begin();有一組用於管理配置並獲取設備信息的方法。
ResponseStructContainer getConfiguration ();
ResponseStatus setConfiguration (Configuration configuration, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE);
ResponseStructContainer getModuleInformation ();
void printParameters ( struct Configuration configuration);
ResponseStatus resetModule ();為了簡化響應的管理,我非常有用地創建一組容器,以管理錯誤並返回通用數據。
這是一個狀態容器,具有2個簡單的入口點,因此,您可以獲取狀態代碼和狀態代碼的描述
Serial.println(c.getResponseDescription()); // Description of code
Serial.println(c.code); // 1 if Success代碼是
E32_SUCCESS = 1 ,
ERR_E32_UNKNOWN,
ERR_E32_NOT_SUPPORT,
ERR_E32_NOT_IMPLEMENT,
ERR_E32_NOT_INITIAL,
ERR_E32_INVALID_PARAM,
ERR_E32_DATA_SIZE_NOT_MATCH,
ERR_E32_BUF_TOO_SMALL,
ERR_E32_TIMEOUT,
ERR_E32_HARDWARE,
ERR_E32_HEAD_NOT_RECOGNIZED創建此容器以管理字符串響應並具有2個入口點。
帶有從消息和status返回的字符串的data是RepsonseStatus的實例。
ResponseContainer rs = e32ttl.receiveMessage();
String message = rs.data;
Serial.println(rs.status.getResponseDescription());
Serial.println(message);這是一個較“複雜的”容器,我用它來管理結構,它具有相同的響應範圍內點,但數據是管理複雜結構的空隙指針。
ResponseStructContainer c;
c = e32ttl100.getConfiguration();
// It's important get configuration pointer before all other operation
Configuration configuration = *(Configuration*) c.data;
Serial.println(c.status.getResponseDescription());
Serial.println(c.status.code);第一種方法是GetConfiguration,您可以使用它來檢索設備上存儲的所有數據。
ResponseStructContainer getConfiguration ();這裡是一個用法示例。
ResponseStructContainer c;
c = e32ttl100.getConfiguration();
// It's important get configuration pointer before all other operation
Configuration configuration = *(Configuration*) c.data;
Serial.println(c.status.getResponseDescription());
Serial.println(c.status.code);
Serial.println(configuration.SPED.getUARTBaudRate());配置結構具有所有設置數據,我添加了一系列功能以獲取單個數據的所有描述。
configuration.ADDL = 0x0 ; // First part of address
configuration.ADDH = 0x1 ; // Second part of address
configuration.CHAN = 0x19 ; // Channel
configuration.OPTION.fec = FEC_0_OFF; // Forward error correction switch
configuration.OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; // Transmission mode
configuration.OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS; // Pull-up management
configuration.OPTION.transmissionPower = POWER_17; // dBm transmission power
configuration.OPTION.wirelessWakeupTime = WAKE_UP_1250; // Wait time for wake up
configuration.SPED.airDataRate = AIR_DATA_RATE_011_48; // Air data rate
configuration.SPED.uartBaudRate = UART_BPS_115200; // Communication baud rate
configuration.SPED.uartParity = MODE_00_8N1; // Parity bit您具有等效函數以獲取所有描述:
Serial.print(F( " Chan : " )); Serial.print(configuration.CHAN, DEC); Serial.print( " -> " ); Serial.println(configuration.getChannelDescription());
Serial.println(F( " " ));
Serial.print(F( " SpeedParityBit : " )); Serial.print(configuration.SPED.uartParity, BIN);Serial.print( " -> " ); Serial.println(configuration.SPED.getUARTParityDescription());
Serial.print(F( " SpeedUARTDatte : " )); Serial.print(configuration.SPED.uartBaudRate, BIN);Serial.print( " -> " ); Serial.println(configuration.SPED.getUARTBaudRate());
Serial.print(F( " SpeedAirDataRate : " )); Serial.print(configuration.SPED.airDataRate, BIN);Serial.print( " -> " ); Serial.println(configuration.SPED.getAirDataRate());
Serial.print(F( " OptionTrans : " )); Serial.print(configuration.OPTION.fixedTransmission, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getFixedTransmissionDescription());
Serial.print(F( " OptionPullup : " )); Serial.print(configuration.OPTION.ioDriveMode, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getIODroveModeDescription());
Serial.print(F( " OptionWakeup : " )); Serial.print(configuration.OPTION.wirelessWakeupTime, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getWirelessWakeUPTimeDescription());
Serial.print(F( " OptionFEC : " )); Serial.print(configuration.OPTION.fec, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getFECDescription());
Serial.print(F( " OptionPower : " )); Serial.print(configuration.OPTION.transmissionPower, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getTransmissionPowerDescription());同樣,setConfiguration需要配置條紋,因此我認為管理配置的更好方法是檢索當前的配置,應用您所需的唯一更改並再次設置它。
ResponseStatus setConfiguration (Configuration configuration, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE); configuration是引人注目的Previsiouly顯示,如果僅在當前會話中更改變為永久性, saveType可以允許您選擇Choiche。
ResponseStructContainer c;
c = e32ttl100.getConfiguration();
// It's important get configuration pointer before all other operation
Configuration configuration = *(Configuration*) c.data;
Serial.println(c.status.getResponseDescription());
Serial.println(c.status.code);
printParameters (configuration);
configuration.ADDL = 0x0 ;
configuration.ADDH = 0x1 ;
configuration.CHAN = 0x19 ;
configuration.OPTION.fec = FEC_0_OFF;
configuration.OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION;
configuration.OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS;
configuration.OPTION.transmissionPower = POWER_17;
configuration.OPTION.wirelessWakeupTime = WAKE_UP_1250;
configuration.SPED.airDataRate = AIR_DATA_RATE_011_48;
configuration.SPED.uartBaudRate = UART_BPS_115200;
configuration.SPED.uartParity = MODE_00_8N1;
// Set configuration changed and set to not hold the configuration
ResponseStatus rs = e32ttl100.setConfiguration(configuration, WRITE_CFG_PWR_DWN_LOSE);
Serial.println(rs.getResponseDescription());
Serial.println(rs.code);
printParameters (configuration);參數全部被視為常數:
| addh | 模塊的高地址字節(默認00H) | 00h-ffh |
|---|---|---|
| addl | 模塊的低地址字節(默認00H) | 00h-ffh |
| 加油 | 有關數據速率平價位和空氣數據速率的信息 | 陳 |
| 通信通道(410m + Chan(1M),默認值17H(433MHz),僅適用於433MHz設備 | 00H-1FH |
|---|
選項
傳輸類型,上拉設置,喚醒時間,FEC,傳輸功率
uart parity位:_UART模式在交流方之間可能有所不同
| 7 | 6 | UART Parity位| const值| | --- | --- | --- | --- | --- | | 0 | 0 | 8n1(默認值)| mode_00_8n1 | | 0 | 1 | 8O1 | mode_01_8o1 | | 1 | 0 | 8 e1 | mode_10_8e1 | | 1 | 1 | 8n1(等於00)| mode_11_8n1 |
UART BAUD率:UART BAUD率在交流方之間可能有所不同,UART BAUD率與無線傳輸參數無關,並且不會影響無線傳輸 /接收功能。
| 5 | 43 | TTL UART BAUD率(BPS) | 恆定值 |
|---|---|---|---|
| 0 | 0 | 0 | 1200 |
| 0 | 0 | 1 | 2400 |
| 0 | 1 | 0 | 4800 |
| 0 | 1 | 1 | 9600(默認) |
| 1 | 0 | 0 | 19200年 |
| 1 | 0 | 1 | 38400 |
| 1 | 1 | 0 | 57600 |
| 1 | 1 | 1 | 115200 |
空氣數據速率:空氣數據速率越低,傳輸距離的時間越長,反干擾性能的時間越長,並且較長的傳輸時間,空氣數據速率必須保持相同的通信方。
| 2 | 1 | 0 | 空氣數據率(bps) | 恆定值 |
|---|---|---|---|---|
| 0 | 0 | 0 | 0.3K | air_data_rate_000_03 |
| 0 | 0 | 1 | 1.2k | air_data_rate_001_12 |
| 0 | 1 | 0 | 2.4k(默認) | air_data_rate_010_24 |
| 0 | 1 | 1 | 4.8K | air_data_rate_011_48 |
| 1 | 0 | 0 | 9.6k | air_data_rate_100_96 |
| 1 | 0 | 1 | 19.2k | air_data_rate_101_192 |
| 1 | 1 | 0 | 19.2k(相同於101) | air_data_rate_110_192 |
| 1 | 1 | 1 | 19.2k(相同於101) | air_data_rate_111_192 |
傳輸模式:在固定傳輸模式下,每個用戶數據框架的前三個字節可用作高/低地址和頻道。傳輸時該模塊更改其地址和通道。完成該過程後,它將恢復為原始設置。
| 7 | 固定傳輸啟用位((類似於modbus) | 恆定值 |
|---|---|---|
| 0 | 透明傳輸模式 | ft_transparent_transmission |
| 1 | 固定傳輸模式 | ft_fixed_transmission |
IO驅動模式:該位用於模塊內部拉動電阻器。在開放排水時,它還增加了水平的適應性。但是在某些情況下,它可能需要外部上拉
電阻。
| 6 | IO驅動模式(默認1) | 恆定值 |
|---|---|---|
| 1 | TXD和AUX推力輸出,RXD上拉輸入 | io_d_mode_push_pulls_pull_ups |
| 0 | txd,輔助開放式助理輸出,RXD開放式收集器輸入 | IO_D_MODE_OPEN_COLLECTOR |
無線喚醒時間:傳輸和接收模塊在模式0中工作,其延遲時間無效並且可以是任意值,在模式1中,發射器可以連續發送相應時間的前碼代碼,當接收器在模式2中工作時,時間表示監視器間隔時間(無線喚醒)。只有在模式1中起作用的發射器的數據才能是
已收到。
| 5 | 4 | 3 | 無線喚醒時間 | 恆定值 |
|---|---|---|---|---|
| 0 | 0 | 0 | 250ms(默認) | wake_up_250 |
| 0 | 0 | 1 | 500ms | wake_up_500 |
| 0 | 1 | 0 | 750ms | wake_up_750 |
| 0 | 1 | 1 | 1000ms | wake_up_1000 |
| 1 | 0 | 0 | 1250ms | wake_up_1250 |
| 1 | 0 | 1 | 1500ms | wake_up_1500 |
| 1 | 1 | 0 | 1750毫秒 | wake_up_1750 |
| 1 | 1 | 1 | 2000ms | wake_up_2000 |
FEC:關閉FEC後,實際數據傳輸速率會增加,而反干擾能力會降低。同樣,傳輸距離相對較短,雙方都必須在相同的頁面上保持關於轉交或關閉FEC的相同頁面。
| 2 | FEC開關 | 恆定值 |
|---|---|---|
| 0 | 關閉FEC | FEC_0_OFF |
| 1 | 打開FEC(默認) | FEC_1_ON |
傳輸功率
您可以通過應用這樣的定義來更改這組常數:
# define E32_TTL_100 // default value without set適用於E32-TTL-100,E32-TTL-100S1,E32-T100S2。
外部電源必須確保當前產出的能力超過250mA,並確保電源漣漪在100mV之內。
由於其低電源,不建議使用低電源
效率。
# define E32_TTL_100 // default value without set| 1 | 0 | 傳輸功率(近似) | 恆定值 |
|---|---|---|---|
| 0 | 0 | 20DBM(默認) | Power_20 |
| 0 | 1 | 17dBm | Power_17 |
| 1 | 0 | 14dBm | Power_14 |
| 1 | 1 | 10dBm | Power_10 |
適用於E32-TTL-500。
外部電源必須確保當前產出的能力超過700mA,並確保電源波紋在100mV之內。
由於其低電源效率,不建議使用低電源。
# define E32_TTL_500| 1 | 0 | 傳輸功率(近似) | 恆定值 |
|---|---|---|---|
| 0 | 0 | 27DBM(默認) | Power_27 |
| 0 | 1 | 24dBm | Power_24 |
| 1 | 0 | 21dBm | Power_21 |
| 1 | 1 | 18dbm | Power_18 |
適用於E32-TTL-1W,E32(433T30),E32(868T30),E32(915T30S)
外部功率必須確保當前輸出的能力超過1A,並確保電源漣漪在100mV之內。
由於其低電源,不建議使用低電源
效率。
# define E32_TTL_1W| 1 | 0 | 傳輸功率(近似) | 恆定值 |
|---|---|---|---|
| 0 | 0 | 30DBM(默認) | Power_30 |
| 0 | 1 | 27dBm | Power_27 |
| 1 | 0 | 24dBm | Power_24 |
| 1 | 1 | 21dBm | Power_21 |
您可以使用此定義配置通道頻率OLSO:
// One of
# define FREQUENCY_433
# define FREQUENCY_170
# define FREQUENCY_470
# define FREQUENCY_868
# define FREQUENCY_915首先,我們必須介紹一種簡單但有用的方法來檢查接收緩衝區中是否有東西
int available ();這只是返回當前流中有多少個字節。
正常/透明傳輸模式用於將消息發送到具有相同地址和頻道的所有設備。
Lora E32傳輸方案,線是頻道
發送/接收消息有很多方法,我們將詳細解釋:
ResponseStatus sendMessage ( const String message);ResponseContainer receiveMessage ();第一個方法是sendmessage,用於以正常模式將字符串發送到設備。
ResponseStatus rs = e32ttl.sendMessage( " Prova " );
Serial.println(rs.getResponseDescription());另一個設備只需在循環上執行
if (e32ttl.available() > 1 ){
ResponseContainer rs = e32ttl. receiveMessage ();
String message = rs. data ;` ` // First ever get the data
Serial. println (rs. status . getResponseDescription ());
Serial. println (message);
}如果要發送複雜的構造,可以使用此方法
ResponseStatus sendMessage ( const void *message, const uint8_t size);
ResponseStructContainer receiveMessage ( const uint8_t size);例如,它用於發送誘變,例如:
struct Messaggione {
char type[ 5 ];
char message[ 8 ];
bool mitico;
};
struct Messaggione messaggione = { " TEMP " , " Peple " , true };
ResponseStatus rs = e32ttl.sendMessage(&messaggione, sizeof (Messaggione));
Serial.println(rs.getResponseDescription());另一方面,您可以收到消息
ResponseStructContainer rsc = e32ttl.receiveMessage( sizeof (Messaggione));
struct Messaggione messaggione = *(Messaggione*) rsc.data;
Serial.println(messaggione.message);
Serial.println(messaggione.mitico);如果您想閱讀消息的第一部分以管理更多類型的Strucutre,則可以使用此方法。
ResponseContainer receiveInitialMessage ( const uint8_t size);我創建它以接收帶有類型或其他類型的字符串以識別加載的構成。
struct Messaggione { // Partial strucutre without type
char message[ 8 ];
bool mitico;
};
char type[ 5 ]; // first part of structure
ResponseContainer rs = e32ttl.receiveInitialMessage( sizeof (type));
// Put string in a char array (not needed)
memcpy ( type, rs.data.c_str(), sizeof(type) );
Serial.println( " READ TYPE: " );
Serial.println(rs.status.getResponseDescription());
Serial.println(type);
// Read the rest of structure
ResponseStructContainer rsc = e32ttl.receiveMessage( sizeof (Messaggione));
struct Messaggione messaggione = *(Messaggione*) rsc.data;我以同樣的方式創建了一組與固定傳輸一起使用的方法
您只需要更改發送方法,因為目標設備無法接收帶有地址和頻道的序言。
因此,對於字符串消息,您
ResponseStatus sendFixedMessage (byte ADDL, byte ADDH, byte CHAN, const String message);
ResponseStatus sendBroadcastFixedMessage (byte CHAN, const String message);對於結構,你有
ResponseStatus sendFixedMessage (byte ADDL, byte ADDH, byte CHAN, const void *message, const uint8_t size);
ResponseStatus sendBroadcastFixedMessage (byte CHAN, const void *message, const uint8_t size );這裡一個簡單的示例
ResponseStatus rs = e32ttl.sendFixedMessage( 0 , 0 , 0x17 , &messaggione, sizeof (Messaggione));
// ResponseStatus rs = e32ttl.sendFixedMessage(0, 0, 0x17, "Ciao");固定傳輸有更多方案
Lora E32傳輸方案,線是頻道
如果您發送到特定的設備(第二種情況固定傳輸),則必須添加addl,addh和chan才能直接識別它。
ResponseStatus rs = e32ttl.sendFixedMessage( 2 , 2 , 0x17 , " Message to a device " );如果要在指定的頻道中向所有設備發送消息,則可以使用此方法。
ResponseStatus rs = e32ttl.sendBroadcastFixedMessage( 0x17 , " Message to a devices of a channel " );如果您想在網絡中接收所有廣播消息,則必須將ADDH和ADDL與BROADCAST_ADDRESS設置。
ResponseStructContainer c;
c = e32ttl100.getConfiguration();
// It's important get configuration pointer before all other operation
Configuration configuration = *(Configuration*) c.data;
Serial.println(c.status.getResponseDescription());
Serial.println(c.status.code);
printParameters (configuration);
configuration.ADDL = BROADCAST_ADDRESS;
configuration.ADDH = BROADCAST_ADDRESS;
// Set configuration changed and set to not hold the configuration
ResponseStatus rs = e32ttl100.setConfiguration(configuration, WRITE_CFG_PWR_DWN_LOSE);
Serial.println(rs.getResponseDescription());
Serial.println(rs.code);
printParameters (configuration);