nRF24L01を搭載した一台の受信機で、複数台のnRF24L01からの信号を受信処理する実験。

【送信エラー時のリトライ手法】

リトライの処理方法は色々、トライ&エラーで確かめながら、最も衝突時の回避率の高かった設定を選択した。具体的には、送信側でパケットデータを送る際に衝突等で送信エラーが発生した際、乱数に従った時間を待って、リトライすることにより、【長い時間衝突し続ける】事を割けることを試みた。そのリトライを効率的にするために、serRetries関数への設定は、短い時間間隔で一回だけリトライする形にとどめた。(250us x 1回のみ)。乱数によるリトライは、もっと長い時間(1msec~10msec)待った後で行う形にして、最大10回トライしている。

色々試してみたが、やはり4台以上の送信機を非同期で動作させ続けた場合、衝突によるものと思われる送信エラーは皆無にはなっていない。更なる検証と回避策を立てる必要があるが、とりあえずペンディングとしておく。後日、再検討したい。

【実験の様子】

3台の送信機に、Arduino Unoからそれぞれランダムなパルスを送り、そのカウント数と温度情報を送信している時の様子。(右上の一台は、ユニバーサル基板を使ったプロトタイプ)

DSC_0274 送信側(3台)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする