Arama butonu
Bu konudaki kullanıcılar: 1 misafir
1
Cevap
198
Tıklama
0
Öne Çıkarma
HC-SR04 bildirim algilamada problem
U
5 yıl
Er
Konu Sahibi

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








Videoyu izlemek için tıklayınız



H
5 yıl
Çavuş

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.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.