Merhaba teknoloji meraklıları! Bugün hepimizin dışarıda, restoranlarda veya alışveriş merkezlerinde görmeye alışık olduğu o pratik teknolojiyi masaya yatırıyoruz: Temassız Akıllı Musluklar.

“Bunu neden hazır alalım ki, biz kendimiz de yapabiliriz!” dedik ve kollarımızı sıvadık.
Projede amacımız, halihazırda var olan bu teknolojiyi kendi imkanlarımızla, 3D baskı ve Arduino kullanarak evdeki standart bir musluğa nasıl entegre edebileceğimizi göstermek. Hem hijyenik bir dokunuş hem de eğlenceli bir DIY (Kendin Yap) süreci bizi bekliyor.
Akıllı Musluğumuz Ne Yapıyor?
Ultrasonik bir mesafe sensörü (HC-SR04) sayesinde ellerinizi algılayan bir sistem tasarladık. Sensör, belirli bir mesafe içerisine girdiğinizde Arduino’ya sinyal gönderiyor ve Arduino, bir servo motoru harekete geçirerek musluğu açıyor. Eller uzaklaştığında ise musluk kendiliğinden kapanıyor.
Bonus olarak: Sistem, toplamda musluğun ne kadar süreyle açık kaldığını EEPROM’a kayıt ediyor. Yani ne kadar su harcadığını tahmin etmeniz artık çok kolay!
Projede Kullanılan Malzemeler
Projeyi hayata geçirmek için ihtiyacınız olan malzemeleri şöyle sıralayalım:

Projedeki verileri uzun süreli ve kalıcı olarak saklamak isterseniz sd kart modülünü sisteme entegre etmenizi tavsiye ederiz.
Devre Bağlantıları
Projemizin temelini oluşturan sensör ve servo motorun Arduino ile doğru şekilde haberleşebilmesi için bazı temel bağlantıları yapmamız gerekiyor. Aşağıda, devre şemasına göre hangi pinlerin nereye bağlanacağını adım adım bulabilirsiniz. Tüm bağlantılar oldukça basit ve lehim gerektirmeden breadboard üzerinden kolayca uygulanabilir. Gelin birlikte devremizi kuralım:

- HC-SR04 Trig -> Arduino D9
- HC-SR04 Echo -> Arduino D10
- Servo sinyal kablosu -> Arduino D3
- Tüm GND ve VCC bağlantıları ortak kullanıldı

3D Parçalar ve Montaj
Projenin daha sağlam ve estetik olması için tasarladığımız 3D baskı parçalar sayesinde sisteminizi musluğa kolayca adapte edebilirsiniz.
Montaj aşamasında dikkat etmeniz gerekenleri aşağıdaki YouTube videomuzda detaylı bir şekilde görebilirsiniz.

STL dosyalarını buradan bilgisayarınıza indirebilirsiniz:
Akıllı Musluk Projesi STL Dosyası
Sistem Nasıl Çalışıyor? (Kod Mantığı)
Kod tarafında oldukça stabil bir mantık kurduk. Mesafe sensörü elinizi algıladığında bir “sekans” başlatıyor:
- Tetiklenme: El 5 cm’den yakınsa servo motor ileri yönde dönerek suyu açıyor.
- Kullanım: Su, belirlenen süre boyunca (örneğin 5 saniye) akmaya devam ediyor.
- Kapanış: Süre bitince motor geri yönde dönerek suyu kapatıyor.
- Kayıt: Her kullanım süresi toplanarak Arduino’nun kalıcı hafızasına (EEPROM) yazılıyor. Böylece sistem kapansa bile toplam kullanım verisi silinmiyor.
#include <Servo.h>
#include <EEPROM.h>
#define TRIG_PIN 9
#define ECHO_PIN 10
#define SERVO_PIN 3
// Continuous servo ayarlari
#define SERVO_STOP 91
#define SERVO_FORWARD 120
#define SERVO_BACKWARD 60
#define TRIGGER_DIST 5.0
// Zamanlar (ms)
#define FORWARD_TIME 1000
#define WAIT_TIME 5000
#define BACK_TIME 850
#define EEPROM_ADDR 0
Servo myServo;
// State'ler
enum State {
IDLE,
FORWARD,
WAITING,
BACKWARD
};
State currentState = IDLE;
unsigned long stateStartTime = 0;
unsigned long openStartTime = 0;
unsigned long totalOpenTime = 0;
float readDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH, 30000);
if (duration == 0) return -1;
return duration * 0.0343 / 2;
}
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
myServo.attach(SERVO_PIN);
myServo.write(SERVO_STOP);
// EEPROM'dan toplam sureyi oku
EEPROM.get(EEPROM_ADDR, totalOpenTime);
Serial.println("Servo sekans sistemi basladi");
Serial.print("EEPROM'daki toplam acik sure: ");
Serial.print(totalOpenTime / 1000.0);
Serial.println(" saniye");
}
void loop() {
unsigned long now = millis();
switch (currentState) {
case IDLE: {
float distance = readDistance();
if (distance > 0 && distance < TRIGGER_DIST) {
Serial.println("Tetiklendi -> 1 sn ILERI");
myServo.write(SERVO_FORWARD);
openStartTime = now; // AÇIK SÜRE BAŞLADI
currentState = FORWARD;
stateStartTime = now;
}
break;
}
case FORWARD:
if (now - stateStartTime >= FORWARD_TIME) {
myServo.write(SERVO_STOP);
Serial.println("ILERI bitti -> 5 sn DUR");
currentState = WAITING;
stateStartTime = now;
}
break;
case WAITING:
if (now - stateStartTime >= WAIT_TIME) {
myServo.write(SERVO_BACKWARD);
Serial.println("5 sn bitti -> 1 sn GERI");
currentState = BACKWARD;
stateStartTime = now;
}
break;
case BACKWARD:
if (now - stateStartTime >= BACK_TIME) {
myServo.write(SERVO_STOP);
unsigned long openDuration = now - openStartTime;
totalOpenTime += openDuration;
EEPROM.put(EEPROM_ADDR, totalOpenTime);
Serial.println("Sekans tamamlandi");
Serial.print("Bu acik sure: ");
Serial.print(openDuration / 1000.0);
Serial.println(" sn");
Serial.print("Toplam acik sure (EEPROM): ");
Serial.print(totalOpenTime / 1000.0);
Serial.println(" sn");
currentState = IDLE;
}
break;
}
if (Serial.available())
{
String cmd = Serial.readStringUntil('\n');
cmd.trim();
if (cmd == "reset")
{
totalOpenTime = 0;
EEPROM.put(EEPROM_ADDR, totalOpenTime);
Serial.println("EEPROM sifirlandi!");
}
}
}
Video ile Adım Adım İlerle
Projeyi hayata geçirirken her aşamayı tüm detaylarıyla kaydettik. Videoyu takip ederek kendi sisteminizi kolayca kurabilirsiniz:
Dışarıdaki teknolojiyi eve taşımak hem öğretici hem de oldukça pratik. Projeyle sadece günlük hayatınızı kolaylaştırmanın yanında, Arduino dünyasına dair birçok temel bilgiyi uygulamalı olarak öğreneceksiniz. Evde, okulda ya da maker atölyenizde kullanabileceğiniz bu sistem ile siz de geleceğin hijyenik teknolojisini şimdiden deneyimleyin!
Sıra Sende! Sen bu projeye nasıl geliştirirdin? Belki bir mobil uygulama üzerinden su tüketimini takip etmek isteyebilirsin. Fikirlerini ve sorularını yorumlarda bekliyoruz.







