Untitled
unknown
c_cpp
2 years ago
3.1 kB
3
Indexable
#include <LoRa.h> #include <SPI.h> #include <DHT.h> #define DHTPIN 4 #define DHTTYPE DHT22 #define Relay1 27 #define Relay2 26 #define Relay3 25 #define Relay4 33 #define ObjectID 13 #define ss 5 #define rst 14 #define dio0 2 #define MAX_DESCRIPTION_LENGTH 50 DHT dht(DHTPIN, DHTTYPE); bool Relay_1 = false , Relay_2 = false, Relay_3 = false ,Relay_4 = false ; int relayPins[] = {Relay1, Relay2, Relay3, Relay4}; int numRelays = sizeof(relayPins) / sizeof(relayPins[0]); typedef struct __attribute__((__packed__)) { uint8_t id; float temp; float speed; char description[MAX_DESCRIPTION_LENGTH]; } Donnee; void setup() { Serial.begin(115200); for (int i = 0; i < numRelays; i++) { pinMode(relayPins[i], OUTPUT); digitalWrite(relayPins[i], LOW); } dht.begin(); while (!Serial); Serial.println("LoRa Receiver ") ; LoRa.setPins(ss, rst, dio0); while (!LoRa.begin(433E6)) { Serial.println("."); delay(500); } LoRa.setSyncWord(0xF3); Serial.println("LoRa Initializing OK!"); } void loop() { // try to parse packett int packetSize = LoRa.parsePacket (); Donnee donnee; if (packetSize) { uint8_t* x_tab = new uint8_t [sizeof (Donnee)]; int i = 0; while (LoRa.available()) { uint8_t incoming = LoRa.read(); x_tab[i] = incoming; i++; } Donnee* x = (Donnee *) x_tab; Serial.print("L'identicatif de l'émetteur: "); Serial.println(x->id); Serial.println(x->description); Serial.print("Wind speed : "); Serial.print(x->speed); Serial.println("m/s"); Serial.println("-----------------------------------"); float temp1 = dht.readTemperature(); float hum = dht.readHumidity(); donnee.id = ObjectID; delay(1000); Serial.print("L'identifiant est: "); Serial.println( donnee.id); Serial.print("Temperature1: "); Serial.print( temp1); Serial.print( "°C"); Serial.print(" | Humidité1: "); Serial.print( hum); Serial.println("%"); Serial.println("-----------------------------------"); if (strstr(x->description, "rain") != NULL) { digitalWrite(Relay4, LOW); } if (x->speed > 30) { digitalWrite(Relay1, HIGH); digitalWrite(Relay2, HIGH); digitalWrite(Relay3, HIGH); digitalWrite(Relay4, HIGH); } if ( hum < 40 || temp1 >30) digitalWrite(Relay1,HIGH); delay(30000); Relay_1 = true; } else { digitalWrite(Relay1,LOW); Relay_1 = false; } if ( hum < 40 || temp1 >30){ digitalWrite(Relay2,HIGH); delay(30000); Relay_2 = true; } else { digitalWrite(Relay2,LOW); Relay_2 = false; } if ( hum < 40 || temp1 >30){ digitalWrite(Relay3,HIGH); delay(30000); Relay_3 = true; } else { digitalWrite(Relay3,LOW); Relay_3 = false; } if (Relay_1 || Relay_2 || Relay_3 ){ digitalWrite(Relay4,HIGH); } else { digitalWrite(Relay4,LOW); } delay(500); delete x_tab; } }
Editor is loading...