

ここでPCBを注文できます
ガイドの6つの部分に関する指導とアセンブリビデオ
ここでPCBを注文できます
ガイドの6つの部分に関する指導とアセンブリビデオ
LORAまたは長距離ワイヤレスデータテレメトリは、 NRF24L01(433 MHz、868 MHz、またはNRF24L01の2.4 GHzに対して916 MHz)よりも低い周波数で動作するSemTechによって開拓された技術ですが、距離(5000Mから11000M)。
Lora Smart Home(LLCC68)は、中距離屋内および屋内から屋外のワイヤレスアプリケーション用のサブGHzLORA®RFトランシーバーです。 SPIインターフェイス。ピンからピンはSX1262と互換性があります。 SX1261、SX1262、SX1268、およびLLCC68は、わずか4.2 mAのアクティブな受信電流消費量で長いバッテリー寿命のために設計されています。 SX1261は最大+15 dBMを送信でき、SX1262、SX1268、およびLLCC68は、非常に効率的な統合パワーアンプで+22 dBMまで送信できます。
これらのデバイスは、LPWANユースケースのLORA変調と(g)レガシーユースケースのFSK変調をサポートしています。デバイスは、消費者の使用に関するさまざまなアプリケーション要件を満たすために高度に構成できます。このデバイスは、LoraAlliance®がリリースしたLorawan®仕様で使用されるSemTechトランシーバーと互換性のあるLORA変調を提供します。この無線は、ETSI EN 300 220、FCC CFR 47パート15、中国規制要件、および日本のARIB T-108を含むがこれらに限定されないラジオ規制のコンプライアンスを対象としたシステムに適しています。 150MHzから960MHzまでの連続周波数カバレッジにより、世界中のすべての主要なサブGHz ISMバンドのサポートが可能になります。
| LLCC68 | SX1278-SX1276 | |
|---|---|---|
| 距離 | > 11km | 8km |
| レート(lora) | 1.76kbps - 62.5kbps | 0.3kbps - 19.2kbps |
| 睡眠消費電力 | 2µA | 5µA |
ここで私の図書館を見つけることができ、Arduino IDE Library Managerで入手できます。
ダウンロードします。
右上隅のダウンロードボタンをクリックし、非圧縮フォルダーLORA_E220の名前を変更します。
LORA_E220フォルダーにLORA_E220.CPPとLORA_E220.Hが含まれていることを確認してください。
LORA_E220ライブラリフォルダーを /ライブラリ /フォルダーに配置します。
最初のライブラリである場合、ライブラリを作成する必要がある場合があります。
IDEを再起動します。
| ピン番号 | ピンアイテム | ピン方向 | ピンアプリケーション |
|---|---|---|---|
| 1 | M0 | 入力(弱いプルアップ) | M1を使用して、4つの操作モードを決定します。フローティングは許可されていません。それは地面になることができます。 |
| 2 | M1 | 入力(弱いプルアップ) | M0を使用して、4つの操作モードを決定します。フローティングは許可されていません。それは地面になることができます。 |
| 3 | RXD | 入力 | TTL UART入力は、外部(MCU、PC)TXD出力ピンに接続します。オープンドレインまたはプルアップ入力として構成できます。 |
| 4 | TXD | 出力 | TTL UART出力は、外部RXD(MCU、PC)入力ピンに接続します。オープンドレインまたはプッシュプル出力として構成できます |
5 | aux | 出力 | モジュールの作業ステータスを示し、外部MCUを目覚めさせます。セルフチェックの初期化の手順中、ピンは低レベルに出力されます。オープンドレインまたはプッシュプル出力として構成できます(フローティングは許可されています)。 |
| 6 | VCC | 電源3V〜5.5V DC | |
| 7 | GND | 地面 |
ご覧のとおり、M0およびM1ピンを介してさまざまなモードを設定できます。
| モード | M1 | M0 | 説明 |
|---|---|---|---|
| 普通 | 0 | 0 | UARTおよびワイヤレスチャネルが開いており、透明なトランスミッションがオンになっています |
| worトランスミッター | 0 | 1 | worトランスミッター |
| WORレシーバー | 1 | 0 | worレシーバー(空中に目覚めることをサポート) |
| 深い睡眠モード | 1 | 1 | モジュールは眠りにつく(パラメーターを構成するときに自動的に目覚めます) |
一部のピンは静的に使用できますが、それらをマイクロコントローラーに接続してライブラリで構成すると、パフォーマンスが得られ、ソフトウェアを介してすべてのモードを制御できます。それでも、私たちは次により良い説明をするつもりです。
すでに言ったように、すべてのピンをマイクロコントローラーの出力に接続することは不可欠ではありません。 M0およびM1ピンを高またはLowに配置して、目的の構成を取得できます。 AUXを接続しない場合、ライブラリは操作が完全であることを確認するために合理的な遅延を設定します(デバイスのフリーズに問題がある場合は、 4.7K抵抗器を配置するか、デバイスに接続する必要があります。 )。
送信データを使用して外部MCUを起動し、データ転送仕上げで高く戻すことができます。
受信するとき、AUXは低くなり、バッファが空になると高く戻ります。
また、自己チェックには、定期的な操作を復元するために使用されます(パワーオンおよびスリープ/プログラムモード)。
ESP8266接続スキーマは、論理通信(3.3V)の同じ電圧で動作するため、より簡単です。
良い安定性を得るために、プルアップ抵抗器(4,7kohm)を追加することが不可欠です。
| E22 | ESP8266 |
|---|---|
| M0 | D7 |
| M1 | D6 |
| TX | ピンD2(プルアップ4,7kΩ) |
| Rx | ピンD3(プルアップ4,7kΩ) |
| aux | ピンD5(プルアップ4,7kΩ) |
| VCC | 5V(ただし、3.3Vでより少ない電力で動作します) |
| GND | GND |
ESP32では同様の接続スキーマですが、RXとTXではRX2とTX2を使用します。デフォルトでは、ESP32にはソフトウェアセリアルがなく、3つのシリアルがあります。
| E22 | ESP32 |
|---|---|
| M0 | D21 |
| M1 | D19 |
| TX | ピンRX2(プルアップ4,7kΩ) |
| Rx | ピンTX3(プルアップ4,7kΩ) |
| aux | ピンD18(プルアップ4,7kΩ)(D15を起動する) |
| VCC | 5V(ただし、3.3Vでより少ない電力で動作します) |
| GND | GND |
Arduinoの作業電圧は5Vなので、損傷を防ぐためにRX PIN M0とLORAモジュールのM1に電圧仕切りを追加する必要があります。ここで詳細情報は、電卓とアプリケーションの電圧仕切りを入手できます。
GNDに2KOHM抵抗器を使用し、信号から1KOHMを使用してから、RXにまとめることができます。
| M0 | 7(電圧分割) |
| M1 | 6(電圧分割) |
| TX | ピン2(プルアップ4,7kΩ) |
| Rx | ピン3(プルアップ4,7kΩ&電圧分割) |
| aux | ピン5(プルアップ4,7kΩ) |
| VCC | 5V |
| GND | GND |
| M0 | 2(電圧分割) |
| M1 | 3(電圧分割) |
| TX | ピン14 TX(プルアップ4,7kΩ) |
| Rx | ピン13 RX(プルアップ4,7kΩ) |
| aux | ピン1(プルアップ4,7kΩ) |
| VCC | 5V |
| GND | GND |
管理するオプションと状況をより多く持つことができるため、多数のコンストラクターのセットを作成しました。
lora_e220(byte txe220pin、byte rxe220pin、uart_bps_rate bpsrate = uart_bps_rate_9600); lora_e220(byte txe220pin、byte rxe220pin、byte auxpin、uart_bps_rate bpsrate = uart_bps_rate_9600); lora_e220(byte txe220pin、byte rxe220pin、byte auxpin、byte m0pin、byte m1pin、uart_bps_rate bpsrate = uart_bps_rate_9600);
コンストラクターの最初のセットは、シリアルやその他のピンをライブラリに委任するために作成されます。
txE220pinとrxE220pinは、UARTに接続するピンです。それらは必須です。auxPin 、操作、送信、および受信ステータスをチェックするピンです(次はより良く説明します)、そのピンは必須ではありません。設定しない場合は、遅延を適用して操作が自分自身を完成させることを許可します(レイテンシを使用すると、フリーズデバイスのように問題がある場合、4.7K抵抗器を配置するか、デバイスに接続する必要があります)。m0pinとm1Pinは、操作モードを変更するピンです(テーブルアッパーを参照)、 「生産」のこのピンは直接高または低く接続すると思います。それでも、テストのために、彼らは図書館で管理するのに役立ちます。bpsRateは、通常9600です(プログラミング/睡眠モードでの唯一のボーレート)ソフトウェアのボーレートです。簡単な例です
#include "lora_e220.h"lora_e32 e220ttl(2、3); // E22 TX E22 RX // lora_e32 e32ttl(2、3、5、6、7); // E22 TX E22 RX
別のコンストラクターと直接、ソフトウェアセリアルを使用できます
lora_e220(hardwareserial* serial、uart_bps_rate bpsrate = uart_bps_rate_9600); lora_e220(hardwareserial* serial、byte auxpin、uart_bps_rate bpsrate = uart_bps_rate_9600); lora_e220(hardwareserial* serial、byte auxpin、byte m0pin、byte m1pin、uart_bps_rate bpsrate = uart_bps_rate_9600);
このコンストラクターを使用したアッパーの例は、そのように行うことができます。
#include <softwareserial.h> #include "lora_e220.h"ソフトウェアシリアルマイザーリアル(2、3); // E220 TX E220 RX lora_e220 e220ttl(&myserial); // lora_e220 e220ttl(&myserial、5、7、6);
コンストラクターの最後のセットは、ソフトウェアセリアルの代わりに携帯電話を許可することです。
lora_e220(Softwareserial* serial、uart_bps_rate bpsrate = uart_bps_rate_9600); lora_e220(Softwareserial* Serial、byte auxpin、uart_bps_rate bpsrate = uart_bps_rate_9600); lora_e220(SoftwareSerial*シリアル、バイトauxpin、byte m0pin、byte m1pin、uart_bps_rate bpsrate = uart_bps_rate_9600);
ESP32の場合、ハードウェアシリアルのピンを管理できる3つの追加のコンストラクターがあります。
lora_e220(byte txe220pin、byte rxe220pin、hardwareserial* serial、uart_bps_rate bpsrate = uart_bps_rate_9600、uint32_t serialconfig = serial_8n1); lora_e220(byte txe220pin、byte rxe220pin、hardwareserial* serial、byte auxpin、uart_rate bpsrate = uart_bps_rate_9600、uint32_t serialconfig = serial_8n1); lora_e220(byte txe220pin、byte rxe220pin、hardwareserial* serial、byte auxpin、byte m0pin、byte m1pin、uart_bps_rate bpsrate = uart_bps_rate_9600、uint32_t serialconfig = serial_8n1);
beginコマンドは、入力モードと出力モードでシリアルとピンを起動するために使用されます。
void begin();
実行中です
//すべてのピンとUARTを起動します e220ttl.begin();
構成を管理し、デバイスに関する情報を取得するには多くの方法があります。
RespondestructContainer getConfiguration(); respondestatus setConfiguration(構成構成、プログラム_command saveType = write_cfg_pwr_dwn_lose);ResponseStructContainer getModuleInformation(); void printParameters(struct Configuration configuration); ResponseStatus resetModule();
応答の管理を簡素化するために、エラーの管理と一般的なデータの返却に非常に役立つコンテナのセットを作成しました。
ResponseStatus is a status container and has two 。これにより、ステータスコードとステータスコードの説明を取得できます。
serial.println(c.getResponsEdescription()); //コードの説明 serial.println(c.code); // 1成功の場合
コードはです
e220_success = 1、 err_e220_unknown、 err_e220_not_support、 err_e220_not_implement、 err_e220_not_initial、 err_e220_invalid_param、 err_e220_data_size_not_match、 err_e220_buf_too_small、 err_e220_timeout、 err_e220_hardware、 err_e220_head_not_recognized
このコンテナは、文字列応答を管理するために作成され、2つのエントリポイントがあります。
文字列のあるdataメッセージから返され、 status RepsonseStatusのインスタンス。
ResponseContainer rs = e220ttl.receivemessage(); 文字列メッセージ= rs.data;Serial.println(rs.status.getResponseDescription()); Serial.println(message);
しかし、このコマンドはバッファ内のすべてのデータを読み取るようになります。 3つのメッセージを受信した場合、一度に3つのメモすべてを読みます。私の簡単なソリューションは、メッセージの最後に送信するためにエンド文字を使用することです。デフォルトに 0(null文字)を使用します
ResponseContainer rs = e220ttl.receivemessageuntil();
//カスタムデリミタも指定できます
// ResponseContainer rs = e220ttl.receivemessageuntil( '|');
String message = rs.data;
Serial.println(rs.status.getResponseDescription());
Serial.println(message);
このバージョンのデバイスはRSSIもサポートしています。そのパラメーターを読むには(構成でそれを送信することを指定した場合)、使用できます
ResponseContainer rc = e220ttl.receivemessagerssi(); 文字列メッセージ= rs.data;Serial.println(rs.status.getResponseDescription()); Serial.println(message); Serial.print("RSSI: "); Serial.println(rc.rssi, DEC);
ResponseStructContainerは、より「複雑な」容器です。私はこれを使用して構造を管理しますが、同じエントリポイントのresponsecontainerを持っていますが、データは複雑な構造を管理するためのボイドポインターです。
RespondestructContainer C;
c = e220ttl.getConfiguration();
//他のすべての操作の前に構成ポインターを取得することが重要です
構成configuration = *(configuration *)c.data;
serial.println(c.status.getResponsEdeDescription());
serial.println(c.status.code);
c.close();
RSSIで構造化されたメッセージを受け取った場合、使用できます
ResponseStructContainer RSC = e220ttl.receivemessagerssi(sizeof(message));
serial.println(rsc.status.getResponsEdeScription());
struct message message = *(message *)rsc.data;
serial.println(message.type);
serial.println(message.message);
serial.println(*(float*)(message.temperature));
serial.print( "rssi:"); serial.println(rsc.rssi、dec);
rsc.close();
ResponseStructContainerを使用するたびに、 close()で閉じる必要があります
最初の方法はgetConfigurationであり、それを使用してデバイスに保存されているすべてのデータを取得できます。
RespondestructContainer getConfiguration();
これが使用例です。
RespondestructContainer C;
c = e32ttl.getConfiguration();
//他のすべての操作の前に構成ポインターを取得することが重要です
構成configuration = *(configuration *)c.data;
serial.println(c.status.getResponsEdeDescription());
serial.println(c.status.code);
serial.println(configuration.sped.getUartBaudrate());
c.close();
構成の構造には設定のすべてのデータがあり、一連の関数を追加して、単一のデータのすべての説明を取得します。
configuration.addl = 0x03; //アドレスの最初の部分 configuration.addh = 0x00; //第2部configuration.CHAN = 23; // Communication channel configuration.SPED.uartBaudRate = UART_BPS_9600; // Serial baud rate configuration.SPED.airDataRate = AIR_DATA_RATE_010_24; // Air baud rate configuration.SPED.uartParity = MODE_00_8N1; // Parity bit configuration.OPTION.subPacketSetting = SPS_200_00; // Packet size configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED; // Need to send special command configuration.OPTION.transmissionPower = POWER_22; // Device power configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED; // Enable RSSI info configuration.TRANSMISSION_MODE.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; // Enable repeater mode configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED; // Check interference configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011; // WOR timing
すべての属性がすべての説明を取得するための同等の関数があります。
void printparameters(struct configuration configuration){
serial.println( "-------------------------------------");
Serial.print(F("HEAD : ")); Serial.print(configuration.COMMAND, HEX);Serial.print(" ");Serial.print(configuration.STARTING_ADDRESS, HEX);Serial.print(" ");Serial.println(configuration.LENGHT, HEX);
Serial.println(F(" "));
Serial.print(F("AddH : ")); Serial.println(configuration.ADDH, HEX);
Serial.print(F("AddL : ")); Serial.println(configuration.ADDL, HEX);
Serial.println(F(" "));
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.getUARTBaudRateDescription());
Serial.print(F("SpeedAirDataRate : ")); Serial.print(configuration.SPED.airDataRate, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getAirDataRateDescription());
Serial.println(F(" "));
Serial.print(F("OptionSubPacketSett: ")); Serial.print(configuration.OPTION.subPacketSetting, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getSubPacketSetting());
Serial.print(F("OptionTranPower : ")); Serial.print(configuration.OPTION.transmissionPower, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getTransmissionPowerDescription());
Serial.print(F("OptionRSSIAmbientNo: ")); Serial.print(configuration.OPTION.RSSIAmbientNoise, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getRSSIAmbientNoiseEnable());
Serial.println(F(" "));
Serial.print(F("TransModeWORPeriod : ")); Serial.print(configuration.TRANSMISSION_MODE.WORPeriod, BIN);Serial.print(" -> "); Serial.println(configuration.TRANSMISSION_MODE.getWORPeriodByParamsDescription());
Serial.print(F("TransModeEnableLBT : ")); Serial.print(configuration.TRANSMISSION_MODE.enableLBT, BIN);Serial.print(" -> "); Serial.println(configuration.TRANSMISSION_MODE.getLBTEnableByteDescription());
Serial.print(F("TransModeEnableRSSI: ")); Serial.print(configuration.TRANSMISSION_MODE.enableRSSI, BIN);Serial.print(" -> "); Serial.println(configuration.TRANSMISSION_MODE.getRSSIEnableByteDescription());
Serial.print(F("TransModeFixedTrans: ")); Serial.print(configuration.TRANSMISSION_MODE.fixedTransmission, BIN);Serial.print(" -> "); Serial.println(configuration.TRANSMISSION_MODE.getFixedTransmissionDescription());
Serial.println("----------------------------------------");
}
同様に、SetConfigurationは構成構造を望んでいるため、構成を管理するより良い方法は、現在の構造を取得し、必要な変更のみを適用して再度設定することだと思います。
respondestatus setConfiguration(構成構成、プログラム_command saveType = write_cfg_pwr_dwn_lose);
configuration以前に示されている構造であり、 saveType 、変更が永続的になるか、現在のセッションでのみ選択できるようにします。
RespondestructContainer C; c = e32ttl100.getConfiguration(); //他のすべての操作の前に構成ポインターを取得することが重要です 構成configuration = *(configuration *)c.data; serial.println(c.status.getResponsEdeDescription()); serial.println(c.status.code);printParameters(configuration); configuration.ADDL = 0x03; // First part of address configuration.ADDH = 0x00; // Second part configuration.CHAN = 23; // Communication channel configuration.SPED.uartBaudRate = UART_BPS_9600; // Serial baud rate configuration.SPED.airDataRate = AIR_DATA_RATE_010_24; // Air baud rate configuration.SPED.uartParity = MODE_00_8N1; // Parity bit configuration.OPTION.subPacketSetting = SPS_200_00; // Packet size configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED; // Need to send special command configuration.OPTION.transmissionPower = POWER_22; // Device power configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED; // Enable RSSI info configuration.TRANSMISSION_MODE.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; // Enable repeater mode configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED; // Check interference configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011; // WOR timing // 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); c.close()
パラメーターはすべて一定として管理されます。
| 名前 | 説明 | 住所 |
|---|---|---|
| アド | モジュールの高いアドレスバイト(デフォルト00H) | 00H |
| addl | モジュールの低いアドレスバイト(デフォルト00H) | 01H |
| sped | データレートのパリティビットと航空データレートに関する情報 | 02H |
| オプション | 送信の種類、パケットサイズ、特別なメッセージを許可します | 03H |
| チャン | 通信チャネル(410m + chan*1m)、デフォルト17h(433MHz)、 433MHzデバイスデバイスのみで有効で、デバイスの正しい頻度を確認するために以下を確認してください | 04h |
| オプション | 送信の種類、パケットサイズ、特別なメッセージを許可します | 05H |
| inssomision_mode | 伝送モダリティを指定する多くのパラメーター | 06H |
| 地下室 | 傍受を避けるための暗号化 | 07H |
UARTパリティビット: UARTモードは通信パーティー間で異なる場合があります
| UARTパリティビット | 一定の値 |
|---|---|
| 8N1(デフォルト) | mode_00_8n1 |
| 8o1 | mode_01_8o1 |
| 8e1 | mode_10_8e1 |
| 8n1(00に等しい) | mode_11_8n1 |
UARTボーレート:UARTボーレートは、通信パーティー間で異なる場合があります(ただし、認識されていません)。 UARTボーレートは、ワイヤレス送信パラメーターとは関係ありません。ワイヤレス送信/受信機能には影響しません。
| ttl uart baudレート(bps) | 一定の値 |
|---|---|
| 1200 | uart_bps_1200 |
| 2400 | uart_bps_2400 |
| 4800 | uart_bps_4800 |
| 9600(デフォルト) | uart_bps_9600 |
| 19200 | UART_BPS_19200 |
| 38400 | uart_bps_38400 |
| 57600 | uart_bps_57600 |
| 115200 | uart_bps_115200 |
空気データレート:空気データレートが低いほど、送信距離が長くなり、干渉防止性能が向上し、送信時間が長くなります。空気データレートは、両方の通信パーティーで一定でなければなりません。
| エアデータレート(BP | 一定の値 |
|---|---|
| 2.4k | air_data_rate_000_24 |
| 2.4k | air_data_rate_001_24 |
| 2.4k(デフォルト) | air_data_rate_010_24 |
| 4.8k | air_data_rate_011_48 |
| 9.6k | air_data_rate_100_96 |
| 19.2k | air_data_rate_101_192 |
| 38.4k | air_data_rate_110_384 |
| 62.5k | air_data_rate_111_625 |
これはパケットの最大長です。
データがサブパケットの長さよりも小さい場合、受信側のシリアル出力は途切れない連続出力です。受信エンドシリアルポートは、データがサブパケットの長さよりも大きいときにサブパケットを出力します。
| パケットサイズ | 一定の値 |
|---|---|
| 200バイト(デフォルト) | SPS_200_00 |
| 128bytes | SPS_128_01 |
| 64バイト | SPS_064_10 |
| 32バイト | SPS_032_11 |
このコマンドは、RSSIの管理タイプを有効/無効にすることができ、リモート構成を管理することが不可欠です。注意を払ってくださいメッセージ内のRSSIパラメーターではありません。
有効にすると、C0、C1、C2、C3コマンドを送信モードまたはWOR送信モードで送信して、レジスタを読み取ることができます。登録0x00:現在のアンビエントノイズRSSIレジスタ0x01:RSSIデータが前回受信されたとき。
| RSSI周囲ノイズ有効化 | 一定の値 |
|---|---|
| 有効にする | rssi_ambient_noise_enabled |
| 無効(デフォルト) | rssi_ambient_noise_disabled |
このような定義を適用することにより、この定数のセットを変更できます。
#define e220_22 //設定なしのデフォルト値
最大パワーとして22dbmのE220に適用されます。
低電力供給効率のため、低出力トランスミッションは推奨されません。
| トランスミッションパワー(近似) | 一定の値 |
|---|---|
| 22dbm(デフォルト) | Power_22 |
| 17dbm | Power_17 |
| 13dbm | Power_13 |
| 10dbm | Power_10 |
最大パワーとして30dbmのE220に適用されます。
低電力供給効率のため、低出力トランスミッションは推奨されません。
#define e220_30
| トランスミッションパワー(近似) | 一定の値 |
|---|---|
| 30dbm(デフォルト) | Power_30 |
| 27dbm | Power_27 |
| 24dbm | Power_24 |
| 21dbm | Power_21 |
これを定義すると、チャネル周波数を構成できます。
//の1つ #define freucre_433 #define fuelveric_170 #define fuelveric_470 #define freuce_868 #define freucre_915
有効になると、モジュールはワイヤレスデータを受信し、シリアルポートTXDを介して出力した後、RSSI強度バイトに従います
| rssiを有効にします | 一定の値 |
|---|---|
| 有効にする | rssi_enabled |
| 無効(デフォルト) | rssi_disabled |
送信モード:各ユーザーのデータフレームの最初の3バイトは、固定伝送モードで高/低アドレスおよびチャネルとして使用できます。モジュールは、送信時にアドレスとチャネルを変更します。また、プロセスを完了した後、元の設定に戻ります。
| ビットを有効にする送信を固定しました | 一定の値 |
|---|---|
| 送信モードを固定しました | ft_fixed_transmission |
| 透明な伝送モード(デフォルト) | ft_transparent_transmission |
有効にすると、ワイヤレスデータが送信される前に監視され、ある程度の干渉を回避しますが、データの遅延を引き起こす可能性があります。
| LBTを有効にするバイト | 一定の値 |
|---|---|
| 有効にする | LBT_ENABLED |
| 無効(デフォルト) | LBT_DISABLED |
WORが送信されている場合:WORレシーバーがワイヤレスデータを受信し、シリアルポートから出力した後、WORを再び入力する前に1000msが待機します。ユーザーは、この期間中にシリアルポートデータを入力し、ワイヤレスで返すことができます。各シリアルバイトは1000msで更新されます。ユーザーは、1000ms以内の最初のバイトを送信する必要があります。
| ワイヤレスウェイクアップ時間 | 一定の値 |
|---|---|
| 500ms | wake_up_500 |
| 1000ms | wake_up_1000 |
| 1500ms | wake_up_1500 |
| 2000ms(デフォルト) | wake_up_2000 |
| 2500ms | wake_up_2500 |
| 3000ms | wake_up_3000 |
| 3500ms | wake_up_3500 |
| 4000ms | wake_up_4000 |
まず、何かが受信バッファーにあるかどうかを確認するためのシンプルだが実用的な方法を導入する必要があります。
int vayaver();
現在のストリームにあるバイトの数を返すのは簡単です。
通常/透明な送信モードは、同じアドレスとチャネルを持つすべてのデバイスにメッセージを送信します。
メッセージを送信/受信する方法はたくさんありますが、詳細に説明します。
respondestatus sendmessage(const string message);
ResponseContainer receivemessage();
最初の方法はsendMessageであり、通常モードのデバイスに文字列を送信するために使用されます。
respondestatus rs = e220ttl.sendmessage( "prova"); serial.println(rs.getResponsEdescription());
他のデバイスは、単にループで実行されます。
if(e220tl.abailable()> 1){
ResponseContainer rs = e220ttl.receivemessage();
文字列メッセージ= rs.data; //最初にデータを取得します
serial.println(rs.Status.getResponsEdescription());
serial.println(メッセージ);
}
バッファーで複数のメッセージを受け取っていて、一度にそれらをすべて読みたくない場合は注意してください。 ResponseContainer rs = e220ttl.receiveMessageUntil();メッセージを送信する最後にデリミッターが置かれています。
RSSIを有効にした場合は、 receiveMessageRSSI使用する必要があります。
複雑な構造を送信する場合は、この方法を使用できます
restonsestatus sendmessage(const void *message、const uint8_t size);
Respondestructcontainer recivemessage(const uint8_t size);
たとえば、構造を送信するために使用されます。
struct messaggione {
charタイプ[5];
CHARメッセージ[8];
ブール・ミティコ;
};
struct messaggione messaggione = {"temp"、 "peple"、true};
respondestatus rs = e220ttl.sendmessage(&messaggione、sizeof(messaggione));
serial.println(rs.getResponsEdescription());
そして反対側はあなたがメッセージを受け取ることができるので
RespondestructContainer RSC = e22ttl.receivemessage(sizeof(messaggione));
struct messaggione messaggione = *(messaggione *)rsc.data;
serial.println(messaggione.message);
serial.println(messaggione.mitico);
rsc.close();
RSSIを有効にした場合は、 receiveMessageRSSI使用する必要があります。
メッセージの最初の部分を読み、より多くのタイプの構造を管理する場合は、この方法を使用できます。
ResponseContainer ReceiveInitialMessage(const uint8_t size);
タイプまたはその他の文字列を受信するために、ロードする構造を識別するために作成します。
struct messaggione {//タイプのない部分構造
CHARメッセージ[8];
ブール・ミティコ;
};
char type[5]; // first part of structure
ResponseContainer rs = e220ttl.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 = e220ttl.receiveMessage(sizeof(Messaggione));
struct Messaggione messaggione = *(Messaggione*) rsc.data;
rsc.close();
同様に、固定伝送で使用する一連のメソッドを作成します。
宛先デバイスは、固定モードを設定するときにアドレスとチャネルを使用してプリアンブルを受信しないため、送信方法のみを変更する必要があります。
したがって、文字列メッセージについては、持っています
respondestatus sendfixedmessage(byte addh、byte addl、byte chan、const string message);
responsestatus sendbroadcastfixededmessage(byte chan、const string message);
そして、構造のために、あなたは持っています
ressomeStatus sendfixedmessage(byte addh、byte addl、byte chan、const void *message、const uint8_t size);
respondestatus sendbroadcastfixededmessage(byte chan、const void *message、const uint8_t size);
これが簡単な例です
respondestatus rs = e220ttl.sendfixedmessage(0、0、0x17、&messaggione、sizeof(messaggione)); // restonsestatus rs = e220ttl.sendfixedmessage(0、0、0x17、 "ciao");
固定トランスミッションには、より多くのシナリオがあります
特定のデバイス(2番目のシナリオ固定伝送)に送信する場合は、Addl、Addh、およびChanを追加して直接識別する必要があります。
respondestatus rs = e220ttl.sendfixedmessage(2、2、0x17、 "メッセージへのメッセージ");
指定されたチャネル内のすべてのデバイスにメッセージを送信する場合は、この方法を使用できます。
Respondestatus rs = e220ttl.sendbroadcastfixededmessage(0x17、 "チャネルのデバイスへのメッセージ");
ネットワーク内のすべてのブロードキャストメッセージを受信したい場合は、 ADDHとADDL BROADCAST_ADDRESSで設定する必要があります。
RespondestructContainer C; c = e220ttl.getConfiguration(); //他のすべての操作の前に構成ポインターを取得することが重要です 構成configuration = *(configuration *)c.data; serial.println(c.status.getResponsEdeDescription()); 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); c.close();
今、あなたはあなたの仕事をするためのすべての情報を持っていますが、私はすべての可能性をよりよく理解するためにいくつかの本当の例を示すことが重要だと思います。
Githubライブラリ