我们开发了智能手杖和移动应用程序。该棒连接了 ESP32 微控制器和集成超声波传感器,用于检测障碍物。 esp32 将障碍物数据发送到 Firebase 实时数据库,移动应用程序检索该数据并将其转换为盲人可以听到的声音。
但问题是,当你向 Firebase 的实时数据库发送数据时,更新数据可能需要时间,所以盲人将听不到任何声音。我该如何解决这个问题,是什么导致了 Firebase 实时数据库更新延迟?
我们以为是wifi网络的问题,并连接了高速wifi网络,但更新仍然有延迟。我的朋友建议,如果我们购买Firebase,那么更新就不会延迟。这是真的吗?
实现代码如下:
#include<FirebaseESP32.h>
#define FIREBASE_HOST "..."
#define FIREBASE_AUTH "..."
int MoisturePin = 2;
int FlamePin = 19;
int triger_pin = 5;
int echo_pin = 18;
int triger_pin2 = 17;
int echo_pin2 = 16;
int triger_pin3 = 4;
int echo_pin3 = 0;
int duration;
int distance;
int duration2;
int distance2;
int duration3;
int distance3;
// bazer
int bazzer_pin = 10;
int green_led = 13;
int red_led=9 ;
char auth[] = FIREBASE_AUTH;
char ssid[] = "my-wifi";
char pass[] = "1121111";
void setup(){
Serial.begin(9600);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
Serial.print(".");
}
Serial.println("");
Serial.println("Connected to WiFi");
// Initialize Firebase
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
pinMode(triger_pin,OUTPUT);
pinMode(echo_pin,INPUT);
pinMode(triger_pin2,OUTPUT);
pinMode(echo_pin2,INPUT);
pinMode(triger_pin3,OUTPUT);
pinMode(echo_pin3,INPUT);
pinMode(bazzer_pin,OUTPUT);
pinMode(red_led,OUTPUT);
pinMode(green_led,OUTPUT);
pinMode(MoisturePin,INPUT);
pinMode(FlamePin,INPUT);
}
void loop() {
ultrasonicOne();
ultrasonicTwo();
ultrasonicThree();
moisture_sersor();
flame_sersor();
}
// ----------------------- Ultrasonic Sensor 1 ---------------------------
void ultrasonicOne(){
int ultrasonicData;
digitalWrite(red_led,LOW);
digitalWrite(triger_pin,LOW);
delayMicroseconds(10);
digitalWrite(triger_pin,HIGH);
delayMicroseconds(10);
digitalWrite(triger_pin,LOW);
duration=pulseIn(echo_pin,HIGH);
distance=duration*(0.034)/2;
Serial.print("Left distance is : ");
Serial.println(distance);
if(distance>60){
ultrasonicData = map(distance,61, 400, 0, 0);
}
else if(distance<=60){
ultrasonicData = map(distance,0, 60, 3 , 3);
}
else {
}
Serial.println(ultrasonicData);
String databasePathultrasonicData = "/Left";
FirebaseData firebaseData;
if(Firebase.setString(firebaseData, databasePathultrasonicData, ultrasonicData)){
Serial.println("Data set in Firebase successfully.");
} else {
Serial.println("Error setting data in Firebase:");
Serial.println(firebaseData.errorReason());
} //display the moisture percent.
Serial.println("***********************************************");
Serial.println();
//-----------------------------------------------------------------------
}
但问题是,当你将数据发送到 Firebase 的实时数据库时,更新数据可能需要时间
所有 API 都会发生这种情况。不仅仅是 Firebase 的情况如此。所有异步操作都需要时间。
我该如何解决这个问题,是什么导致了 Firebase 实时数据库更新延迟?
延迟可能是由多种因素造成的,例如互联网连接较弱、带宽、延迟等。
我的朋友建议,如果我们购买Firebase,那么更新就不会延迟。这是真的吗?
不,那不是真的。无论您使用的是 Spark 计划还是 Blaze 计划,与 Firebase 的连接都应该是相同的。
这就是连接。然而,这种延迟也可能来自代码。如果是这种情况,请编辑您的问题并向我们展示 MCVE,看看问题出在哪里。