

Arduino Uno Shield
ここでPCBを注文できます
ガイドの6つの部分に関する指導とアセンブリビデオ
WEMOS D1シールド
ここでPCBを注文できます
ESP32シールド
ここでPCBを注文できます
ガイドの6つの部分に関する指導とアセンブリビデオ
非常に強力でシンプルで安価なデバイスのEBYTE E32シリーズのLORAデバイスを管理するライブラリを作成します。
LORA E32-TTL-100
ここでは、aliexpress(3kmデバイス)aliexpress(8kmデバイス)を見つけることができます
彼らは3000mから8000mの距離で動作することができ、多くの機能とパラメーターがあります。
そこで、このライブラリを作成して使用を簡素化します。
更新されたスキーマを取得するには、私の記事を参照してください
ここで私の図書館を見つけることができます。
ダウンロードします。
右上隅のダウンロードボタンをクリックし、非圧縮フォルダーLORA_E32の名前を変更します。
LORA_E32フォルダーにLORA_E32.CPPとLORA_E32.Hが含まれていることを確認してください。
LORA_E32ライブラリフォルダーは /ライブラリ /フォルダーを配置します。
最初のライブラリの場合、ライブラリサブフォルダーを作成する必要がある場合があります。
IDEを再起動します。
E32 TTL 100
ここでAliexpressを購入できます
| ピン番号 | ピンアイテム | ピン方向 | ピンアプリケーション |
|---|---|---|---|
| 1 | M0 | 入力(弱いプルアップ) | M1を操作し、4つの操作モードを決定します。 |
| 2 | M1 | 入力(弱いプルアップ) | M0を使用して、4つの操作モードを決定します。 |
| 3 | RXD | 入力 | TTL UART入力は、外部(MCU、PC)TXD OutputPinに接続します。オープンドレインまたはプルアップ入力として構成できます。 |
| 4 | TXD | 出力 | TTL UART出力は、外部RXD(MCU、PC)InputPinに接続します。オープンドレインまたはプッシュプル出力として構成できます |
| 5 | aux | 出力 | モジュールの作業ステータスを示し、外部MCUを目覚めさせます。セルフチェックの初期化の手順中、ピンは低レベルで出力します。オープンドレイン出力Orpush-Pull出力として構成できます(フローティングは許可されています)。 |
| 6 | VCC | 電源2.3V〜5.5V DC | |
| 7 | GND | 地面 | ご覧のとおり、M0およびM1ピンを介してさまざまなモードを設定できます。 |
| モード | M1 | M0 | 説明 |
|---|---|---|---|
| 普通 | 0 | 0 | UARTとワイヤレスチャネルは行きます |
| wke-up | 0 | 1 | 通常と同じですが、レシーバーを目覚めるために送信されたデータにプリアンブルコードが追加されます。 |
| パワー節約 | 1 | 0 | UARTは無効になり、WirelessはWOR(Wake on Radio)モードにあります。つまり、受信するデータがあるとデバイスがオンになります。送信は許可されていません。 |
| 寝る | 1 | 1 | パラメーターの設定で使用されます。障害者の送信と受信。 |
ご覧のとおり、静的な方法で使用できるピンがいくつかありますが、ライブラリに接続すると、パフォーマンスで得られ、ソフトウェアを介してすべてのモードを制御できますが、次に説明することができます。
すでにすべてのピンをマイクロコントローラーの出力に接続することは重要ではないと言っているように、M0およびM1ピンを高またはLOWに配置して設計された構成を取得できます。補助を接続しないと、ライブラリが操作が完了することを確認するために合理的な遅延を設定できます。
送信データを使用して外部MCUを起動し、データ転送仕上げで高く戻すことができます。
トランスミッションのLORA E32 AUXピン
AUXを受け取るときは、バッファが空になったときに高く戻り、高く戻ります。
レセプションのLORA E32 AUXピン
また、通常の操作を復元するためのセルフチェックにも使用されています(パワーオンおよびスリープ/プログラムモード)。
セルフチェックのLORA E32 AUXピン
ESP8266接続スキーマは、論理通信(3.3V)の同じ電圧で機能するため、より簡単です。
LORA E32 TTL 100 WEMOS D1は完全に接続されています
プルアップ抵抗器(4,7kohm)を追加して、良好な安定性を得ることが重要です。
| M0 | D7 |
|---|---|
| M1 | D6 |
| Rx | ピンD2(プルアップ4,7kΩ) |
| TX | ピンD3(プルアップ4,7kΩ) |
| aux | D5(入力) |
| 3.3V | GND |
Arduinoの作業電圧は5Vなので、損傷を防ぐためにRX PIN M0およびM1の電圧分割器を追加する必要があります。
RXにまとめるよりも、SignalからGNDに2KOHM抵抗器と1KOHMを使用できます。
LORA E32 TTL 100 Arduinoは完全に接続されています
| M0 | 7(電圧分割) |
|---|---|
| M1 | 6(電圧分割) |
| Rx | ピンD2(プルアップ4,7kΩおよび電圧分割) |
| TX | ピンD3(プルアップ4,7kΩ) |
| aux | 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);beginコマンドは、入力モードと出力モードでシリアルとピンを起動するために使用されます。
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つのエントリポイントを持つために作成されます。
文字列のあるdataメッセージとstatusから返され、 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が構成Strucutreを必要とするので、構成を管理するより良い方法は、現在のものを取得し、必要な変更のみを適用して再度設定することだと思います。
ResponseStatus setConfiguration (Configuration configuration, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE); configuration 、現在のセッションのみで変更が永続的に変化する場合、 saveType previsiouly showです。
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);パラメーターはすべて一定として管理されています:
| アド | モジュールの高いアドレスバイト(デフォルト00H) | 00h-ffh |
|---|---|---|
| addl | モジュールの低いアドレスバイト(デフォルト00H) | 00h-ffh |
| sped | データレートのパリティビットと航空データレートに関する情報 | チャン |
| 通信チャネル(410m + chan*1M)、デフォルト17H(433MHz)、 433MHzデバイスでのみ有効 | 00H-1FH |
|---|
オプション
トランスミッションの種類、プルアップ設定、ウェイクアップ時間、FEC、トランスミッションパワー
UARTパリティビット:_UARTモードはコミュニケーションパーティー間で異なる場合があります
| 7 | 6 | UARTパリティビット| 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ボーレート:UARTボーレートは通信パーティー間で異なる場合があり、UARTボーレートはワイヤレス送信パラメーターとは関係ありません。ワイヤレス送信 /受信機能には影響しません。
| 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 | エアデータレート(BP | 一定の値 |
|---|---|---|---|---|
| 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 |
送信モード:固定伝送モードでは、各ユーザーのデータフレームの最初の3バイトを、高/低アドレスおよびチャネルとして使用できます。モジュールは、送信時にアドレスとチャネルを変更します。また、プロセスを完了した後、元の設定に戻ります。
| 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、auxオープンコレクター出力、RXDオープンコレクター入力 | IO_D_MODE_OPEN_COLLECTOR |
ワイヤレスウェイクアップ時間:モード0の送信および受信モジュールの動作は、遅延時間が無効で任意の値である可能性があるモード0で、モード1の送信機は、対応する時間のプリアンブルコードを連続的に送信できます。モード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 | 1750ms | 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(433T30S)、E32(868T30S)、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);たとえば、Strucutreを送信するために使用されます。
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送信シナリオ、ラインはチャネルです
特定のデバイス(2番目のシナリオ固定送信)に送信する場合は、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);