Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Arduino.h"
- #include "heltec.h"
- long lastReceiveTime = 0;
- unsigned short counter = 0;
- float snr = 0;
- String rssi = "RSSI --"; //rssi value
- String packSize = "--"; // size
- String packet = ""; // stores last packet
- double latconv = 0;
- double longconv =0;
- double dirtylong = 0;
- double dirtylat = 0;
- 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*/, 868E6 /*LoRa RF working band*/);
- attachInterrupt(0,interrupt_GPIO0,FALLING);
- LoRa.setSpreadingFactor(12);
- //LoRa.setSignalBandwidth(500E3);
- LoRa.onReceive(onReceive);
- LoRa.receive();
- }
- 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);
- lastReceiveTime = millis();
- digitalWrite(25,HIGH);
- delay(1000);
- receiveflag = false;
- digitalWrite(LED, LOW);
- LoRa.receive();
- 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();
- //Serial.println(toSend);
- 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();
- }
- rssi = String(LoRa.packetRssi(), DEC);
- snr = LoRa.packetSnr();
- receiveflag = true;
- convert();
- //sendGGA("$GPGGA,", 6);
- }
- void convert(){
- short degLo = 0;
- short degLat =0;
- float minLat = 0;
- float minLo = 0;
- unsigned long latitude = 0;
- unsigned long longitude = 0;
- latitude = uint8_t(packet[0])*65536 + uint8_t(packet[1])*256 + uint8_t(packet[2]);
- latconv = (latitude / 93206.75) - 90;
- degLat = latconv;
- minLat = (latconv - degLat)*60;
- dirtylat = (degLat*100) + minLat;
- longitude = uint8_t(packet[3])*65536 + uint8_t(packet[4])*256 + uint8_t(packet[5]);
- longconv = (longitude / 46603.375) - 180;
- degLo = longconv;
- minLo = (longconv - degLo)*60;
- dirtylong = (degLo*100) + minLo;
- }
- 22:08:26.592 -> Core 1 register dump:
- 22:08:26.592 -> PC : 0x400d1359 PS : 0x00060c31 A0 : 0x800d1500 A1 : 0x3ffbe7e0
- 22:08:26.626 -> A2 : 0x000012c0 A3 : 0x00000001 A4 : 0x811a0a80 A5 : 0x00000000
- 22:08:26.626 -> A6 : 0x00000001 A7 : 0x00000000 A8 : 0x800d1356 A9 : 0x3ffbe890
- 22:08:26.626 -> A10 : 0x41434ec8 A11 : 0x402869d9 A12 : 0x434ec000 A13 : 0x41434ec8
- 22:08:26.626 -> A14 : 0x00000000 A15 : 0x00000000 SAR : 0x0000001d EXCCAUSE: 0x00000004
- 22:08:26.660 -> EXCVADDR: 0x00000000 LBEG : 0x400029ac LEND : 0x400029cb LCOUNT : 0x00000000
- 22:08:26.660 -> Core 1 was running in ISR context:
- 22:08:26.660 -> EPC1 : 0x400d1359 EPC2 : 0x00000000 EPC3 : 0x00000000 EPC4 : 0x40082d87
- 22:08:26.660 ->
- 22:08:26.660 -> ELF file SHA256: 000000000000000
- PC: 0x400d1416: onReceive(int) at C:\Users\$me\Documents\Arduino\gps_receiver/gps_receiver.ino line 95
- EXCVADDR: 0x00000000
- Decoding stack results
- 0x400d1416: onReceive(int) at C:\Users\$me\Documents\Arduino\gps_receiver/gps_receiver.ino line 95
- 0x400d20c0: LoRaClass::handleDio0Rise() at C:\Users\$me\Documents\Arduino\libraries\Heltec_ESP32_Dev-Boards\src\lora\LoRa.cpp line 518
- 0x400d20c0: LoRaClass::handleDio0Rise() at C:\Users\$me\Documents\Arduino\libraries\Heltec_ESP32_Dev-Boards\src\lora\LoRa.cpp line 518
- 0x400d20d6: LoRaClass::onDio0Rise() at C:\Users\$me\Documents\Arduino\libraries\Heltec_ESP32_Dev-Boards\src\lora\LoRa.cpp line 548
- 0x4008101d: __onPinInterrupt at C:\Users\$me\Documents\Arduino\hardware\heltec\esp32\cores\esp32\esp32-hal-gpio.c line 220
- 0x400d0fc1: setup() at C:\Users\%me\Documents\Arduino\gps_receiver/gps_receiver.ino line 34
- 0x40086829: vPortTaskWrapper at /Users/ficeto/Desktop/ESP32/ESP32/esp-idf-public/components/freertos/port.c line 143
Advertisement
Add Comment
Please, Sign In to add comment