Arduino ile Evcil Hayvan Mama Otomatiği: Zamanlayıcılı ve Manuel Kontrol Destekli

Arduino ile Evcil Hayvan Mama Otomatiği: Zamanlayıcılı ve Manuel Kontrol Destekli

Arduino ile Evcil Hayvan Mama Otomatiği: Zamanlayıcılı ve Manuel Kontrol Destekli

Merhaba sevgili Arduino severler ve evcil hayvan dostları!

Bugün sizlerle hem Arduino projelerine yeni başlayanlar, hem de minik dostlarımızın beslenmesini kolaylaştırmak isteyenler için harika bir proje paylaşacağım: Arduino ile evcil hayvan mama otomatiği! Bu proje sayesinde, evcil hayvanınızın beslenme saatlerini otomatik olarak ayarlayabilir, dilerseniz manuel olarak da mama verebilirsiniz. Hem pratik, hem de eğlenceli!

Neden Bu Proje?

  • Zaman Tasarrufu: Yoğun bir gününüzde mama verme derdinden kurtulun.
  • Düzenli Beslenme: Evcil hayvanınızın düzenli saatlerde beslenmesini sağlayın.
  • Eğlenceli Proje: Arduino ile temel elektronik ve programlama becerilerinizi geliştirin.
  • Uygun Maliyet: İhtiyacınız olan malzemeler genellikle uygun fiyatlıdır.

Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • Servo Motor (SG90 tavsiye edilir)
  • RTC Modülü (DS3231 gerçek zaman saati modülü)
  • Buton (Manuel kontrol için)
  • Jumper Kablolar
  • Mama Kabı ve Haznesi (Uygun bir kap ve hazne tasarlayabilirsiniz veya hazır bir ürün kullanabilirsiniz)
  • 5V Güç Kaynağı
  • Breadboard (isteğe bağlı)
  • Direnç (Buton için 10k ohm)

Proje Şeması ve Bağlantılar

Projemizin temelinde, RTC modülü sayesinde zamanı takip edip, belirlenen saatlerde servo motoru çalıştırarak mamayı dökmesini sağlamak yatıyor. Buton ise manuel mama verme işlemine olanak tanıyacak.

Bağlantıları aşağıdaki gibi yapabilirsiniz:

  • Servo Motor:
    • Sinyal Kablosu -> Arduino Dijital Pin 9
    • VCC Kablosu -> Arduino 5V
    • GND Kablosu -> Arduino GND
  • RTC Modülü (DS3231):
    • SDA -> Arduino A4
    • SCL -> Arduino A5
    • VCC -> Arduino 5V
    • GND -> Arduino GND
  • Buton:
    • Bir bacak -> Arduino Dijital Pin 2
    • Diğer bacak -> 5V (10k ohm direnç ile GND'ye bağlayın)

Arduino Kodu

Aşağıdaki kod, projenin temel işlevselliğini sağlamaktadır. Kodu Arduino IDE'sine kopyalayıp, kendi ihtiyaçlarınıza göre düzenleyebilirsiniz.


 #include <Servo.h>
 #include <RTClib.h>

 Servo servoMotor;
 RTC_DS3231 rtc;

 const int buttonPin = 2;
 int buttonState = 0;

 // Beslenme Saatleri (Saat, Dakika)
 int beslenmeSaati[] = {8, 0, 18, 0}; // Sabah 8 ve Akşam 6

 int servoAcikPozisyon = 90; // Servonun mamayı dökeceği pozisyon
 int servoKapaliPozisyon = 0; // Servonun kapalı pozisyonu

 void setup() {
  Serial.begin(9600);

  if (! rtc.begin()) {
   Serial.println("RTC Modülü Bulunamadı!");
   while (1);
  }

  //RTC ilk defa kullanılıyorsa saati ayarlayın
  //rtc.adjust(DateTime(2024, 10, 27, 12, 0, 0)); // Yıl, Ay, Gün, Saat, Dakika, Saniye

  servoMotor.attach(9);
  pinMode(buttonPin, INPUT_PULLUP); // Dahili pull-up direnci kullanılıyor
  servoMotor.write(servoKapaliPozisyon); //Başlangıçta kapalı pozisyonda
 }

 void loop() {
  DateTime now = rtc.now();
  buttonState = digitalRead(buttonPin);

  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();

  // Otomatik Besleme
  for (int i = 0; i < sizeof(beslenmeSaati) / sizeof(beslenmeSaati[0]); i += 2) {
   if (now.hour() == beslenmeSaati[i] && now.minute() == beslenmeSaati[i + 1] && now.second() == 0) {
    Serial.println("Otomatik Besleme Zamanı!");
    mamaVer();
   }
  }

  // Manuel Besleme (Butona Basıldığında)
  if (buttonState == LOW) {
   Serial.println("Manuel Besleme!");
   mamaVer();
   delay(3000); // Butona basılı tutulduğunda sürekli mama vermeyi engellemek için bir gecikme
  }

  delay(1000);
 }

 void mamaVer() {
  servoMotor.write(servoAcikPozisyon); // Servoyu aç
  delay(2000); // Mamanın dökülmesi için bekle
  servoMotor.write(servoKapaliPozisyon); // Servoyu kapat
  delay(5000); // Bir sonraki beslemeye kadar bekle
 }
 

Kod Açıklaması

  • Kütüphaneler: Servo motor ve RTC modülü için gerekli kütüphaneler ekleniyor.
  • Pin Tanımları: Motorun ve düğmenin bağlı olduğu pinler tanımlanıyor.
  • Beslenme Saatleri: Evcil hayvanınızın beslenme saatleri tanımlanıyor.
  • `setup()` Fonksiyonu: Seri haberleşme başlatılıyor, RTC modülü ve servo motor ayarlanıyor.
  • `loop()` Fonksiyonu: Sürekli olarak saati kontrol ediyor, belirlenen saatlerde veya buton basıldığında `mamaVer()` fonksiyonunu çağırıyor.
  • `mamaVer()` Fonksiyonu: Servo motoru belirli bir süre hareket ettirerek mama verme işlemini gerçekleştiriyor.

İpuçları ve Öneriler

  • Mama haznesini ve mekanizmasını evcil hayvanınızın boyutuna ve mama türüne göre uyarlayın.
  • RTC modülünün pilini takmayı unutmayın, aksi takdirde saat bilgisi kaybolabilir.
  • Servo motorun hareket hızını ve açısını, mama miktarını kontrol edecek şekilde ayarlayın.
  • Kodu kendi ihtiyaçlarınıza göre özelleştirmekten çekinmeyin!

Sonuç

Bu proje ile evcil hayvanınızın beslenmesini kolaylaştırırken, Arduino ile de keyifli bir deneyim yaşayacaksınız. Unutmayın, güvenlik her zaman öncelikli olmalı. Evcil hayvanınızın sağlığı için güvenilir bir sistem kurduğunuzdan emin olun. Şimdiden kolay gelsin!

Etiketler: arduino, evcil hayvan, mama otomatiği, zamanlayıcı, servo motor, rtc, ds3231, proje, diy, elektronik

```

Arduino ile Temassız Ateş Ölçer Yapımı (IR Sensör Kullanarak)

Arduino ile Temassız Ateş Ölçer Yapımı (IR Sensör Kullanarak)

Arduino ile Temassız Ateş Ölçer Yapımı (IR Sensör Kullanarak)

Merhaba sevgili Arduino meraklıları!

Bu yazımızda, Arduino kullanarak temassız bir ateş ölçer yapımını adım adım inceleyeceğiz. Özellikle son zamanlarda oldukça popüler hale gelen bu tür cihazlar, nesnelerin veya insanların vücut sıcaklığını temas etmeden ölçmemize olanak tanıyor. Bu projeyi hayata geçirerek hem eğlenceli bir deneyim yaşayacak, hem de günlük hayatta kullanabileceğiniz faydalı bir alet yapmış olacaksınız.

Projemizde MLX90614 gibi bir kızılötesi (IR) sensör kullanacağız. Bu sensör, bir nesnenin yaydığı kızılötesi radyasyonu algılayarak sıcaklığını ölçer. Arduino ile bu sensörü kullanarak, ölçtüğümüz sıcaklık değerlerini bir LCD ekranda göstereceğiz.

Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • MLX90614 Temassız Sıcaklık Sensörü
  • 16x2 LCD Ekran
  • 10k Potansiyometre (LCD kontrast ayarı için)
  • Jumper Kablolar
  • Breadboard (isteğe bağlı, devre kurmayı kolaylaştırır)

Devre Şeması ve Bağlantılar

Devremizi kurarken aşağıdaki bağlantıları dikkatlice yapalım:

  • MLX90614 Sensörü:
    • VCC -> Arduino 5V
    • GND -> Arduino GND
    • SDA -> Arduino A4 (SDA)
    • SCL -> Arduino A5 (SCL)
  • LCD Ekran:
    • VSS -> Arduino GND
    • VDD -> Arduino 5V
    • VO (Kontrast) -> Potansiyometrenin orta ucu. Potansiyometrenin diğer uçları Arduino 5V ve GND'ye bağlanacak.
    • RS -> Arduino Dijital Pin 12
    • EN -> Arduino Dijital Pin 11
    • D4 -> Arduino Dijital Pin 5
    • D5 -> Arduino Dijital Pin 4
    • D6 -> Arduino Dijital Pin 3
    • D7 -> Arduino Dijital Pin 2
    • A (Anot) -> Arduino 5V (100 ohm direnç ile)
    • K (Katot) -> Arduino GND

Arduino Kodu

Aşağıdaki kodu Arduino IDE'nize kopyalayın ve Arduino kartınıza yükleyin.


 #include 
 #include 
 #include 

 // LCD pinlerini tanımla
 const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
 LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

 // MLX90614 sensörünü tanımla
 Adafruit_MLX90614 mlx = Adafruit_MLX90614();

 void setup() {
  Serial.begin(9600);
  Serial.println("Adafruit MLX90614 Temassız Sıcaklık Sensörü Testi");

  mlx.begin();

  // LCD'yi başlat
  lcd.begin(16, 2);
  lcd.print("Temassiz Ates");
  lcd.setCursor(0,1);
  lcd.print("Olcere Hosgeldin!");
  delay(2000);
  lcd.clear();
 }

 void loop() {
  // Ortam sıcaklığını ve nesne sıcaklığını oku
  float ambientTemp = mlx.readAmbientTempC();
  float objectTemp = mlx.readObjectTempC();

  // Sıcaklık değerlerini serial monitöre yazdır
  Serial.print("Ortam Sıcaklığı: ");
  Serial.print(ambientTemp);
  Serial.println(" *C");

  Serial.print("Nesne Sıcaklığı: ");
  Serial.print(objectTemp);
  Serial.println(" *C");

  // Sıcaklık değerlerini LCD ekrana yazdır
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Ortam: ");
  lcd.print(ambientTemp);
  lcd.print(" C");
  lcd.setCursor(0, 1);
  lcd.print("Nesne: ");
  lcd.print(objectTemp);
  lcd.print(" C");

  delay(1000); // 1 saniye bekle
 }
 

Kodun Açıklaması

  • #include <Wire.h>, #include <LiquidCrystal.h>, #include <Adafruit_MLX90614.h>: Gerekli kütüphaneleri projemize dahil ediyoruz.
  • LCD pinlerini tanımlıyoruz.
  • Adafruit_MLX90614 mlx = Adafruit_MLX90614();: MLX90614 sensörünü tanımlıyoruz.
  • mlx.begin();: Sensörü başlatıyoruz.
  • lcd.begin(16, 2);: LCD ekranı 16x2 boyutunda başlatıyoruz.
  • mlx.readAmbientTempC(); ve mlx.readObjectTempC();: Ortam ve nesne sıcaklıklarını Celsius cinsinden okuyoruz.
  • lcd.print(); ve lcd.setCursor();: Sıcaklık değerlerini LCD ekrana yazdırıyoruz.

Çalıştırma ve Sonuç

Devreyi kurduktan ve kodu Arduino'ya yükledikten sonra, LCD ekranda ortam ve nesne sıcaklıklarını görmelisiniz. MLX90614 sensörünü bir nesneye yaklaştırdığınızda, nesne sıcaklığının değiştiğini gözlemleyebilirsiniz. Potansiyometre ile LCD ekranın kontrastını ayarlayarak daha net bir görüntü elde edebilirsiniz.

Ek Notlar

  • MLX90614 sensörünün doğru sonuçlar vermesi için, sensörün yüzeyinin temiz olduğundan emin olun.
  • Ölçüm yaparken, sensörü nesneye çok yaklaştırmamaya özen gösterin. Genellikle birkaç santimetre mesafe yeterlidir.
  • Kodu ve devreyi kendi ihtiyaçlarınıza göre modifiye edebilirsiniz. Örneğin, sıcaklık değerlerini farklı bir ekranda görüntüleyebilir, farklı sıcaklık birimlerinde gösterebilir veya bir alarm sistemi ekleyebilirsiniz.

Umarım bu proje sizin için faydalı olmuştur. Arduino ile keyifli projeler geliştirmeye devam edin!

Etiketler: Arduino, Temassız Ateş Ölçer, IR Sensör, MLX90614, LCD Ekran, Sıcaklık Ölçümü, Proje, Kendin Yap

```

Arduino ile Akıllı Saksı: Bitkilerinizin Ne Zaman Suya İhtiyacı Olduğunu Öğrenin

Arduino ile Akıllı Saksı: Bitkilerinizin Ne Zaman Suya İhtiyacı Olduğunu Öğrenin

Arduino ile Akıllı Saksı: Bitkilerinizin Ne Zaman Suya İhtiyacı Olduğunu Öğrenin

Merhaba sevgili Arduino meraklıları ve bitki severler! Bu yazımızda, Arduino kullanarak bitkilerinizin ne zaman suya ihtiyacı olduğunu anlayan akıllı bir saksı projesi geliştireceğiz. Bu proje sayesinde bitkilerinizle daha yakından ilgilenebilir, onların sağlıklı ve mutlu bir şekilde büyümelerini sağlayabilirsiniz. Hazırsanız, malzemeleri hazırlayalım ve kodlamaya başlayalım!

Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • Toprak Nem Sensörü (örn. YL-69 veya benzeri)
  • Jumper kablolar
  • 10k Ohm direnç (opsiyonel, daha hassas ölçümler için)
  • Breadboard (gerekli değil ama işleri kolaylaştırır)

Toprak Nem Sensörü Nasıl Çalışır?

Toprak nem sensörü, topraktaki su miktarını ölçerek bize bir değer verir. Bu değer, toprağın ne kadar kuru veya ıslak olduğunu anlamamızı sağlar. Sensör, iki metal çubuktan oluşur ve bu çubuklar arasındaki elektriksel iletkenlik, topraktaki nem miktarıyla doğru orantılıdır. Kuru toprak daha az iletkenken, ıslak toprak daha fazla iletkendir.

Devre Şeması ve Bağlantılar

Şimdi de devremizi nasıl kuracağımıza bir göz atalım. Bağlantıları aşağıdaki gibi yapabilirsiniz:

  1. Toprak Nem Sensörü Bağlantıları:
    • Sensörün VCC pini -> Arduino'nun 5V pinine
    • Sensörün GND pini -> Arduino'nun GND pinine
    • Sensörün A0 (Analog Out) pini -> Arduino'nun A0 pinine

Eğer daha hassas bir ölçüm almak isterseniz, 10k Ohm'luk bir direnci sensörün A0 pininden GND'ye bağlayabilirsiniz. Bu, voltaj bölücü oluşturarak ölçüm aralığını genişletecektir.

Arduino Kodu

Artık devremizi kurduğumuza göre, Arduino kodunu yazmaya başlayabiliriz. Aşağıdaki kodu Arduino IDE'nize kopyalayın ve Arduino'nuza yükleyin:


// Toprak nem sensörü pinini tanımla
const int nemSensorPin = A0;

void setup() {
  // Seri iletişimi başlat
  Serial.begin(9600);
  Serial.println("Akilli Saksı Başlatılıyor...");
}

void loop() {
  // Sensörden okunan değeri al
  int nemDegeri = analogRead(nemSensorPin);

  // Okunan değeri seri port ekranına yazdır
  Serial.print("Nem Değeri: ");
  Serial.println(nemDegeri);

  // Nem seviyesine göre yorum yap
  if (nemDegeri < 300) {
    Serial.println("Toprak çok kuru, sulama zamanı!");
  } else if (nemDegeri < 600) {
    Serial.println("Toprak kuru, yakında sulama gerekebilir.");
  } else {
    Serial.println("Toprak yeterince nemli.");
  }

  // 1 saniye bekle
  delay(1000);
}

Kod Açıklaması:

  • const int nemSensorPin = A0; satırı, toprak nem sensörünün bağlı olduğu Arduino pinini tanımlar.
  • Serial.begin(9600); satırı, seri iletişimi başlatır. Bu sayede sensörden okunan değerleri bilgisayar ekranında görebiliriz.
  • int nemDegeri = analogRead(nemSensorPin); satırı, sensörden okunan değeri nemDegeri değişkenine atar.
  • Serial.print("Nem Değeri: "); ve Serial.println(nemDegeri); satırları, okunan değeri seri port ekranına yazdırır.
  • if ve else if blokları, nem seviyesine göre yorum yapar ve kullanıcıya ne yapması gerektiği konusunda bilgi verir.
  • delay(1000); satırı, programın 1 saniye beklemesini sağlar.

Projenin Çalıştırılması

Kodu Arduino'nuza yükledikten sonra, seri port ekranını açın (Arduino IDE'de "Araçlar" menüsünden "Seri Port Ekranı"nı seçin). Toprak nem sensörünü saksınıza yerleştirin ve seri port ekranında okunan değerleri gözlemleyin. Değerler değiştiğinde, toprağın nem seviyesi hakkında fikir sahibi olabilirsiniz. Kodda yer alan eşik değerlerini (300 ve 600) kendi bitkinizin ihtiyaçlarına göre ayarlayabilirsiniz.

