-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Description
Bonjour, J'essaie d'envoyer les données d'un capteur notamment MQ6 via Lora avec le module Lora RFM95, j'utilise une carte ESP8266 NodeMCU. Le problème est que j'ai un redémarrage systématique de l'ESP8266 dès que j'intègre le module Lora avec ce message : -> --------------- COUPER ICI POUR DÉCODEUR D'EXCEPTION --------------- première cause:2, mode de démarrage:(3,6) 10:17:51.579 ->10:17:51.579 -> charge 0x4010f000, len 3424,salle 16 -> file d'attente 0-> chksum 0x2e 10:17:51.612 -> charge 0x3fff20b8, len 40, chambre 8 -> queue 0 -> chksum 0x2b
J'ai revérifié maintes fois le câblage, aucune anomalie constatée, mais impossible de stabiliser mon système. Voici le code que j'utilise :
`#include <SPI.h>
#include <RH_RF95.h>
// Définir les broches LoRa
#define RFM95_CS 15
#define RFM95_RST 16
#define RFM95_INT 5
// Définir la fréquence LoRa (peut varier selon la région, 915E6 pour USA, 868E6 pour Europe)
#define RF95_FREQ 868.0
// Créer une instance de RH_RF95
RH_RF95 rf95(RFM95_CS, RFM95_INT);
const int MQ6_PIN = A0; // Pin pour le capteur MQ-6 (broche ADC de l'ESP8266)
void setup() {
// Initialiser la communication série
Serial.begin(115200);
while (!Serial);
// Initialiser le module LoRa
pinMode(RFM95_RST, OUTPUT);
digitalWrite(RFM95_RST, HIGH);
// Initialiser SPI
SPI.begin();
// Effectuer une réinitialisation matérielle du module LoRa
digitalWrite(RFM95_RST, LOW);
delay(10);
digitalWrite(RFM95_RST, HIGH);
delay(10);
if (!rf95.init()) {
Serial.println("Initialisation LoRa échouée !");
while (1);
}
if (!rf95.setFrequency(RF95_FREQ)) {
Serial.println("Réglage de la fréquence échoué !");
while (1);
}
// Régler la puissance de transmission
rf95.setTxPower(23, false);
Serial.println("LoRa initialisé !");
// Configurer la broche du capteur MQ-6 comme entrée
pinMode(MQ6_PIN, INPUT);
// Petit délai pour permettre à la connexion série de s'établir
delay(1000);
}
void loop() {
// Lire la valeur analogique du capteur MQ-6
int sensorValue = analogRead(MQ6_PIN);
// Convertir la valeur en tension (pour une meilleure compréhension)
// La résolution de l'ADC sur l'ESP8266 est de 10 bits (0-1023)
// La tension de référence est de 3.3V
float voltage = sensorValue * (3.3 / 1023.0);
// Créer une chaîne de caractères pour le payload
String payload = "Sensor Value: " + String(sensorValue) + " - Voltage: " + String(voltage);
// Convertir la chaîne de caractères en tableau de caractères
char radiopacket[100];
payload.toCharArray(radiopacket, 100);
// Envoyer le paquet via LoRa
rf95.send((uint8_t *)radiopacket, strlen(radiopacket));
rf95.waitPacketSent();
// Afficher les valeurs lues et la tension convertie sur le moniteur série
Serial.print("Sensor Value: ");
Serial.print(sensorValue);
Serial.print(" - Voltage: ");
Serial.println(voltage);
Serial.print("Envoi du paquet: ");
Serial.println(payload);
// Attendre 10 secondes avant de lire et d'envoyer la prochaine valeur
delay(10000);
}
`
J'aimerais un peu d'aide pour comprendre et résoudre ce problème.
Merci d'avance