NRF24l01+チップを搭載したArduinoを使用しています。残念ながら、Mirf ライブラリの「送信」メソッドは、送信が成功したかどうかを通知しません。
さらに、次のようなループがあります。
Mirf.send(data);
while(Mirf.isSending()){
//Wait.
}
パケットが配信されていなくても再開します。nrf24l01データシート (ページ 27/78)を読むと、車輪を再発明する必要はないようです。
強化された ShockBurst™ は、信頼性の高い双方向データ リンクを簡単に実装するための自動パケット トランザクション処理を備えています。[中略] 自動パケット トランザクション処理は次のように機能します。
- PTX から PRX にデータ パケットを送信してトランザクションを開始します。強化された ShockBurst™ は、PTX を受信モードに自動的に設定して、ACK パケットを待機します。
- パケットが PRX によって受信されると、Enhanced ShockBurst™ は受信モードに戻る前に、肯定応答パケット (ACK パケット) を自動的に組み立てて PTX に送信します。
- PTX が ACK パケットをすぐに受信しない場合、Enhanced ShockBurst™ はプログラム可能な遅延の後に元のデータ パケットを自動的に再送信し、PTX を受信モードに設定して ACK パケットを待機します。
この機能を有効にするには (データシート pg 57):
チップに0x01を登録するには、00011111のようなものを書く必要があるようです。これを達成する方法はありますか?