firebase-arduino icon indicating copy to clipboard operation
firebase-arduino copied to clipboard

Arduino board (node mcu) is not sending or read any data to firebase

Open pkptissera080 opened this issue 4 years ago • 20 comments

My project worked perfectly until 2020/02/17 1:28:55 AM and suddenly it crashed. error - firebase failed there is no issue with wifi or the Node MCU libraries I used - firebase library : https://github.com/FirebaseExtended/firebase-arduino JSON library : https://github.com/bblanchon/ArduinoJson/tree/v5.13.1

Please help me and thank you for your time.

This is my demo code:

`#include <ESP8266WiFi.h> #include <FirebaseArduino.h>

// Set these to run example. #define FIREBASE_HOST "xxxxxxxxxx.firebaseio.com" #define FIREBASE_AUTH "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #define WIFI_SSID "wifi" #define WIFI_PASSWORD "wifipwd"

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

// connect to wifi. 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); }

int n = 0;

void loop() { // set value Firebase.setFloat("number", 42.0); // handle error if (Firebase.failed()) { Serial.print("setting /number failed:"); Serial.println(Firebase.error());
return; } delay(1000);

// update value Firebase.setFloat("number", 43.0); // handle error if (Firebase.failed()) { Serial.print("setting /number failed:"); Serial.println(Firebase.error());
return; } delay(1000);

// get value Serial.print("number: "); Serial.println(Firebase.getFloat("number")); delay(1000);

// remove value Firebase.remove("number"); delay(1000);

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

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

// append a new value to /logs String name = Firebase.pushInt("logs", n++); // handle error if (Firebase.failed()) { Serial.print("pushing /logs failed:"); Serial.println(Firebase.error());
return; } Serial.print("pushed: /logs/"); Serial.println(name); delay(1000); }`

Serial monitor output ........

connecting... connected: 192.xxx.x.xxx setting /number failed: setting /number failed: . . setting /number failed:

pkptissera080 avatar Mar 04 '20 16:03 pkptissera080

I have same trouble. My system working very well before 1 week

SinanCidem avatar Mar 04 '20 17:03 SinanCidem

Update the fingerprint

static const char kFirebaseFingerprint[] = "03 D6 42 23 03 D1 0C 06 73 F7 E2 BD 29 47 13 C3 22 71 37 1B"

TheRealNaery avatar Mar 05 '20 01:03 TheRealNaery

thank you @TheRealNaery error fixed

pkptissera080 avatar Mar 05 '20 06:03 pkptissera080

Hi I also had the same issue and I updated the fingerprint. After updating the latest fingerprint, data was uploaded to Firebase. But, the NodeMCU crashes automatically after sending data for a while. The Serial Monitor displays an exception. After decoding the exception, my understanding was that the issue was with the "Firebase.getInt" code parts. It works when put in "Void Setup", but results in an exception when it is placed in "Void Loop". I have been unable to fix the issue for about a week now. Please help.

Here is my code:

//D0 = 16; //D1 = 5; //D2 = 4; //D3 = 0; //D4 = 2; //D5 = 14; //D6 = 12; //D7 = 13; //D5 = 15; //D9 = 3; //D10 = 1;

#include <ESP8266WiFi.h> #include <FirebaseArduino.h> #include <DHT.h> #define DHTPIN 4 //d2 #define DHTTYPE DHT21 DHT dht(DHTPIN, DHTTYPE);

#include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 2 // DS18B20 on NodeMCU pin D4 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature DS18B20(&oneWire);

#define WIFI_SSID "Dialog 4G 142"//"Dialog 4G" #define WIFI_PASSWORD "2D8D37F1"//"FDL6552MG04" #define FIREBASE_HOST "slrs-iot.firebaseio.com" #define FIREBASE_AUTH "bwaDhgMWwLHpFiv4A1plexT02TUwzyHjajSyyDd5"

void setup() { dht.begin(); Serial.begin(115200); DS18B20.begin();

pinMode(D1, OUTPUT); digitalWrite(D1, LOW); pinMode(D7, OUTPUT); digitalWrite(D7, LOW); pinMode(D6, OUTPUT); digitalWrite(D6, LOW);

pinMode(0, OUTPUT); delay(1000); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); //try to connect with wifi

while (WiFi.status() != WL_CONNECTED) { digitalWrite(0, digitalRead(0) ^ 1); delay(500); }

