Ana Sayfa · Akademi · Robotik ve Kodlama · micro:bit · Proje: Bisiklet Güvenlik Işığı Prototipi

Proje: Bisiklet Güvenlik Işığı Prototipi

Işık sensörü ve LED'lerle karanlıkta yanıp sönen bir bisiklet güvenlik ışığı prototipi yap.

PROJE PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Bu derste micro:bit'in ışık sensörünü ve ivmeölçerini kullanarak, karanlıkta yanıp sönen küçük bir bisiklet güvenlik ışığı prototipi tasarlıyoruz.

Üretilecek kanıt

Kendi prototipini adım adım kur ve test et: Işık sensörlü ilk programı (MakeCode veya MicroPython) karta yükle. Odanın ışığını açıkken ekrana bak: kapalı kalmalı. Kartı iki elinle kapat ya da ışığı söndür: kalp yanıp sönmeye başlamalı. Eşik değerini 50 yerine 20 ve 100 yaparak dene. Hangi sayı senin odanda daha iyi çalışıyor? İstersen ivmeölçerli sürümü…

Kontrol tuzağı

Eşik değerini denemeden bırakmak Her odanın ışığı farklıdır. Bir kez 50 yazıp bırakmak yerine, kendi ortamında birkaç değer deneyip en uygununu bulmak gerekir. Ekranı temizlemeyi unutmak display.clear() yazmazsan LED'ler açık kalır ve "yanıp sönme" görünmez. Deseni gösterdikten sonra ekranı temizlemek döngünün önemli…

Sonraki bağlantı

Arduino modülü: micro:bit'ten sonra, kendi devrelerini satır satır kodla kuracağın yeni bir kartla tanışıyoruz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre45–75 dk
Ön koşulProje: Kablosuz Skor Sistemi
İçerikProje rehberi · 1.593 kelime
Son güncelleme

Bir cümlelik özet

Bu derste micro:bit'in ışık sensörünü ve ivmeölçerini kullanarak, karanlıkta yanıp sönen küçük bir bisiklet güvenlik ışığı prototipi tasarlıyoruz.

Neden önemli?

Bisiklete binmeyi seviyorum ve akşam üstü hava kararmaya başladığında görünür olmanın ne kadar önemli olduğunu fark ettim. Buradan bir soru çıktı: acaba micro:bit ortam karardığında kendi kendine yanıp sönebilir mi?

Bu proje, modül boyunca öğrendiğimiz parçaları tek bir yerde birleştiriyor. LED matrisi, ışık sensörü, ivmeölçer, koşul ve döngü... Hepsini ayrı ayrı gördük. Şimdi bunları gerçek bir ihtiyacı çözmeye çalışan tek bir programda buluşturuyoruz.

Bir noktayı en baştan açıkça söylemek istiyorum: bu bir öğretici prototiptir, gerçek bir bisiklet ışığının yerini tutmaz. Amacımız sensörlerin ve kodun nasıl birlikte çalıştığını görmek; trafikte güvenliği sağlamak değil. Gerçek sürüşlerde her zaman resmî, onaylı bir bisiklet ışığı ve reflektör kullanılmalıdır. Prototip yapmanın güzel yanı da bu: bir fikri güvenle deneyip nasıl davrandığını gözlemleyebiliyoruz.

Prototip fikri ve micro:bit'in rolü

Prototip, bir ürünün son hâli değil, fikri test etmek için yapılan ilk denemesidir. Mühendisler pahalı ve karmaşık bir şey üretmeden önce genellikle basit bir prototiple başlar.

Bizim prototipimiz ne yapacak?

Planımızı üç cümleyle özetleyelim:

  1. Ortam karardığında LED'ler yanıp sönmeye başlasın.
  2. Ortam aydınlıkken ekran kapalı kalsın, boşuna pil harcamasın.
  3. Bir sonraki adımda, yavaşlama (frenleme) sezildiğinde farklı bir desen göstersin.

Prototip ne *değildir*?

Bunu net tutmak güvenlik açısından önemli:

Yani bu proje "bak, güvenli bir ışık yaptım" demek için değil; "sensörler karanlığı ve hareketi nasıl algılar" sorusunu anlamak içindir.

