#include #include #include //Déclaration des constantes //Communication avec le module LoRa #define RFM95_CS 5 //M5 LoRa #define RFM95_DIO0 36 //M5 LoRa RH_RF95 rf95(RFM95_CS, RFM95_DIO0); //Déclaration des constantes uint8_t state; //État courant uint8_t rxbuf[RH_RF95_MAX_MESSAGE_LEN]; //buffer en reception uint8_t rxbuflen = sizeof(rxbuf); //taille du buffer en repection int rxFrames; //Numéro de la trame reçue //Constantes d'état #define ECOUTE 1 #define TEST_RX 2 //Les différents états #define AFFICHAGE 3 void setup() { M5.begin(); M5.Power.begin(); Serial.println("========Recepteur CAP1========"); M5.Lcd.println("========Recepteur CAP1========"); delay(1000); if(!rf95.init()){ Serial.println("Echec de la mise en place"); M5.Lcd.println("Echec de la mise en place"); } else{ Serial.println("Mise en place reussie !!!"); M5.Lcd.println("Mise en place reussie !!!"); rf95.setModemConfig(RH_RF95::Bw125Cr45Sf128); rf95.setFrequency(867.8); state=ECOUTE; Serial.println("Boucle principale"); M5.Lcd.println("Boucle principale"); rxFrames = 0; } } void loop() { switch(state){ case ECOUTE: Serial.println("ECOUTE"); M5.Lcd.println("ECOUTE"); rf95.setModeRx(); state=TEST_RX; break; case TEST_RX: Serial.println("TEST-RX"); M5.Lcd.println("TEST-RX"); if(rf95.available()){ state=AFFICHAGE; } //Ajout d'un delai pour laisser le temps de récupérer et d'afficher le message sur l'écran du M5 delay(2000); break; case AFFICHAGE: if(rf95.recv(rxbuf, &rxbuflen)){ rxFrames+=1; Serial.println(); M5.Lcd.println(); Serial.printf("AFFICHAGE : Trame[%d] de ", rxFrames); M5.Lcd.printf("AFFICHAGE : Trame[%d] de ", rxFrames); Serial.printf("%d octets : |",rxbuflen); M5.Lcd.printf("%d octets : |",rxbuflen); for(int j=0;j