Ana Sayfa · Akademi · Robotik ve Kodlama · micro:bit · Proje: Adım Sayar

Proje: Adım Sayar

İvmeölçerle adımları sayan, eşik ve filtrelemeyle çalışan bir adım sayar yap.

PROJE PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Bu projede micro:bit'in ivmeölçerini kullanarak her adımını sayan, sonucu 5×5 LED ekranda gösteren ve bir düğmeyle sıfırlanan basit bir adım sayar (pedometre) yapıyoruz.

Üretilecek kanıt

Kendi adım sayarını kur ve şu görevleri sırayla dene: Yukarıdaki MicroPython kodunu yükle. Cihazı avucunda tutarak tam 20 adım yürü ve ekrandaki sayıyı not et. Eşiği önce 1500 , sonra 2000 yaparak aynı 20 adımı tekrar yürü. Hangi eşik sana en yakın sonucu verdi? Bir tablo doldur: Eşik Gerçek adım Sayaç Fark 1500 20 ? ? 1800 20 ? ? 2000 20 ? ? En iyi eşiği…

Kontrol tuzağı

Test senaryoları Kodu yükledikten sonra micro'yu şu şekilde dene: Sabit dur: Cihaz elinde hareketsizken sayı artmamalı. 10 adım yürü: Cihazı avucunda tutup 10 adım say. Ekrandaki sayı 10'a yakın olmalı. Sıfırla: A düğmesine bas, sayı 0'a dönmeli. Hızlı salla: Cihazı elinde hızlıca salla ve gerçek adıma göre ne kadar…

Sonraki bağlantı

Proje: Kablosuz Skor Sistemi

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre45–75 dk
Ön koşulPython ile micro:bit
İçerikProje rehberi · 1.534 kelime
Son güncelleme

Bir cümlelik özet

Bu projede micro:bit'in ivmeölçerini kullanarak her adımını sayan, sonucu 5×5 LED ekranda gösteren ve bir düğmeyle sıfırlanan basit bir adım sayar (pedometre) yapıyoruz.

Neden önemli?

Telefonundaki veya akıllı saatindeki adım sayar aslında gizemli bir kutu değil. İçinde senin micro:bit'inde de bulunan bir sensör var: ivmeölçer (accelerometer). Bu proje, o cihazların nasıl "adım" algıladığını kendi elinle kurarak anlamanı sağlar.

Aynı zamanda bu, gerçek bir mühendislik problemi. Sensör ham veri verir; ama "adım" dediğimiz şey o veride net bir çizgi değildir. Yürürken sallanma, zıplama, hatta cihazı sallaman bile sayaca karışır. Bu yüzden proje boyunca bir eşik (threshold) ve basit bir filtre kurarak yanlış saymayı azaltmayı öğreneceğiz. Yani gerçek dünyada sensör verisini işlemenin ilk adımını atacağız.

Adım algılama fikri

İvmeölçer ne ölçer?

İvmeölçer, cihazın ne kadar hızlı hareket yönü değiştirdiğini ölçer. micro:bit'te üç eksen vardır: X (sağ-sol), Y (ileri-geri) ve Z (yukarı-aşağı). Her eksende bir sayı okuruz; birim olarak "milli-g" kullanılır (1 g yaklaşık yerçekimi kadardır).

Tek bir eksen yerine, toplam sarsıntıyı ölçmek için bileşke ivme (kuvvet) değerini kullanmak daha kolaydır. micro:bit bunu bizim için hazır verir:

Cihaz sabit dururken bu değer yerçekiminden dolayı yaklaşık 1000 civarındadır. Bir adım attığında beden yukarı-aşağı sallanır ve bu değer bir anlığına yükselir.

Adım = bir tepe (peak)

Yürürken bileşke ivme sürekli iner çıkar. Her adım, grafikte bir tepe oluşturur. Bizim işimiz basit: değer belirli bir eşiğin üstüne çıktığında bir adım saymak.

