(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
Soudure des fils le plus plat possible.
Collage a l’aduino et soudure.
Pinout du nunchuk a brancher sur l’arduino en vérifiant les pads.
Monté avec chargeur batterie et régulateurs 5v et 3.3v.
Tout rentre au chausse pied mais ca rentre après avoir retiré les cloisons intérieures.