
この例は、AVR64DD32を使用して、温度、湿度、気圧、土壌水分を監視し、そのデータを3分ごとにThing Network(TTN)を介してアプリケーションに送信するロラワンエンドノードを作成する方法を示しています。ノードは、都市環境のロラワンゲートウェイから10メートルから5キロメートルの間に配置できますが、郊外の場所では範囲が広くなっています。このデザインは、長距離であっても、非常に低い電力を消費するように構成されている/バッテリー寿命が長くなり、価値のあるデータを安全に移動する方法を示しています。この設計は、追加のゲートウェイやインフラストラクチャを追加することなく、農業プロット全体に追加のノードを配置することにより、土壌の変動データをキャプチャできるように簡単に拡張できます。
このデモは、915 MHz周波数帯域で動作し、米国およびオーストラリアベースのプロジェクトに適したRN2903Aモジュールを使用しますが、プロジェクトは、お住まいの地域の代替クリックボード™とゲートウェイを選択することにより、他の地域で作業するために簡単に適応します。
ナノアダプターボードにコンポーネントを追加します。
LR2を[Mikrobus™2]をクリックすると、天気はMikrobus 1をクリックします。
図1に示すように、水分センサーリードを接続します。
最後に、(PA1)とPD1の間にジャンパーワイヤーを追加して、LR2クリックのリセットを可能にします。 (PA1)はデフォルトで接続されていません(外部クロックに既に接続されているため)。その結果、このプロジェクトにより、PD1ピンがリセット信号を駆動できます。
| ジャンパーワイヤー | ピン |
|---|---|
| VCC-水分センサーからの赤いワイヤー | VCC |
| GND-水分センサーからの黒いワイヤー | GND |
| aout-水分センサーからの黄色のワイヤ | PD2 |
| (PA1) - ジャンパーの間に配置します | PD1 |

図1。ハードウェアのセットアップ

図2。MPLABxでプロジェクトを開きます
プロジェクトがオープンしたら、センサーの校正から始めます。
湿気センサーを校正するには、 application.cファイルを開き、初期状態をTEST_MOISTUREに変更します。

図3。初期状態をtest_moistureに設定します
後でこれらの設定は、土壌と植物のニーズに固有のものにすることができますが、簡潔にするために、乾燥した空気と一杯の水でテストすることにより、測定の上限と下限から始めます。
センサーが乾燥した空気に吊り下げられるようにします。

図4。乾燥した空気に配置されたセンサー
次の設定でデータビジュアライザーを開始します。
ボーレート:9600
char長:8ビット
パリティ:なし
停止ビット:1
[ターミナルへの送信]をクリックしてから、デバイスを作成してプログラムします。

図5。DataVisualizer送信端末

図6。デバイスを作成してプログラムします
プログラムが開始されると、ボタンを押してアナログ間コンバーター(ADC)の読み取りを生成するように求められます。センサーを乾燥した空気に入れてボタンを数回押し、センサーに水を1杯置き、ボタンをさらに数回押します。
図7は、2つの測定値を示しています。乾燥した空気サンプルを収集するとき、ADCの読み取り値は3000近くになります。水サンプルを収集すると、読み取り値は1400近くになります。

図7。乾燥した空気と一杯の水中のADC値
結果に注意して、 application.hファイルを開きます。結果を使用してIN_MAXとIN_MINの定義を交換し、それらの値を使用して、示されている式を使用してCONVERSION_PERCENTを計算します。

図8。土壌水分の定義
天気のクリックを調整するには、1つの小さな変更のみが必要です。残りはソフトウェアの世話をします。正確な圧力読み取り値を取得するには、デバイスは現在の標高を海抜を使用する必要があります。 bme.hファイルの24行にこの値を入力します。

図9。天候の標高クリック
次に、プロジェクトのTTN側をセットアップします。
まだ行っていない場合は、TTNを使用してアカウントを設定します。 Community Editionは公正に使用できます。セットアップのセットアップは、地域クラスターの選択から始まります。ここをクリックして開始します。
アカウントを設定した後、コンソールに移動し、 [アプリケーションに移動]をクリックします。

図10。アプリケーションのセットアップ
[アプリケーションの作成]ボタンをクリックし、手順に従ってアプリケーションを作成します。

図11。アプリケーションを作成します
アップリンクでペイロードフォーマッタをクリックします。

図12。アプリケーションアップリンクペイロードフォーマッタ
セットアップフォーマッタタイプ*で、カスタムJavaScriptフォーマッタを選択します。

