Ana Sayfa · Akademi · Robotik ve Kodlama · micro:bit · Proje: Kablosuz Skor Sistemi

Proje: Kablosuz Skor Sistemi

İki micro:bit ve radyoyla çalışan kablosuz bir skor sistemi yap.

PROJE PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

İki micro:bit'i radyoyla konuşturarak, bir kartta düğmeye bastığımızda skorun karşıdaki kartta göründüğü kablosuz bir sayaç kuruyoruz.

Üretilecek kanıt

Bir arkadaşınla iki micro:bit alın ve şu görevi tamamlayın: Birine gönderen, diğerine alan programını yükleyin (grup 7). Bir kişi puanı tutsun, diğeri odanın öbür ucundaki tabelayı izlesin. Beş basıştan sonra tabelada doğru sayı var mı kontrol edin. Ardından B düğmesiyle 2 puan eklemeyi ve sallayarak sıfırlamayı ekleyin. Kayıt tut: Hangi grup numarasını…

Kontrol tuzağı

İlk denememde alan kartın ekranı hiç değişmedi. Gönderen kartta 1, 2, 3 sayıları görünüyordu ama tabela boştu. Beklenen ile gerçek sonucu karşılaştırdım: Amaç: Gönderen kart A'ya basınca alan kartta sayı görünsün Sorun: Gönderen doğru sayıyor ama alan kart hiç tepki vermiyor Kontrol: Gönderen kartın grubu 7, alan…

Sonraki bağlantı

Proje: Bisiklet Güvenlik Işığı Prototipi: micro:bit'i giyilebilir bir güvenlik cihazına dönüştürerek karanlıkta görünürlüğü artıran bir ışık sistemi tasarlıyoruz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre45–75 dk
Ön koşulProje: Adım Sayar
İçerikProje rehberi · 1.621 kelime
Son güncelleme

Bir cümlelik özet

İki micro:bit'i radyoyla konuşturarak, bir kartta düğmeye bastığımızda skorun karşıdaki kartta göründüğü kablosuz bir sayaç kuruyoruz.

Neden önemli?

Basketbol maçında sayı tabelası genelde sahanın kenarında durur ve puanı tutan kişi sayacı elinde tutmaz. Puanı tutanla tabelayı gören çoğu zaman farklı yerlerdedir. İşte bu ders tam olarak bunu yapıyor: bir micro:bit "puanı sayan uzaktan kumanda", diğeri de "duvardaki tabela" oluyor.

Şimdiye kadar yazdığın programların hepsi tek bir kartın içinde çalışıyordu. Bu proje ilk kez iki cihazı birbirine bağlıyor. Bir kartın bastığı düğme, kablosuz olarak başka bir kartın ekranını değiştiriyor. Bu, telefonların, oyun kollarının ve akıllı ev cihazlarının çalışma mantığının küçük bir örneği.

micro:bit'in içinde bir radyo vardır. Radyo, kartların birbirine kısa mesajlar yollamasını sağlayan kablosuz bir yoldur; tıpkı iki telsizin aynı kanaldan konuşması gibi. Bu derste radyoyu kurmayı, mesaj göndermeyi ve gelen mesajı göstermeyi öğreneceğiz. Bu üç beceri, sonraki tüm çok-cihazlı projelerin temelini oluşturuyor.

Radyo nasıl çalışır?

Grup: aynı kanalda olmak

İki micro:bit'in birbirini duyabilmesi için aynı radyo grubunda olması gerekir. Grup, 0 ile 255 arasında bir sayıdır ve bir "kanal" gibi düşünülebilir. Sınıfta herkes farklı gruplar kullanırsa, mesajlar karışmaz.

Bunu bir telsiz kanalına benzet: iki arkadaş 7. kanaldaysa birbirini duyar; biri 7'de, diğeri 3'te ise, bağırsalar da duyamazlar.

Gönderen ve alan

Radyoda her zaman iki rol vardır:

Bu projede bir kart hep gönderen, diğeri hep alan olacak. İkisi de aynı gruba ayarlanmalı.

Değişken: skoru hatırlamak

Skor bir sayıdır ve düğmeye her basışta 1 artmalı. Bu sayıyı saklamak için bir değişken kullanırız. Değişken, içine bir değer koyduğumuz ve sonra değiştirebildiğimiz isimli bir kutudur. Adına skor diyeceğiz ve başlangıçta 0 yapacağız.