Karanlığı algılamak: ışık sensörü

micro:bit'in ayrı bir ışık sensörü yoktur; bunun yerine ekrandaki LED'leri kısa bir an alıcı gibi kullanarak ortam ışığını ölçer. Sonuç 0 (çok karanlık) ile 255 (çok aydınlık) arasında bir sayıdır.

Günlük hayattan tanıdık bir örnek: sokak lambaları. Birçok sokak lambasının içinde bir ışık sensörü vardır; hava kararınca kendiliğinden yanar, sabah aydınlanınca söner. Bizim yapacağımız da aslında aynı fikirdir, sadece çok küçük ölçekte.

Önce bir eşik değeri seçmemiz gerekir. Eşik, "bundan daha karanlıksa yanıp sönmeye başla" dediğimiz sınırdır. Odada birkaç deneme yapıp uygun bir sayı buluruz; başlangıç için 50 iyi bir tahmindir.

MakeCode blokları ile

sürekli
  eğer <ışık seviyesi < 50> ise
    kalp simgesi göster
    100 ms bekle
    ekranı temizle
    100 ms bekle
  değilse
    ekranı temizle

Bu program sürekli döner. Işık seviyesi eşik altına düşerse kalp yanar-söner; aydınlıksa ekran kapalı kalır.

MicroPython ile

from microbit import *

while True:
    if display.read_light_level() < 50:
        display.show(Image.HEART)
        sleep(100)
        display.clear()
        sleep(100)
    else:
        display.clear()

Mantık iki dilde de tıpatıp aynı: ölç, karşılaştır, karanlıksa yanıp söndür. Değişen tek şey komutların yazılış biçimi.

Yavaşlamayı sezmek: ivmeölçer fikri

Gerçek bir bisiklette fren yapınca arka lamba daha parlak yanar. Bunu micro:bit'te taklit etmeyi denemek eğlenceli bir deneydir. Kartın ivmeölçeri hareket ve eğim değişimini ölçebilir.

İkinci günlük örnek burada: bir arabanın fren lambası. Sürücü frene basınca lamba parlar ve arkadaki sürücüye "yavaşlıyorum" mesajını verir. Biz de yavaşlama anında farklı bir desen göstererek benzer bir fikri deneyeceğiz.

Bunu tam ve kusursuz ölçmek zordur; bu yüzden basit bir yaklaşım seçiyoruz: kart belirgin biçimde sarsıldığında (örneğin ani bir hareket) bir "dur" deseni göstermek. Bu, gerçek frenleme değil, onun kaba bir taklididir.

from microbit import *

while True:
    if accelerometer.was_gesture("shake"):
        display.show(Image.SQUARE)   # "dur" deseni
        sleep(500)
        display.clear()
    elif display.read_light_level() < 50:
        display.show(Image.HEART)
        sleep(100)
        display.clear()
        sleep(100)
    else:
        display.clear()

Burada was_gesture("shake") kartın son anda sarsılıp sarsılmadığını söyler. Bu kısmın deneysel olduğunu unutma: gerçek bir frenleme sensörü çok daha dikkatli tasarlanır.

Mini uygulama

Kendi prototipini adım adım kur ve test et:

  1. Işık sensörlü ilk programı (MakeCode veya MicroPython) karta yükle.
  2. Odanın ışığını açıkken ekrana bak: kapalı kalmalı.
  3. Kartı iki elinle kapat ya da ışığı söndür: kalp yanıp sönmeye başlamalı.
  4. Eşik değerini 50 yerine 20 ve 100 yaparak dene. Hangi sayı senin odanda daha iyi çalışıyor?
  5. İstersen ivmeölçerli sürümü ekle ve kartı hafifçe sallayınca "dur" deseninin geldiğini gör.

Geliştirme fikirleri

Test ve hata düzeltme örneği

İlk denememde ışık açıkken bile ekran sürekli yanıp sönüyordu. Sorunu şöyle buldum:

Amaç: Aydınlıkta ekran kapalı kalsın
Sorun: Işık açıkken de kalp yanıyor
Kontrol: Eşik 200 yazılmış; odam bundan karanlık
Düzeltme: Eşiği 50'ye indir ve tekrar dene

Beklenen sonucu yazmak, gerçekte olanı gözlemlemek ve tek bir şeyi değiştirmek; hata ayıklamanın hep aynı adımlarıdır.

Projeyi güçlendirme planı

Proje: Bisiklet Güvenlik Işığı Prototipi 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 harekete göre adım sayan ve sıfırlanabilen sayaç bağlamını kullanarak simülatörde ve kart üzerinde denenmiş micro:bit programı ile test notları oluştur. Dersin hedefi “Işık sensörü ve LED'lerle karanlıkta yanıp sönen bir bisiklet güvenlik ışığı prototipi 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. Prototip fikri ve micro:bit'in rolü ile Prototip ne *değildir*? 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: Bisiklet Güvenlik Işığı Prototipi” 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: Bisiklet Güvenlik Işığı Prototipi” 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; Prototip fikri ve micro:bit'in rolü veya Prototip ne *değildir*? 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: Bisiklet Güvenlik Işığı Prototipi” projesini iki dakikada anlatacak şekilde hazırlan: sorun, çözüm yaklaşımı, harekete göre adım sayan ve sıfırlanabilen sayaç 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

Eşik değerini denemeden bırakmak

Her odanın ışığı farklıdır. Bir kez 50 yazıp bırakmak yerine, kendi ortamında birkaç değer deneyip en uygununu bulmak gerekir.

Ekranı temizlemeyi unutmak

display.clear() yazmazsan LED'ler açık kalır ve "yanıp sönme" görünmez. Deseni gösterdikten sonra ekranı temizlemek döngünün önemli bir parçasıdır.

Prototipi gerçek ışık sanmak

En önemli hata bu. micro:bit LED'leri zayıftır ve bu proje trafik için tasarlanmadı. Prototip, fikri anlamak içindir; yola çıkarken onu güvenlik ışığı yerine koymak yanlış olur.

Kartı sürüş sırasında ayarlamaya çalışmak

Kod ve eşik ayarları her zaman dururken, evde yapılır. Sürerken karta bakmak veya dokunmak dikkat dağıtır.

Güvenlik notu

Ders özeti

Kontrol soruları

  1. micro:bit ışık seviyesini hangi sayı aralığında verir?
  2. Eşik değeri ne işe yarar ve neden her odada farklı olabilir?
  3. display.clear() yazmayı unutursak ne olur?
  4. Bu projeyi neden gerçek bir bisiklet güvenlik ışığı yerine kullanmamalıyız?
  5. Yavaşlamayı taklit etmek için hangi sensörü ve hangi hareketi kullandık?

Cevaplar

  1. 0 (çok karanlık) ile 255 (çok aydınlık) arasında bir sayı verir.
  2. Eşik, "bundan karanlıksa yanıp sönmeye başla" dediğimiz sınırdır. Her odanın ışığı farklı olduğu için uygun eşik de değişir; bu yüzden deneyerek buluruz.
  3. LED'ler açık kalır, ekran temizlenmez ve yanıp sönme etkisi görünmez.
  4. Çünkü bu bir öğretici prototiptir: LED'leri zayıftır, trafik kurallarına uygun değildir ve güvenlik için tasarlanmamıştır. Gerçek sürüşte onaylı ışık gerekir.
  5. İvmeölçeri kullandık ve was_gesture("shake") ile kartın sarsılmasını, yani ani hareketi sezdik. Bu, gerçek frenlemenin kaba bir taklididir.

Kaynak ve doğrulama notu

“Proje: Bisiklet Güvenlik Işığı Prototipi” dersi için doğrulama odağı Prototip fikri ve micro:bit'in rolü ile Prototip ne *değildir*? arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. MakeCode ve MicroPython adları sürüme göre küçük farklılık gösterebilir. Önce simülatörde test yapılmalı; harici bileşen bağlanacaksa kartın pin ve gerilim sınırları ayrıca kontrol edilmelidir.

Sonraki ders

Arduino modülü: micro:bit'ten sonra, kendi devrelerini satır satır kodla kuracağın yeni bir kartla tanışıyoruz.

Quiz’i Başlatmicro:bit 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.