MakerGram Logo

    MakerGram

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags
    • Users
    • Groups

    Gps data is not getting into TTN console after Connecting LoRa E5

    General Discussion
    2
    5
    393
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • zainmuhammed
      zainmuhammed last edited by

      I'm working on building a tracker with Xiao nrf52840 sense, Lora E5 and with NEO M8N GPS module.

      Now I have completed connecting XIAO nRF SENSE, LoRa E5 with TTN and it is working properly . Also I connect GPS to Pin number 4 and 5 using SS and it's working properly.
      Now both GPS and LoRa individually working properly. When I combine both GPS and LoRa, Lora in hardware serial and gps in software serial LoRa is connecting to the ttn and sending 0, 0 as latitude and longitude. And also I give a separate power for GPS.

      anyone can help me to fix the issue

      zainmuhammed 1 Reply Last reply Reply Quote 0
      • zainmuhammed
        zainmuhammed @zainmuhammed last edited by

        @zainmuhammed
        this is the code

        #include <Arduino.h>
        #include <U8x8lib.h>
        #include <TinyGPS++.h>
        #include <SoftwareSerial.h>
        
        static const int RXPin = 1, TXPin = 2;
        static const uint32_t GPSBaud = 9600;
        
        // The TinyGPS++ object
        TinyGPSPlus gps;
        
        // The serial connection to the GPS device
        SoftwareSerial ss(RXPin, TXPin);
        U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/*reset=*/U8X8_PIN_NONE);
        // U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/*clock=*/ SCL, /*data=*/ SDA, /*reset=*/ U8X8_PIN_NONE);   // OLEDs without Reset of the Display
        
        static char recv_buf[512];
        static bool is_exist = false;
        static bool is_join = false;
        static int led = 0;
        
        static int at_send_check_response(char *p_ack, int timeout_ms, char *p_cmd, ...) {
          int ch;
          int num = 0;
          int index = 0;
          int startMillis = 0;
          va_list args;
          char cmd_buffer[256];  // Adjust the buffer size as needed
          memset(recv_buf, 0, sizeof(recv_buf));
          va_start(args, p_cmd);
          vsprintf(cmd_buffer, p_cmd, args);  // Format the command string
          Serial1.print(cmd_buffer);
          Serial.print(cmd_buffer);
          va_end(args);
          delay(200);
          startMillis = millis();
        
          if (p_ack == NULL) {
            return 0;
          }
        
          do {
            while (Serial1.available() > 0) {
              ch = Serial1.read();
              recv_buf[index++] = ch;
              Serial.print((char)ch);
              delay(2);
            }
        
            if (strstr(recv_buf, p_ack) != NULL) {
              return 1;
            }
        
          } while (millis() - startMillis < timeout_ms);
          return 0;
        }
        
        static void recv_prase(char *p_msg) {
          if (p_msg == NULL) {
            return;
          }
          char *p_start = NULL;
          int data = 0;
          int rssi = 0;
          int snr = 0;
        
          p_start = strstr(p_msg, "RX");
          if (p_start && (1 == sscanf(p_start, "RX: \"%d\"\r\n", &data))) {
            Serial.println(data);
            u8x8.setCursor(2, 4);
            u8x8.print("led :");
            led = !!data;
            u8x8.print(led);
            if (led) {
              digitalWrite(LED_BUILTIN, LOW);
            } else {
              digitalWrite(LED_BUILTIN, HIGH);
            }
          }
        
          p_start = strstr(p_msg, "RSSI");
          if (p_start && (1 == sscanf(p_start, "RSSI %d,", &rssi))) {
            u8x8.setCursor(0, 6);
            u8x8.print("                ");
            u8x8.setCursor(2, 6);
            u8x8.print("rssi:");
            u8x8.print(rssi);
          }
          p_start = strstr(p_msg, "SNR");
          if (p_start && (1 == sscanf(p_start, "SNR %d", &snr))) {
            u8x8.setCursor(0, 7);
            u8x8.print("                ");
            u8x8.setCursor(2, 7);
            u8x8.print("snr :");
            u8x8.print(snr);
          }
        }
        
        void setup(void) {
          u8x8.begin();
          u8x8.setFlipMode(1);
          u8x8.setFont(u8x8_font_chroma48medium8_r);
          ss.begin(GPSBaud);
          Serial.begin(GPSBaud);
          pinMode(LED_BUILTIN, OUTPUT);
          digitalWrite(LED_BUILTIN, HIGH);
        
          Serial1.begin(9600);
          Serial.print("E5 LORAWAN TEST\r\n");
          u8x8.setCursor(0, 0);
        
          if (at_send_check_response("+AT: OK", 100, "AT\r\n")) {
            is_exist = true;
            at_send_check_response("+ID: DevEui", 1000, "AT+ID=DevEui,\"xxxxx\"\r\n"); // replace 'xxxxxxxxxxxxx' with your DevEui
            at_send_check_response("+ID: AppEui", 1000, "AT+ID=AppEui,\"xxxxxxx\"\r\n"); // replace 'xxxxxxxxxxxxx' with your AppEui
            at_send_check_response("+KEY: APPKEY", 1000, "AT+KEY=APPKEY,\"xxxxxxxxx\"\r\n"); // replace 'xxxxxxxxxxxxx' with your AppKey
            at_send_check_response("+ID: DevAddr", 1000, "AT+ID=DevAddr\r\n"); 
            at_send_check_response("+ID: AppEui", 1000, "AT+ID\r\n");
            at_send_check_response("+MODE: LWOTAA", 1000, "AT+MODE=LWOTAA\r\n");
            at_send_check_response("+DR: IN865", 1000, "AT+DR=IN865\r\n");  // Change FREQ as per your location
            at_send_check_response("+CH: NUM", 1000, "AT+CH=NUM,0-2\r\n");
            at_send_check_response("+CLASS: C", 1000, "AT+CLASS=A\r\n");
            at_send_check_response("+PORT: 8", 1000, "AT+PORT=8\r\n");
            delay(200);
            u8x8.setCursor(5, 0);
            u8x8.print("LoRaWAN");
            is_join = true;
          } else {
            is_exist = false;
            Serial.print("No E5 module found.\r\n");
            u8x8.setCursor(0, 1);
            u8x8.print("unfound E5 !");
          }
        
          u8x8.setCursor(2, 4);
          u8x8.print("led :");
          u8x8.print(led);
        }
        
        void loop(void) {
          if (is_exist) {
            int ret = 0;
            if (is_join) {
        
              ret = at_send_check_response("+JOIN: Network joined", 12000, "AT+JOIN\r\n");
              if (ret) {
                is_join = false;
              } else {
                at_send_check_response("+ID: AppEui", 1000, "AT+ID\r\n");
                Serial.print("JOIN failed!\r\n\r\n");
                delay(5000);
              }
            } else {
              gps.encode(ss.read());
              float a=gps.location.lat();
              float b=gps.location.lng();
              Serial.println(a);
              Serial.println(b);
              char cmd[128];
              sprintf(cmd, "AT+CMSGHEX=\"%04X%04X\"\r\n", (float)a,(float)b);
              ret = at_send_check_response("Done", 5000, cmd);
              if (ret) {
                recv_prase(recv_buf);
              } else {
                Serial.print("Send failed!\r\n\r\n");
              }
              delay(5000);
            }
          } else {
            delay(1000);
          }
        }
        

        9135d5d3-6277-4c60-81df-a2acac65c93d-image.png

        salmanfaris 1 Reply Last reply Reply Quote 0
        • salmanfaris
          salmanfaris @zainmuhammed last edited by

          Hi @zainmuhammed ,

          Can you share the GPS and LoRa output when it’s working?

          Also can try capturing the GPS when the device is starting the loop instead after joining the LoRaWAN and see?

          Also make sure the device provides have enough to modules. The GPS need more power when you cold start.

          zainmuhammed 1 Reply Last reply Reply Quote 0
          • zainmuhammed
            zainmuhammed @salmanfaris last edited by

            @salmanfaris Today I tried after connecting a 18650 cell,
            WhatsApp Image 2024-04-12 at 10.40.06_c7d1947e.jpg WhatsApp Image 2024-04-12 at 10.40.05_897b8bb6.jpg
            Data getting in console after integration of both lora and gps.
            3f45cfe7-0061-4328-8c55-ef0a73385203-image.png
            here you can see that GPS value is 0,0. also in my previous post you can see that GPS value is not reading.
            Also the status LED is active after it is connected to the satellite.

            salmanfaris 1 Reply Last reply Reply Quote 0
            • salmanfaris
              salmanfaris @zainmuhammed last edited by salmanfaris

              @zainmuhammed Can try capturing the GPS when the device is starting the loop instead after joining the LoRaWAN and see?

              You can put the GPS value on top of the loop or setup function.

              Also, what kind of gateway are you using? Is it configured okay, OTA is done?

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Recent Posts

              • D

                Signal Hunt: An ESP-NOW Workshop & Treasure Hunt

                Hello everyone! We’re planning on organizing a two-phase event that explores device-to-device communication using ESP-NOW protocol :

                Workshop: Participants learn to build and program ESP32-based receivers with a web interface that directly exchange signal data using ESP-NOW for RSSI-based distance approximation.

                Signal Hunt Competition: Equipped with these receivers, participants will track hidden ESP32 transmitters scattered around the campus, each with distinct point values.

                Current hardware setup:
                Reciever(one per team):
                Esp32 ~ 360rs
                9v battery = 20rs
                9v battery clip= 5rs
                buck converter (MP1584 or LM2596) ~ 45rs
                Perfboard + male to female berg strip ~30rs
                Total per reciever ~ 460rs
                Transmitters :6
                Components same as recievers = 460*6~2760rs

                (using non-rechargeable batteries to reduce cost,
                will using a 7805 voltage regulator IC be a viable way to reduce cost further?)

                We’d love your suggestions on ways to simplify hardware, reducing the cost, secure partnerships and funding, or enhance the interactive elements. Thank you, looking forward to any ideas that can help make the event engaging and successful!

                • read more
              • M

                RTA offers a diverse range of stylish apparel, including rta clothing staples like rta hoodie men, men's rta hoodie, and the sleek black rta hoodie. Their denim collection features must-haves such as rta denim pants, rta denim mens, rta denim jeans, rta skinny jeans, rta jeans mens, rta jeans, and rta denim shorts. Complete your look with rta shorts, rta shirts, rta t shirt, rta t shirt men, and cozy options like the rta sweatshirt. For a functional touch, add rta cargo pants to your wardrobe and create the ultimate rta outfit for any occasion.

                • read more
              • J

                So today, I was reading about a kid who got a custom prosthetic arm printed like really. Holly molly! People are printing prosthetics nowadays! That’s when I stumbled upon Curewith3D, and wow, 3D printing in healthcare is on another level.

                Apparently, I found out that they’re not just 3d printing limbs. They actually use patient-specific scans (like CT/MRI data) and some DICOM files to design prosthetics that fit the person’s body perfectly. Every angle, curve, and dimension is matched to the individual. No more bulky or uncomfortable fits.

                What’s wild is how fast and affordable the process is. Instead of traditional molds and weeks of waiting, Curewith3D can design, print, and deliver a customized prosthetic in a fraction of the time.

                I didn’t know 3D printing services could be this life-changing, and it's happening right here in India. It really makes you wonder what else we’re going to be printing next.

                Anyone else heard of this or know someone who’s used a 3D printed prosthetic? Would love to hear more.

                • read more
              • R

                I am trying to set up a janus webrtc to stream an RTSP to an HTML page.
                I have followed the getting-started steps by Janus-gateway official github repo.

                Since I am new to web development. I do not understand how to host the Webrtc server. can anyone guide me to set up an HTML page that can display a video stream from an RTSP server using janus webrtc?

                • read more
              • @zainmuhammed Can try capturing the GPS when the device is starting the loop instead after joining the LoRaWAN and see?

                You can put the GPS value on top of the loop or setup function.

                Also, what kind of gateway are you using? Is it configured okay, OTA is done?

                • read more
              By MakerGram | A XiStart Initiative | Built with ♥ NodeBB
              Copyright © 2023 MakerGram, All rights reserved.
              Privacy Policy | Terms & Conditions | Disclaimer | Code of Conduct