ESPマイコンの無線通信ではよく使ってきたけど、正しく使ってはない。たぶん。
だいぶ前にサンプルかネットの参考コードのコピペ
で普通に動いてたので普段は困ってない。
中身は関心があまりなくてちゃんと見てない・・・それがいかんのだろうな。
で、決まって困るのがなんか大きなイベント会場。
そこでのほぼお約束な不安定な通信、混信。
特におかしくなるのが例年、東京メイカフェア会場。
後で自宅では正常・・・ってパターン。
ちゃんと?名前を検索上位?に表示されるようにつけないかんかなと思うけど
ルールがよくわかってない。
自宅だと、BLEでスマホと繋ぐとき何気なく表示されてる名前を選択してるけど
東京メイカフェアとかの会場だとな何十個も名前がそれも似た名前、
M5xxxみたいなのいっぱい。スクロールして探すって感じになる。
自分の場合、ESPNOW通信利用で異常が多いのは
スマホからM5sticKCなどでBLEを受けて・・・
M5から、他のM5やESPマイコンにESPNOWで通信 してのRC,ラジコンもの。
こちらはブロードキャストが役に立ってる例
1つの送信機で一斉に同じ動きをさせたり。。。
ペンギン縄跳びでは7台のロボットを同時にシンクロみたいなのやったり。
ESPNOWがお手軽なのでついつい手抜きで通信のところ使ってるのが
いかんのだろうけど。
で、、、、今度の刈谷メイカフェアで自分のマイクテック・トイチームで
長机1本展示ブースとして使っていいよということなので
何持って行こうかって考えててー 普段忘れてる、通信不良を思い出して
Kariyaメイカフェアなら大して混信ないかもだけど対策案検討してる。
でもってあれ?って気付いたのがMACアドレス指定しCh指定もした、
2つのESPマイコン間でESPNOW通信してるとこへ他のESPマイコンが
FF、ブロードキャストで送信すると割り込めてしまうこと。
実際にはESP-01Dで動くマイコンロボとM5StickCのペアを
互いにMACアドレス指定で動くように準備してたら
まだMACアドレス指定する前のFFブロードキャストで設定したやつを
調整してたらMACアドレス指定してるはずのロボが動き出した・・・
それが最初の
ESPNOW 正しいお作法で使わないと混信する? ってところ。
なんで???がしばらくいじっててもわからなかった。ので、、、
調べるところのツボを間違えてるんだなきっと
コールバックなんかちゃんとやってないから
当たり前のことが起きてるだけなんだろうけど
当たり前のこと・・・と言うか、
データに互いの合言葉、識別子をペアごとに決めたことをちゃんと
組み込むかなってとこ。
シリアル通信モノは何がしかアドレス、IDみたいなので識別するけど
ESPNOW、アドレス指定してるのにデータの中でまたアドレス?なんか変だけど。
で・・・・・大きな勘違いしてることがわかった
MACアドレス指定 して通信してることで MACアドレスでフィルタされた
データが来てるもんだと思い込んでた。
やっぱり、、、というかコールバックでフィルタリングがいるもんらしい。
twitterでもつぶやいたら LangShipのたなかまさゆきさんからも
アドバイス頂いた。感謝!
やっぱり自分でフィルタしないといかない。と。
MACアドレス指定してもハードでフィルタしてくれない。
コールバック関数の
OnDataRecvでの割込みは、ばしばし勝手に掛かる・・・でよい?
・・・どうもそうらしい。
MACアドレス指定すればその辺の負荷が減らせるもんだとばかり
思ってた。
MACアドレスはチップ見てもわからんのでわざわざ調べるコード動かしたりで
ひと手間掛けて 6バイトコード調べて・・・ってやってるのに。
これだと自分ルールで6バイトの英数アスキーで識別名つけてる方法の方が
わかりやすい。。。
MACアドレス指定でのうれしさがよくわからない。