Picproje Elektronik Sitesi

ENDÜSTRiYEL OTOMASYON => IoT => Konuyu başlatan: bbs2006 - 30 Ocak 2022, 02:08:11

Başlık: Firebase kullanarak esp32 üzerinde lm35 okutmsk
Gönderen: bbs2006 - 30 Ocak 2022, 02:08:11
Merhaba
Firebase kullanarak esp32  baglı lm35 sıcsklık degerini okutmak istiyorum.arduino ideden yazdım .bir türlü derleyemedim.

hata mesajı 
 no matching function for call to 'FirebaseESP32::pushString(const char [23], float&)'

(https://i.ibb.co/z8Vt4S0/IMG-20220130-020134-867.png) (https://ibb.co/z8Vt4S0)
Başlık: Ynt: Firebase kullanarak esp32 üzerinde lm35 okutmsk
Gönderen: ilyas KAYA - 30 Ocak 2022, 10:43:35
https://randomnerdtutorials.com/esp32-firebase-realtime-database/

Burayı bir incele istersen. Kütüphane ekli mi ? Float değişkeni tanımlama yöntemi biraz farklı sanırım.


 Firebase.pushFloat("/Temp",celsius;

Firebase.pushString ("/Temp",santigrat);

Kullanmalısınız diye de başka bir forumda yazmışlar
Başlık: Ynt: Firebase kullanarak esp32 üzerinde lm35 okutmsk
Gönderen: bbs2006 - 30 Ocak 2022, 12:45:19
Teşekkür ederim.
Başlık: Ynt: Firebase kullanarak esp32 üzerinde lm35 okutmsk
Gönderen: 94onur94 - 30 Ocak 2022, 13:07:43
pushString fonksiyonu parametre olarak string alır. Senin gönderdiğin sicaklik değişkeni float türünde. String(sicaklik) komutu ile float türünü string türüne çevirebilirsin.

Firebase.pushString("/Esp32-iot/Temperature", String(sicaklik));
Başlık: Ynt: Firebase kullanarak esp32 üzerinde lm35 okutmsk
Gönderen: bbs2006 - 30 Ocak 2022, 18:00:01
Merhaba

//#include <Esp32WifiManager.h>
#include <FirebaseESP32.h>
#include <WiFi.h>
//#include <WiFiAP.h>
//#include <WiFiClient.h>
#include <MQ135.h>

#define FIREBASE_HOST ""     
#define FIREBASE_AUTH ""         //Database secret
//#define WIFI_SSID "esp"
//#define WIFI_PASSWORD "12345"
#define WIFI_SSID ""
#define WIFI_PASSWORD "p5MTaUXg"




int lamba= 21;         //Evin lambasının bağlı olduğu röle_1 için pin
int elektrik= 18;      //Evin elektriklerini açmak-kapatmak için bağlanmış röle_2 için pin
int sicaklikPin = 14;  //Evin sıcaklığını ölçmek için kullanılan LM35 için kullanılan pin.
int fan  = 23;         //Evi havalandırmak için bağlanacak olan fan için pin.
int gaz = 15;          //Evin hava kalitesini ölçmek için kullanılan analog pin.
int hareket = 22;      //Evde hareketi alglayacak olan sensör
int analogDeger;
int sicaklikLed= 1;

FirebaseData firebaseData;
FirebaseData lambaData;
FirebaseData elektrikData;
FirebaseData sicaklik;
FirebaseData fanData;
FirebaseData gazData;
FirebaseData hareketData;



FirebaseJson json;
String path="/Esp32-iot";
void setup() {
  // put your setup code here, to run once:


  pinMode(lamba,OUTPUT);
  pinMode(elektrik,OUTPUT);
  pinMode(sicaklikPin,OUTPUT);
  pinMode(fan,OUTPUT);
  pinMode(gaz,INPUT);
  pinMode(hareket,INPUT);
Serial.begin(115200);
 
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("Connecting to Wi-Fi");
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.print(".");
    delay(300);
  }
  Serial.println();
  Serial.print("Connected with IP: ");
  Serial.println(WiFi.localIP());
  Serial.println();

  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
  Firebase.reconnectWiFi(true);
}
void sicaklikOkuma(){
    analogDeger=analogRead(sicaklikPin);
    float milivolt=(analogDeger/4095)*3300;   // Milivolt cinsinden gerilim değeri hesaplanıyor.
    float sicaklik= milivolt / 10 ;           // Her  santigrat derecede10 Mvolt gerilim üretmektedir.
   Firebase.RTDB.getFloat(&FirebaseData,"/Esp32-iot/sicaklik"));
  // Firebase.pushString("/Esp32-iot/Temperature", sicaklik);
   //Firebase.pushString("/Esp32-iot", String(sicaklik));
  // Firebase.setFloat("temp", sicaklik);
 
 // digitalWrite(sicaklikLed1, Firebase.getInt("running"));
  Serial.print("Current Temperature in Degree Celsius =   ");
  Serial.println(sicaklik);

 
}

