この記事は、2023年の M5Stack アドベントカレンダー の 11日目の記事です。
はじめに
前回までにM5Stackを使ってゲートウェイ経由でAWS IoT Core for Wirelessに接続することができました。今回は、SenseCAP T1000が送っているデータをM5Stackで覗いてみます。
受信概要
前回同様、Grove-Wio-E5を使用します。このデバイスでは周波数を指定して1つのチャンネルを受信することができます。LoRaWANの仕様では、ゲートウェイは2つのチャンネルでデバイスから送られる電波を待機するようになっており、SenseCAP T1000はゲートウェイ向けに2つのチャンネルでランダムに(実際にはチャンネルの空きを判断しながら)送信します。今回はそのうちの片方を決め打ちで受信するようにします。
受信したデータはLoRaWANの仕様で暗号化されています。これを util-lorawan-packets を使って復号化します。オリジナルではダウンリンクのみ対応していたので、アップリンクデータも対応するようにして利用させていただきました。LoRa Allianceで公開されている仕様を参考にしました。
また、以下のサイトではオンラインでパケットの内容を確認できるので、データを受信した後の処理の確認など、非常に役立ちます。
LoRaWAN packet decoder
SenseCAP T1000が送信するデータは、こちらの Tracker T1000 ユーザーガイド に記載されています。
指定した間隔(1分間)などで、ID=0x06 の GNSS Location and Sensor Packet が送信されていることが確認できます。たまに,ユーザーガイドに記載されていない ID=0x11 のデータが送信されます。こちらはデータを見ると ID=0x06 に位置情報が含まれていないような内容なので、GPSが取得できない場合のイベント情報なのかもしれません。
ソースコード
ソースコードは こちら をご覧ください。
実行例
このようなログが出力されます。
+TEST: LEN:35, RSSI:-46, SNR:10
+TEST: RX "8000000000C04D0505325DE8A00787ECBD578FCB3E3DD377A78ABA739F172211221122"
LoRa| LoRaWAN Packet (Uplink)
LoRa| --------------
LoRa| MIC: 11221122
LoRa| MHDR: CONFIRMED_DATA_UP v0
LoRa| BODY:
LoRa| - mac.port: 5
LoRa| - mac.payloadLength: 22
LoRa| - mac.FCnt16: 1357
LoRa| - mac.DevAddr: 00000000
LoRa| - FCtrl: ADR 1, ADRACKReq 1, ACK 0, ClassB 0, FOptsLen 0
LoRa| PAYLOAD: 06 00 00 00 00 12 34 56 78 90 12 34 56 78 90 12 10 00 ba 00 00 39
id: 06
eventStatus: 000000
motionSegmentNumber: 0
utcTime: 1701656377
longitude: 139.000000
latitude: 35.000000
temperature: 18.6
light: 0
batteryLevel: 57
+LOG: DEBUG 8459517 TEST TIME, 8459498, 8000000000C04D0505325DE8A00787ECBD578FCB3E3DD377A78ABA739F172211221122, -46, 10, 69310563, 322, 3150
+LOG: DEBUG 8459518 LORA RX, 8000000000C04D0505325DE8A00787ECBD578FCB3E3DD377A78ABA739F172211221122, -46, 10
さいごに
T1000が送信する、位置情報、気温、などをM5Stackで簡単に確認できるようになりました。
もしAmazon Sidewalkが日本に上陸することがあれば、この仕組みでテストできるかも?
https://sidewalk.amazon/testkit