バージョン6.2.0、データ:2020年1月29日
著者:M。Westenberg([email protected])
著作権:M。Westenberg([email protected])
無断転載を禁じます。このプログラムと付随する資料は、この配布に伴うMITライセンスの条件の下で利用可能になり、https://opensource.org/licenses/mit-license.phpで入手できます。
このプログラムは、それが有用であることを期待して配布されますが、保証はありません。商品性や特定の目的に対するフィットネスの暗黙の保証さえありません。
Maarten Westenberg([email protected])が維持しています
まず第一に、このファイルとドキュメントを読んでください。残念ながら、すべてのメールでフォローアップする時間はありません。ピンアウトなどを含むほとんどの情報がこれらのページに含まれているため、それらを読んで残りの質問を投稿する時間があることを願っています。
Wemos D1ミニボードが10を超えていますが、一部は自分自身を構築しました。ハラードで10個以上、3つはComresultと4つのESP32ボードを構築しました。それらはすべて、このコードで問題なく動作します。しかし、私は、良いはんだ付けジョイントと配線がすべての違いをもたらすことを発見したので、説明できないリセット/エラーを取得した場合は、配線をもう一度見てください。
このリポジトリには、ESP8266用の単一チャネルLorawanゲートウェイの概念実装実装が含まれています。開始バージョン5.2 TTGO(およびその他)のESP32もサポートされています。ソフトウェアは、以下の例外と変更を除いて、標準のLoraゲートウェイを実装しています。
このロラゲートウェイは完全なゲートウェイではありませんが、1チャンネル/1つの周波数ゲートウェイだけを実装しています。完全なゲートウェイでサポートされる周波数の最小量は3で、ほとんどのサポート9以上の周波数があります。このソフトウェアは、ヨーロッパのほぼすべてのLoraノードに存在する単一の低コストのRRFM95チップが、SX1301チップを使用しているはるかに高価なフルゲートウェイの安価な代替品として使用できることを証明するための概念実証として始まりました。
このゲートウェイのソフトウェアは、プロジェクトの開発段階やデモの状況で使用されることがよくあるため、ソフトウェアは柔軟性があり、環境または顧客の要件に応じて簡単に構成できます。ソフトウェアと対話する方法は2つあります。
シングルチャネルゲートウェイの完全なドキュメントは、Things4u.github.ioにあります。Gatewayの章の下のハードウェアガイドをご覧ください。
シングルチャネルゲートウェイは、Hoperf RFM95Wトランシーバーを使用して、WEMOS D1 Miniを使用してゲートウェイでテストされています。テストは、868バージョンのLORAで行われ、433 MHzでのテストが行われました。再びテストされたロラノードは、このゲートウェイです。
このコードは、ハラードとComreultボードの両方に基づいて、少なくとも8つの別々のゲートウェイボードでテストされています。私はまだESP32ピンアウトと機能に取り組んでいます(すぐに予想されています)。
できるだけ少ない修飾子でシングルチャネルゲートウェイをコンパイルして起動することをお勧めします。これは、2つの構成ファイルのデフォルト設定を可能な限り使用し、WiFiセットアップのSSID/パスワードとloramodem.hで使用するESP8266のピンのみを変更する必要があることを意味します。このセクションでは、Webページを使用してさらに構成できる作業ゲートウェイを取得するために必要な最小構成について説明します。
ライブラリマネージャーを通じて:
これで、ゲートウェイが実行されているはずです。 Webページを使用して「デバッグ」を1に設定すると、シリアルモニターにパッケージが入っているのを見ることができるはずです。
単一のチャネルゲートウェイの構成を変更するには、次の2つの方法があります。
選択肢がある場合、オプション2ははるかにフレンドリーで便利です。
configgway.hファイルには、ユーザー構成可能なゲートウェイ設定が含まれています。すべてが#Defineステートメントを通じて定義を設定しています。一般に、#defineを1に設定すると、関数が有効になり、0に設定すると無効になります。
また、一部の設定は、#defineで値を設定することで初期化できますが、Webインターフェイスの実行時に変更できます。一部の設定では、#defineで関数を無効にすると、Webサーバーから関数も削除されます。
メモリの使用に関する注意:ESP8266には、プログラムスペースとSPIFFSファイルシステムに利用可能な膨大な量のメモリがあります。ただし、ヒープと変数で利用可能なメモリは約80Kバイトに制限されています(ESP-32の場合、これは高くなっています)。ユーザーは、メモリ使用量を節約するために使用されていない機能をオフにすることをお勧めします。ヒープが18 kバイト未満で低下すると、予想どおりに動作しない場合があります(極端な場合は、プログラムがクラッシュする可能性があります)。
confignode.hファイルは、wifiアクセスポイントと既知のセンサーの構造を1チャネルゲートウェイに設定するために使用されます。既知のWiFiアクセスポイント(SSIDおよびパスワード)の設定は、コンパイル時に実行する必要があります。
ゲートウェイがゲートウェイとしてだけでなく、デバッグ目的でも使用されている場合、使用済みはセンサーノードの名前だけでなく、特定のノードのメッセージを復号化することもできます。
ユーザーは、USBコンソールが出力メッセージに使用されるかどうかを判断できます。 _DUSBを0に設定する場合、シリアルによるすべての出力ISが無効になります(実際、シリアルステートメントはコードに含まれていません)。
#define _dusb 1
ゲートウェイでサポートされている操作のクラスを定義します。クラスAはサポートされており、バッテリーセンサーの基本操作が含まれています。
クラスBには、ビーコン/バッテリーモードが含まれています。ゲートウェイは、接続されたセンサーにビーコンを送信し、ダウンリンクのメッセージを同期させることができます。
クラスC(連続)動作モードには、おそらくバッテリーが動作しておらず、常にネットワークを聴くデバイスのサポートが含まれています。その結果、これらのデバイスの遅延もクラスAデバイスの場合よりも短くなります。クラスCデバイスはバッテリー電源に依存せず、次の送信ウィンドウまで受信ウィンドウを拡張します。実際、このトランスが続く限り、デバイスがリスニングを中止します。クラスCデバイスはクラスB操作を行うことはできません。
#define _class "a"
すべてのデバイスはクラスAデバイスとして開始され、クラスBまたはCに「アップグレード」することを決定する場合があります。また、ゲートウェイはクラスBのスーパーセットであるクラスBをサポートする場合とサポートできない場合があります。注:クラスAのみがサポートされています。
手に入れるボックスの2つのピンアウト構成をサポートしています。ハラードとコンプセルト。これら2つのいずれかを使用する場合は、パラメーターを正しい値に設定するだけです。 PINの定義が異なる場合は、これらの設定を反映するようにloramodem.hファイルを更新します。 1:ハラード2:Comresult Pin Out 3:ESP32ピンアウト4:その他、Loramodem.hであなた自身を定義します
#define _pin_out 1
通常の状況では、次のパラメーターのshoudlを0に設定します。これにより、システムはSpiffsファイルシステムのフォーマットをフォーマットできます。
#define spiff_format 0
_Spreading係数を目的のSF7、SF8 -SF12値に設定します。この値は、_CADに使用される値に密接に関連していることに注意してください。 _CADが有効になっている場合、_Spreadingの値は、すべてのSRADING要因が有効になっているため、ゲートウェイでは使用されません。
#define _spreading sf9
使用されるデフォルトの頻度は、loramodem.hファイルで変更できる868.1 MHzであることに注意してください。ユーザーは、このエッティングを変更せず、デフォルトの868.1 MHz周波数のみを使用することをお勧めします。
チャネルアクティビティ検出(CAD)は、着信メッセージ(アクティビティ)を検出するためのLORA RFM95チップの関数です。これらの着信メッセージは、よく知っている拡散因子SF7-SF12に到着する可能性があります。 CADを有効にすることにより、ゲートウェイは拡散要因のいずれかのメッセージを受信できます。
実際、通常の操作では、別の信号がすでにチャネルを使用していることを受信者に伝えるために使用されます。
CAD機能には(少ない)価格があります。CAD関数は、CHIPのRSSIレジスタ設定を使用して信号を受信したかどうか(またはノイズのみ)を判断するため、チップは非常に弱い信号を受信できません。その結果、非常に弱い信号は受信されていません。つまり、ゲートウェイの範囲がCADモードで縮小されます。
#define _cad 1
バージョン4.0.6からのように、ゲートウェイは、設定A_OTAがオンの場合、空気の更新を許可します。 Over the Airソフトウェアは、GatewayへのUSB上の4.0.6バージョンを設定すると、ソフトウェアが使用される(デフォルト)有効になる必要があります。
最初のリリースは、IDEを使用してOTA関数のみをサポートします。これは、実際にはIDEがゲートウェイと同じネットワークセグメントにある必要があることを意味します。
注:どこかでネットワークでBonjourソフトウェア(Apple)を使用する必要があります。ほとんどのプラットフォームではバージョンが利用できます(たとえば、Windows用のiTunesが付属しています)。 Bonjourソフトウェアにより、ゲートウェイはMDNSを使用してOTAによって設定されたゲートウェイIDを解決できます。その後、IDEにダウンロードポートが表示されます。
TODO:OTAソフトウェアは、wifimanagerソフトウェアと共同で(まだ)テストされていません。
#define a_ota 1
この設定により、Webサーバーが可能になります。ウェブサーバー自体は多くのメモリを取得していますが、GateWowayTimeを構成し、その動作を検査するのに大いに役立ちます。また、受信した最後のメッセージの統計も提供します。 A_REFRESHパラメーターは、WebサーバーがX秒ごとに更新するかどうかを定義します。
#define a_server 1 //この定義が設定されている場合にのみローカルWebサーバーを定義します
#define a_refresh 1 //は、はい/いいえを更新することができますか? (はいは大丈夫です)#define a_serverport 80 //ローカルウェブサーバーポート
#define a_maxbufsize192 //は128を超えている必要がありますが、動作するのに十分小さい必要があります
A_REFRESHパラメーターは、WebBrowserでYES/NO設定を更新できるかどうかを定義します。ウェブブラウザーの設定は通常、デフォルトとして「いいえ」に置かれていますが、define on "1"にその設定を有効にしたままにしておくことができます。
ゲートウェイにプリセットの拡散係数とデフォルトの頻度でダウンリンクメッセージを送信するには、_strict_1chパラメーターを1に設定する必要があります。1に設定されていない場合、ゲートウェイはバックエンドサーバーによって設定された周波数と拡散係数を使用してダウンリンク要求に応答することに注意してください。そして、TTNは、RX2タイムスロットのSF9-SF12のダウンリンクメッセージ、および周波数869.525MHzおよびSF12で応答します(RX2タイムスロットを送信する際のLORA標準によると)。
#define _strict_1ch 0
このパラメーターのデフォルト設定を変更しないことをお勧めします。
OLEDを設定することにより、I2Cを介してOLEDパネルで動作するようにシステムを構成します。一部のパネルは、SPIとI2Cの両方で機能し、I2Cがソーバーしています。ただし、SPIはRFM95トランシーバー通信に使用されるため、このソフトウェアでは動作しないため、これらのいずれかを使用して容認されます。代わりに、I2Cで動作するOLEDソリューションを選択します。
#Define OLED 1
OLEDについては、次の値が定義されています。
これが定義されたら(== 1)、すべてのメッセージの統計を収集し、Spiffsファイルシステムに出力します。統計のために、それぞれの固定数のレコードで多数のファイルを使用していることを確認します。 REC番号は、各統計ファイルで許可されているレコードの数を教えてくれます。 REC番号が許可されているレコードの数よりも高いとすぐに、新しいファイルを開きます。ファイルの数が統計ファイルの数値を超えたら、最も古いファイルを削除して新しいファイルを開きます。 GUI画面の上部にある「ログ」ボタンを選択すると、すべてのrログファイルはUSBシリアルデバイスのOUPTUです。このようにして、GUI画面やシリアル出力に適合するよりもはるかに多くのレコードを調べることができます。
#define stat_log 1
I2C SDA/SCLピンの設定は、OLEDの#defineの直後にconfiggway.hファイルで実行されます。標準ESP8266は、I2CバスSCLおよびSDAラインにピンD1とD2を使用しますが、これらはユーザーが変更できます。通常、thsiは必要ありません。 OLED関数は_loramodem.inoファイルにあり、他のフィールドを表示するように適合させることができます。関数はメッセージが受信されたときに呼び出されます(!)。したがって、これらの関数は予想よりも多くの時間が必要になる可能性があるため、これはESPの不安定性に追加されます。その場合、OLED関数をオフにするか、ユーザー時間で表示されるメインループ()の関数を構築します(割り込みではありません)。
ゲートウェイでは、2つのサーバーに同時に接続できます(ほとんどのLora GatewaysがBTWであるため)。 Things Network(TTN)を使用している場合に備えて、少なくとも1つの標準Loraルーターに接続する必要があります。
#define _ttnserver "router.eu.thethings.network"
#define _ttnport 1700
独自のサーバーをセットアップした場合は、独自のルーターURLと独自のポートを使用して次のように指定できます。
#define _thingserver "your_server.com" // lora udp.jsサーバープログラムのサーバーURL
#define _thingport1701 //あなたのUDPサーバーはこのポートを聴く必要があります
ゲートウェイのIDパラメーターを設定します。
#define _description "esp-gateway"
#define _email "[email protected]"
#define _platform "esp8266"
#define _lat 52.00
#define _lon 5.00
#define _Alt 0
ゲートウェイをノードとして使用することが可能です。これにより、ローカル/内部センサーの値が報告されます。これはCPUであり、センサーメッセージを作成するにはEASおよびCMAC関数が含まれるため、メモリ集中機能です。
#define gatewaynode 0
さらに下のconfingode.h構成ファイルでは、ゲートウェイノードのアドレスとその他のLORA情報を設定することができます。
WiFiでゲートウェイを構成する最も簡単な方法は、WiFimanager関数を使用することです。この関数は箱から出して動作します。 Wifimanagerは、GatewayをAccessPointモードに配置して、WiFiアクセスポイントとして接続できるようにします。
#define _wifimanager 0
WiFiマネージャーが有効になっている場合は、ゲートウェイがアクセスポイントモードとパスワードにある場合は、アクセスポイントの名前を必ず定義してください。
#define ap_name "esp8266-gway-things4u"
#define ap_passwd "ttnautopw"
ゲートウェイで使用される標準のアクセスポイント名は「ESP8266 GWAY」で、そのパスワードは「TTANOUTOPW」です。携帯電話またはコンピューターでアクセスポイントにバインディングした後、ブラウザでhtp://192.168.4.1にアクセスし、どのWiFiネットワークを接続したいかをゲートウェイに伝え、パスワードを指定します。
ゲートウェイは、特定のネットワークにリセットしてバインドします。すべてがうまくいけば、これで設定され、ESP8266は接続する必要があるネットワークを覚えています。注:ゲートウェイがバインドされているアクセスポイントが存在する限り、ゲートウェイは既知のアクセスポイントのWPAリストではもはや動作しません。必要に応じて、Webサーバーの現在のアクセスポイントを削除し、ゲートウェイをパワーサイクリングして、WPAアレイを再度読み取らせることができます。
#if gatewayNode == 1
#define _devaddr {0x26、0x01、0x15、0x3d}
#define _appskey {0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00}
#define _nwkskey {0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00}
#define _sensor_interval 300
#endif
組み込みのWebサーバーを使用して、ステータスとデバッグ情報を表示できます。また、Webサーバーを使用すると、ユーザーはデバッグレベルやCAD関数のオンとオフなど、実行時に特定の設定を変更できます。次のURLでアクセスできます:http://:80 StartupのESP8266にルーターによって与えられたIPはここでです。おそらく192.168.1.xxのようなもので、Webサーバーはさまざまな構成設定を表示し、パラメーターを設定する機能を提供します。
Webサーバーを使用して、次のパラメーターを設定できます。
ソフトウェアはいくつかのソフトウェアに依存しており、ESP8266のArduino IDEが最も重要です。このプログラムでは、他のいくつかのライブラリも使用されています。IDEにそれらのライブラリをインストールしてください。
便利なため、ライブラリはライブラリディレクトリのこのGitHubリポジトリにもあります。それらはESP 1Channelゲートウェイの一部ではなく、独自のライセンスを持っている可能性があることに注意してください。ただし、これらのライブラリは、シングルチャネルゲートウェイソフトウェアの一部ではありません。
構築および接続の手順については、ハードウェアセクションのhttp://things4u.github.ioを参照してください。
次の依存関係は、単一のチャネルゲートウェイに有効です。
次のことは、単一のチャネルゲートウェイに作成するための私のウィッシュリストにまだあります。
このリポジトリのゲートウェイスケッチのソースファイルは、MITライセンスの下で利用可能になります。このリポジトリに含まれるライブラリは便利なためにのみ含まれており、すべて独自のライセンスがあり、ESP 1CHゲートウェイコードの一部ではありません。