void loop() {
  // put your main code here, to run repeatedly:

sicaklikOkuma();
if (Firebase.getString(lambaData, "/Esp32-iot/lamba")){            // Lambaları aç ve kapamaya ait yazılım.
    Serial.println(lambaData.stringData());
    if (lambaData.stringData() == "1") {
    digitalWrite(lamba, HIGH);
    }
  else if (lambaData.stringData() == "0"){
    digitalWrite(lamba, LOW);
    }
  }
  delay(50);

if (Firebase.getString(elektrikData, "/Esp32-iot/elektrik")){       //Elektrikleri aç ve kapamaya ait yazılım.
    Serial.println(elektrikData.stringData());
    if (elektrikData.stringData() == "1") {
    digitalWrite(elektrik, HIGH);
    }
  else if (elektrikData.stringData() == "0"){
    digitalWrite(elektrik, LOW);
    }
  }
  delay(50);

if (Firebase.getString(fanData, "/Esp32-iot/fan")){                 // fan  aç ve kapamaya ait yazılım.
    Serial.println(fanData.stringData());
    if (fanData.stringData() == "1") {
    digitalWrite(fan, HIGH);
    }
  else if (fanData.stringData() == "0"){
    digitalWrite(fan, LOW);
    }
  }
  delay(50);
}


Hatalar

C:\Users\Behd\Desktop\iot projeleri\Esp32-iot-1\Esp32-iot-1.ino: In function 'void sicaklikOkuma()':
Esp32-iot-1:71:40: error: expected primary-expression before ',' token
    Firebase.RTDB.getFloat(&FirebaseData,"/Esp32-iot/sicaklik"));
                                        ^
"WiFi.h" için birden fazla library bulundu
Kullanılıyor: C:\Users\Behd\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi
Kullanılmıyor: C:\Users\Behd\Documents\Arduino\libraries\WiFiNINA
exit status 1
expected primary-expression before ',' token



Baktım bir sonuca varamadım. acaba hata nerden kaynaklanıyor. bir bakabilr misiniz




Başlık: Ynt: Firebase kullanarak esp32 üzerinde lm35 okutmsk
Gönderen: bbs2006 - 05 Şubat 2022, 23:35:22
Merhaba
Yaptıgım uygulamada  esp32 firebase veri gönderiyor. sıcaklık, gaz ve  true ve veya false.  Ancak firebas den sadece sıcaklık değeri mit app inventorde yaptığım uygulamaya geliyor. gaz değeri ve hareket olan 1 veya 0 değeri gelmiyor. Acaba nerde hata yapıyorum. bir bakabilir misiniz.

(https://i.ibb.co/rkWJrb8/mit-app.png) (https://ibb.co/rkWJrb8)



const int lamba= 21;          //Evin lambasının bağlı olduğu röle_1 için pin
const int elektrik= 18;        //Evin elektriklerini açmak-kapatmak için bağlanmış röle_2 için pin
const float sicaklikPin = 14;  //Evin sıcaklığını ölçmek için kullanılan LM35 için kullanılan pin.
const int fan  = 23;          //Evi havalandırmak için bağlanacak olan fan için pin.
const int gaz = 15;            //Evin hava kalitesini ölçmek için kullanılan analog pin.
const boolean hareket = 22;        //Evde hareketi alglayacak olan sensör
int analogDeger;
const int sicaklikLed= 1;
int sensorDeger;
int buzerPin;
int krmzLed;                      //  Gaz durumunda Yanar Alarm verir.
int yesilLed;                    //  Gaz  seviyesi normal durumda  yanar.
int okunanDeger=0;                // Motion sensör için
int motionLed;                    // hareket algılandığında yanacak.

void setup() {
 
  pinMode(lamba,OUTPUT);
  pinMode(elektrik,OUTPUT);
  pinMode(sicaklikPin,OUTPUT);
  pinMode(fan,OUTPUT);
  pinMode(gaz,INPUT);
  pinMode(hareket,INPUT);
  pinMode(krmzLed,OUTPUT);
  pinMode(yesilLed,OUTPUT);
  pinMode(gaz,INPUT);
  pinMode(motionLed,OUTPUT);                   
Serial.begin(115200);

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

void sicakDeger(){
         
    analogDeger=analogRead(sicaklikPin);
    float milivolt=(analogDeger/4095)*3300;                  // Milivolt cinsinden gerilim değeri hesaplanıyor.
    float sicaklik= milivolt / 10 ;                          // Her  santigrat derecede10 mvolt gerilim üretmektedir.
    Firebase.setFloat("/Esp32-iot/sicaklik",random(10,70));
 if (Firebase.failed()) {
      Serial.print("Sicaklik failed:");
      Serial.println(Firebase.error()); 
      return;}
delay(1000);     
Serial.print("Sıcaklık Degeri..........:");
Serial.println(random(10,70));
//Serial.println(Firebase.getFloat("sicaklik"));    //Firebase okunan deger yazdırılıyor.
}

void gazDeger(){
    sensorDeger=analogRead(gaz);
    sensorDeger=random(50,1000);
    Serial.print("Gazın  Degeri..............:");
    Serial.println(sensorDeger);
   
    Firebase.setInt("/Esp32-iot/gaz",sensorDeger);
//  Serial.print("Gazın  Degeri..........:");
//  Serial.println(sensorDeger);
    if (Firebase.failed()) {
      Serial.print("Sicaklik failed:");
      Serial.println(Firebase.error()); 
      return;}
delay(500);   
  if (sensorDeger > 600) {
   
    digitalWrite(yesilLed, LOW);
    digitalWrite(buzerPin, HIGH);
    digitalWrite(krmzLed, HIGH);
    Serial.print("Gazın Durumu..............:");
    Serial.println("Alarm");
    delay(500);                    // wait 2000ms
  }

  else {
    digitalWrite(yesilLed, HIGH);
    digitalWrite(krmzLed, LOW);
    digitalWrite(buzerPin, LOW);
    Serial.print("Gazın Durumu..............:");
    Serial.println("Normal");
    delay(500);                                                           
} }
void Hareket(){
    okunanDeger=digitalRead(hareket);
    okunanDeger=1;
    Serial.print("Hareket sensöründen Okunan deger.....:");
    Serial.println(okunanDeger);
 if(okunanDeger==1){
    Firebase.setBool("/Esp32-iot/hareket",1);
    digitalWrite(motionLed,HIGH);
    digitalWrite(buzerPin,HIGH);
    Serial.println("Hareket Algılandı..............:");}
 else{
    Firebase.setBool("/Esp32-iot/hareket",0);
    digitalWrite(motionLed,LOW);
    digitalWrite(buzerPin,HIGH);
 }
 }

void loop() {
sicakDeger();
gazDeger();
Hareket();
//.............................................................
//  Evin Lambalarını Yakıp Smdürmeye ait  Yazılım.
//  Şubat 2022
//.............................................................

String LambaDurumu=Firebase.getString("/Esp32-iot/lamba");    // Lambaları aç ve kapamaya ait yazılım.
      Serial.print("Lamba Durumu..............:");
      Serial.println(Firebase.getString("/Esp32-iot/lamba"));
                                                             
  if (LambaDurumu == "1") {
    digitalWrite(lamba, HIGH);
    }
  else if (LambaDurumu == "0"){
    digitalWrite(lamba, LOW);
    }
  delay(50);

//.............................................................
//  Evin Elektriğini  Açıp Kapamaya  ait  Yazılım.
//  Şubat 2022
//.............................................................

String ElektrikDurumu=Firebase.getString("/Esp32-iot/elektrik");    // Lambaları aç ve kapamaya ait yazılım.
      Serial.print("Elektrik Durumu...........:");
      Serial.println(Firebase.getString("/Esp32-iot/elektrik"));
                                                             
  if (ElektrikDurumu == "1") {
    digitalWrite(elektrik, HIGH);
    }
  else if (ElektrikDurumu == "0"){
    digitalWrite(elektrik, LOW);
    }
  delay(50);

//.............................................................
//  Evin Fanı'nı  Açıp Kapamaya  ait  Yazılım.
//  Şubat 2022
//.............................................................

String FanDurumu=Firebase.getString("/Esp32-iot/fan");    // Lambaları aç ve kapamaya ait yazılım.
      Serial.print("Fan  Durumu..............:");
      Serial.println(Firebase.getString("/Esp32-iot/fan"));
                                                             
  if (FanDurumu == "1") {
    digitalWrite(fan, HIGH);
    }
  else if (FanDurumu == "0"){
    digitalWrite(fan, LOW);
    }
  delay(50);


}








Başlık: Ynt: Firebase kullanarak esp32 üzerinde lm35 okutmsk
Gönderen: SB7 - 06 Şubat 2022, 10:04:48
void gazDeger(){
    sensorDeger=analogRead(gaz);
    sensorDeger=random(50,1000);

void Hareket(){
    okunanDeger=digitalRead(hareket);
    okunanDeger=1;

Kodunuzda anlayamadığım 2 yer oldu;
-Gaz değerini analog olarak okuyorsanız ve bir sensörden veri alabiliyorsanız neden random sayı üretip sensör değerine atama yaptınız?
-Hareket sensörünüzden 1/0 bilgisi almak istiyorsanız neden okunan değere 1 değeri atadınız?

Bu haliyle hareket sensörünüzle sürekli 1 değeri okuyup gaz sensörünüzle de ortamda gaz varmış/yokmuş gibi rastgele değerler almanız beklenir(sensörden bağımsız).
Başlık: Ynt: Firebase kullanarak esp32 üzerinde lm35 okutmsk
Gönderen: bbs2006 - 06 Şubat 2022, 23:09:19
Önceklikle teşekkğr ederim.elimde sensör bulunmadıgından dolayı bu şkilde yazdım.(firebase veri gidip gitmediğine bskmak için).  Hareket semsörüde aynı şekilde.cep tel.uygulamasında görmek için.