Proje Geliştirme Fikirleri

Bu proje oldukça temel bir versiyon. Daha da geliştirerek akıllı saksınızı daha kullanışlı hale getirebilirsiniz. İşte bazı geliştirme fikirleri:

  • Otomatik Sulama: Bir röle ve su pompası kullanarak, toprak nem seviyesi belirli bir değerin altına düştüğünde otomatik olarak sulama yapabilirsiniz.
  • LCD Ekran: Okunan nem değerini bir LCD ekranda gösterebilirsiniz.
  • Mobil Uygulama: Bluetooth veya Wi-Fi modülü kullanarak, akıllı saksınızdan gelen verileri bir mobil uygulamada görüntüleyebilirsiniz.
  • Işık Sensörü: Işık sensörü ekleyerek bitkinin ışık ihtiyacını da takip edebilirsiniz.

Umarım bu proje size ilham vermiştir ve Arduino dünyasına güzel bir başlangıç yapmanızı sağlamıştır. Kendi akıllı saksı projelerinizi bizimle paylaşmayı unutmayın! Bol kodlu günler dilerim!

Etiketler: Arduino, Akıllı Saksı, Toprak Nem Sensörü, Bitki Bakımı, DIY Proje, Elektronik, Hobi

```

Arduino Kontrollü Akıllı Masa Lambası: Ortam Işığına Göre Ayarlanabilir

Arduino Kontrollü Akıllı Masa Lambası: Ortam Işığına Göre Ayarlanabilir

Arduino Kontrollü Akıllı Masa Lambası: Ortam Işığına Göre Ayarlanabilir

Herkese merhaba Arduino severler! Bu yazımızda, etrafımızdaki ışık koşullarına göre parlaklığını otomatik olarak ayarlayan, akıllı bir masa lambası projesi geliştireceğiz. Bu proje hem Arduino'ya yeni başlayanlar için harika bir giriş olacak, hem de daha deneyimli kullanıcılar için keyifli bir uygulama örneği sunacak. Hazırsanız, malzemelere ve kodlamaya geçelim!

Neden Akıllı Masa Lambası?

Akıllı masa lambası, okuma, çalışma veya hobilerinizle uğraşırken gözlerinizi yormamak için ideal bir çözüm sunar. Ortamdaki ışık azaldığında lamba otomatik olarak parlaklığını artırır, ortam aydınlandığında ise parlaklığı kısar. Böylece, her zaman ideal bir aydınlatma seviyesine sahip olursunuz.

Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • LDR (Işık Bağımlı Direnç)
  • 10k Ohm Direnç
  • Potansiyometre (10k Ohm idealdir)
  • LED (Yüksek parlaklığa sahip)
  • 220 Ohm Direnç (LED için)
  • Breadboard
  • Jumper kablolar

Devre Şeması ve Bağlantılar

Devremizi kurarken aşağıdaki bağlantı şemasına dikkat edelim:

  • LDR:
    • LDR'nin bir bacağı -> Arduino 5V (Vcc) pinine
    • LDR'nin diğer bacağı -> 10k Ohm direncin bir bacağına
    • 10k Ohm direncin diğer bacağı -> GND'ye
    • LDR ve 10k Ohm direncin birleştiği noktadan -> Arduino A0 pinine
  • Potansiyometre:
    • Potansiyometrenin bir ucu -> Arduino 5V'a (VCC)
    • Potansiyometrenin diğer ucu -> GND'ye
    • Potansiyometrenin orta ucu (silgi) -> Arduino A1 pinine
  • LED:
    • LED'in uzun bacağı (anot) -> 220 Ohm direncin bir bacağına
    • 220 Ohm direncin diğer bacağı -> Arduino Dijital 9 pinine (PWM pini)
    • LED'in kısa bacağı (katot) -> GND'ye

Arduino Kodu

Şimdi de Arduino kodumuza göz atalım. Bu kod, LDR'den gelen ışık değerini okuyacak, bu değeri potansiyometre ile ayarlanan hassasiyete göre ölçeklendirecek ve LED'in parlaklığını buna göre ayarlayacak.


 const int ldrPin = A0;
 const int potPin = A1;
 const int ledPin = 9;

 void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
 }

 void loop() {
  // LDR'den ışık değerini oku
  int ldrValue = analogRead(ldrPin);

  // Potansiyometreden hassasiyet değerini oku
  int potValue = analogRead(potPin);

  // Hassasiyet değerini 0-1023'ten 1-100 arasına ölçeklendir
  int sensitivity = map(potValue, 0, 1023, 1, 100);

  // Işık değerini 0-255 arasına ölçeklendir ve hassasiyet ile çarp
  int ledBrightness = map(ldrValue, 0, 1023, 255, 0); // Ters çevrildi çünkü düşük ışıkta daha parlak istiyoruz
  ledBrightness = constrain(ledBrightness * sensitivity / 100, 0, 255); // Hassasiyet ayarı ve sınırlama

  // LED'in parlaklığını ayarla
  analogWrite(ledPin, ledBrightness);

  // Seri monitöre değerleri yazdır (isteğe bağlı)
  Serial.print("LDR: ");
  Serial.print(ldrValue);
  Serial.print(", Pot: ");
  Serial.print(potValue);
  Serial.print(", Brightness: ");
  Serial.println(ledBrightness);

  delay(50); // Daha kararlı okumalar için kısa bir gecikme
 }
 

Kodun Açıklaması

  • ldrPin, potPin, ledPin: LDR, potansiyometre ve LED'in bağlandığı pinleri tanımlar.
  • setup(): Seri iletişimi başlatır ve LED pinini çıkış olarak ayarlar.
  • loop(): Sürekli olarak çalışan ana döngüdür.
    • analogRead(): LDR ve potansiyometreden analog değerleri okur.
    • map(): Değerleri farklı aralıklara ölçeklendirir. LDR değeri ters çevrilir (255'ten 0'a) çünkü düşük ışıkta LED'in daha parlak olmasını isteriz.
    • constrain(): LED parlaklığının 0 ile 255 arasında kalmasını sağlar. Hassasiyet ayarı bu noktada yapılır.
    • analogWrite(): LED'in parlaklığını PWM sinyali ile ayarlar.
    • Serial.print(): Değerleri seri monitöre yazdırır (isteğe bağlı, hata ayıklama için yararlı).
    • delay(): Kısa bir gecikme ekler.

Proje Nasıl Çalışır?

LDR, üzerine düşen ışık miktarına göre direnci değişen bir sensördür. Ortamdaki ışık azaldığında direnci artar ve Arduino A0 pinine daha düşük bir voltaj gönderir. Arduino, bu voltajı okuyarak ortamın ne kadar karanlık olduğunu anlar. Potansiyometre ise, sistemin hassasiyetini ayarlamanıza olanak tanır. Potansiyometre ile, ortam ışığındaki küçük değişikliklere lamba ne kadar tepki versin, onu belirleyebilirsiniz. Arduino, LDR ve potansiyometreden gelen verileri işleyerek, LED'in parlaklığını otomatik olarak ayarlar.

İpuçları ve İyileştirmeler

  • Kalibrasyon: LDR'nin hassasiyeti ortam ışığına göre değişebilir. Kodu çalıştırmadan önce farklı ışık koşullarında LDR'nin değerlerini kontrol edin ve `map()` fonksiyonundaki aralıkları buna göre ayarlayın.
  • Hassasiyet Ayarı: Potansiyometre ile hassasiyet ayarını deneyerek, farklı ışık koşullarına en uygun ayarı bulun.
  • LED Seçimi: Daha parlak bir LED kullanarak, daha iyi bir aydınlatma sağlayabilirsiniz. Ancak, LED'in akım gereksinimlerini dikkate alarak uygun bir direnç kullanmayı unutmayın.
  • Kasa Tasarımı: Devrenizi daha şık hale getirmek için 3D yazıcıda veya farklı malzemeler kullanarak özel bir kasa tasarlayabilirsiniz.
  • Renk Ayarı: RGB LED kullanarak, lamba rengini de ortam ışığına göre otomatik olarak ayarlayabilirsiniz.

Umarım bu proje size Arduino dünyasına keyifli bir giriş yapmanıza yardımcı olur. Herhangi bir sorunuz olursa, yorumlarda sormaktan çekinmeyin. İyi kodlamalar!

Etiketler: arduino, akıllı lamba, ortam ışığı, ldr, potansiyometre, led, proje, elektronik, kodlama, diy

```

