NUNCHUK et NRF24L01+


(30/10/18)

Besoin d’un contrôleur sans fil pour un Arduino ?

Un nunchuk contient un joystick 2 boutons et un accéléromètre 3 axes. Il communique a l’aide d’un bus I2C. 
L’alimentation se fait en 3,3v mais le reste des pins accepte du 5v.

Le NRF24L01+ quant a lui utilise du SPI. Tout comme le nunchuk il est alimenté en 3,3v mais le reste des pins accepte du 5v.

Je ne parlerais pas ici du choix du module radio.

mais en bref: verification de la somme, renvoi automatique, grande portée.

Code

Emetteur (arduino nano)


#include SPI.h
#include Mirf.h
#include nRF24L01.h
#include MirfHardwareSpiDriver.h
#include Wire.h
#include ArduinoNunchuk.h

  int valeurs[7];
  
ArduinoNunchuk nunchuk = ArduinoNunchuk();

void setup() {
  nunchuk.init();
  Serial.begin(9600);
   
  Mirf.cePin = 9; 
  Mirf.csnPin = 10; 
  Mirf.spi = &MirfHardwareSpi; 
  Mirf.init();
  Mirf.channel = 1;
  Mirf.configRegister(RF_SETUP, 0x26);
  Mirf.payload = sizeof(int) * 7;
  Mirf.config();

  Mirf.setTADDR((byte *) "nrf02");
  Mirf.setRADDR((byte *) "nrf01");
   
}
 
void loop() {
  
 
  valeurs[0] = (nunchuk.analogY);
  valeurs[1] = (nunchuk.analogX);
  valeurs[2] = (map(nunchuk.accelX, 0, 1024, 0, 255));
  valeurs[3] = (map(nunchuk.accelY, 0, 1024, 0, 255));
  valeurs[4] = (map(nunchuk.accelZ, 0, 1024, 0, 255));
  valeurs[5] = (map(nunchuk.zButton, 0, 1, 0, 255));
  valeurs[6] = (map(nunchuk.cButton, 0, 1, 0, 255));

  Mirf.send((byte *) &valeurs);
  while(Mirf.isSending());

} 

  

Recepteur (arduino nano)

  

#include SPI.h  
#include Mirf.h   
#include nRF24L01.h 
#include MirfHardwareSpiDriver.h 
 int valeurs[7];
 
void setup() {
  Serial.begin(9600);

  Mirf.cePin = 9;
  Mirf.csnPin = 10; 
  Mirf.spi = &MirfHardwareSpi; 
  Mirf.init();

  
  Mirf.channel = 1;
  Mirf.configRegister(RF_SETUP, 0x26);
  Mirf.payload = sizeof(int) * 7;
  Mirf.config();

  Mirf.setTADDR((byte *) "nrf01");
  Mirf.setRADDR((byte *) "nrf02"); 

}

void loop() {
  int valeurs[7];

  if(Mirf.dataReady()){
    Mirf.getData((byte *) &valeurs); 
    Serial.print(valeurs[0]);
    Serial.print(",");
    Serial.print(valeurs[1]); 
    Serial.print(",");
    Serial.print(valeurs[2]); 
    Serial.print(",");
    Serial.print(valeurs[3]); 
    Serial.print(",");
    Serial.print(valeurs[4]);
    Serial.print(","); 
    Serial.print(valeurs[5]);
    Serial.print(",");
    Serial.println(valeurs[6]);
  }
}  

Pinout du nrf
IMG_0411

Soudure des fils le plus plat possible.
IMG_0410

Collage a l’aduino et soudure.
IMG_0417
IMG_0418 

Pinout du nunchuk a brancher sur l’arduino en vérifiant les pads.
IMG_0419

Monté avec chargeur batterie et régulateurs 5v et 3.3v.
IMG_0420

IMG_0421

IMG_0422

Tout rentre au chausse pied mais ca rentre après avoir retiré les cloisons intérieures.UNADJUSTEDNONRAW_thumb_7716

UNADJUSTEDNONRAW_thumb_7718