silenius

Untitled

Feb 9th, 2021
882
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "Arduino.h"
  2. #include "heltec.h"
  3.  
  4. long lastReceiveTime = 0;
  5. unsigned short counter = 0;
  6. float snr = 0;
  7. String rssi = "RSSI --";  //rssi value
  8. String packSize = "--";   // size
  9. String packet = "";       // stores last packet
  10. double latconv = 0;
  11. double longconv =0;
  12. double dirtylong = 0;
  13. double  dirtylat = 0;
  14. bool deepsleepflag = false;
  15. bool receiveflag = false;
  16.  
  17. void interrupt_GPIO0()
  18. {
  19.   delay(10);
  20.   if(digitalRead(0)==0){  
  21.   deepsleepflag=true;
  22.   }
  23. }
  24.  
  25. void setup()
  26. {
  27.   Heltec.begin(true /*DisplayEnable Enable*/, true /*LoRa Enable*/, true /*Serial Enable*/, true /*LoRa use PABOOST*/, 868E6 /*LoRa RF working band*/);
  28.   attachInterrupt(0,interrupt_GPIO0,FALLING);
  29.   LoRa.setSpreadingFactor(12);
  30. //LoRa.setSignalBandwidth(500E3);
  31.   LoRa.onReceive(onReceive);
  32.   LoRa.receive();
  33. }
  34.  
  35. void loop()
  36. {
  37.   if(deepsleepflag)
  38.   {
  39.   LoRa.end();
  40.   LoRa.sleep();
  41.   delay(100);
  42.   pinMode(4,INPUT);
  43.   pinMode(5,INPUT);
  44.   pinMode(14,INPUT);
  45.   pinMode(15,INPUT);
  46.   pinMode(16,INPUT);
  47.   pinMode(17,INPUT);
  48.   pinMode(18,INPUT);
  49.   pinMode(19,INPUT);
  50.   pinMode(26,INPUT);
  51.   pinMode(27,INPUT);
  52.   digitalWrite(Vext,HIGH);
  53.   delay(2);
  54.   esp_deep_sleep_start();
  55.   }
  56.  
  57.   if(receiveflag)
  58.   {
  59.   digitalWrite(LED, HIGH);
  60.   lastReceiveTime = millis();
  61.   digitalWrite(25,HIGH);
  62.   delay(1000);
  63.   receiveflag = false;  
  64.   digitalWrite(LED, LOW);
  65.   LoRa.receive();
  66.   Heltec.display -> clear();
  67.   Heltec.display -> drawString(0, 50, "Counter " + (String)(counter-1));
  68.   Heltec.display -> drawString(0, 0, "Received Size " + packSize);
  69.   Heltec.display -> drawString(0, 10, String(latconv,10));
  70.   Heltec.display -> drawString(0, 20, String(longconv,10));
  71.   Heltec.display -> drawString(0, 40, "RSSI  " + rssi + "db " + "  SNR " + String(snr, 2));
  72.   Heltec.display -> display();
  73.   //Serial.println(toSend);
  74.   delay(100);
  75.   }
  76. }
  77.  
  78. void onReceive(int packetSize)//LoRa receiver interrupt service
  79. {
  80.   //if (packetSize == 0) return;
  81.    packSize = String(packetSize,DEC);
  82.    while (LoRa.available())
  83.      {
  84.      packet += (char) LoRa.read();
  85.      }
  86.  
  87.   rssi = String(LoRa.packetRssi(), DEC);    
  88.   snr = LoRa.packetSnr();
  89.   receiveflag = true;
  90.   convert();
  91.  
  92.   //sendGGA("$GPGGA,", 6);
  93. }
  94.  
  95. void convert(){
  96.   short degLo = 0;
  97.   short degLat =0;
  98.   float minLat = 0;
  99.   float minLo = 0;
  100.   unsigned long latitude = 0;
  101.   unsigned long longitude = 0;
  102.  
  103.   latitude = uint8_t(packet[0])*65536 + uint8_t(packet[1])*256 + uint8_t(packet[2]);
  104.   latconv = (latitude / 93206.75) - 90;
  105.   degLat = latconv;
  106.   minLat = (latconv - degLat)*60;
  107.   dirtylat = (degLat*100) + minLat;
  108.   longitude = uint8_t(packet[3])*65536 + uint8_t(packet[4])*256 + uint8_t(packet[5]);
  109.   longconv = (longitude / 46603.375) - 180;
  110.   degLo = longconv;
  111.   minLo = (longconv - degLo)*60;
  112.   dirtylong = (degLo*100) + minLo;
  113. }
  114.  
  115. 22:08:26.592 -> Core 1 register dump:
  116. 22:08:26.592 -> PC      : 0x400d1359  PS      : 0x00060c31  A0      : 0x800d1500  A1      : 0x3ffbe7e0  
  117. 22:08:26.626 -> A2      : 0x000012c0  A3      : 0x00000001  A4      : 0x811a0a80  A5      : 0x00000000  
  118. 22:08:26.626 -> A6      : 0x00000001  A7      : 0x00000000  A8      : 0x800d1356  A9      : 0x3ffbe890  
  119. 22:08:26.626 -> A10     : 0x41434ec8  A11     : 0x402869d9  A12     : 0x434ec000  A13     : 0x41434ec8  
  120. 22:08:26.626 -> A14     : 0x00000000  A15     : 0x00000000  SAR     : 0x0000001d  EXCCAUSE: 0x00000004  
  121. 22:08:26.660 -> EXCVADDR: 0x00000000  LBEG    : 0x400029ac  LEND    : 0x400029cb  LCOUNT  : 0x00000000  
  122. 22:08:26.660 -> Core 1 was running in ISR context:
  123. 22:08:26.660 -> EPC1    : 0x400d1359  EPC2    : 0x00000000  EPC3    : 0x00000000  EPC4    : 0x40082d87
  124. 22:08:26.660 ->
  125. 22:08:26.660 -> ELF file SHA256: 000000000000000
  126.  
  127. PC: 0x400d1416: onReceive(int) at C:\Users\$me\Documents\Arduino\gps_receiver/gps_receiver.ino line 95
  128. EXCVADDR: 0x00000000
  129.  
  130. Decoding stack results
  131. 0x400d1416: onReceive(int) at C:\Users\$me\Documents\Arduino\gps_receiver/gps_receiver.ino line 95
  132. 0x400d20c0: LoRaClass::handleDio0Rise() at C:\Users\$me\Documents\Arduino\libraries\Heltec_ESP32_Dev-Boards\src\lora\LoRa.cpp line 518
  133. 0x400d20c0: LoRaClass::handleDio0Rise() at C:\Users\$me\Documents\Arduino\libraries\Heltec_ESP32_Dev-Boards\src\lora\LoRa.cpp line 518
  134. 0x400d20d6: LoRaClass::onDio0Rise() at C:\Users\$me\Documents\Arduino\libraries\Heltec_ESP32_Dev-Boards\src\lora\LoRa.cpp line 548
  135. 0x4008101d: __onPinInterrupt at C:\Users\$me\Documents\Arduino\hardware\heltec\esp32\cores\esp32\esp32-hal-gpio.c line 220
  136. 0x400d0fc1: setup() at C:\Users\%me\Documents\Arduino\gps_receiver/gps_receiver.ino line 34
  137. 0x40086829: vPortTaskWrapper at /Users/ficeto/Desktop/ESP32/ESP32/esp-idf-public/components/freertos/port.c line 143
  138.  
Advertisement
Add Comment
Please, Sign In to add comment