Smart Pot with Arduino: Know When Your Plants Need Water

Smart Pot with Arduino: Know When Your Plants Need Water

Smart Pot with Arduino: Know When Your Plants Need Water

Hey everyone! Welcome back to CapAndCoil! Today, we're diving into a super fun and practical project: building a smart pot using an Arduino. Ever forget to water your plants? This project will help you keep those green friends happy and thriving by letting you know exactly when they need a drink!

Why a Smart Pot?

We all know the struggle. Sometimes life gets busy, and our plants suffer. A smart pot takes the guesswork out of watering. By continuously monitoring the soil moisture, it can alert you when the levels are low, preventing overwatering (which is just as bad as underwatering!) and ensuring your plants get exactly what they need.

What You'll Need

Here's a list of the components you'll need for this project:

  • Arduino Uno (or similar)
  • Soil Moisture Sensor
  • Jumper Wires
  • LED (Optional, for visual indication)
  • Resistor (220 Ohm, if using an LED)
  • A Pot (of course!)

Understanding the Soil Moisture Sensor

The soil moisture sensor works by measuring the resistance between two probes. The more water in the soil, the lower the resistance. The sensor outputs an analog voltage that corresponds to the soil moisture level. The Arduino can then read this voltage and determine if the soil is dry or wet.

