Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Arduino.h"
- #include "heltec.h"
- #define BAND 868E6
- long lastReceiveTime = 0;
- unsigned int counter = 0;
- float snr = 0;
- String rssi = "RSSI --"; //rssi value
- String packSize = "--"; // size
- String packet; // stores last packet
- int degLo, degLat;
- float minLat, minLo;
- float latconv, longconv;
- float dirtylong, dirtylat;
- int latitude, longitude;
- uint8_t lat1,lat2,lat3;
- uint8_t lon1,lon2,lon3;
- bool deepsleepflag=false;
- bool receiveflag = false;
- void interrupt_GPIO0()
- {
- delay(10);
- if(digitalRead(0)==0){
- deepsleepflag=true;
- }
- }
- void setup()
- {
- Heltec.begin(true /*DisplayEnable Enable*/, true /*LoRa Enable*/, true /*Serial Enable*/, true /*LoRa use PABOOST*/, BAND /*LoRa RF working band*/);
- attachInterrupt(0,interrupt_GPIO0,FALLING);
- 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++;
- lastReceiveTime = millis();
- digitalWrite(25,HIGH);
- delay(1000);
- receiveflag = false;
- digitalWrite(LED, LOW);
- LoRa.receive();
- displaySendReceive();
- }
- }
- void displaySendReceive()
- {
- Heltec.display -> clear();
- 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, 40, "RSSI " + rssi + "db " + " SNR " + String(snr, 2));
- Heltec.display -> display();
- delay(100);
- }
- void onReceive(int packetSize)//LoRa receiver interrupt service
- {
- //if (packetSize == 0) return;
- packSize = String(packetSize,DEC);
- while (LoRa.available())
- {
- packet += (char) LoRa.read();
- }
- /* for(int i = 0;i<6;i++)
- {
- packet[i]= (char) LoRa.read();
- }
- */
- rssi = String(LoRa.packetRssi(), DEC);
- snr = LoRa.packetSnr();
- receiveflag = true;
- convert();
- //sendGGA("$GPGGA,", 6);
- }
- void convert()
- {
- lat1 = packet[0];
- lat2 = packet[1];
- lat3 = packet[2];
- latitude = (lat1*65536) + (lat2*256) + lat3;
- latconv = (latitude / 93206.75) - 90;
- //degLat = latconv;
- //minLat = (latconv - degLat)*60;
- //dirtylat = (degLat*100) + minLat;
- Serial.println(String(latconv,5));
- lon1 = packet[3];
- lon2 = packet[4];
- lon3 = packet[5];
- latitude = (lat1*65536) + (lat2*256) + lat3;
- /*longitude = (uint8_t)packet[3]*65536 + (uint8_t)packet[4]*256 + (uint8_t)packet[5];
- longconv = (longitude / 16777215.0 * 360) - 180;
- degLo = (longitude / 16777215.0 * 360) - 180;
- minLo = ((longitude / 16777215.0 * 360) - 180 - degLo)*60;
- dirtylong = (degLo*100) + minLo;*/
- }
- PC: 0x400d5866: String::String(float, unsigned char) at C:\Users\chaos\Documents\Arduino\hardware\heltec\esp32\cores\esp32\WString.cpp line 111
- EXCVADDR: 0x00000000
- Decoding stack results
- 0x400d5866: String::String(float, unsigned char) at C:\Users\chaos\Documents\Arduino\hardware\heltec\esp32\cores\esp32\WString.cpp line 111
- 0x400d1332: convert() at C:\Users\chaos\Documents\Arduino\gps_receiver/gps_receiver.ino line 126
- 0x400d14a1: onReceive(int) at C:\Users\chaos\Documents\Arduino\gps_receiver/gps_receiver.ino line 110
- 0x400d207c: LoRaClass::handleDio0Rise() at C:\Users\chaos\Documents\Arduino\libraries\Heltec_ESP32_Dev-Boards\src\lora\LoRa.cpp line 518
- 0x400d2092: LoRaClass::onDio0Rise() at C:\Users\chaos\Documents\Arduino\libraries\Heltec_ESP32_Dev-Boards\src\lora\LoRa.cpp line 548
- 0x4008101d: __onPinInterrupt at C:\Users\chaos\Documents\Arduino\hardware\heltec\esp32\cores\esp32\esp32-hal-gpio.c line 220
- 0x400d11e6: loop() at C:\Users\chaos\Documents\Arduino\gps_receiver/gps_receiver.ino line 44
- 0x400d5a35: loopTask(void*) at C:\Users\chaos\Documents\Arduino\hardware\heltec\esp32\cores\esp32\main.cpp line 19
- 0x40086829: vPortTaskWrapper at /Users/ficeto/Desktop/ESP32/ESP32/esp-idf-public/components/freertos/port.c line 143
Add Comment
Please, Sign In to add comment