xDOT DK に BME280 を接続する。
xDTO DK に 温度・湿度・気圧センサーである BME280 を接続した時のメモ書きです。
<BME280の接続>
I2C i/f を使う設定で、デバイスのアドレスを5番ピンをGNDに接続し、0x76で使うようにします。
VDD(1), GND(2), SDA(4), SCL(6) それぞれを xDOT DK へ接続します。
これで、センサー端末側のハード的な準備は、完了となります。
<xDOTファームウェアの作り込み>
- LoRaWAN通信プログラム
以前のページ( ”xDOT DK 標準環境でカスタムファームウェアを動作させる")で使った XDOT-Devicewiseをベースに使用します。 - BME280センサープログラム
BME280_Helloサンプルページがありますので使用方法が確認できます。このページの中に、BME280 I2C用ライブラリがありますのでインポートします。I2C用ライブラリー と SPI用ライブラリー の2つが存在しますので、使用するi/fのライブラリをインポートします。
- センサー端末プログラミング
前記しました2つのプログラムで動作確認後、オリジナルプログラムに改良します。 センサー端末プログラムから LoRaWANパケットとして送り出すデータフォーマットと送り出すタイミングは、それぞれの用途で独自に定義できますので、詳細に関しては、ここでは控えます。
コンパイル後のバイナリーファイルを保存し、xDOTドライブへドラッグ&ドロップする事で BME280センサー+照度センサーを使った カスタムファームウェアを書込みます。その後、リセットボタンを押し、リブートさせます。
<ConduitAEP側のプログラミング>
プログラミングに関しましては、自由ですので言及しませんが、ヒントなる情報をメモ書きします。
node-red のサンプルフローは次の通りとなります。
- ヒント1
センサー端末からの受信には、"lora in"ノードを使用します。この時、引き渡される msg の内容を確認すると、
が確認できます。
送信側(センサー端末)でセットしたデータは、"payload"で示される文字列部分ですが、センサー端末情報(appeui, deveui 等)までが取得出来るようになっていますので、端末識別も 端末情報をデータベース化し比較する事で端末毎の処理が可能になります。 lora in ノードのメッセージオブジェクトの情報詳細は、Node-red の lora in ノードを選択し、右側 info タブをクリックする事で確認できますので参照してください。
- ヒント2
function ノードで、java script を実行する となっておりますので、java script のコーディング手法が必要となります。併せて java script の書き方を一読してください。
- ヒント3
AT&TにアクセスするREST APIサンプル
- ヒント4
xDOT から送信するデータサイズを増やしていったら、ある時、次のような メッセージが
吐き出されたので、データサイズを短くする事で対処。
Scan... Temperature: 27.68 degC, 1017.60 hPa, 48.81 , Light: 366 lux, Button: 0 Transmitting Data... Sending: 'id:04004baf, t:27.68, p:1017.600, h:48.81, l:366,c:0' ERROR: Failed to Send Data - -1:Invalid Parameter, Data exceeds datarate max payload 51 bytes ERROR: Failed to Send Data - -1:Invalid Parameter, Data exceeds datarate max payload 51 bytes Scanning... Scan... Temperature: 27.69 degC, 1017.63 hPa, 48.80 , Light: 366 lux, Button: 0
以上
Please log in to post comments.