Eşiği düşük tutarsak en ufak titreşimi bile adım sanır, fazla sayar. Çok yüksek tutarsak gerçek adımları kaçırır, az sayar. Doğru eşiği deneyerek bulacağız. İşte algoritmaların ve filtrelemenin devreye girdiği yer burası.

Programı adım adım kuralım

MakeCode blok sırası

Önce sayaç için bir değişken oluşturuyoruz. Sonra sürekli döngüde ivmeyi kontrol ediyoruz.

başlangıçta
  değişken adim = 0
  "0" göster
sürekli
  eğer <ivme (mutlak) > 1500> ise
    adim = adim + 1
    adim değerini göster
    50 ms beklet
A düğmesine basıldığında
  adim = 0
  "0" göster

Buradaki 1500 bizim eşiğimiz. 50 ms beklet ise bir sonraki bölümde açıklayacağımız basit filtrenin ilk parçası: tek bir adımı iki kez saymayı engeller.

MicroPython karşılığı

Aynı mantığı Python ile de yazabiliriz. Kod farklı görünür ama fikir birebir aynıdır.

from microbit import *

adim = 0
esik = 1500
display.show("0")

while True:
    kuvvet = accelerometer.get_strength()
    if kuvvet > esik:
        adim += 1
        display.show(str(adim))
        sleep(300)      # basit filtre: kısa süre bekle
    if button_a.was_pressed():
        adim = 0
        display.show("0")

accelerometer.get_strength() bileşke ivmeyi verir. sleep(300) bir adımı saydıktan sonra 300 milisaniye bekler; böylece aynı tepeyi tekrar saymayız.

Sayacı gösterme

display.show(str(adim)) sayıyı LED ekranda kaydırarak gösterir. Sayı büyürse (örneğin 42) rakamlar teker teker akar. İstersen sadece B düğmesine basınca göstererek yürürken ekranı sakin tutabilirsin:

if button_b.was_pressed():
    display.show(str(adim))

Test etme ve bir hatayı düzeltme

Test senaryoları

Kodu yükledikten sonra micro'yu şu şekilde dene:

  1. Sabit dur: Cihaz elinde hareketsizken sayı artmamalı.
  2. 10 adım yürü: Cihazı avucunda tutup 10 adım say. Ekrandaki sayı 10'a yakın olmalı.
  3. Sıfırla: A düğmesine bas, sayı 0'a dönmeli.
  4. Hızlı salla: Cihazı elinde hızlıca salla ve gerçek adıma göre ne kadar farklı saydığına bak.

Karşılaştığımız hata: fazla sayıyor

İlk denememde 10 adım yürüdüm ama ekran 19 gösterdi. Neredeyse iki katı. Sorun belliydi: tek bir adımın tepe anında bileşke ivme eşiği bir kez değil, birkaç kez geçiyordu. Yani bir adım, iki-üç adım gibi sayılıyordu.

İki düzeltme yaptım:

esik = 1800
# ...
    if kuvvet > esik:
        adim += 1
        display.show(str(adim))
        sleep(350)      # ölü zaman: aynı adımı tekrar sayma

Tekrar denediğimde 10 adım için ekran 11 gösterdi. Kusursuz değil ama çok daha doğru. Bu, filtrelemenin neden gerektiğini gösteren gerçek bir örnek: ham sensör verisi + biraz algoritma = kullanışlı sonuç.

Mini uygulama

Kendi adım sayarını kur ve şu görevleri sırayla dene:

  1. Yukarıdaki MicroPython kodunu yükle.
  2. Cihazı avucunda tutarak tam 20 adım yürü ve ekrandaki sayıyı not et.
  3. Eşiği önce 1500, sonra 2000 yaparak aynı 20 adımı tekrar yürü. Hangi eşik sana en yakın sonucu verdi?
  4. Bir tablo doldur:
Mini uygulama tablosu
EşikGerçek adımSayaçFark
150020??
180020??
200020??
  1. En iyi eşiği bulunca cihazı cebine koyup 30 saniye yürü ve sonucu kontrol et.

