Arduino ile Akıllı (Bluetooth) Trafik Işığı Simülasyonu: Buton ve Bluetooth Kontrollü

Arduino ile Akıllı (Bluetooth) Trafik Işığı Simülasyonu: Buton ve Bluetooth Kontrollü

Arduino ile Akıllı (Bluetooth) Trafik Işığı Simülasyonu: Buton ve Bluetooth Kontrollü

Herkese merhaba Arduino severler! Bu yazımızda, günlük hayatta karşılaştığımız trafik ışıklarının daha akıllı bir versiyonunu Arduino ile nasıl simüle edebileceğimizi inceleyeceğiz. Bu projede, trafik ışıklarını kontrol etmek için hem bir buton kullanacağız, hem de Bluetooth üzerinden bir telefonun varlığını algılayarak ışık sürelerini değiştireceğiz. Yani, diyelim ki yakınınızda Bluetooth'u açık bir telefonunuz var, trafik ışığı daha uzun süre sizin için yanacak! Eğlenceli değil mi?

Neden Bu Proje?

Bu proje hem Arduino'ya yeni başlayanlar, hem de biraz daha deneyimli kullanıcılar için harika bir öğrenme fırsatı sunuyor. Temel elektronik bilgilerinizi pekiştirirken, sensör kullanımı, Bluetooth iletişimi ve programlama mantığını da öğrenmiş olacaksınız. Ayrıca, bu projeyi geliştirerek daha karmaşık akıllı şehir projelerine de adım atabilirsiniz.

Gerekli Malzemeler

Bu projeyi gerçekleştirmek için aşağıdaki malzemelere ihtiyacınız olacak:

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • 3 adet LED (Kırmızı, Sarı, Yeşil)
  • 3 adet 220 Ohm direnç
  • 1 adet Buton
  • 1 adet HC-05 veya HC-06 Bluetooth Modülü
  • Jumper kablolar
  • Breadboard (Prototip geliştirme kartı)

Devre Şeması

Devremizi aşağıdaki şekilde kuracağız:

  • Kırmızı LED: Arduino'nun 13. pinine 220 Ohm direnç üzerinden bağlanır.
  • Sarı LED: Arduino'nun 12. pinine 220 Ohm direnç üzerinden bağlanır.
  • Yeşil LED: Arduino'nun 11. pinine 220 Ohm direnç üzerinden bağlanır.
  • Buton: Bir bacağı Arduino'nun 2. pinine, diğer bacağı ise 10K Ohm direnç ile GND'ye (Toprak) bağlanır. Butonun diğer bacağına Arduino VCC (5V) bağlanır.
  • HC-05/HC-06 Bluetooth Modülü:
    • VCC pini Arduino'nun 5V pinine bağlanır.
    • GND pini Arduino'nun GND pinine bağlanır.
    • TXD pini Arduino'nun RXD (0) pinine bağlanır (Dikkat: Program yüklerken bağlantıyı kesin veya devreden çıkarın, aksi takdirde yükleme başarısız olabilir!). Yükleme bittikten sonra tekrar bağlayın. Modülün RXD pinine voltaj bölücü kullanarak (örneğin 1K ve 2K dirençlerle) Arduino'dan gelen 5V sinyalini 3.3V'a düşürmek daha güvenlidir.
    • RXD pini Arduino'nun TXD (1) pinine bağlanır.

Arduino Kodu

