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

```

Arduino ve RFID ile Kart Okuyucu Güvenlik Sistemi Geliştirme

Arduino ve RFID ile Kart Okuyucu Güvenlik Sistemi Geliştirme

Arduino ve RFID ile Kart Okuyucu Güvenlik Sistemi Geliştirme

Merhaba sevgili Arduino severler!

Bu yazımızda, Arduino kullanarak basit ama etkili bir RFID (Radyo Frekansıyla Tanımlama) kart okuyucu güvenlik sistemi geliştireceğiz. Bu proje hem Arduino'ya yeni başlayanlar için harika bir başlangıç noktası olacak, hem de daha deneyimli kullanıcılar için temel bir güvenlik sistemi prototipi oluşturma imkanı sunacak. Projemizde, yetkilendirilmiş kart okunduğunda bir LED'i yakacağız ve yetkisiz bir kart okunduğunda ise bir buzzer ile uyarı vereceğiz. Hazırsanız, haydi başlayalım!

Gerekli Malzemeler

İşe başlamadan önce ihtiyacımız olan malzemeleri gözden geçirelim:

  • Arduino Uno (veya benzeri bir Arduino geliştirme kartı)
  • RFID Okuyucu Modülü (RC522 yaygın olarak kullanılır)
  • RFID Kart veya Etiket
  • LED
  • Buzzer
  • 220 Ohm Direnç (LED için)
  • Jumper Kablolar
  • Breadboard (isteğe bağlı)

Bağlantılar

Şimdi de komponentlerimizi Arduino'ya nasıl bağlayacağımıza bakalım. Bu adımları dikkatlice takip edin:

  1. RFID Okuyucu Modülü Bağlantıları:
    • RST pin -> Arduino Dijital Pin 9
    • SDA pin -> Arduino Dijital Pin 10
    • MOSI pin -> Arduino Dijital Pin 11
    • MISO pin -> Arduino Dijital Pin 12
    • SCK pin -> Arduino Dijital Pin 13
    • VCC pin -> Arduino 3.3V
    • GND pin -> Arduino GND
  2. LED Bağlantısı:
    • LED'in uzun bacağı (anot) -> 220 Ohm direnç -> Arduino Dijital Pin 8
    • LED'in kısa bacağı (katot) -> Arduino GND
  3. Buzzer Bağlantısı:
    • Buzzer'ın pozitif (+) bacağı -> Arduino Dijital Pin 7
    • Buzzer'ın negatif (-) bacağı -> Arduino GND

Arduino Kodu

Bağlantıları tamamladıktan sonra, Arduino'muza yükleyeceğimiz kodu inceleyelim:


#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN   9     // RFID modülünün RST pini
#define SDA_PIN   10    // RFID modülünün SDA pini
#define LED_PIN    8     // LED'in bağlı olduğu pin
#define BUZZER_PIN 7    // Buzzer'ın bağlı olduğu pin

MFRC522 mfrc522(SDA_PIN, RST_PIN); // MFRC522 sınıfının oluşturulması

// Yetkili kartın UID'si (Kartınızı okutup bu değeri öğrenmelisiniz)
byte validCard[4] = {0xDE, 0xAD, 0xBE, 0xEF}; // Örnek UID, kendi kartınızın UID'si ile değiştirin

void setup() {
  Serial.begin(9600);   // Seri iletişimi başlat
  SPI.begin();      // SPI iletişimi başlat
  mfrc522.PCD_Init();   // MFRC522 başlat
  pinMode(LED_PIN, OUTPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  Serial.println("Kart Okuyucu Hazir!");
}

void loop() {
  // Yeni kart algılandı mı kontrol et
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

  // Kart okundu mu kontrol et
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }

  Serial.print("Kart UID: ");
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
  }
  Serial.println();

  // Kart UID'sini yetkili kart ile karşılaştır
  if (compareUID(mfrc522.uid.uidByte, validCard)) {
    Serial.println("Yetkili Kart!");
    digitalWrite(LED_PIN, HIGH); // LED'i yak
    noTone(BUZZER_PIN);          // Buzzer'ı sustur
    delay(2000);
    digitalWrite(LED_PIN, LOW);  // LED'i söndür
  } else {
    Serial.println("Yetkisiz Kart!");
    tone(BUZZER_PIN, 1000);      // Buzzer'ı çal
    delay(1000);
    noTone(BUZZER_PIN);          // Buzzer'ı sustur
  }

  // Kart okuma işlemini durdur
  mfrc522.PICC_HaltA();
  mfrc522.PCD_StopCrypto1();
}

// Kart UID'lerini karşılaştırma fonksiyonu
bool compareUID(byte cardUID[], byte validUID[]) {
  for (byte i = 0; i < 4; i++) {
    if (cardUID[i] != validUID[i]) {
      return false;
    }
  }
  return true;
}

Açıklamalar:

  • Yukarıdaki kodu Arduino IDE'sine kopyalayın.
  • validCard dizisindeki örnek UID değerini, kullanmak istediğiniz yetkili kartın UID'si ile değiştirin. Kartınızın UID'sini öğrenmek için, yukarıdaki kodu UID karşılaştırma kısmını yorum satırı yaparak çalıştırıp seri port ekranından okuyabilirsiniz.
  • Arduino'nuzu bilgisayarınıza bağlayın ve doğru portu seçtiğinizden emin olun.
  • Kodu Arduino'nuza yükleyin.

Çalışma Mantığı

Kodumuz temel olarak şu adımları izler:

  1. RFID okuyucu başlatılır ve kart aranır.
  2. Eğer bir kart algılanırsa, kartın UID'si okunur.
  3. Okunan UID, önceden tanımlanmış yetkili kart UID'si ile karşılaştırılır.
  4. Eğer UID'ler eşleşirse, LED yakılır (yetkili kart).
  5. Eğer UID'ler eşleşmezse, buzzer çaldırılır (yetkisiz kart).

Sonuç

Tebrikler! Artık basit bir RFID kart okuyucu güvenlik sistemine sahipsiniz. Bu projeyi daha da geliştirmek için farklı özellikler ekleyebilirsiniz. Örneğin, yetkisiz kart okunduğunda bir log dosyası oluşturabilir, bir servo motor kullanarak kapı kilidi kontrolü yapabilir veya bir LCD ekran ile mesajlar gösterebilirsiniz.

Umarım bu rehber, Arduino ve RFID teknolojileriyle tanışmanız için faydalı olmuştur. Herhangi bir sorunuz olursa, yorumlar kısmından bana ulaşabilirsiniz. Bir sonraki projede görüşmek üzere!

Etiketler: Arduino, RFID, RC522, Güvenlik Sistemi, Kart Okuyucu, Proje, Elektronik, Kodlama

```