Bonjour, débutant travaillant sur un projet perso qui implique la transmission de données de températures, j’ai un problème de réception des données: lorsque je transmet des valeurs numériques quelque soit le type (int, float), je ne récupère que des 0. Je n’ai pas de message d’erreur.
Pour le code je me suis inspiré de l’exemple suivant, et je n’ai pas l’impression d’avoir fait des erreurs.
Pour le projet original j’utilisais une arduino nano pour la transmission et une arduino mega pour la réception, mais comme cela ne marchait pas, j’ai repris pour faire des tests comme sur l’exemple deux arduino uno.
J’utilise les ports 9 à 13 pour connecter le module nrf (je suis tombé sur des posts qui suggéraient d’autres ports pour les cartes nano et mega, mais en définitive les seuls ou je pouvais tracer un résultat étaient les ports 9 à 13 quelque soit le modèle de carte).
J’ai ensuite ajouté un adaptateur de tension pour module nrf24L01 du type suivant:
MakerHawk NRF24L01 Module sans fil adaptateur 3.3V pour NRF24L01 + microcontrôleur sans fil émetteur-récepteur 51 et bricolage (4PCS) https://www.amazon.fr/dp/B0716ZLPZQ/ref=cm_sw_r_cp_tau_n862EbRK49MDZ
et passé l’alimentation du 3.3v au 5v des cartes, mais cela n’a strictement rien changé.
Du coup je suis un peu perdu, j’ai vérifié les connexions à plusieurs reprises sans remarquer d’erreur, mais vu que cela ne fonctionne pas j’ai forcément fait une erreur quelque part, mais je ne vois pas où chercher.
Je joint les 2 fichiers ino de tests pour la transmission et la réception.
Pour la transmission, la sortie se rafraichit régulièrement avec les bonnes valeurs transmises, pour la réception, je n’ai que des 0.00.
Pour tester les 2 sorties en simultanées, j’utilise 2 instances d’arduino (avec teensyduino et arduino), voici les codes utilisés pour:
la transmission:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
const byte cePin = 9;
const byte csnPin = 10;
const byte meteoAdrs[5] = "bcsth";
const byte rfChannel = 51;
RF24 radio(cePin, csnPin);
float meteo[2];
void setup() {
meteo[0] = 25.70;
meteo[1] = 57.90;
Serial.begin(9600);
radio.begin();
radio.setChannel(rfChannel);
radio.openWritingPipe(meteoAdrs);
radio.setPALevel(RF24_PA_MAX);
//radio.setDataRate( RF24_250KBPS ); //RF24_250KBPS //RF24_1MBPS //RF24_2MBPS
//radio.setRetries(15, 15);
radio.stopListening();
}
void loop() {
if (radio.available()) {
radio.write(&meteo, sizeof(meteo));
String s = "sending: " + String(meteo[0]) + "° - " + String(meteo[1]) + "%";
Serial.println(s);
}
delay(100);
}
et la réception:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
const byte cePin = 9;
const byte csnPin = 10;
const byte meteoAdrs[5] = "bcsth";
const byte rfChannel = 51;
RF24 radio(cePin, csnPin);
float meteo[2];
void setup() {
Serial.begin(9600);
radio.begin();
radio.setChannel(rfChannel);
radio.openReadingPipe(0, meteoAdrs);
radio.setPALevel(RF24_PA_MAX);
//radio.setDataRate( RF24_250KBPS ); //RF24_250KBPS //RF24_1MBPS //RF24_2MBPS
radio.startListening();
}
void loop() {
if (radio.available()) {
radio.read(&meteo, sizeof(meteo));
String s = "meteo: " + String(meteo[0]) + "° - " + String(meteo[1]) + "%";
Serial.println(s);
}
delay(100);
}