#include <LoRa.h>
// Définir les pins utilisés par le module transceiver
#define ss 5
#define rst 14
#define dio0 2
void setup() {
// Initialisation du port série pour afficher les paquets reçus
Serial.begin(115200);
Serial.println("LoRa Receiver Initialized...");
// Initialisation des broches LoRa
LoRa.setPins(ss, rst, dio0);
// Initialisation du module LoRa
while (!LoRa.begin(433E6)) { // Fréquence en Hz (ici 433 MHz)
Serial.println("Initializing LoRa...");
delay(500);
}
Serial.println("LoRa Initialized. Waiting for packets...");
}
void loop() {
// Vérification de la réception de paquets LoRa
int packetSize = LoRa.parsePacket();
if (packetSize) {
// Variables pour stocker les données reçues
String receivedData;
int rssi = LoRa.packetRssi();
// Lecture et construction de la chaîne textuelle reçue
while (LoRa.available()) {
char c = LoRa.read();
receivedData += c;
}
// Affichage du message en clair et RSSI
Serial.print("↓ [RSSI: ");
Serial.print(rssi);
Serial.print("] : ");
Serial.println(receivedData);
// Affichage d'une ligne vide pour séparer le texte et les données hexadécimales
Serial.println();
// Affichage des données brutes en hexadécimal
Serial.print("[RAW_HEX] : ");
for (int i = 0; i < receivedData.length(); i++) {
Serial.print((uint8_t)receivedData[i], HEX); // Affiche l’octet en HEX
Serial.print(" "); // Sépare les octets par un espace
}
Serial.println(); // Nouvelle ligne à la fin
}
// Vérification si l'utilisateur entre une donnée via le moniteur série pour envoyer un message
if (Serial.available()) {
String input = Serial.readStringUntil('\n'); // Lire la chaîne jusqu'à la nouvelle ligne
input.trim(); // Nettoyer les espaces inutiles
// Envoi du message via LoRa
if (input.length() > 0 && input.length() < 128) { // Vérification que le message ne dépasse pas 128 caractères
// Afficher le message avec la flèche vers le haut
Serial.print("↑ [Message]: ");
Serial.println(input);
// Envoi du message via LoRa
LoRa.beginPacket();
LoRa.print(input);
LoRa.endPacket();
} else {
Serial.println("Message trop long ou vide ! Veuillez envoyer un message de moins de 128 caractères.");
}
}
}