ниже ответа из терминала: < /p>
Эмиттер Ардуино Код
Код: Выделить всё
#include
#include
// Création de l'instance SoftwareSerial pour le module LoRa sur les broches 2 (RX) et 3 (TX)
SoftwareSerial loraSerial(2, 3); // RX, TX
// Fonction pour vider complètement le buffer de réception de loraSerial
void clearSerialBuffer() {
while (loraSerial.available()) {
loraSerial.read();
}
}
// Fonction pour envoyer une commande AT via loraSerial et lire la réponse
void sendCommand(String cmd) {
cmd.trim(); // Supprime les espaces superflus
// Envoi de la commande AT avec terminaison "\r\n"
loraSerial.print(cmd);
loraSerial.print("\r\n");
loraSerial.flush(); // Attendre que la transmission soit terminée
delay(200); // Laisser un délai pour que le module traite la commande
// Lecture de la réponse du module
String response = "";
unsigned long startTime = millis();
while (millis() - startTime < 2000) {
if (loraSerial.available()) {
response += loraSerial.readString();
}
}
// Affichage dans le moniteur série (debug)
Serial.print("Réponse pour ");
Serial.println(cmd);
Serial.println(response);
// Vider le buffer pour la prochaine commande
clearSerialBuffer();
}
// Fonction pour envoyer un message LoRa et lire la réponse
bool sendLoRaMessage(String message) {
String command = "AT+SEND=2," + String(message.length()) + "," + message;
// Envoi de la commande avec terminaison "\r\n"
loraSerial.print(command);
loraSerial.print("\r\n");
loraSerial.flush();
// Attendre la réponse du module
String response = "";
unsigned long startTime = millis();
while (millis() - startTime < 2000) {
if (loraSerial.available()) {
response += loraSerial.readString();
}
}
// Afficher la réponse pour le débogage
Serial.print("Réponse pour ");
Serial.println(command);
Serial.println(response);
// Vider le buffer
clearSerialBuffer();
// Vérifier si la réponse contient une erreur
if (response.indexOf("+ERR=") != -1) {
Serial.println("❌ ERREUR DETECTÉE !");
return false;
} else {
Serial.println("✅ Message envoyé avec succès !");
return true;
}
}
void setup() {
// Initialisation du port série matériel pour le débogage
Serial.begin(115200);
delay(500);
// Initialisation de loraSerial pour communiquer avec le module LoRa
loraSerial.begin(115200);
delay(500);
// Réinitialiser le module LoRa
sendCommand("AT+RESET");
delay(500);
// Configuration du module LoRa
sendCommand("AT+ADDRESS=1"); // Définir l'adresse du module
delay(200);
sendCommand("AT+NETWORKID=1"); // Définir l'ID du réseau
delay(200);
sendCommand("AT+BAND=915000000"); // Définir la fréquence à 915 MHz
delay(200);
// Vérifier la configuration (si la commande de lecture est supportée)
sendCommand("AT+NETWORKID?");
}
void loop() {
// Envoyer un message simple "A" via LoRa
bool success = sendLoRaMessage("HELLO");
if (!success) {
Serial.println("⚠️ Erreur détectée, attente de 5 secondes avant un nouvel essai...");
delay(5000);
} else {
delay(4000); // Pause normale entre les envois
}
}
< /code>
приемник arduino code < /p>
#include
#include
// Crée une instance SoftwareSerial pour le module LoRa sur les broches 8 (RX) et 9 (TX)
SoftwareSerial loraSerial(2, 3); // RX, TX
// Fonction pour vider complètement le buffer de réception de loraSerial
void clearSerialBuffer() {
while (loraSerial.available()) {
loraSerial.read();
}
}
// Fonction pour envoyer une commande AT via loraSerial et lire la réponse
void sendCommand(String cmd) {
cmd.trim(); // Supprime les espaces superflus
// Envoi de la commande AT avec terminaison "\r\n"
loraSerial.print(cmd);
loraSerial.print("\r\n");
loraSerial.flush(); // Attendre que la transmission soit terminée
delay(200); // Laisser un délai pour que le module traite la commande
// Lecture de la réponse du module
String response = "";
unsigned long startTime = millis();
while (millis() - startTime < 2000) {
if (loraSerial.available()) {
response += loraSerial.readString();
}
}
// Affichage dans le moniteur série (debug)
Serial.print("Réponse pour ");
Serial.println(cmd);
Serial.println(response);
// Vider le buffer pour la prochaine commande
clearSerialBuffer();
}
void setup() {
// Initialisation du port série matériel pour le débogage
Serial.begin(115200);
delay(500);
// Initialisation de loraSerial pour communiquer avec le module LoRa
loraSerial.begin(115200);
delay(500);
// Réinitialiser le module LoRa
sendCommand("AT+RESET");
delay(500);
// Configuration du module LoRa
sendCommand("AT+ADDRESS=2"); // Définir l'adresse du module
delay(200);
sendCommand("AT+NETWORKID=1"); // Définir l'ID du réseau
delay(200);
sendCommand("AT+BAND=915000000"); // Définir la fréquence à 915 MHz
delay(200);
// Vérifier la configuration (si la commande de lecture est supportée)
Serial.println("Récepteur LoRa prêt.");
}
void loop() {
// Vérifier si des données sont disponibles provenant du module LoRa
if (loraSerial.available()) {
// Lire la chaîne de caractères jusqu'à la fin de ligne (retour chariot ou saut de ligne)
String receivedMessage = loraSerial.readStringUntil('\n');
receivedMessage.trim(); // Supprime les espaces et retours chariots en trop
if (receivedMessage.length() > 0) {
Serial.print("Message reçu : ");
Serial.println(receivedMessage);
}
// Analyser le message pour extraire l'adresse, le contenu et le RSSI
int firstCommaIndex = receivedMessage.indexOf(',');
int secondCommaIndex = receivedMessage.indexOf(',', firstCommaIndex + 1);
int thirdCommaIndex = receivedMessage.indexOf(',', secondCommaIndex + 1);
if (firstCommaIndex != -1 && secondCommaIndex != -1 && thirdCommaIndex != -1) {
String length = receivedMessage.substring(firstCommaIndex+1,secondCommaIndex); // Extrait l'adresse
String message = receivedMessage.substring(secondCommaIndex+1,thirdCommaIndex); // Extrait le message
String rssiStr = receivedMessage.substring(thirdCommaIndex + 1); // Extrait le RSSI
// Convertir le RSSI en float
float rssi = rssiStr.toFloat();
// Afficher les informations extraites
Serial.print("Longueur du message : ");
Serial.println(length);
Serial.print("Message reçu : ");
Serial.println(message);
Serial.print("RSSI : ");
Serial.println(rssi);
Serial.println(receivedMessage.substring(9,14));
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... s-degraded