Можно ли отправить данные координат в базу данных реального времени firebase, которая имеет более 2 десятичных знаков? - PullRequest
0 голосов
/ 20 марта 2019

Я использую микроконтроллер NodeMCU и sim808 и отправляю данные, полученные от моего sim808, в базу данных реального времени firebase с использованием библиотеки firebase-arduino, и я заметил, что данные, полученные в моей базе данных firebase, всего лишь 2число с плавающей запятой, которое не является точным, учитывая, что данные, которые я отправляю, представляют собой координаты

ниже - код, который я использую:

#include <DFRobot_sim808.h>
#include <SoftwareSerial.h>
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>


#define PIN_TX    5
#define PIN_RX    4
// Set these to run example.

#define FIREBASE_HOST "..........com"
#define FIREBASE_AUTH "............."
#define WIFI_SSID "........."
#define WIFI_PASSWORD ".......!"
SoftwareSerial mySerial(PIN_TX,PIN_RX);
DFRobot_SIM808 sim808(&mySerial);//Connect RX,TX,PWR,


      

void setup() {
 
  Serial.begin(9600);
  mySerial.begin(9600);


  while(!sim808.init()) { 
      delay(1000);
      Serial.print("Sim808 init error\r\n");
  }

  //************* Turn on the GPS power************
  if( sim808.attachGPS())
  {
      Serial.println("Open the GPS power success");
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("connecting");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  Serial.print("connected: ");
  Serial.println(WiFi.localIP());
  
  
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);

  }
  else {
      Serial.println("Open the GPS power failure");
  }
}

void loop() {
 while (sim808.getGPS()){
Serial.print("Latgps: ");
Serial.println(sim808.GPSdata.lat);

Serial.print("Longps: ");
Serial.println(sim808.GPSdata.lon);

  // set value
  Firebase.set("latitude",sim808.GPSdata.lat);
  // handle error
  if (Firebase.failed()) {
      Serial.print("setting /gps failed:");
      Serial.println(Firebase.error());  
      return;
  }
  delay(1000);
  
  // update value
  Firebase.set("longitude", sim808.GPSdata.lon);
  // handle error
  if (Firebase.failed()) {
      Serial.print("setting /gps failed:");
      Serial.println(Firebase.error());  
      return;
  }
  delay(1000);

  // get value 

  
  Serial.print("latfire: ");
  Serial.println(Firebase.getFloat("latitude" ), 4);
  
  Serial.print("lonfire: ");
  Serial.println(Firebase.getFloat("longitude"), 4);
  delay(1000);

  // remove value


  // set string value
  Firebase.setString("message", "........");
  // handle error
  if (Firebase.failed()) {
      Serial.print("setting /message failed:");
      Serial.println(Firebase.error());  
      return;
  }
  delay(1000);
  
  // set bool value
  

  // append a new value to /logs
 }
}
...