Adım adım: skor sistemini kur

1. Gönderen kart (kumanda)

MakeCode bloklarıyla gönderen kartın mantığı şöyle:

başlangıçta
  radyo grubunu 7 yap
  skor = 0
A düğmesine basıldığında
  skor'u 1 artır
  radyoyla sayı gönder: skor
  skor sayısını göster

Aynı program MicroPython ile:

from microbit import *
import radio

radio.config(group=7)
radio.on()
skor = 0

while True:
    if button_a.was_pressed():
        skor += 1
        radio.send(str(skor))
        display.show(skor)

Burada radio.send metin gönderdiği için sayıyı str(skor) ile metne çeviriyoruz.

2. Alan kart (tabela)

Alan kartın tek işi vardır: mesaj gelince onu göstermek.

başlangıçta
  radyo grubunu 7 yap
radyo sayı alındığında (alınanSayı)
  alınanSayı sayısını göster

MicroPython ile:

from microbit import *
import radio

radio.config(group=7)
radio.on()

while True:
    mesaj = radio.receive()
    if mesaj:
        display.scroll(mesaj)

radio.receive() yeni bir mesaj yoksa None döndürür; bu yüzden if mesaj: ile sadece gerçek bir mesaj geldiğinde ekrana yazdırıyoruz.

3. İki kartı da programla

İki micro:bit'e iki farklı program yüklemen gerekir: birine gönderen, diğerine alan programını. İkisinin de grubu 7 olduğuna dikkat et.

Test etme: gerçekten çalışıyor mu?

Bir projeyi yazmak yetmez; farklı durumları deneyerek doğrulamak gerekir. Şu senaryoları sırayla test et:

  1. İlk basış: Gönderen kartta A'ya bir kez bas. Alan kartta 1 görünmeli.
  2. Sayma: A'ya art arda beş kez bas. Alan kart 1, 2, 3, 4, 5 diye ilerlemeli.
  3. Mesafe: Kartları birkaç metre ayır ve tekrar dene. Radyo hâlâ çalışmalı.
  4. Grup ayrımı: Bir arkadaşının kartı 3. grupta olsun. Onun basışları senin tabelanı değiştirmemeli.

Her senaryoda beklediğin sonucu önceden yaz, sonra gerçekte ne olduğunu gör. İkisi farklıysa bir hata var demektir.

Bir hata ve düzeltmesi

İlk denememde alan kartın ekranı hiç değişmedi. Gönderen kartta 1, 2, 3 sayıları görünüyordu ama tabela boştu.

Beklenen ile gerçek sonucu karşılaştırdım:

Amaç: Gönderen kart A'ya basınca alan kartta sayı görünsün
Sorun: Gönderen doğru sayıyor ama alan kart hiç tepki vermiyor
Kontrol: Gönderen kartın grubu 7, alan kartın grubu 1 yazılmış
Düzeltme: Alan kartın grubunu da 7 yap

Sorun, iki kartın farklı radyo grubunda olmasıydı. Farklı kanaldaki iki telsiz gibi, mesajlar gidiyordu ama karşı taraf o kanalı dinlemiyordu. İki grubu da 7 yapınca skor anında görünmeye başladı.

Bu hata çok yaygındır ve iyi bir hatırlatma sunar: kablosuz bir sistem çalışmıyorsa, önce iki tarafın aynı grupta olup olmadığını kontrol et.

Projeyi geliştir

Temel sistem çalışınca basketbolun kurallarına yaklaştırabilirsin:

İki farklı puan

Basketbolda serbest atış 1, normal basket 2 sayıdır. B düğmesine 2 puan ekleyelim:

A düğmesine basıldığında
  skor'u 1 artır
  radyoyla sayı gönder: skor
B düğmesine basıldığında
  skor'u 2 artır
  radyoyla sayı gönder: skor

Sallayarak sıfırlama

Yeni maç için skoru sıfırlamak istersin. micro:bit'in ivmeölçeri sayesinde kartı sallamak bir olay olarak kullanılabilir:

sallandığında
  skor = 0
  radyoyla sayı gönder: skor

