Skip to Content
Proje ListesiOrta9. Ziyaretçi Sayacı

9. Çift Sensörlü Ziyaretçi Sayacı

Kapıya aralıklı yerleştirilen iki IR sensörün tetik sırasını kullanarak giriş ve çıkış yönünü tahmin edin. Sayaç olaylarını PxServ’e gönderin.

Seviye: Orta · Süre: 50 dakika

Sınırlar

Bu sade algoritma tek kişinin sensörlerden sırayla geçtiğini varsayar. Yan yana veya zıt yönde aynı anda geçen kişilerde doğru sayım garanti etmez; ticari kişi sayımı değildir.

Gerekenler ve bağlantılar

  • ESP32, iki adet 3,3 V uyumlu dijital IR engel sensörü
SensörESP32
A OUTGPIO 18
B OUTGPIO 19
VCC / GNDModül belgesine uygun besleme / ortak GND

Kod sensörlerin algılamada LOW verdiğini varsayar.

Tam kod

#include <PxServ.h> const char* WIFI_SSID = "wifi_ssid"; const char* WIFI_PASSWORD = "wifi_sifre"; const char* PXSERV_API_KEY = "pxserv_api_anahtariniz"; const int SENSOR_A = 18; const int SENSOR_B = 19; const unsigned long SEQUENCE_TIMEOUT = 2000; PxServ client(PXSERV_API_KEY); int occupancy = 0; int sequenceStart = 0; // 0: yok, 1: A, 2: B unsigned long sequenceAt = 0; void publishCount(String direction) { client.setData("ziyaretci/doluluk", String(occupancy)); client.setData("ziyaretci/son-yon", direction); } void setup() { Serial.begin(115200); pinMode(SENSOR_A, INPUT_PULLUP); pinMode(SENSOR_B, INPUT_PULLUP); PxServ::connectWifi(WIFI_SSID, WIFI_PASSWORD); publishCount("baslangic"); } void loop() { bool a = digitalRead(SENSOR_A) == LOW; bool b = digitalRead(SENSOR_B) == LOW; unsigned long now = millis(); if (sequenceStart == 0) { if (a && !b) { sequenceStart = 1; sequenceAt = now; } if (b && !a) { sequenceStart = 2; sequenceAt = now; } } else if (now - sequenceAt > SEQUENCE_TIMEOUT) { sequenceStart = 0; } else if (sequenceStart == 1 && b) { occupancy++; publishCount("giris"); sequenceStart = 0; delay(500); } else if (sequenceStart == 2 && a) { occupancy = max(0, occupancy - 1); publishCount("cikis"); sequenceStart = 0; delay(500); } delay(10); }

Test

Elinizi önce A sonra B önünden geçirerek giris, ters yönde geçirerek cikis üretildiğini doğrulayın. Sensörleri geçiş doğrultusunda yaklaşık 20–30 cm arayla yerleştirin ve algılama mesafelerini birbirini görmeyecek şekilde ayarlayın.

Son güncelleme