Ana Sayfa · Akademi · Robotik ve Kodlama · Sensörler ve Aktüatörler · Proje: Otomatik Gece Lambası

Proje: Otomatik Gece Lambası

Işık sensörü, eşik kalibrasyonu ve filtrelemeyle karanlıkta yanan bir gece lambası yap.

PROJE PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Bu projede bir ışık sensörü kullanarak ortam karardığında kendiliğinden yanan, aydınlandığında sönen küçük bir gece lambası kuracağız.

Üretilecek kanıt

Kendi gece lambanı kur ve şu test senaryolarını sırayla dene. Her senaryoda LED'in ne yaptığını bir kâğıda not et. Test Ne yapılır Beklenen sonuç 1 Oda aydınlık LED sönük 2 Sensörü elinle kapat LED yanar 3 Eli yavaşça çek LED yumuşakça söner, titremez 4 Eşiği 100'den 60'a düşür LED daha geç yanar Sonra tek bir şeyi değiştir ve tekrar test et: örneğin eşiği…

Kontrol tuzağı

İlk denememizde çok sık karşılaşılan bir hata şudur: LED tam ters çalışır. Yani oda aydınlıkken yanar, karanlıkken söner. Amaç: Karanlıkta LED yansın Sorun: LED aydınlıkta yanıyor Kontrol: Koşul "eğer isik > esik ise yak" yazılmış Buradaki hata karşılaştırma yönünde: "büyükse yak" demişiz, ama ışık değeri büyükse…

Sonraki bağlantı

Proje: Mesafe Uyarı Sistemi

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre45–75 dk
Ön koşulKalibrasyon
İçerikProje rehberi · 1.548 kelime
Son güncelleme

Bir cümlelik özet

Bu projede bir ışık sensörü kullanarak ortam karardığında kendiliğinden yanan, aydınlandığında sönen küçük bir gece lambası kuracağız.

Neden önemli?

Şimdiye kadar sensörleri okumayı, motorları sürmeyi ve bir sensörü kalibre etmeyi ayrı ayrı öğrendik. Gerçek bir proje ise bu parçaları tek bir düzende birleştirmeyi ister: oku, karar ver, davran.

Otomatik gece lambası bunun için çok iyi bir ilk projedir. Girişi tek bir sensördür, çıkışı tek bir LED'dir ve mantığı tek bir koşuldan oluşur. Yani karmaşık değildir; ama gerçek dünyada karşılaşacağın her sorunu küçük ölçekte içinde barındırır: eşik seçmek, titremeyi engellemek, test etmek ve bir hatayı bulup düzeltmek.

Aynı fikir günlük hayatta her yerdedir:

Bu projeyi bitirdiğinde, bu iki örneğin arkasındaki mantığı sen kurmuş olacaksın.

Projeyi tanıyalım

Ne yapacak?

Kuralımız tek cümleyle şu: Ortam belli bir seviyeden daha karanlıksa LED yansın, aydınlıksa sönsün.

Bunu yapabilmek için üç şeye ihtiyacımız var:

  1. Ortamın ne kadar aydınlık olduğunu ölçen bir ışık sensörü.
  2. Bir eşik (İngilizcesi *threshold*): "karanlık" ile "aydınlık" arasındaki sınır sayısı.
  3. Bu eşiğe göre LED'i açıp kapatan bir karar mantığı.

Malzeme listesi

Devre şeması (metin olarak)

micro:bit dahili ışık sensörünü kullanıyorsak sensör için ekstra bir bağlantı gerekmez. LED tarafı şöyle düşünülür:

[Kart pini P0] ---> [220–330 ohm direnç] ---> [LED (+) uzun bacak]
                                                     |
                                              [LED (−) kısa bacak]
                                                     |
                                                  [GND / toprak]

Direnç, LED'den geçen akımı sınırlar; onu koymazsan LED zamanla zarar görebilir. LED'in uzun bacağı artı (+), kısa bacağı eksi (−) tarafıdır.

Adım adım mantık

1. Sensörü oku

Işık sensörü bize bir sayı verir. micro:bit'te bu sayı genellikle 0 (çok karanlık) ile 255 (çok aydınlık) arasındadır. Önce bu sayıyı okuyup ekranda görmek isteriz, çünkü eşiği ancak gerçek değerleri görünce seçebiliriz.

Başla
sürekli tekrarla:
  isik = ışık sensörünü oku
  isik değerini ekrana/seri porta yaz

2. Eşiği kalibre et

Bir önceki derste kalibrasyonu öğrendik: sensörün gerçek ortamdaki değerlerini ölçüp buna göre sınır belirlemek. Burada tam olarak bunu yapıyoruz.

Eşik, senin odana özeldir. Başka bir odada ışık farklı olduğu için eşiği yeniden ölçmen gerekebilir.

3. Karar ver ve LED'i sür

Artık kuralı yazabiliriz. Sözde kod olarak:

esik = 100
sürekli tekrarla:
  isik = ışık sensörünü oku
  eğer isik < esik ise:
    LED'i yak      # ortam karanlık
  değilse:
    LED'i söndür   # ortam aydınlık