図13。カスタムJavaScriptフォーマッタを選択します
デフォルトのdecodeUplink関数を次のスニペットに置き換えます。
function decodeUplink ( input ) {
var data = { } ;
data . temp = input . bytes [ 0 ] ;
data . humidity = input . bytes [ 1 ] ;
data . moisture = input . bytes [ 2 ] ;
data . pressure = ( input . bytes [ 3 ] + 900 ) ;
return {
data : data
} ;
}図14。アップリンクコードスニペットをデコードします
[保存]をクリックして、概要ページに戻ります。
[アプリケーションの概要]ページから、 [デバイスの登録]ボタンをクリックします。

図15。OTAAのエンドデバイスの登録
デバイスを登録するには、モジュールからいくつかの詳細が必要です。 application.cファイルをもう一度開き、状態を変更して登録します。

図16。登録に状態を変更します
データビジュアライザーを起動し、デバイスを再度構築してプログラムします。プログラムが実行されたら、HWEUIをコピーして、Lorawan仕様に注意してください。

図17。データビジュアライザーのエンドデバイスの詳細
TTNのレジスタエンドデバイスウィンドウに戻り、[エンドデバイスの詳細を手動で入力]を選択します。場所に基づいて頻度計画を選択し、ロラワン仕様を選択します。プロビジョニング情報セクションで、joineUIフィールドのすべてのゼロを入力し、 [確認]をクリックします。

図18。新しいデバイスの登録
以前にコピーしたHWEUIをDeveUIフィールドに貼り付け、 [生成]をクリックして新しいAppKeyを生成します。

図19。新しいAppKeyを生成します
エンドデバイスが作成され、ペイロードフォーマッタが必要になります。
フォーマッタをセットアップする最も簡単な方法は、Pasteアプリケーションフォーマッタボタンを使用することです。 [ペイロードフォーマッタ]ボタンをクリックして、[カスタムJavaScriptフォーマッタオプションを選択し、 [Paste]アプリケーションのフォーマッタを押します。

図20。アプリケーションのフォーマッターを貼り付けます
TTNに、エンドデバイスの概要ページを開くには、プロジェクトのRN2XX3ヘッダーファイルにコピーして貼り付ける2つのフィールドがあります。 Deveuiをクリックして、 RN2xx3.h定義のHWEUIフィールドに貼り付けます。 AppKeyフィールドをコピーして、AppKeyの定義に貼り付けます。

図21。DeveuiとAppkeyをクリップボードにコピーします

図22。HWEUIおよびAppKeyの定義を更新します
この例では、お近くにパブリックTTNゲートウェイがあるか、自分でセットアップを設定していることを前提としています。自分のゲートウェイを持つことは、問題が発生した場合のトラブルシューティングに非常に役立ちます。独自のゲートウェイをセットアップしたい場合は、2つの役立つガイドがHackster ProjectとRak Developer Gatewayにあります。
ゲートウェイにアクセスできるようになったら、 application.cファイルを再度開き、状態をinitに戻してテストを続けます。

図23。INITに戻ります
Data Visualizerをもう一度起動し、デバイスを再プログラムします。

図24。データビジュアライザーを開始します
アプリケーションが開始されると、モジュールが初期化されます。ボタンを押して、TTN手順を開始します。
チャネル周波数計画の設定には、完了するまでに約10秒かかります。その後、参加要求が受け入れられた場合、デバイスは最初のペイロードを送信します。デバイスが接続しない場合、いくつかの提案が与えられます。一般的な問題は、ゲートウェイ、誤ったキー、またはゲートウェイが一時的に切断されている可能性があります。通常、図25のような出力が表示されるはずです。

図25。JoinRequestが受け入れられたときの出力
このプロジェクトでは、ノードは3分ごとに新しいデータを送信します。 1日に1回、この最初の送信のように、データを確認されたペイロードとして送信します。確認されたメッセージには、ネットワークからの確認が必要ですが、ゲートウェイでの放送時間やノードのバッテリー寿命も消費します。したがって、毎日次の479のメッセージは未確認のメッセージとして送信されます。
このプロジェクトは、ポート10で確認されたすべてのメッセージとポート11の未確認のメッセージを送信します。以下の図26には、アプリケーションのライブデータウィンドウを表示できます。最初の確認メッセージを結合して送信した後、ノードは3分ごとに未確認のメッセージをアプリケーションに送信します。

図26。ポート10で確認されたメッセージとポート11の未確認のメッセージ
この例は、Mikroe LR2クリック、Mikroeの天気クリック、土壌水分センサーを使用してAVR64DD32を使用してLorawan Endノードをセットアップする方法を示しています。