Bonjour
2 NRF24L01+ l'un sur pro mini ( emetteur) l'autre sur esp32 (recepteur) pour capter température exérieure, puis par wifi alimenter la bdd par wifi.
Impossible de les faire communiquer
les NRF24L01 sont branchés sur un module adaptateur, j'ai soudé un condensateur de 10uF sur les bornes VCC et GND du nrf24l01
Chaque nrf24l01 a une alim autonome du pro mini ou esp32
Code de l'émetteur
/****************************************
croquis pour envoyer un message et et ecouter la réponse d'après
mettre sur pro mini qui recevra les données du thermometre et qui envoie sur esp32
*****************************/
#include <SPI.h>
#include <RF24.h>
#define PIN_CS 8
#define PIN_CE 7
RF24 radio (PIN_CE,PIN_CS);
const uint64_t pipeA = 0xF0F0F0F0E1LL;
const uint64_t pipeB = 0xF0F0F0F0E2LL;
void setup(){
Serial.begin(9600);
Serial.println(F("Go go go"));
radio.begin();
//activer l'accusé de reception
radio.enableAckPayload();
// l'accusé de reception est dynamique
radio.enableDynamicPayloads();
//réglage de l'amplificateur
radio.setPALevel(RF24_PA_LOW);
//réglage des canaux
radio.openWritingPipe(pipeB);
radio.openReadingPipe(1,pipeA);
//en ecoute
radio.startListening();
}
void loop() {
//arret ecoute
radio.stopListening();
Serial.println(F("Envoi ................"));
//utilisation de micro comme message
unsigned long message = micros();
//envoi
if (!radio.write(&message, sizeof(unsigned long) )){
Serial.println(F("ERREUR !"));
}
//mise en ecoute
radio.startListening();
//enregistrement du debut du delais
unsigned long debut = micros();
boolean timeout = false;
//tant que rirn a lire
while (!radio.available()){
Serial.println("Ya a lire");
//600ms on abandonne
if (micros()-debut > 600000){
timeout = true;
break;
}
}
//abandon pour cause de delai ecoulé ?
if (timeout){
Serial.println(F("Erreur....: ...TIMEOUT"));
} else {
//variable pour le message recu
unsigned long reception;
//lecture des donnéees reçues
radio.read(&reception, sizeof(unsigned long));
//enregistrement du moment de reception
unsigned long fin = micros();
//Affichage
Serial.print(F("Message envoyé :"));
Serial.print(message);
Serial.print(F(", reponse reçue: "));
Serial.print(reception);
Serial.print(F(", temps complet: "));
Serial.print(fin-message);
Serial.println(F(" microsecondes"));
}
delay(1000);
}
Code du recepteur
/****************************
croquis pour la carte arduino chargée de recevoir un message répondre en renvoyant le même message d'après
Mettre sur esp32 qui ensuite enverra en wifi sur le serveur
***********************/
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
/*
#define PIN_CS 5
#define PIN_CE 21
RF24 radio(PIN_CE,PIN_CS);
*/
const byte cePin = 21;
const byte csnPin = 5;
const byte MOSI_PIN = 23;
const byte MISO_PIN = 19;
const byte CLK_PIN = 18 ;
RF24 radio(cePin, csnPin);
const uint64_t pipeA = 0xF0F0F0F0E1LL;
const uint64_t pipeB = 0xF0F0F0F0E2LL;
void setup(){
Serial.begin(115200);
Serial.println(F("Go go go"));
radio.begin();
//activer l'accusé de reception
radio.enableAckPayload();
// l'accusé de reception est dynamique
radio.enableDynamicPayloads();
//réglage de l'amplificateur
radio.setPALevel(RF24_PA_LOW);
//réglage des canaux
radio.openWritingPipe(pipeA);
radio.openReadingPipe(1,pipeB);
//en ecoute
radio.startListening();
}
void loop() {
unsigned long temps;
//des données sont-elles disponibles ?
if (!radio.available()){
Serial.println("radio receptrice OK");
while (radio.available()) {
radio.read(&temps, sizeof(unsigned long));
}
//arret emission
radio.stopListening();
//envoi reponse
radio.write(&temps, sizeof(unsigned long));
//reprise de la reception
radio.startListening();
//affichage
Serial.print(F("pong ! la valeur reçue est : "));
Serial.println(temps);
} else { Serial.println(" Y a t il une erreur");}
}
Sortie serie de l'envoyeur (pro mini)
Ya a lire
Message envoyé :862271504, reponse reçue: 0, temps complet: 27000 microsecondes
Envoi ................
Ya a lire
Message envoyé :863385128, reponse reçue: 0, temps complet: 528 microsecondes
Envoi ................
Ya a lire
Ya a lire
Ya a lire
Ya a lire
Ya a lire
Message envoyé :864438428, reponse reçue: 0, temps complet: 14512 microsecondes
Sortie série du récepteur (esp32)
pong ! la valeur reçue est : 0
radio receptrice OK
pong ! la valeur reçue est : 0
radio receptrice OK
pong ! la valeur reçue est : 0
radio receptrice OK
pong ! la valeur reçue est : 0
radio receptrice OK
pong ! la valeur reçue est : 0
radio receptrice OK