Meshtastic について
Meshtastic は LoRa を使ってインターネットに依存せずにメッセージをやり取りできるメッシュネットワークを作る、オープンソースのオフグリッド通信プロジェクトです。低価格なデバイスで、資格等不要で数km以上の長距離通信が可能な点が魅力です。
日本では狭さと高いモバイルの普及率、電波法の規制等から、この手のものは全然流行らなくて寂しいところですが。。M5 から Unit C6L が発売され、技適も通っていることから、手軽に使えるようになりました。
M5Stack C6L Meshtasticユニット(SX1262、ESP32-C6)www.switch-science.com
スマートフォンアプリからBluetooth接続してメッセージの送信を行います。受信時は本体からブザーで知らせてくれます。
海外だとキーボード付きのT-Deck Plus等もよく使われていますが、例によって技適が課題…
LilyGo T-Deck Plus
Arduino (MKR WAN 1310) からメッセージを送信できる?
Meshtastic firmware 自体にもセンサーを読み取ってデータ送信する機能はあるのですが、ESP32よりももっと低消費電力なノードから一方的に送信したいといった用途だと、同じく LoRa 等を積んだ Arduino MKR 等を使いたくなるかもしれません。
まあ別に Meshtastic じゃなくてもいいじゃんという気もしますが、同じ LoRa なんだから送信くらいできるはずという理屈でやってみました。
結論から言えばすでに meshtastic-lite という Meshtastic パケットを解析・構築するヘッダーオンリーライブラリを作っている人がおり、これを使ってパケットを組み立て、MKR WAN 用の LoRa 送信ライブラリで送信することで可能でした。
ただしソフトウェアによるAES暗号化にロジックにちょっとしたバグがあり、これを修正しないと12Bより長い文字列が文字化けしたり無視される問題を見つけたので、これを修正しています。
fix: correct AES-CTR counter increment direction in software fallback by NeoCat · Pull Request #1 · jstockdale/meshtastic-lite · GitHub
ソースコードは以下のような感じ。この例では、JPリージョンのデフォルトのチャンネル(LongFast)に、指定したテキストを30秒ごとに送信し続けます。
特定のプライベートチャンネル等も指定すれば送信可能なはず。
なお通信ノードIDはデバイスに書き込まれたシリアル番号から適当にXORで生成しています。
Arduino MKR WAN 1310