Serial.println(WiFi.localIP()); //print local IP address Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); digitalWrite(0, 1); }

void loop() { DS18B20.requestTemperatures(); float t = DS18B20.getTempCByIndex(0); float h = dht.readHumidity();

Serial.print(t); Serial.print(","); Serial.println(h); if (isnan(h) || isnan(t)) { // Check if any reads failed and exit early (to try again). Serial.println(F("Failed to read from DHT sensor!")); return; }

Firebase.setFloat("/devices/lalan-d1/Status/Humidity", h); //setup path and send readings Firebase.setFloat("/devices/lalan-d1/Status/Temperature", t); //setup path and send readings

int ac_low = Firebase.getInt("/devices/lalan-d1/Parameters/AC_LOW"); int ac_high = Firebase.getInt("/devices/lalan-d1/Parameters/AC_HIGH"); int hum_low = Firebase.getInt("/devices/lalan-d1/Parameters/HUMIDIFIER_LOW"); int hum_high = Firebase.getInt("/devices/lalan-d1/Parameters/HUMIDIFIER_HIGH"); int dehum_low = Firebase.getInt("/devices/lalan-d1/Parameters/DEHUMIDIFIER_LOW"); int dehum_high = Firebase.getInt("/devices/lalan-d1/Parameters/DEHUMIDIFIER_HIGH"); int AC_S = Firebase.getInt("/devices/lalan-d1/Switch/AC"); int HUM_S = Firebase.getInt("/devices/lalan-d1/Switch/HUMIDIFIER"); int DEHUM_S = Firebase.getInt("/devices/lalan-d1/Switch/DEHUMIDIFIER");

if (h < hum_low ) { if (HUM_S == 1) { digitalWrite(D1, HIGH); Firebase.setFloat("/devices/lalan-d1/Status/humiditifier", 1); Serial.println("Firebase Set 1");

}
else {
  digitalWrite(D1, LOW);
  Firebase.setFloat("/devices/lalan-d1/Status/humiditifier", 0);
  Serial.println("Firebase Set 0");

}

} if (h > hum_high ) { digitalWrite(D1, LOW); Firebase.setFloat("/devices/lalan-d1/Status/humiditifier", 0); Serial.println("h > hum_high Firebase Set 0");

}

//*************************************************************************************************************

if (h > dehum_high) { if (DEHUM_S == 1) { digitalWrite(D6, HIGH); // Firebase.setFloat("/devices/lalan-d1/Status/dehumiditifier", 1);

}
else {
  digitalWrite(D6, LOW);
  Firebase.setFloat("/devices/lalan-d1/Status/dehumiditifier", 0);

}

} if (h < dehum_low) { digitalWrite(D6, LOW); Firebase.setFloat("/devices/lalan-d1/Status/dehumiditifier", 0);

}

//*************************************************************************************************************

if (t > ac_high) { if (AC_S == 1) { digitalWrite(D7, HIGH); Firebase.setFloat("/devices/lalan-d1/Status/ac", 1);

}
else {
  digitalWrite(D7, LOW);
  Firebase.setFloat("/devices/lalan-d1/Status/ac", 0);

}

} if (t < ac_low) { digitalWrite(D7, LOW); Firebase.setFloat("/devices/lalan-d1/Status/ac", 0);

}

delay(5000);

}

NilangiSithu avatar Mar 05 '20 11:03 NilangiSithu

@pkptissera080 I also am trying to make the same code work on my system, however, even though the code is getting uploaded, the output is not as expected at all:

errorsnip

Please help me figure this out, thanks!

This is my code, for your reference:

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

// Set these to run example. #define FIREBASE_HOST "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #define FIREBASE_AUTH "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #define WIFI_SSID "xxxxx" #define WIFI_PASSWORD "xxxxxxxxx"

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

// connect to wifi. 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); }

int n = 0;

void loop() { // set value Firebase.setFloat("number", 42.0); // handle error if (Firebase.failed()) { Serial.print("setting /number failed:"); Serial.println(Firebase.error());
return; } delay(1000);

// update value Firebase.setFloat("number", 43.0); // handle error if (Firebase.failed()) { Serial.print("setting /number failed:"); Serial.println(Firebase.error());
return; } delay(1000);

// get value Serial.print("number: "); Serial.println(Firebase.getFloat("number")); delay(1000);