Bu ekleme, önceki modüllerde tanıdığın ivmeölçerin bu projeye nasıl bağlandığını gösterir.

Mini uygulama

Bir arkadaşınla iki micro:bit alın ve şu görevi tamamlayın:

  1. Birine gönderen, diğerine alan programını yükleyin (grup 7).
  2. Bir kişi puanı tutsun, diğeri odanın öbür ucundaki tabelayı izlesin.
  3. Beş basıştan sonra tabelada doğru sayı var mı kontrol edin.
  4. Ardından B düğmesiyle 2 puan eklemeyi ve sallayarak sıfırlamayı ekleyin.

Kayıt tut: Hangi grup numarasını kullandın? İlk denemede çalıştı mı, yoksa bir şeyi mi düzelttin? Bu notlar, bir sonraki projede aynı hataya düşmeni engeller.

Projeyi güçlendirme planı

Proje: Kablosuz Skor Sistemi 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 ışık ve sıcaklık değerlerini LED matriste gösteren ölçer bağlamını kullanarak simülatörde ve kart üzerinde denenmiş micro:bit programı ile test notları oluştur. Dersin hedefi “İki micro:bit ve radyoyla çalışan kablosuz bir skor sistemi 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. Radyo nasıl çalışır? ile Gönderen ve alan 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: Kablosuz Skor Sistemi” 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: Kablosuz Skor Sistemi” 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; Radyo nasıl çalışır? veya Gönderen ve alan 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: Kablosuz Skor Sistemi” projesini iki dakikada anlatacak şekilde hazırlan: sorun, çözüm yaklaşımı, ışık ve sıcaklık değerlerini LED matriste gösteren ölçer 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

İki kartı farklı gruba ayarlamak

En sık görülen hata budur. Gönderen ve alan aynı grupta değilse mesaj asla ulaşmaz. Her iki programda da grup numarasının aynı olduğundan emin ol.

Radyoyu açmayı unutmak

MicroPython'da radio.on() yazmazsan radyo kapalı kalır ve hiçbir mesaj gidip gelmez. MakeCode'da radyo grubu bloğunu koymak radyoyu otomatik açar.

Sayıyı metne çevirmeden göndermek

MicroPython'da radio.send metin bekler. radio.send(skor) yazarsan hata alırsın; radio.send(str(skor)) yazmalısın.

Skoru döngü içinde sıfırlamak

skor = 0 satırını yanlışlıkla sürekli çalışan bölüme koyarsan skor her turda sıfırlanır ve hiç artmaz. Sıfırlama yalnız başlangıçta olmalı.

Güvenlik notu

Ders özeti

Kontrol soruları

  1. İki micro:bit'in birbirini duyabilmesi için hangi ayarın aynı olması gerekir?
  2. Gönderen kart hangi olayda mesaj yollar, alan kart ne zaman ekranı değiştirir?
  3. MicroPython'da radio.send(skor) yerine neden radio.send(str(skor)) yazarız?
  4. Alan kart hiç tepki vermiyorsa ve gönderen doğru sayıyorsa, ilk kontrol edeceğin şey nedir?
  5. B düğmesiyle 2 puan eklemek için programa hangi olay bloğunu eklersin?

Cevaplar

  1. Radyo grubu aynı olmalıdır. Farklı gruplardaki kartlar, farklı kanaldaki telsizler gibi birbirini duymaz.
  2. Gönderen kart A düğmesine basıldığında mesaj yollar; alan kart radyoyla sayı alındığında ekranı değiştirir.
  3. Çünkü radio.send metin bekler. Sayıyı doğrudan gönderirsek hata alırız; str(skor) sayıyı metne çevirir.
  4. İki kartın aynı radyo grubunda olup olmadığını kontrol ederim; bu en sık görülen hatadır.
  5. B düğmesine basıldığında bloğunu eklerim; içinde skoru 2 artırıp güncel skoru radyoyla gönderirim.

Kaynak ve doğrulama notu

“Proje: Kablosuz Skor Sistemi” dersi için doğrulama odağı Radyo nasıl çalışır? ile Gönderen ve alan 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: Bisiklet Güvenlik Işığı Prototipi: micro:bit'i giyilebilir bir güvenlik cihazına dönüştürerek karanlıkta görünürlüğü artıran bir ışık sistemi tasarlı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.