LoRaOverUsb code

#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.");
    }
  }
}