// remove value Firebase.remove("number"); delay(1000);

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

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

// append a new value to /logs String name = Firebase.pushInt("logs", n++); // handle error if (Firebase.failed()) { Serial.print("pushing /logs failed:"); Serial.println(Firebase.error());
return; } Serial.print("pushed: /logs/"); Serial.println(name); delay(1000); }

Danin066 avatar Mar 07 '20 09:03 Danin066

Actualice las librerias

angelbarusta avatar Mar 16 '20 22:03 angelbarusta

@ pkptissera080 También estoy tratando de hacer que el mismo código funcione en mi sistema, sin embargo, a pesar de que el código se está cargando, la salida no es la esperada:

errores

Por favor, ayúdame a resolver esto, ¡gracias!

Este es mi código, para su referencia:

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

// Establecer estos para ejecutar el ejemplo. #define FIREBASE_HOST "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #define FIREBASE_AUTH "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #define WIFI_SSID "xxxxx" #define WIFI_PASSWORD "xxxxxxxxx"

configuración nula () { Serial.begin (9600);

// conéctate a wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("conexión"); while (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); retraso (500); } Serial.println (); Serial.print ("conectado:"); Serial.println (WiFi.localIP ());

Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

int n = 0;

void loop () { // establece el valor Firebase.setFloat ("número", 42.0); // maneja el error si (Firebase.failed ()) { Serial.print ("configuración / número falló:"); Serial.println (Firebase.error ()); regreso; } retraso (1000);

// valor de actualización Firebase.setFloat ("número", 43.0); // maneja el error si (Firebase.failed ()) { Serial.print ("configuración / número falló:"); Serial.println (Firebase.error ()); regreso; } retraso (1000);

// obtener el valor Serial.print ("número:"); Serial.println (Firebase.getFloat ("número")); retraso (1000);

// elimina el valor Firebase.remove ("número"); retraso (1000);

// establece el valor de la cadena Firebase.setString ("mensaje", "hola mundo"); // maneja el error si (Firebase.failed ()) { Serial.print ("configuración / mensaje falló:"); Serial.println (Firebase.error ()); regreso; } retraso (1000);

// establece el valor de bool Firebase.setBool ("verdad", falso); // maneja el error si (Firebase.failed ()) { Serial.print ("configuración / verdad falló:"); Serial.println (Firebase.error ()); regreso; } retraso (1000);

// agrega un nuevo valor a / logs String name = Firebase.pushInt ("logs", n ++); // maneja el error si (Firebase.failed ()) { Serial.print (" error al empujar / registrar:"); Serial.println (Firebase.error ()); regreso; } Serial.print ("push: / logs /"); Serial.println (nombre); retraso (1000); }

Los baudios son 9600 en el scope?

angelbarusta avatar Mar 16 '20 22:03 angelbarusta

@Danin066 did you check your firebase database, is the data is sending to the database or not?

pkptissera080 avatar Mar 20 '20 08:03 pkptissera080

@angelbarusta I don't understand your language sorry...

pkptissera080 avatar Mar 20 '20 08:03 pkptissera080

Hi, I have the same problem but I already actualized the fingerprint and still no working. I installed the last Arduino firebase library, the ArduinoJson 5.13.1 library, and the ESP8266 2.5.2 board.

I have tried many things, uninstalling libraries and looking for new ones but it doesn't work.

I use this fingerprint ("03 D6 42 23 03 D1 0C 06 73 F7 E2 BD 29 47 13 C3 22 71 37 1B")

The problem is (setting /number failed:), so the firebase.begin is okay

Thank you all!

Here is my code:

`#include <ESP8266WiFi.h> #include <FirebaseArduino.h>

// Set these to run example. #define FIREBASE_HOST "sensor-de-consumo-agua.firebaseio.com" #define FIREBASE_AUTH "XXXXXXXXXX" #define WIFI_SSID "XXXXXXXXXX" #define WIFI_PASSWORD "XXXXXXXXXX"

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

// connect to wifi. 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); }

int n = 0;

void loop() { // set value Firebase.setFloat("number", 42.0); // handle error if (Firebase.failed()) { Serial.print("setting /number failed:"); Serial.println(Firebase.error()); return; } delay(1000);

// update value Firebase.setFloat("number", 43.0); // handle error if (Firebase.failed()) { Serial.print("setting /number failed:"); Serial.println(Firebase.error()); return; } delay(1000);

// get value Serial.print("number: "); Serial.println(Firebase.getFloat("number")); delay(1000);

// remove value Firebase.remove("number"); delay(1000);

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

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

// append a new value to /logs String name = Firebase.pushInt("logs", n++); // handle error if (Firebase.failed()) { Serial.print("pushing /logs failed:"); Serial.println(Firebase.error()); return; } Serial.print("pushed: /logs/"); Serial.println(name); delay(1000); }`

JuanMTB avatar Mar 27 '20 03:03 JuanMTB

@JuanMTB try to reinstall the https://github.com/FirebaseExtended/firebase-arduino and change the kFirebaseFingerprint like this : static const char kFirebaseFingerprint[] ="03:D6:42:23:03:D1:0C:06:73:F7:E2:BD:29:47:13:C3:22:71:37:1B"; // 2020-02

pkptissera080 avatar Mar 27 '20 06:03 pkptissera080

@pkptissera080 Thank you! It works!

It was only necessary to change the fingerprint.

JuanMTB avatar Mar 27 '20 14:03 JuanMTB

@JuanMTB you are welcome

pkptissera080 avatar Mar 27 '20 14:03 pkptissera080

@JuanMTB try to reinstall the https://github.com/FirebaseExtended/firebase-arduino and change the kFirebaseFingerprint like this : static const char kFirebaseFingerprint[] ="03:D6:42:23:03:D1:0C:06:73:F7:E2:BD:29:47:13:C3:22:71:37:1B"; // 2020-02

Thank you so much. It work for me

hyhypepe avatar Apr 12 '20 12:04 hyhypepe

anyone having still error

Alpha-1729 avatar May 02 '20 17:05 Alpha-1729

Hola , también tuve el mismo problema y actualicé la huella digital. Después de actualizar la última huella digital, los datos se cargaron en Firebase. Pero, el NodeMCU se bloquea automáticamente después de enviar datos por un tiempo. El monitor serie muestra una excepción. Después de decodificar la excepción, entendí que el problema estaba en las partes del código "Firebase.getInt". Funciona cuando se coloca en "Configuración vacía", pero da como resultado una excepción cuando se coloca en "Bucle vacío". No he podido solucionar el problema durante aproximadamente una semana. Por favor ayuda.

Aquí está mi código:

// D0 = 16; // D1 = 5; // D2 = 4; // D3 = 0; // D4 = 2; // D5 = 14; // D6 = 12; // D7 = 13; // D5 = 15; // D9 = 3; // D10 = 1;

#include <ESP8266WiFi.h> #include <FirebaseArduino.h> #include <DHT.h> #define DHTPIN 4 // d2 #define DHTTYPE DHT21 DHT dht (DHTPIN, DHTTYPE);

#include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 2 // DS18B20 en el pin NodeMCU D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire);

#define WIFI_SSID "Dialog 4G 142" // "Dialog 4G" #define WIFI_PASSWORD "2D8D37F1" // "FDL6552MG04" #define FIREBASE_HOST "slrs-iot.firebaseio.com" #define FIREBASE_AUTH "BwaDhyW2D1

configuración nula () { dht.begin (); Serial.begin (115200); DS18B20.begin ();

pinMode (D1, SALIDA); digitalWrite (D1, BAJO); pinMode (D7, SALIDA); digitalWrite (D7, BAJO); pinMode (D6, SALIDA); digitalWrite (D6, BAJO);

pinMode (0, SALIDA); retraso (1000); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); // intenta conectarte con wifi

while (WiFi.status ()! = WL_CONNECTED) { digitalWrite (0, digitalRead (0) ^ 1); retraso (500); }

Serial.println (WiFi.localIP ()); // imprime la dirección IP local Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); digitalWrite (0, 1); }

bucle vacío () { DS18B20.requestTemperatures (); flotante t = DS18B20.getTempCByIndex (0); flotante h = dht.readHumidity ();

Serial.print (t); Serial.print (","); Serial.println (h); if (isnan (h) || isnan (t)) {// Compruebe si alguna lectura falló y salga temprano (para intentarlo de nuevo). Serial.println (F ("¡Error al leer del sensor DHT!")); regreso; }

Firebase.setFloat ("/ devices / lalan-d1 / Status / Humidity", h); // configurar ruta y enviar lecturas Firebase.setFloat ("/ devices / lalan-d1 / Status / Temperature", t); // configurar ruta y enviar lecturas

int ac_low = Firebase.getInt ("/ devices / lalan-d1 / Parameters / AC_LOW"); int ac_high = Firebase.getInt ("/ devices / lalan-d1 / Parameters / AC_HIGH"); int hum_low = Firebase.getInt ("/ devices / lalan-d1 / Parameters / HUMIDIFIER_LOW"); int hum_high = Firebase.getInt ("/ devices / lalan-d1 / Parameters / HUMIDIFIER_HIGH"); int dehum_low = Firebase.getInt ("/ devices / lalan-d1 / Parameters / DEHUMIDIFIER_LOW"); int dehum_high = Firebase.getInt ("/ devices / lalan-d1 / Parameters / DEHUMIDIFIER_HIGH"); int AC_S = Firebase.getInt ("/ devices / lalan-d1 / Switch / AC"); int HUM_S = Firebase.getInt ("/ devices / lalan-d1 / Switch / HUMIDIFIER"); int DEHUM_S = Firebase.getInt ("/ devices / lalan-d1 / Switch / DEHUMIDIFIER");

if (h <hum_low) { if (HUM_S == 1) { digitalWrite (D1, HIGH); Firebase.setFloat ("/ devices / lalan-d1 / Status / humiditifier", 1); Serial.println ("Firebase Set 1");

}
else {
  digitalWrite(D1, LOW);
  Firebase.setFloat("/devices/lalan-d1/Status/humiditifier", 0);
  Serial.println("Firebase Set 0");

}

} if (h> hum_high) { digitalWrite (D1, LOW); Firebase.setFloat ("/ devices / lalan-d1 / Status / humiditifier", 0); Serial.println ("h> hum_high Firebase Set 0");

}

// ************************************************ ************************************************** ***********

if (h> dehum_high) { if (DEHUM_S == 1) { digitalWrite (D6, HIGH); // Firebase.setFloat ("/ devices / lalan-d1 / Status / deshumiditifier", 1);

}
else {
  digitalWrite(D6, LOW);
  Firebase.setFloat("/devices/lalan-d1/Status/dehumiditifier", 0);

}

} if (h <dehum_low) { digitalWrite (D6, LOW); Firebase.setFloat ("/ devices / lalan-d1 / Status / deshumiditifier", 0);

}

// ************************************************ ************************************************** ***********

if (t> ac_high) { if (AC_S == 1) { digitalWrite (D7, HIGH); Firebase.setFloat ("/ devices / lalan-d1 / Status / ac", 1);

}
else {
  digitalWrite(D7, LOW);
  Firebase.setFloat("/devices/lalan-d1/Status/ac", 0);

}

} if (t <ac_low) { digitalWrite (D7, LOW); Firebase.setFloat ("/ devices / lalan-d1 / Status / ac", 0);

}

retraso (5000);

}

replicate your error, I can't find a solution, the fingerprint is the most current (2020-02)

angelbarusta avatar Jun 16 '20 04:06 angelbarusta

@Danin066 change the serial monitor output to 9600 and you will get a output

pkptissera080 avatar Jun 16 '20 07:06 pkptissera080

@angelbarusta I gave a solution for that problem of @JuanMTB and fixed please check that thank you.

pkptissera080 avatar Jun 16 '20 07:06 pkptissera080

@angelbarusta Di una solución para ese problema de @JuanMTB y lo solucioné, por favor verifique eso gracias.

even with the updated fingerprint it does not solve the problem

angelbarusta avatar Jun 16 '20 07:06 angelbarusta

@angelbarusta I gave a solution for that problem of @JuanMTB and fixed please check that thank you.

Hi, I also had the same issue and I updated the new fingerprint. but it still not send data to firebase. My serial monitor don't have error but firebase not update data. Kfingerprint = "50:89:50:57:90:1F:37:E3:B8:F3:5B:02:ED:3A:65:6E:6A:34:DB:93" This is my code: #include <Wire.h> #include <ESP8266WiFi.h> #include <FirebaseArduino.h> #include <SoftwareSerial.h> SoftwareSerial s1(D7,D8);//7 rx, 8tx #define FIREBASE_HOST "datn-v2-default-rtdb.firebaseio.com" #define FIREBASE_AUTH "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#define WIFI_SSID "Quocthang"
#define WIFI_PASSWORD "xxxxxxxxxxxxxx"

#include <Adafruit_MLX90614.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) #define REPORTING_PERIOD_MS 1000 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); //Declaring the display name (display) Adafruit_MLX90614 mlx = Adafruit_MLX90614(); #define tt "False" int bpm = 0; int bpm2; int Spo2 = 0; int Spo2_2;

int temp_ambient; float temp_object; float temp_object1; #define address_mlx 0x5A

extern "C" { #include <user_interface.h> // https://github.com/esp8266/Arduino actually tools/sdk/include }

int checkForResetButtonPressed() { rst_info *myResetInfo; delay(5000); // slow down so we really can see the reason!! myResetInfo = ESP.getResetInfoPtr(); Serial.printf("myResetInfo->reason %x \n", myResetInfo->reason); // reason is uint32 Serial.flush(); return myResetInfo->reason; } void setup() { //Wire.begin(); Serial.begin(9600); s1.begin(9600); display.begin(SSD1306_SWITCHCAPVCC, 0x3C);// initialize with the I2C addr 0x3C (for the 128x32)(initializing the display) Serial.println("Place your index finger on the sensor with steady pressure."); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.print("Connecting to "); Serial.print(WIFI_SSID); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(); Serial.print("Connected to "); Serial.println(WIFI_SSID); Serial.print("IP Address is : "); Serial.println(WiFi.localIP()); //print local IP address Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);// connect to firebase mlx.begin(); // if (checkForResetButtonPressed() == 2){ // Spo2 = Firebase.getInt ("datn-v2/Spo2"); // bpm = Firebase.getInt ("datn-v2/NhipTim"); // temp_object1 = Firebase.getFloat ("datn-v2/NhietDo"); Spo2 = Firebase.getInt ("datn-v2/Spo2"); bpm = Firebase.getInt ("datn-v2/NhipTim"); temp_object1 = Firebase.getFloat ("datn-v2/NhietDo1"); temp_ambient = Firebase.getFloat ("datn-v2/NhietDo2"); // } } void loop() {

nhan_nhiptim(); Serial.println("NHIPTIM OK"); //delay(50); nhan_spo2(); Serial.println("SPO2 OK"); truyen_du_lieu(); Serial.println("Truyen du lieu OK");

nhan_nhiet_do(); Serial.println("NHIETDO OK");

}

void nhan_nhiet_do(){ Wire.beginTransmission(address_mlx); //Send a request to begin communication with the device at the specified address Wire.endTransmission(); //this ends transmission of data from the arduino to the temperature sensor Wire.requestFrom(address_mlx, 1);//this requests 1 byte from the specified address temp_ambient= mlx.readAmbientTempC(); temp_object= mlx.readObjectTempC(); Serial.print("Nhiet do phong: "); Serial.print(temp_ambient); Serial.println("*C"); Serial.print("Nhiet do co the: "); Serial.print(temp_object1); Serial.println("*C"); //if ((temp_object <26.5)){ // temp_object1=0; //} //else temp_object1 = temp_object + 1.3; if(temp_object1<33){

temp_object1=0;
}

// } Serial.println(); display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(0,0); display.print("T: "); display.print(temp_object1); display.println("C"); display.print("Beat: ");
display.println(bpm); display.print("SPO2: ");
display.print(Spo2); display.println("%"); display.display();

} void nhan_nhiptim(){ if (Serial.available()) { bpm=Serial.read(); Serial.print("Nhip Tim : "); Serial.println(bpm);

} } void nhan_spo2(){ if (s1.available()) { Spo2=s1.read(); Serial.print("Spo2 : "); Serial.println(Spo2);

} } void truyen_du_lieu(){ Firebase.setFloat("datn-v2/NhietDo1",temp_object1); Firebase.setFloat("datn-v2/NhietDo2",temp_ambient); // if ((bpm!=0) && (bpm < 100)){ // bpm2 = bpm;
// bpm=Serial.read(); Firebase.setInt("datn-v2/NhipTim",bpm); // } // if (temp_object1!=0){ // Firebase.setFloat ("datn_v2/NhietDo",temp_object1); // } // if ((Spo2>80)&&(Spo2<100)){ // Spo2_2= Spo2; // Spo2=s1.read(); Firebase.setInt("datn-v2/Spo2",Spo2);

}

vienbu avatar Jul 16 '21 03:07 vienbu