Wiring it Up

Let's get everything connected! Here's how you'll wire up the components:

  • Soil Moisture Sensor VCC → Arduino 5V
  • Soil Moisture Sensor GND → Arduino GND
  • Soil Moisture Sensor AOUT → Arduino Analog Pin A0

If you're using an LED to visually indicate when the soil is dry:

  • LED Anode (Longer leg) → Resistor (220 Ohm)
  • Resistor → Arduino Digital Pin 8
  • LED Cathode (Shorter leg) → Arduino GND

The Arduino Code

Now for the brain of the operation! This code reads the soil moisture sensor, compares it to a threshold, and either turns on the LED (if used) or prints a message to the serial monitor indicating the soil is dry.


// Define the pins
const int sensorPin = A0;
const int ledPin = 8; // Optional LED

// Define the threshold for dry soil
const int dryThreshold = 600; // Adjust this value based on your sensor and soil

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT); // If using an LED
}

void loop() {
  // Read the sensor value
  int sensorValue = analogRead(sensorPin);

  // Print the sensor value to the serial monitor
  Serial.print("Sensor Value: ");
  Serial.println(sensorValue);

  // Check if the soil is dry
  if (sensorValue > dryThreshold) {
    Serial.println("Soil is dry! Please water your plant.");
    digitalWrite(ledPin, HIGH); // Turn on the LED (if used)
  } else {
    Serial.println("Soil is moist.");
    digitalWrite(ledPin, LOW);  // Turn off the LED (if used)
  }

  delay(1000); // Wait for 1 second
}