Şimdi de projemizin beyni olan Arduino koduna geçelim. Aşağıdaki kodu Arduino IDE'sine kopyalayıp, kartınıza yükleyebilirsiniz:


 // LED pinleri
 const int redLedPin = 13;
 const int yellowLedPin = 12;
 const int greenLedPin = 11;

 // Buton pini
 const int buttonPin = 2;

 // Bluetooth bağlantı durumu
 bool bluetoothConnected = false;

 // Normal ve uzun süreler (milisaniye cinsinden)
 const unsigned long normalRedDuration = 5000;   //5 saniye
 const unsigned long normalYellowDuration = 2000; //2 saniye
 const unsigned long normalGreenDuration = 5000;  //5 saniye

 const unsigned long longRedDuration = 15000;    //15 saniye
 const unsigned long longYellowDuration = 6000;  //6 saniye
 const unsigned long longGreenDuration = 15000;   //15 saniye

 unsigned long redDuration = normalRedDuration;
 unsigned long yellowDuration = normalYellowDuration;
 unsigned long greenDuration = normalGreenDuration;


 void setup() {
  // Pinleri çıkış olarak ayarla
  pinMode(redLedPin, OUTPUT);
  pinMode(yellowLedPin, OUTPUT);
  pinMode(greenLedPin, OUTPUT);

  // Buton pinini giriş olarak ayarla ve dahili pull-up direnci aktif et
  pinMode(buttonPin, INPUT_PULLUP);

  // Seri iletişimi başlat (Bluetooth için)
  Serial.begin(9600);
 }

 void loop() {
  // Bluetooth bağlantı durumunu kontrol et
  if (Serial.available() > 0) {
   char data = Serial.read();
   if (data == '1') {
    bluetoothConnected = true;
    redDuration = longRedDuration;
    yellowDuration = longYellowDuration;
    greenDuration = longGreenDuration;
   } else if (data == '0') {
    bluetoothConnected = false;
    redDuration = normalRedDuration;
    yellowDuration = normalYellowDuration;
    greenDuration = normalGreenDuration;
   }
  }

  // Butona basıldıysa trafik ışıklarını çalıştır
  if (digitalRead(buttonPin) == LOW) {
   runTrafficLights();
   delay(50); // Debouncing için kısa bir gecikme
  }
 }

 void runTrafficLights() {
  // Kırmızı ışık
  digitalWrite(redLedPin, HIGH);
  digitalWrite(yellowLedPin, LOW);
  digitalWrite(greenLedPin, LOW);
  delay(redDuration);

  // Sarı ışık (Kırmızı ile birlikte)
  digitalWrite(yellowLedPin, HIGH);
  delay(yellowDuration);
  digitalWrite(redLedPin, LOW);
  digitalWrite(yellowLedPin, LOW);

  // Yeşil ışık
  digitalWrite(greenLedPin, HIGH);
  delay(greenDuration);

  // Sarı ışık
  digitalWrite(greenLedPin, LOW);
  digitalWrite(yellowLedPin, HIGH);
  delay(yellowDuration);
  digitalWrite(yellowLedPin, LOW);
 }

 

Kodun Açıklaması

  • Pin Tanımları: LED'ler ve buton için pin numaralarını tanımlıyoruz.
  • Değişkenler: Bluetooth bağlantı durumunu ve ışık sürelerini saklamak için değişkenler tanımlıyoruz.
  • `setup()` Fonksiyonu: Pinleri giriş/çıkış olarak ayarlıyor ve seri iletişimi başlatıyoruz.
  • `loop()` Fonksiyonu: Sürekli olarak butona basılıp basılmadığını ve Bluetooth'tan veri gelip gelmediğini kontrol ediyoruz.
  • Bluetooth Kontrolü: Bluetooth modülünden '1' gelirse `bluetoothConnected` değişkenini `true`, '0' gelirse `false` olarak ayarlıyoruz. Bluetooth bağlıysa ışık süreleri uzuyor.
  • `runTrafficLights()` Fonksiyonu: Trafik ışıklarını sırasıyla yakıp söndürüyor.

Bluetooth Kontrolü için Ek Bilgiler

Bluetooth ile kontrol için telefonunuza bir Bluetooth terminal uygulaması (örneğin, "Serial Bluetooth Terminal") indirmeniz gerekiyor. Bu uygulama üzerinden Arduino'ya '1' göndererek Bluetooth bağlantısını aktif edebilir, '0' göndererek pasif hale getirebilirsiniz. Uygulamayı indirdikten sonra HC-05 veya HC-06 modülünüze bağlanıp Arduino'ya veri gönderebilirsiniz.

Projenin Geliştirilmesi

Bu proje geliştirilmeye açık! Örneğin:

  • Daha fazla sensör ekleyerek (örneğin, araç sensörü) trafik yoğunluğunu algılayabilirsiniz.
  • Farklı Bluetooth komutları ile farklı trafik senaryoları oluşturabilirsiniz.
  • Trafik ışıklarının sırasını ve sürelerini dinamik olarak değiştirebilirsiniz.

Umarım bu proje size Arduino dünyasına güzel bir giriş yapmanızda yardımcı olur. İyi eğlenceler!

Etiketler: Arduino, Trafik Işığı, Bluetooth, Akıllı Şehir, Proje, Elektronik, Kodlama, HC-05, HC-06

```

0 yorum: