ロードバイクパワーメーターシステム用の無線方式にESP-NOWで使えるか基本的な確認が完了しました。結果としてXbeeより多端末同時接続が非常に簡単でプログラムレスで
設定ができて、電子工作での無線システムとしてはお勧めの方式であることが判りました
●Lang-Ship様に感謝
サンプルプログラムだけで複数台接続が自由にできます。
https://lang-ship.com/blog/work/m5stickc-esp-now-1/
ここのサンプルプログラムの動かし方 コンパイルして書き込むだけです。
ソースは#include <M5StickC.h>ですがM5Stackでもこのままでコンパイルして動作しますがボタンがCボタン(右ボタン)になります。
①Cボタンを押すとMACアドレスFF:FF:FF:FF:FF:FFへ送信します。全FFの場合はブロードキャストします。全端末へ同時にボタンがおされた信号を送信します。
➁結果はPC上のTeraTerm4つ立ち上げて受信しながら確認します。
③動作
ボタンを押すと押した端末からUSBシリアル経由でPCのTeraTermに下記表示でます
Send Status: Success Last Packet Sent to: FF:FF:FF:FF:FF:FF Last Packet Send Status: Delivery Success |
これで、全ての端末へ送信がされます。FF:FF:FF:FFだとペアリングしなくても接続できます。
B:受信側
Last Packet Recv from: xx:xx:xx:xx:xx:DC //M5Stackのボタン押しMACアドレス Last Packet Recv Data(2): 123 234 //データ 123 234受信 Last Packet Recv from: xx:xx:xx:xx:xx:E8 //M5StickC :E8から送信 Last Packet Recv Data(2): 123 234 Last Packet Recv from: xx:xx:xx:xx:xx:CC //M5StickC :CCから送信 Last Packet Recv Data(2): 123 234 Last Packet Recv from: xx:xx:xx:xx:xx:30 //M5StickC :30から送信 Last Packet Recv Data(2): 123 234 |
●本格的に使うには
母艦のMACアドレスをpeer登録して、子機からデータをsendすればいいだけなので超簡単です。XbeeやBlueToothのSPPだと複数台のデータ転送が非常に大変でここ2年間実現できなかったのですが、M5シリーズだけで超簡単に無線接続できてしかもXbee,BlueToothより速いので電池寿命だけ大きなLiPO使えばいいだけなので、電子工作の無線はESP-NOWで決まりだと思います。
●次やること
プログラムをパワーメーター用に改造するために、プログラムのコマンドを学習しながら進めます。M5StickからAD変換8msecサンプリングデータを母艦M5Stackへ送信してで左右2個のデータを欠落なく受信できるかプログラムを改造して精度を確認する作業をします。
母艦のM5StackからスマホへのBlueTooth送信してデータをログすることもします。8msecのデータをM5stackのSDカードでリアルタイムログできない点がネックですが、ライブラリーで高速なものが見つかれば可能になるので探していきます。
※2021年7月追記 1年後、ESP-NOWは1パケット250byteの制限があるので大容量高速通信に制限があるので、
現在シリアル460800bpsで通信しているMovingBase Base-Rover間で無線化ができないためUDPを使う検討をはじめました。
UDPめちゃ速いですが、データ落ちに対する補償手段がないので、信頼性確認が重要です。特にアンテナと環境が大事な感じですので、M5シリーズだとアンテナが内部で小さいので、ESP32-Wroom32のように大きな外だしアンテナがついてるほうが信頼性が高いです。