micro:bit tarzı bir kodda aynı mantık şöyle görünür:

esik = 100
while True:
    isik = display.read_light_level()
    if isik < esik:
        pin0.write_digital(1)   # LED yansın
    else:
        pin0.write_digital(0)   # LED sönsün
    sleep(100)

Kodun biçimi değişse de mantık her yerde aynıdır: oku, eşikle karşılaştır, karar ver.

Titremeyi önlemek

Sorun neden çıkar?

Işık tam eşik değerinin etrafındayken sensör bir 99, bir 101 okuyabilir. O zaman LED çok hızlı yanıp söner; buna titreme (İngilizcesi *flicker*) denir. Şafak vaktinde ya da elinle sensörü yavaşça kapatırken bunu görebilirsin.

İki basit çözüm

1. Ortalama alma (yumuşatma): Tek bir okuma yerine birkaç okumanın ortalamasını al. Ani sıçramalar böylece yumuşar.

topla = 0
5 kez tekrarla:
  topla = topla + ışık sensörünü oku
isik = topla / 5

2. İki eşik kullanma (histerezis): Yakması için bir sınır, söndürmesi için biraz farklı bir sınır koy. Böylece sensör tek bir sayının etrafında gidip gelse bile LED kararında durur.

alt = 90    # bunun altına düşünce yak
ust = 110   # bunun üstüne çıkınca söndür

Bu iki yöntem, gerçek gece lambalarının da kullandığı gerçek mühendislik çözümleridir.

Mini uygulama

Kendi gece lambanı kur ve şu test senaryolarını sırayla dene. Her senaryoda LED'in ne yaptığını bir kâğıda not et.

Mini uygulama tablosu
TestNe yapılırBeklenen sonuç
1Oda aydınlıkLED sönük
2Sensörü elinle kapatLED yanar
3Eli yavaşça çekLED yumuşakça söner, titremez
4Eşiği 100'den 60'a düşürLED daha geç yanar

Sonra tek bir şeyi değiştir ve tekrar test et: örneğin eşiği ya da ortalama alınan okuma sayısını. Bir seferde tek şeyi değiştirmek, hangi değişikliğin neyi etkilediğini görmeni sağlar.

Bir hata ve düzeltmesi

İlk denememizde çok sık karşılaşılan bir hata şudur: LED tam ters çalışır. Yani oda aydınlıkken yanar, karanlıkken söner.

Amaç: Karanlıkta LED yansın
Sorun: LED aydınlıkta yanıyor
Kontrol: Koşul "eğer isik > esik ise yak" yazılmış

Buradaki hata karşılaştırma yönünde: "büyükse yak" demişiz, ama ışık değeri büyükse ortam aydınlıktır. Düzeltme, işareti ters çevirmektir:

Düzeltme: Koşulu "eğer isik < esik ise yak" yap

Ders şu: Bir sensör beklenenin tersini yapıyorsa, çoğu zaman sorun bağlantıda değil, karşılaştırmanın yönündedir.

Projeyi güçlendirme planı

Proje: Otomatik Gece Lambası için yalnız çalışan bir gösterim hazırlamak yeterli değildir. İyi bir proje; hedefi, kullanıcıyı, sınırları, test koşullarını ve başarısız denemeleri de görünür kılar. Bu genişletme çalışmasında karanlıkta açılıp aydınlıkta kapanan gece lambası bağlamını kullanarak ölçüm tablosu, kalibrasyon kararı ve güvenli çıktı davranışı oluştur. Dersin hedefi “Işık sensörü, eşik kalibrasyonu ve filtrelemeyle karanlıkta yanan bir gece lambası yap” olsa da proje sayfasında ölçülmemiş bir sonucu kesin başarı gibi yazma.

1. Proje özeti ve kapsam

Önce üç cümle yaz: Çözmek istediğin sorun nedir, bu sorun kimin için önemlidir ve ilk sürüm özellikle neyi yapmayacaktır? Kapsam dışını belirtmek projeyi küçültmez; tamamlanabilir hâle getirir. Projeyi tanıyalım ile Malzeme listesi arasındaki ilişkiyi projenin temel varsayımı olarak yaz ve bu varsayımı hangi testin doğrulayacağını belirt.

2. Kabul ölçütleri

“Proje: Otomatik Gece Lambası” için kabul ölçütlerini “çalışıyor” gibi belirsiz sözcüklerle bırakma. Süre, mesafe, doğru deneme sayısı, ekran genişliği veya kullanıcı adımı gibi gözlenebilir bir ölçü seç. Ölçüm mümkün değilse en azından üç ardışık denemede aynı davranışın görülüp görülmediğini kaydet.

3. Test matrisi

3. Test matrisi tablosu
TestKoşulBeklenenGerçek sonuçSonraki karar
NormalStandart giriş ve tam bağlantıTemel görev tamamlanırTest sırasında doldurKoru veya küçük iyileştirme yap
SınırEn düşük ya da en yüksek kabul edilen değerSistem kararlı kalırTest sırasında doldurEşiği veya kuralı gözden geçir
HataEksik, yanlış ya da beklenmeyen girişGüvenli ve anlaşılır tepkiTest sırasında doldurHata yönetimi ekle
TekrarAynı koşulda en az üç denemeBenzer sonuçlarTest sırasında doldurTutarsızlığın kaynağını araştır

