#include #include #include #include "DHT.h" #define DHTPIN 3 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); int lightPin = A0; int counter = 0; int LEDPin = 4; void setup() { Serial.begin(9600); while (!Serial); Serial.println("LoRa Sender"); if (!LoRa.begin(866E6)) { Serial.println("Starting LoRa failed!"); while (1); } dht.begin(); LoRa.crc(); LoRa.setSyncWord(0x22); // register the receive callback LoRa.onReceive(onReceive); // put the radio into receive mode LoRa.receive(); // attachInterrupt(digitalPinToInterrupt(2), lora, HIGH); pinMode(LEDPin, OUTPUT); } void loop() { StaticJsonBuffer<200> jsonBuf; JsonObject& json = jsonBuf.createObject(); Serial.print("Sending packet: "); Serial.println(counter); float h = dht.readHumidity(); float t = dht.readTemperature(); json["count"] = counter; json["temperature"] = t; json["humidity"] = h; json["light"] = analogRead(lightPin); // send packet LoRa.beginPacket(); json.printTo(LoRa); LoRa.endPacket(); counter++; LoRa.onReceive(onReceive); LoRa.receive(); delay(1000); } void lora() { Serial.println("Get Pin High"); int packetSize = LoRa.parsePacket(); if (packetSize) { // received a packet Serial.print("Received packet '"); // read packet while (LoRa.available()) { Serial.print((char)LoRa.read()); } // print RSSI of packet Serial.print("' with RSSI "); Serial.println(LoRa.packetRssi()); } } void onReceive(int packetSize) { // received a packet Serial.print("Received packet '"); uint8_t d[packetSize]; // read packet for (int i = 0; i < packetSize; i++) { // Serial.print((char)LoRa.read()); d[i] = LoRa.read(); Serial.print(d[i], HEX); Serial.print(" "); } // print RSSI of packet Serial.print("' with RSSI "); Serial.println(LoRa.packetRssi()); if (int(d[packetSize - 1]) % 2 == 0) { Serial.println("LED on"); digitalWrite(LEDPin, HIGH); } else { Serial.println("LED off"); digitalWrite(LEDPin, LOW); } }