Important: You'll need to adjust the `dryThreshold` value to suit your specific sensor and soil conditions. Monitor the sensor values in the serial monitor when the soil is dry and wet to find the appropriate threshold.

Uploading the Code

Connect your Arduino to your computer using a USB cable. Open the Arduino IDE, copy and paste the code, select the correct board and port, and click the upload button. Once the code is uploaded, open the serial monitor (Tools > Serial Monitor) to see the sensor readings and messages.

Putting it All Together

Place the soil moisture sensor probes into the soil of your plant. Make sure they're inserted deeply enough to get an accurate reading. Monitor the serial monitor (or watch the LED) to see when the soil is dry. Adjust the `dryThreshold` in the code as needed to fine-tune the sensitivity of the system.

Going Further

This is just the beginning! Here are some ideas for expanding this project:

  • Add a buzzer: Use a buzzer to create an audible alert when the soil is dry.
  • Connect to the internet: Use a WiFi module to send notifications to your phone when the plant needs water.
  • Automated Watering System: Connect a small water pump to the Arduino and automatically water the plant when the soil is dry.
  • Multiple Sensors: Monitor moisture levels in different pots with multiple sensors connected to a single Arduino.

Happy planting, and happy coding!

Tags: Arduino, Smart Pot, Soil Moisture Sensor, Electronics Project, DIY, Beginner Project, Plant Care, Sensors, Watering Plants, Arduino Uno, Home Automation, Electronics Hobby

