はじめに
TWELITE と LTEモジュールを使って、センサーデータをサーバーに送信する作りました。
きっかけ
ESP32 + LTEモジュールの情報はそこそこあり、いくつか商品も出ているのですが、TWELITE では試作を含めて情報が見当たらなかった。
PIC + 3Gモジュールでデータ送信していた機器を置き換えるにあたり TWELITE なら充分制御可能だろうと思って gemini に TWELITE でサーバーにデータを送信するプログラムを書いてみるようにお願いしたら、TWELITE + ESP32(LTEモジュール接続)って回答された。 思っていた回答ではなかったので、追加質問として ESP32 は無しで TWELITE に LTEモジュールを直接接続するように求めたら、現実的ではないから提案はしないと回答された。
ならば、作ってみようかと。
LTEモジュール
gemini の回答でも TCP/IP が重く TWELITE で実装するのはちょっと重たすぎるので現実的ではないとされていたが、別に TWELITE 側で処理しなくても TCT/IP やネットワーク層をモジュール側で持っていて、ATコマンドでソケット通信ができるLTEモジュールがあるのでこれを使用する。
これなら、UART の接続だけでセンサーデータを送るぐらいなら十分。 HTTP で送信するにしても決まったテキスト送信でどうにでもなるし、
JSON化するにしても実データ以外は定例文になるので、ソケット通信さえできればどうにでもなる。
接続
基本的な接続は、UARTで TXD(送信), RXD(受信)、GND, RESET ぐらい。
ATコマンドを使って網接続、ソケット接続から送受信で動作。
試作ハード
データ送信器としてセンサー類と合わせて LTEモジュールを実装。
動作実績
EC25J, EC21J, SIM7600JC, LISA-U200 (3G) など。
TWELITE は RED, BLUE, (Gxxx) ESP32 系や PIC も動作実績あり。
ソースコード
商用に作り込んであるので、ちょっと見せられない。
arduino でよくある setup() からの loop() 形式。 TWELITE だと act 形式。
TWELITE と ESP32 ではLTEモジュール制御用のコードは、ほとんど同じ。
サンプルコードでは delay() などで処理が止まってしまうが、センサーデータの収集と通信を同時刻にこなしているので、内部は機能毎にステートマシン化するのと、専用の時間待ち処理をいれてブロックされないようにしています。
アプリの層では別にスレッドとか使わなくてもそこそこの処理能力があれば、見かけ上の同時処理は可能で、実際にセンサーからデータ取得しながらデータを通信しています。 (同時に TWELITE の無線で子機からのデータもまとめてサーバーに送ってます)
TWELITE モジュールについて
個人的な感想ですが、TWELITE は WiFi などで混んでいる 2.4GHz 帯の中では疎通状況がいい感じです。
ESP32 + ESP-Now と比較してもネバってデータを送ってくるので気に入っています。
馬鹿みたいに安い ESP32 と比べると酷かもしれませんがもう少し安くなってくれるといいかな。 新型が出れば少し値段も下がりそうですが。
最後に
TWELITE は運用上、健気に頑張ってデータを送ってくれますし、開発環境も arduino の資産やノウハウを使うことができるので、もっと注目されてもいいと思うんですけどね。
センサーデータ程度なら子機を20台ぐらいぶら下げてサーバーにデータを送っています。
TWELITE + LTEモジュールの組み合わせで少しでも利用できる場面が広がってくれるといいですね。