SPGPSTRACK -LORAWAN GPSマッピング
このプログラムは、マッピング目的のためのLorawan GPSトラッカーです。ArduinoUNO用のDragino Lora/GPSシールドとESP32 TTGO T-Beam(T22_V07でテスト)のために開発されました。
- ABPとして構成して、カバレッジがない場所でデバイスに電源を入れることができます
- すべてのxメートルの場所を送信します
- cayennelppと手動ペイロードデコーダー機能の間のペイロード形式を選択できます
- ソフトウェアは確認されたアップリンクをサポートし、Arduinoはビープ音を立てます
- ハードウェアオーバーハードウェアシリアルまたはソフトウェアのシリアルを読むことができるので、実際の操作中に何が起こっているのかを確認すれば開発が簡単になります
- ハードウェアのシリアル使用の場合、デバッグ用のソフトウェアシリアルを有効にすることができます
やる
- 時限伝送。トラッカーが動いていないときにも実行されます。たとえば、1時間ごとに、トラッカーがまだ生きているかどうかを確認します。
- 低電力オプション
ESP32サポート[状態:仕事では、Branch Developを参照してください。 SPI構成はバックトレースを生成します]ハードウェア:ESP32 UNO、WEMOSとしてブランド化されていますESP32はすでにFOT TTGO T-Beamを実装しています- ESP32の代替WiFi位置
クイックスタート
- TTNコンソールで、アプリケーションを作成し、新しいデバイスを登録します(ABPとして)
- Lorawanデバイス情報とキーをスケッチにコピーする
- ボードを積み重ねて、スケッチをボードにアップロードします。スケッチをアップロードするには、Draginoのリセットボタンを押したままにしておく必要があります。 (そのボタンを押すことなくアップロードできれば、これはドラガノジャンパーまたはスケッチのシリアル設定に何か問題があることのサインになる可能性があります)
- TTNコンソールにトラフィックが表示されたら、ペイロードデコーダー機能の構成を進めることができます。
- (TTNコンソールにトラフィックが表示されない場合は、ゲートウェイまで距離があると確信していますが、フレームカウンターとDraginoジャンパーを確認してください)
- ttnmapper-統合を構成し、最初のトライアウトの時間の実験名を指定します(または、成功した接続ドットの雲で家の場所を開示します)
- このリストの最後に新しい実験を見つける必要があります。
ESP32
T22_07のSPIピン設定は、LMICでまだ実装されていません! - > matthijskooijman/arduino-lmic#164
- >ライブラリのSPIピンを直接変更します
注意!!! LMICを使用して他のハードウェアも使用している場合は、これをリセットすることを忘れないでください
hal.cpp line 79
static void hal_spi_init () {
//SPI.begin();
SPI . begin ( 5 , 19 , 27 );
}依存関係
- Arduino lmic
- tinygps ++
- Arduino Library Managerからのcayennelpp(オプション)インストール
構成:
- txdist-定義する、距離[メートル]、その後位置が送信されます
- SF-ロラワン拡散係数(DR_SF7 -DR_SF12)7および8のマッピングに推奨される7および8
- single_channel-シングルチャネルゲートウェイにロラワンチャンネル0のみを使用する
- 確認-D5をピン留めするためにブザーを接続する場合にのみ、確認されたアップリンクを有効にしてください!そうしないと、この機能は役に立たない
- soft_serial-ハードウェアシリアルを使用するためのuncemmentそれ以外の場合は、ソフトウェアシリアルが使用されます。その場合、GPSモジュールをRXPINとTXPINに接続します
- デバッグ - ハードウェアシリアルを使用する場合は、デバッグを有効にして、ソフトウェアシリアルでデバッグ出力を取得できます。ソフトウェアシリアルをまったく使用しないように無効にしてください
- cayennelpp-ペイロード形式としてcayennelppを使用する場合、それ以外の場合はデコーダーペイロード機能を使用します
ペイロード機能
function Decoder ( bytes , port ) {
var decoded = { } ;
// if (port === 1) decoded.led = bytes[0];
decoded . latitude = ( ( bytes [ 0 ] << 16 ) >>> 0 ) + ( ( bytes [ 1 ] << 8 ) >>> 0 ) + bytes [ 2 ] ;
decoded . latitude = ( decoded . latitude / 16777215.0 * 180 ) - 90 ;
decoded . longitude = ( ( bytes [ 3 ] << 16 ) >>> 0 ) + ( ( bytes [ 4 ] << 8 ) >>> 0 ) + bytes [ 5 ] ;
decoded . longitude = ( decoded . longitude / 16777215.0 * 360 ) - 180 ;
var altValue = ( ( bytes [ 6 ] << 8 ) >>> 0 ) + bytes [ 7 ] ;
var sign = bytes [ 6 ] & ( 1 << 7 ) ;
if ( sign )
{
decoded . altitude = 0xFFFF0000 | altValue ;
}
else
{
decoded . altitude = altValue ;
}
decoded . hdop = bytes [ 8 ] / 10.0 ;
return decoded ;
}