```

LED Şerit ile Ses Ritim Işığı (Müzik ile Dans Eden Işıklar)

LED Şerit ile Ses Ritim Işığı (Müzik ile Dans Eden Işıklar)

LED Şerit ile Ses Ritim Işığı (Müzik ile Dans Eden Işıklar)

Merhaba sevgili Arduino severler! Bugün sizlerle, müzikle senkronize bir şekilde dans eden ışıklar yaratacağımız harika bir proje yapacağız. Bu proje ile evinizde, odanızda veya partilerde müthiş bir ambiyans oluşturabilirsiniz. Gelin, adım adım bu eğlenceli projeye birlikte göz atalım.

Proje İçin Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • WS2812B LED Şerit (veya benzeri adreslenebilir LED şerit)
  • Ses Sensörü (KY-038 veya benzeri bir ses algılama modülü)
  • Jumper Kablolar
  • Güç Kaynağı (LED şerit için uygun voltaj ve akımda)
  • 1000µF Kondansatör (Opsiyonel, ancak LED şeridin kararlılığını artırır)

Devre Şeması ve Bağlantılar

Devre bağlantıları oldukça basit. Aşağıdaki bağlantıları dikkatlice yapmanız yeterli:

  • Ses Sensörü VCC pini -> Arduino 5V pini
  • Ses Sensörü GND pini -> Arduino GND pini
  • Ses Sensörü OUT pini -> Arduino Analog A0 pini (veya herhangi bir uygun analog pin)
  • LED Şerit VCC pini -> Güç Kaynağı VCC pini (ÖNEMLİ: Arduino'nun 5V pininden direkt olarak yüksek akım çeken LED şeritleri beslemeyin. Ayrı bir güç kaynağı kullanın.)
  • LED Şerit GND pini -> Güç Kaynağı GND pini ve Arduino GND pini (Ortak GND önemli!)
  • LED Şerit Data In (DI) pini -> Arduino Dijital 6 pini (veya kodda belirlediğiniz başka bir dijital pin)
  • Kondansatör (+) ucu -> LED Şerit VCC pini
  • Kondansatör (-) ucu -> LED Şerit GND pini

Uyarı: Yüksek akım çeken LED şeritleri doğrudan Arduino üzerinden beslemek Arduino'ya zarar verebilir. Bu nedenle ayrı bir güç kaynağı kullanmak önemlidir. Ayrıca, kondansatör kullanımı, LED şeridin ani akım çekmelerinde daha kararlı çalışmasını sağlar.

Arduino Kodu

Şimdi de Arduino kodumuza geçelim. Bu kod, ses sensöründen gelen analog veriyi okuyacak, belirli bir eşiği geçen ses seviyelerine göre LED şeridi farklı renklerde yakacak.


#include <FastLED.h>

#define LED_PIN     6       // LED şeridin data pini
#define NUM_LEDS    60      // LED şerit üzerindeki LED sayısı
#define BRIGHTNESS  50      // Maksimum parlaklık (0-255)
#define COLOR_ORDER GRB     // LED şeridin renk sırası (GRB veya RGB)
#define LED_TYPE    WS2812B // LED şerit tipi

CRGB leds[NUM_LEDS];

#define AUDIO_INPUT A0      // Ses sensörünün bağlı olduğu analog pin
#define THRESHOLD   150     // Ses eşik değeri (deneyerek bulun)

void setup() {
  FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
  FastLED.setBrightness( BRIGHTNESS );
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(AUDIO_INPUT);
  Serial.println(sensorValue); // Debug için ses değerini seri portta görüntüle

  if (sensorValue > THRESHOLD) {
    // Ses eşiği aşıldığında yapılacak işlemler
    for (int i = 0; i < NUM_LEDS; i++) {
      leds[i] = CHSV(map(i, 0, NUM_LEDS - 1, 0, 255), 255, 255); // Gökkuşağı renkleri
    }
    FastLED.show();
    delay(50); // Kısa bir süre bekle
  } else {
    // Ses eşiği aşılmadığında yapılacak işlemler
    fill_solid(leds, NUM_LEDS, CRGB::Black); // Tüm LED'leri söndür
    FastLED.show();
  }
}

Kod Açıklaması:

  • #include <FastLED.h>: FastLED kütüphanesini projeye dahil ediyoruz. Bu kütüphane, adreslenebilir LED şeritleri kontrol etmemizi kolaylaştırır.
  • Tanımlamalar: LED pinini, LED sayısını, parlaklığı, renk sırasını ve LED tipini tanımlıyoruz.
  • leds[NUM_LEDS]: LED'leri tutacak bir CRGB dizisi oluşturuyoruz.
  • AUDIO_INPUT ve THRESHOLD: Ses sensörünün bağlı olduğu analog pini ve ses eşik değerini tanımlıyoruz. THRESHOLD değerini, ortam gürültüsüne göre deneme yanılma yoluyla ayarlamanız gerekebilir.
  • setup() fonksiyonu: FastLED'i başlatıyor ve seri iletişimi başlatıyoruz (debug için).
  • loop() fonksiyonu: Sürekli olarak ses sensöründen veri okuyor. Eğer okunan değer eşik değerini aşarsa, LED şeridi gökkuşağı renklerinde yakıyor. Aksi takdirde tüm LED'leri söndürüyor.

Kodu Arduino'ya Yükleme ve Test Etme

Arduino IDE'yi kullanarak kodu Arduino kartınıza yükleyin. Kodu yükledikten sonra seri port monitörünü açarak ses sensöründen okunan değerleri gözlemleyebilirsiniz. Ortamdaki sesi artırarak veya sensöre yakın konuşarak LED şeridin tepki verip vermediğini kontrol edin. Eğer LED'ler tepki vermiyorsa, THRESHOLD değerini ayarlayarak hassasiyeti artırabilir veya azaltabilirsiniz.

Proje Geliştirme İpuçları

  • Farklı renk efektleri deneyin: Kodda CHSV yerine farklı renk kombinasyonları kullanarak farklı efektler yaratabilirsiniz.
  • Ses seviyesine göre parlaklığı ayarlayın: Ses seviyesi arttıkça LED'lerin parlaklığını da artırabilirsiniz.
  • Farklı LED şerit türleri kullanın: WS2812B yerine farklı adreslenebilir LED şeritler (örn. APA102) kullanarak farklı sonuçlar elde edebilirsiniz.
  • Müzik analizi yapın: Daha gelişmiş projelerde, FFT (Fast Fourier Transform) algoritması kullanarak müziğin frekanslarını analiz edebilir ve LED'leri bu frekanslara göre kontrol edebilirsiniz.

Umarım bu proje size ilham vermiştir ve elektronik dünyasına adım atmanızda yardımcı olmuştur. İyi eğlenceler!

Etiketler: Arduino, LED Şerit, Ses Sensörü, Müzik, Işık, Proje, Hobi, Elektronik, WS2812B, FastLED

```

Arduino ve Bluetooth ile Kablosuz Uzaktan Kumanda Yapımı

Arduino ve Bluetooth ile Kablosuz Uzaktan Kumanda Yapımı

Arduino ve Bluetooth ile Kablosuz Uzaktan Kumanda Yapımı

Merhaba sevgili Arduino meraklıları!

Bu yazımızda, Arduino ve Bluetooth kullanarak nasıl kablosuz bir uzaktan kumanda yapabileceğinizi adım adım anlatacağım. Bu proje hem eğlenceli hem de birçok farklı uygulama için temel oluşturabilecek bir proje. İster robotunuzu kontrol edin, ister ev otomasyon sisteminizi yönetin, bu uzaktan kumanda size esneklik sağlayacak.

Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • HC-05 veya HC-06 Bluetooth Modülü
  • Butonlar (İhtiyacınız kadar)
  • 10k Ohm Dirençler (Buton başına bir adet)
  • Breadboard
  • Jumper Kablolar
  • Akıllı Telefon (Bluetooth uygulaması için)

Devre Şeması ve Bağlantılar

