ESP32_LoRa-Receiver
unknown
c_cpp
10 months ago
1.7 kB
19
Indexable
#include <Arduino.h>
#include <SPI.h>
#include <LoRa.h>
// LoRa configuration (match transmitter)
#define LORA_SS 5
#define LORA_RST 14
#define LORA_DIO0 26
#define LORA_FREQUENCY 433E6
struct SensorPacket {
uint32_t sequence;
bool rain;
bool float03m;
bool float06m;
bool float09m;
float voltage;
bool alarmState;
bool warningLightState;
};
void setup() {
Serial.begin(115200);
while (!Serial);
LoRa.setPins(LORA_SS, LORA_RST, LORA_DIO0);
if (!LoRa.begin(LORA_FREQUENCY)) {
Serial.println("LoRa init failed. Check your connections.");
while (true);
}
LoRa.setTxPower(14);
LoRa.setSpreadingFactor(10);
LoRa.setSignalBandwidth(125E3);
LoRa.setCodingRate4(5);
LoRa.enableCrc();
Serial.println("LoRa Receiver Ready");
}
void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize == sizeof(SensorPacket)) {
SensorPacket packet;
int i = 0;
while (LoRa.available() && i < sizeof(SensorPacket)) {
((uint8_t*)&packet)[i++] = LoRa.read();
}
Serial.print("Seq: "); Serial.print(packet.sequence);
Serial.print(" | Rain: "); Serial.print(packet.rain ? "YES" : "NO");
Serial.print(" | 0.3m: "); Serial.print(packet.float03m ? "ON" : "OFF");
Serial.print(" | 0.6m: "); Serial.print(packet.float06m ? "ON" : "OFF");
Serial.print(" | 0.9m: "); Serial.print(packet.float09m ? "ON" : "OFF");
Serial.print(" | Voltage: "); Serial.print(packet.voltage, 2);
Serial.print("V | Alarm: "); Serial.print(packet.alarmState ? "ON" : "OFF");
Serial.print(" | Warning Light: "); Serial.println(packet.warningLightState ? "ON" : "OFF");
}
}Editor is loading...
Leave a Comment