Amaç mükemmel sayı değil; kendi vücuduna ve cihazın yerine göre en iyi eşiği deneyerek bulmak.

Projeyi güçlendirme planı

Proje: Adım Sayar 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 “İvmeölçerle adımları sayan, eşik ve filtrelemeyle çalışan bir adım sayar 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. Adım algılama fikri ile Adım = bir tepe (peak) 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: Adım Sayar” 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: Adım Sayar” 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; Adım algılama fikri veya Adım = bir tepe (peak) 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: Adım Sayar” 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şiği hiç ayarlamamak

Herkesin yürüyüşü ve cihazı tutuşu farklıdır. Tek bir "doğru" eşik yoktur; kendi denemenle bulman gerekir.

Ölü zamanı (bekleme) unutmak

Adımı saydıktan sonra sleep koymazsan tek bir adım birçok kez sayılır. Bu, yukarıda anlattığımız "fazla sayma" hatasının en yaygın sebebidir.

Beklemeyi çok uzun tutmak

sleep(1000) gibi uzun bir bekleme koyarsan hızlı yürürken gerçek adımları kaçırırsın. Az sayma bu sefer tersten olur. 300–400 ms genelde iyi bir başlangıçtır.

Sayacı başlangıçta içine koymamak

Değişkeni ve ilk "0" gösterimini sürekli döngüsüne yazarsan sayaç her turda sıfırlanır ve hiç artmaz. Başlangıç bölümü bir kez çalışır; sayaç orada tanımlanmalı.

Güvenlik notu

Adım sayar doğrulama planı

Adım sayısı tek bir yürüyüşle doğrulanmamalıdır. On yavaş adım, on normal adım, merdiven hareketi, otururken kol sallama ve cihazı masada titreştirme ayrı testlerdir. Gerçek adım sayısı bir gözlemci tarafından kaydedilir; micro:bit sonucu ile farkı tabloya yazılır. Yanlış pozitifler ile kaçırılan adımlar ayrı değerlendirilir, çünkü yalnız toplam fark hangi hatanın oluştuğunu göstermez.

Eşik ve bekleme süresi bir test grubuna göre ayarlanıp aynı grupta başarı ilan edilmemelidir. Ayar için kullanılan hareketlerden farklı bir doğrulama grubu seçmek, algoritmanın yalnız örnekleri ezberlemesini önler. Sonuç kişisel sağlık veya kondisyon ölçümü olarak değil, hareket sınıflandırma deneyinin tahmini olarak sunulur.

Ders özeti

Kontrol soruları

  1. micro:bit sabit dururken bileşke ivme değeri neden sıfır değildir?
  2. Eşiği çok düşük tutarsak sayaç ne yönde hata yapar?
  3. Adımı saydıktan sonra neden kısa bir süre beklemek (sleep) gerekir?
  4. İlk denememizde 10 adım için 19 çıktı; sebebi neydi?
  5. Sayacı sıfırlamak için programda hangi olayı kullandık?

Cevaplar

  1. Yerçekimi her zaman cihaza etki ettiği için bileşke ivme sabit dururken bile yaklaşık 1000 (1 g) civarındadır.
  2. Az titreşimi bile adım sanar; gerçek adımdan fazla sayar.
  3. Bir adımın tepesi kısa sürede eşiği birkaç kez geçebilir; bekleme (ölü zaman) aynı adımın tekrar sayılmasını engeller.
  4. Tek bir adımın tepe anı eşiği birden çok kez geçtiği için her adım birkaç kez sayıldı; eşiği ve bekleme süresini artırarak düzelttik.
  5. A düğmesine basılma olayını (button_a.was_pressed() / A düğmesine basıldığında) kullanarak sayacı 0 yaptık.

Kaynak ve doğrulama notu

“Proje: Adım Sayar” dersi için doğrulama odağı Adım algılama fikri ile Adım = bir tepe (peak) 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

Proje: Kablosuz Skor Sistemi

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.