#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); }