Я использую микроконтроллер 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
}
}