RÉSOLU Problème de transmissions de données avec le module nrf24L01

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);
}

Je ne vois pas pourquoi tu ne pars pas tout simplement d'un exemple de la librairie, starping par exemple.
Cela permet principalement de vérifier que le hardware fonctionne.

Vois ici : RitonDuino: NRF24L01 et ARDUINO UNO, NANO, MINI
Paragraphe 4. Dépannage.

Même avis que hbachetti parce qu'on est sûr que les exemples fonctionnent. J'ajoute un point, as-tu veillé à ce qu'émetteur et récepteur soient éloignés de plusieurs mètres l'un de l'autre ? Sinon gros risque de saturation.

Merci pour ces retours, en fait mes cablages étaient erronés ce que j’ai pu comprendre grâce à radio.isChipConnected qui me renvoyait false. J’ai refais mes connexions. Maintenant radio.chipIsConnected est true. Mais radio.available() ne l’est jamais. Maintenant que je suis apparemment bien connecté, je ne trace plus rien dans la partie du code radio.available.

Concernant l’exemple starping, je n’ai pas bien compris si il fallait que je branche le grd du module sur le pin 7? Mais de toute façon, cet exemple génère des erreurs de compilation du fait qu’il attend un bool sur l’appel de la fonction radio.read alors que celle-çi renvoie void. Du coup on ne peut pas compiler cet exemple sans devoir intervenir sur le code de la librairie

radio.read() ne renvoie rien.

Vérifie que ta librairie est récente : GitHub - nRF24/RF24: OSI Layer 2 driver for nRF24L01 on Arduino & Raspberry Pi/Linux Devices

J'utilise bien la dernière la librairie.
Voici la portion de code erronée dans l'exemple starping:

bool done = false;
while (!done)
{
    // Fetch the payload, and see if this was the last one.
    done = radio.read( &got_time, sizeof(unsigned long) );

    // Spew it
    printf("Got payload %lu from node %i...",got_time,pipe_num+1);
}

comme radio.read ne renvoie rien cet exemple ne peut-être téléversé

Effectivement, j'ai modifié le code de l'exemple (je n'en avais pas souvenir, il y a plus d'un an).
On ne modifie jamais le code de la librairie.

Je n’ai pas modifié le code de la librairie. Du coup je reste bloqué sur le fait que mon radio.chipIsConnected mais que radio is not available. Pour l’instant les tests se font avec une alimentation via le port usb. Qu’est-ce qui pourrait causer un tel problème maintenant que les connexions sont bonnes?

Cela fait longtemps que je n'utilise plus RF24 mais je n'ai jamais eu de problème pour faire fonctionner les exemples, gettingstarted par exemple.
Depuis plusieurs années j'utilise la librairie MYSENSORS qui me permet de remonter les infos à mon serveur DOMOTICZ, ou d'en recevoir.

Getting started me renvoie sur la sortie une succession de "?" ponctués par quelques ")"

La librairie MYSENSORS semble bien complète, mais bien grosse par rapport à mes besoins et l'accès à la doc. pas facilitée (doc en ligne plus accessible et nécessité de compiler la doc et donc de faire un projet juste pour accéder à la doc?); j'imagine que je vais finir par la tester si je n'arrive pas à faire marcher la lib RF24 et que je ne trouve pas d'autre lib.

La doc :

Les exemples :

MYSENSORS est une librairie permettant le dialogue entre un certain nombre de capteurs / actionneurs et une passerelle connectée à un serveur domotique (DOMOTICZ, JEEDOM, etc.).
Ce n'est pas une librairie faite pour communiquer simplement entre deux ARDUINOs.

Est-ce que cela convient ?
Impossible à dire puisque tu ne décris par ton projet.

J’ai finalement résolu mon problème en passant de mon mac sur linux, ce qui m’a permis de voir une erreur de code qui ne remontait pas sur mac: adress[5] au lieu de adress[6]. Au final il s’agissait d’une erreur de code. Dès que j’ai corrigé cette erreur, les données ont pu être transmises sans problème.
Sinon merci pour ton aide, j’ai appris des tas de choses sur ton blog riton-duino et je ne manquerai pas de m’y replonger pour approfondir mes connaissances

const byte meteoAdrs[5] = "bcsth";

Oui effectivement je ne l'avais pas vue celle-là.

en passant de mon mac sur linux

Étonnant s'il s'agit de la même version d'IDE.