ARDUINO: ОТПРАВКА ДАННЫХ GPS НА FIREBASE С ПОМОЩЬЮ GSM SIM800L

#arduino #gps #gsm #arduino-ide

#arduino #gps #gsm #arduino-ide

Вопрос:

Я пытаюсь отправить данные, которые я получил в модуле GPS, в базу данных Firebase в реальном времени, используя GSM SIM800L, но, к сожалению, он всегда получал нулевой результат по широте и долготе. Я уже протестировал GPS-модуль, и он работает. Как решить эту проблему… Пожалуйста, помогите мне, если вы знаете решение.. Ваша помощь очень полезна..

ВОТ КАКОЙ РЕЗУЛЬТАТ Я ПОЛУЧИЛ:

 POST:/Jeepney1.json?auth=yzZb6JRN6pHMoDxdtUPHhyhrCL0R1WtP9TPBWKM3 Data:{"Latitude":0.000000,"Longitude":0.000000} Status code: 200 Response: {"Latitude":0.Longitude":0.0} O POST:/Jeepney1.json?auth=yzZb6JRN6pHMoDxdtUPHhyhrCL0R1WtP9TPBWKM3 Data:{"Latitude":0.000000,"Longitude":0.000000} Status code: 200 Response: {"Latitude":0.Longitude":0.0}  

И КОДЫ, КОТОРЫЕ Я ИСПОЛЬЗУЮ:

 #define TINY_GSM_MODEM_SIM800 #define TINY_GSM_RX_BUFFER 256   #include lt;TinyGsmClient.hgt;  #include lt;ArduinoHttpClient.hgt;  #include lt;TinyGPS  .hgt; #include lt;SoftwareSerial.hgt;  static const int RXPin = 4, TXPin = 3; TinyGPSPlus gps; SoftwareSerial ss(RXPin, TXPin);  #define rxPin 7 #define txPin 8 SoftwareSerial sim800(txPin, rxPin);   const char FIREBASE_HOST[] = "famous-segment-319603-default-rtdb.firebaseio.com"; const String FIREBASE_AUTH = "yzZb6JRN6pHMoDxdtUPHhyhrCL0R1WtP9TPBWKM3"; const String FIREBASE_PATH = "Jeepney1"; const int SSL_PORT = 443;   char apn[] = "internet.globe.com.ph"; char user[] = ""; char pass[] = "";     TinyGsm modem(sim800);   TinyGsmClientSecure gsm_client_secure_modem(modem, 0); HttpClient http_client = HttpClient(gsm_client_secure_modem, FIREBASE_HOST, SSL_PORT);   unsigned long previousMillis = 0;     void setup() {  Serial.begin(9600);  ss.begin(96000);  Serial.println(F("device serial initialize"));    sim800.begin(9600);  Serial.println(F("SIM800L serial initialize"));    Serial.println(F("Initializing modem..."));  modem.restart();  String modemInfo = modem.getModemInfo();  Serial.print(F("Modem: "));  Serial.println(modemInfo);    http_client.setHttpResponseTimeout(10 * 1000); //^0 secs timeout }   void loop() {    Serial.print(F("Connecting to "));  Serial.print(apn);  if (!modem.gprsConnect(apn, user, pass))  {  Serial.println(F(" fail"));  //delay(1000);  return;  }  Serial.println(F(" OK"));    http_client.connect(FIREBASE_HOST, SSL_PORT);    while (true) {  if (!http_client.connected())  {  Serial.println();  http_client.stop();// Shutdown  Serial.println(F("HTTP not connected"));  break;  }  else  {  gps_loop();  }    }   }  void PostToFirebase(const char* method, const String amp; path , const String amp; data, HttpClient* http) {  String response;  int statusCode = 0;  http-gt;connectionKeepAlive();   String url;  if (path[0] != '/')  {  url = "/";  }  url  = path   ".json";  url  = "?auth="   FIREBASE_AUTH;  Serial.print("POST:");  Serial.println(url);  Serial.print("Data:");  Serial.println(data);    String contentType = "application/json";  http-gt;put(url, contentType, data);    statusCode = http-gt;responseStatusCode();  Serial.print(F("Status code: "));  Serial.println(statusCode);  response = http-gt;responseBody();  Serial.print(F("Response: "));  Serial.println(response);    if (!http-gt;connected())  {  Serial.println();  http-gt;stop();// Shutdown  Serial.println(F("HTTP POST disconnected"));  }   }   void gps_loop() {   String latitude = String(gps.location.lat(),6);  String longitude = String(gps.location.lng(), 6);    String Data = "{";  Data  = ""Latitude":"   latitude   ",";  Data  = ""Longitude":"   longitude   "";   Data  = "}";    PostToFirebase("PATCH", FIREBASE_PATH, Data, amp;http_client);     }