97 lines
2.3 KiB
C++
97 lines
2.3 KiB
C++
#include <SPI.h>
|
|
#include <RH_RF95.h>
|
|
#include <M5Stack.h>
|
|
|
|
//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<rxbuflen;j++){
|
|
Serial.printf("%02x|", rxbuf[j]);
|
|
M5.Lcd.printf("%02x|", rxbuf[j]);
|
|
}
|
|
Serial.println("\n");
|
|
M5.Lcd.println("\n");
|
|
}
|
|
state=ECOUTE;
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|