4. Sürüm günlüğü

“Proje: Otomatik Gece Lambası” projesinin her sürümü için tarih, değiştirdiğin tek ana karar, değişikliğin nedeni ve test sonucu yaz. İlk sürümün çalışmaması başarısızlık değildir; Projeyi tanıyalım veya Malzeme listesi ile ilgili hangi varsayımın yeniden düşünülmesi gerektiğini gösteren veridir. Görsel kullanırken kişisel bilgi ve özel arka plan ayrıntılarını paylaşma.

5. Sunum ve öz değerlendirme

“Proje: Otomatik Gece Lambası” projesini iki dakikada anlatacak şekilde hazırlan: sorun, çözüm yaklaşımı, karanlıkta açılıp aydınlıkta kapanan gece lambası için en önemli test sonucu ve bir sonraki adım. “Tamamlandı” demek yerine hangi kısmın doğrulandığını ve hangi kısmın hâlâ geliştirilmesi gerektiğini açıkla.

Sık yapılan hatalar

Direnci unutmak

LED'i doğrudan pine bağlamak onu zamanla yakabilir. LED ile pin arasına daima 220–330 ohm bir direnç koy.

Eşiği tahminle seçmek

"100 olsun" demek yerine önce sensörün aydınlık ve karanlık değerlerini ölç, sonra eşiği aradan seç. Ölçmeden seçilen eşik başka odada çalışmaz.

Titremeyi görmezden gelmek

LED sınır ışıkta hızlı yanıp sönüyorsa bu bir arıza değildir; ortalama alma veya iki eşik ile kolayca çözülür.

LED'i ters bağlamak

LED yönü önemlidir. Uzun bacak artıya, kısa bacak toprağa bağlanır. Ters bağlanırsa LED hiç yanmaz.

Güvenlik notu

Işık eşiği ve kararlılık testi

Gece lambası tam eşik çevresinde hızla açılıp kapanabilir. Bunu sınamak için sensör değeri eşiğin biraz altına ve üstüne yavaşça getirilir, durum değişimlerinin sayısı kaydedilir. Açma ve kapatma için iki farklı eşik kullanmak ya da birkaç okumayı ortalamak titreşimi azaltabilir. Her değişiklikten sonra gündüz, loş ortam, kısa süreli gölge ve telefon feneri gibi farklı koşullar yeniden denenmelidir.

LED parlaklığı, kablo sıcaklığı ve güç kaynağı da gözlenir. Proje yalnız güvenli düşük gerilimli eğitim devresi olarak uygulanır; şebeke lambası veya priz kontrolü yapılmaz. Ölçüm hatasında ışığı sürekli açık bırakmak ile kapalı bırakmak arasındaki seçim kullanım senaryosuna göre açıkça gerekçelendirilir.

Ders özeti

Kontrol soruları

  1. Bu projede sensörün görevi nedir, LED'in görevi nedir?
  2. Eşiği doğrudan tahminle seçmek yerine neden ölçerek belirleriz?
  3. LED sınır ışıkta hızlı yanıp sönüyorsa buna ne denir ve iki çözüm nedir?
  4. LED oda aydınlıkken yanıp karanlıkken sönüyorsa hatayı nerede ararsın?
  5. Neden LED ile pin arasına bir direnç koyarız?

Cevaplar

  1. Sensör ortamın ne kadar aydınlık olduğunu ölçüp bir sayı verir; LED ise bu sayıya göre yanıp sönerek projenin çıktısını gösterir.
  2. Işık her odada farklı olduğu için tahmini bir eşik yanlış olabilir. Aydınlık ve karanlık değerleri ölçüp aralarından seçince eşik gerçek ortama uygun olur.
  3. Buna titreme (flicker) denir. Çözümler: birkaç okumanın ortalamasını almak veya yakma ve söndürme için iki farklı eşik (histerezis) kullanmak.
  4. Sorun büyük olasılıkla karşılaştırmanın yönündedir. "isik > esik" yerine "isik < esik" yazılmalıdır; ışık değeri büyükse ortam aydınlıktır.
  5. Direnç, LED'den geçen akımı sınırlar. Direnç olmadan fazla akım LED'e zarar verebilir.

Kaynak ve doğrulama notu

“Proje: Otomatik Gece Lambası” dersi için doğrulama odağı Projeyi tanıyalım ile Malzeme listesi arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Sensör değerleri modele, besleme gerilimine ve ortama göre değişebilir. Bu nedenle derslerdeki eşikler örnek kabul edilmeli; gerçek projede ölçüm tablosu oluşturularak kalibrasyon yapılmalıdır.

Sonraki ders

Proje: Mesafe Uyarı Sistemi

Quiz’i BaşlatSensörler ve Aktüatörler bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.