Şimdi Ara

HC-SR04 bildirim algilamada problem

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
187
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba, Kendimce kapıya pencereye kurmak için SR04 ultrasonik sensör ile İFTTT aracılığı ile bildirim sağladım. fakat bazen arada herhangi bir cisim olmasa dahi bildirim veriyor acaba elektriksel bir akımdan mı yoksa farklı bir durummu vardır. Video Aşağıdadır. Kod dadaa görüldüğü gibi 5 cm ile 20 cm arası bir temas olursa site_kontrol() isimli fonksiyonu calistiracak dolayisi ile bildirim gelecek.


    #include <Arduino.h>


    #include <ESP8266WiFi.h>

    #include <ESP8266WiFiMulti.h>


    #include <ESP8266HTTPClient.h>


    #include <WiFiClient.h>


    ESP8266WiFiMulti WiFiMulti;

    //int pirPin = 0;

    //int pirState = LOW;

    //int pirVal = 0;

    int trigPin = 2;

    int echoPin = 0;


    int maxrange = 20;

    int minrange = 5;




    void setup() {

     Serial.begin(115200);

    // pinMode(pirPin, INPUT);

     pinMode(trigPin, OUTPUT);

     pinMode(echoPin, INPUT);



    // Serial.println();

    // Serial.println();

     Serial.println();


     for (uint8_t t = 4; t > 0; t--) {

      Serial.printf("[SETUP] WAIT %d...\n", t);

      Serial.flush();

      delay(1000);

     }


     WiFi.mode(WIFI_STA);

     WiFiMulti.addAP("wifi", "008992702689");

     //WiFiMulti.addAP("SUPERONLINE-WiFi_3526", "superahsen92");


    }




    void loop(){

     long duration, distance;


     digitalWrite(trigPin,LOW);

     delayMicroseconds(2);

     digitalWrite(trigPin, HIGH);

     delayMicroseconds(10);

     digitalWrite(trigPin, LOW);


     duration = pulseIn(echoPin, HIGH);

     distance = duration / 58.2;

     delay(50);


     if(distance >= minrange && distance <= maxrange){

      site_kontrol();

     }else {

       

     }

      

      


    }

      




    void site_kontrol(){

     if ((WiFiMulti.run() == WL_CONNECTED)) {

     WiFiClient client;

     HTTPClient http;

     Serial.print("[HTTP] begin...\n");

        if (http.begin(client, "http://maker.ifttt.com/trigger/Alarm_ESP/with/key/keybolumu")) {  // HTTP


       Serial.print("[HTTP] GET...\n");

       // start connection and send HTTP header

       int httpCode = http.GET();


       // httpCode will be negative on error

       if (httpCode > 0) {

        // HTTP header has been send and Server response header has been handled

        Serial.printf("[HTTP] GET... code: %d\n", httpCode);


        // file found at server

        if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {

         String payload = http.getString();

         Serial.println(payload);

        }

       } else {

        Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());

       }


       http.end();

      } else {

       Serial.printf("[HTTP} Unable to connect\n");

      }

     }

     delay(1000);

    }
















  • Hatalı seçim. Ultrasonik mesafe ölçüm içindir. IR lazer veya manyetik anahtar tercih et.


    Ultrasonik ölçüm hataları


    • dış ortam seslerinden etkilenmesi
    • kendi yaydığı sesin daha uzaktan odaklanmış yansımasının geri gelmesi
    • işlemci içi kesme zamanlamaları ile süre ölçümünün hatalı olması

    gibi birden çok etkenle karışır. Çok iyi bir uzman olmadan bu hatalar ile başa çıkamazsın.

  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.