Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Arduino.h"
- #include "heltec.h"
- //#include "WiFi.h"
- #define BAND 868E6
- float snr = 0;
- String rssi = "RSSI --"; //rssi value
- String packSize = "--"; // size
- double latitude;
- double longitude;
- float latconv;
- float longconv;
- String packet; // stores last packet
- unsigned int counter = 0; // counter for recieved packets
- bool receiveflag = false; // software flag for LoRa receiver, received data makes it true.
- uint32_t LatitudeBinary, LongitudeBinary;
- bool deepsleepflag=false;
- void setup()
- {
- Heltec.begin(true /*DisplayEnable Enable*/, true /*LoRa Enable*/, true /*Serial Enable*/, true /*LoRa use PABOOST*/, BAND /*LoRa RF working band*/);
- //######################################################
- LoRa.setSpreadingFactor(12);
- //LoRa.setSignalBandwidth(500E3);
- //#######################################################
- LoRa.onReceive(onReceive);
- LoRa.receive();
- displaySendReceive();
- }
- void loop()
- {
- if(deepsleepflag)
- {
- LoRa.end();
- LoRa.sleep();
- delay(100);
- pinMode(4,INPUT);
- pinMode(5,INPUT);
- pinMode(14,INPUT);
- pinMode(15,INPUT);
- pinMode(16,INPUT);
- pinMode(17,INPUT);
- pinMode(18,INPUT);
- pinMode(19,INPUT);
- pinMode(26,INPUT);
- pinMode(27,INPUT);
- digitalWrite(Vext,HIGH);
- delay(2);
- esp_deep_sleep_start();
- }
- if(receiveflag)
- {
- digitalWrite(LED, HIGH);
- counter++;
- digitalWrite(25,HIGH);
- displaySendReceive();
- delay(1000);
- receiveflag = false;
- digitalWrite(LED, LOW);
- LoRa.receive();
- displaySendReceive();
- }
- }
- void displaySendReceive()
- {
- Heltec.display -> drawString(0, 50, "Counter " + (String)(counter-1));
- Heltec.display -> drawString(0, 0, "Received Size " + packSize);
- Heltec.display -> drawString(0, 10, String(latconv, 10));
- Heltec.display -> drawString(0, 20, String(longconv, 10));
- Heltec.display -> drawString(0, 30, String(latitude) + " " + String(longitude));
- Heltec.display -> drawString(0, 40, "RSSI " + rssi + "db " + " SNR " + String(snr, 2));
- Heltec.display -> display();
- delay(100);
- Heltec.display -> clear();
- }
- void onReceive(int packetSize)//LoRa receiver interrupt service
- {
- //if (packetSize == 0) return;
- packet = "";
- packSize = String(packetSize,DEC);
- while (LoRa.available())
- {
- packet += (char) LoRa.read();
- }
- Serial.println(packet);
- rssi = String(LoRa.packetRssi(), DEC);
- snr = LoRa.packetSnr();
- receiveflag = true;
- latitude = ((packet[0]<<16)) + ((packet[1]<<8)) + packet[2];
- latconv = (latitude / 16777215.0 * 180) - 90;
- longitude = ((packet[3]<<16)) + ((packet[4]<<8)) + packet[5];
- longconv = (longitude / 16777215.0 * 360) - 180;
- }
Add Comment
Please, Sign In to add comment