Devremizi kurarken aşağıdaki bağlantıları dikkatlice yapalım:

  • Bluetooth Modülü:
    • HC-05 VCC -> Arduino 5V
    • HC-05 GND -> Arduino GND
    • HC-05 TXD -> Arduino Dijital Pin 10 (veya farklı bir pin, yazılımda belirtilmeli)
    • HC-05 RXD -> Arduino Dijital Pin 11 (veya farklı bir pin, yazılımda belirtilmeli)
  • Butonlar:
    • Her bir butonun bir bacağı Arduino'nun dijital giriş pinlerinden birine (örneğin 2, 3, 4, 5) bağlanır.
    • Aynı bacağa 10k Ohm direnç bağlanarak Arduino GND'ye çekilir (pull-down direnci).
    • Butonun diğer bacağı Arduino'nun 5V pinine bağlanır.

Önemli Not: HC-05 ve HC-06 modüllerinin TX ve RX pinlerini Arduino'ya bağlarken dikkatli olun. RX pinini Arduino'nun TX pinine, TX pinini ise Arduino'nun RX pinine bağlamanız gerekmektedir. Ayrıca, Arduino IDE'de Serial Monitor'ü kullanırken veya kod yüklerken Bluetooth modülünün bağlantısını kesmeniz önerilir. Aksi takdirde, kod yüklemede sorun yaşayabilirsiniz.

Arduino Kodu

Aşağıdaki kodu Arduino IDE'sine kopyalayın ve kartınıza yükleyin. Bu kod, butonlara basıldığında belirli karakterleri Bluetooth üzerinden gönderecektir.


// Buton pinlerini tanımla
const int button1Pin = 2;
const int button2Pin = 3;
const int button3Pin = 4;
const int button4Pin = 5;

// Değişkenleri tanımla
int button1State = 0;
int button2State = 0;
int button3State = 0;
int button4State = 0;

void setup() {
  // Buton pinlerini giriş olarak ayarla
  pinMode(button1Pin, INPUT_PULLUP); // Dahili pull-up direnci kullanılıyor
  pinMode(button2Pin, INPUT_PULLUP); // Dahili pull-up direnci kullanılıyor
  pinMode(button3Pin, INPUT_PULLUP); // Dahili pull-up direnci kullanılıyor
  pinMode(button4Pin, INPUT_PULLUP); // Dahili pull-up direnci kullanılıyor

  // Seri iletişimi başlat
  Serial.begin(9600);
}

void loop() {
  // Buton durumlarını oku
  button1State = digitalRead(button1Pin);
  button2State = digitalRead(button2Pin);
  button3State = digitalRead(button3Pin);
  button4State = digitalRead(button4Pin);

  // Butonlara basıldığında ilgili karakteri gönder
  if (button1State == LOW) {
    Serial.println("A"); // Buton 1 basıldığında 'A' karakterini gönder
    delay(200); // Debouncing için kısa bir gecikme
  }
  if (button2State == LOW) {
    Serial.println("B"); // Buton 2 basıldığında 'B' karakterini gönder
    delay(200); // Debouncing için kısa bir gecikme
  }
  if (button3State == LOW) {
    Serial.println("C"); // Buton 3 basıldığında 'C' karakterini gönder
    delay(200); // Debouncing için kısa bir gecikme
  }
  if (button4State == LOW) {
    Serial.println("D"); // Buton 4 basıldığında 'D' karakterini gönder
    delay(200); // Debouncing için kısa bir gecikme
  }
}

Kod Açıklaması:

  • Kod, buton pinlerini ve buton durumlarını tutacak değişkenleri tanımlar.
  • setup() fonksiyonunda, buton pinleri giriş olarak ayarlanır ve seri iletişim başlatılır. INPUT_PULLUP modu kullanılarak harici dirençlere ihtiyaç duyulmaz.
  • loop() fonksiyonunda, butonların durumları sürekli olarak okunur.
  • Eğer bir butona basılırsa (LOW seviyesine düşerse), ilgili karakter Bluetooth üzerinden gönderilir.
  • delay() fonksiyonu, butonun birden fazla kez tetiklenmesini önlemek için (debouncing) kullanılır.

Bluetooth Uygulaması

Akıllı telefonunuz için Bluetooth Terminal uygulaması indirmeniz gerekiyor. Google Play Store veya App Store'dan "Bluetooth Terminal" veya benzeri bir uygulama indirebilirsiniz. Uygulamayı kurduktan sonra, aşağıdaki adımları izleyin:

  1. Telefonunuzun Bluetooth'unu açın.
  2. Bluetooth Terminal uygulamasını açın.
  3. Uygulama içinden Bluetooth cihazlarını tarayın ve HC-05 veya HC-06 modülünüzü seçin. Genellikle "HC-05" veya "HC-06" olarak görünecektir.
  4. Eşleştirme şifresi sorarsa genellikle "1234" veya "0000"dır.
  5. Bağlantı kurulduktan sonra, butonlara bastığınızda terminal ekranında ilgili karakterleri görmelisiniz.

Sonuç ve Uygulama Alanları

Tebrikler! Artık basit bir kablosuz uzaktan kumanda yaptınız. Bu projeyi geliştirerek farklı uygulamalarda kullanabilirsiniz. Örneğin:

  • Robot kontrolü
  • Ev otomasyon sistemleri
  • Model araba veya uçak kontrolü
  • Sunum kontrolü

Bu projenin temelini öğrendikten sonra, hayal gücünüzü kullanarak çok daha karmaşık ve ilginç projeler geliştirebilirsiniz. Unutmayın, Arduino ile her şey mümkün!

Herkese iyi çalışmalar!

Etiketler: Arduino, Bluetooth, Uzaktan Kumanda, Kablosuz, HC-05, HC-06, Proje, DIY, Elektronik, Robotik

```