Bir cümlelik özet
İki micro:bit, kablo olmadan radyo dalgalarıyla birbirine mesaj ve sayı gönderebilir; bu derste bir kartta düğmeye basınca diğerinde simge çıkaran küçük bir sistem kuruyoruz.
Neden önemli?
Şimdiye kadar yazdığın programlar tek bir micro:bit üzerinde çalıştı. Kart kendi düğmesini okuyor, kendi ekranına yazıyordu. Ama gerçek dünyadaki cihazların çoğu tek başına değildir. Telefon baz istasyonuyla, kumanda oyuncak arabayla, hava istasyonu içerideki ekranla konuşur.
micro:bit'in içinde küçük bir radyo vardır. Radyo, kablo olmadan mesaj göndermeyi ve almayı sağlayan bir bileşendir. İki kartı aynı gruba ayarladığında, biri gönderdiğinde öteki duyabilir.
Bu, ilk kez birden fazla cihazın birlikte çalıştığı bir sistem kurmanı sağlar: kablosuz bir zil, iki oyuncu arasında bir işaret, ya da bir odadan diğerine sıcaklık bilgisi taşıyan küçük bir ağ.
Radyo nasıl çalışır?
Grup kavramı
Bir sınıfta on tane micro:bit aynı anda mesaj gönderiyor olabilir. Peki senin kartın hangisini dinleyecek? Bunu radyo grubu çözer.
Radyo grubu, 0 ile 255 arasında bir sayıdır. Yalnız aynı gruptaki kartlar birbirini duyar. Farklı gruptaki mesajlar dinlenmez. Bunu bir telsiz kanalı gibi düşünebilirsin: iki kişi konuşmak istiyorsa aynı kanala geçmelidir.
Kısa tanım: Radyo grubu, aynı numarayı paylaşan micro:bit'lerin birbirini duymasını sağlayan bir kanal numarasıdır.
Sen ve arkadaşın kartlarınızı grup 7'ye ayarlarsanız, yan masadaki grup 3 kartları sizin mesajlarınızı almaz. Bu, kalabalık bir sınıfta karışıklığı önler.
Gönder ve al olayı
Radyoda iki temel iş vardır:
- Gönder: Bir kart bir sayı, bir metin ya da bir işaret yollar.
- Al: Başka bir kart o mesajı yakalar ve bir şey yapar.
Almak için "sürekli" içinde beklemek yerine bir olay kullanırız. "Radyo mesaj aldığında" olayı, tam mesaj geldiği anda çalışır. Böylece kart boşuna beklemez; mesaj gelince tepki verir.
Örnek 1: Düğmeye bas, karşıda kalp çıksın
Amaç: A kartında A düğmesine basınca, B kartının ekranında kalp simgesi belirsin.
MakeCode blok sırası (gönderen kart)
başlangıçta
radyo grubunu 7 yap
sürekli
eğer <A düğmesine basıldı> ise
radyo sayı gönder 1
MakeCode blok sırası (alan kart)
başlangıçta
radyo grubunu 7 yap
radyo sayı aldığında (alınanSayı)
eğer <alınanSayı = 1> ise
kalp simgesi göster
500 ms bekle
ekranı temizle
Dikkat et: her iki kart da grup 7'ye ayarlı. Gönderen kart "1" sayısını yolluyor. Alan kart, gelen sayı 1 ise kalbi gösteriyor. İki kartı da aynı programla değil, iki ayrı programla yükleyebilirsin ya da tek bir programda hem gönderme hem alma bloklarını birlikte kullanabilirsin.
Aynı fikir MicroPython ile
Gönderen kart:
from microbit import *
import radio
radio.on()
radio.config(group=7)
while True:
if button_a.was_pressed():
radio.send("1")
Alan kart:
from microbit import *
import radio
radio.on()
radio.config(group=7)
while True:
mesaj = radio.receive()
if mesaj == "1":
display.show(Image.HEART)
sleep(500)
display.clear()
Blok ve Python farklı görünse de mantık aynı: aynı grup, gönder, al, karşılaştır, göster.
Örnek 2: İki yönlü işaret
Şimdi iki kart da hem göndersin hem alsın. A kartında A düğmesine basınca B kartında ok yukarı çıksın; B kartında B düğmesine basınca A kartında ok aşağı çıksın.
Her iki karta da yüklenecek tek program:
başlangıçta
radyo grubunu 3 yap
sürekli
eğer <A düğmesine basıldı> ise
radyo metin gönder "yukarı"
eğer <B düğmesine basıldı> ise
radyo metin gönder "aşağı"
radyo metin aldığında (mesaj)
eğer <mesaj = "yukarı"> ise
yukarı ok göster
değilse eğer <mesaj = "aşağı"> ise
aşağı ok göster
Bu programda tek bir dosya iki kartta da çalışır. Bir kartın gönderdiği mesajı diğeri alır ve okuyla gösterir. Böyle çalışan sistemlere eşler arası haberleşme denir; ikisi de hem konuşabilir hem dinleyebilir.
Günlük hayattan iki örnek:
- Telsizle konuşan iki kişi: biri konuşurken öteki dinler, sonra sıra değişir. micro:bit'ler bunu çok hızlı, sırayla yapar.
- Zil ve alıcı: kapıdaki düğme bir işaret yollar, içerideki cihaz sesi ya da ışığı çalıştırır. Bizim örneğimizde işaret bir kalp ya da ok oluyor.
Mini uygulama
Bir arkadaşınla kablosuz taş-kağıt-makas işareti kurun.
Görev:
- İki micro:bit'i de aynı gruba ayarlayın (örneğin grup 12).
- A düğmesine basınca "taş" metnini gönderin ve kendi ekranınıza
Tyazın. - B düğmesine basınca "kağıt" metnini gönderin ve kendi ekranınıza
Kyazın. - Radyo metin geldiğinde, gelen seçimi kısa bir süre ekranda gösterin.
Başlangıç bloğu:
başlangıçta
radyo grubunu 12 yap
sürekli
eğer <A düğmesine basıldı> ise
"T" göster
radyo metin gönder "taş"
Kendine sor:
- İki kart farklı gruplardaysa ne olur? (Mesaj alınmaz.)
- Aynı anda ikiniz de basarsanız her iki kart da hem kendi seçimini hem gelen seçimi gösterebilir mi?
Uygulama laboratuvarı: Radyo ile Haberleşme
Radyo ile Haberleşme konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Radyo nasıl çalışır? ile Gönder ve al olayı arasındaki ilişkiyi kullanarak simülatörde ve kart üzerinde denenmiş micro:bit programı ile test notları hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.
Görev senaryosu
Şu senaryoyu ele al: iki kart arasında kablosuz skor paylaşımı. Dersin ana hedefi “İki micro:bit arasında radyoyla mesaj ve sayı göndermeyi öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.
- Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
- En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
- Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
- Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
- Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.
Başarı ölçütleri
- Program simülatörde beklenen olayı üretiyor mu?
- Kart yeniden başlatıldığında değerler doğru mu?
- A ve B düğmelerinin birlikte basılması denendi mi?
- Radyo grubu ve mesaj biçimi iki kartta aynı mı?
- Harici bileşenlerde pin ve gerilim sınırları kontrol edildi mi?
“Radyo ile Haberleşme” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın iki kart arasında kablosuz skor paylaşımı senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Radyo nasıl çalışır? ve Gönder ve al olayı ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
Grupları farklı ayarlamak
En sık hata budur. Bir kart grup 7'de, diğeri grup 1'deyse mesaj asla ulaşmaz. Her zaman iki kartın da başlangıçta aynı grup numarasına ayarlandığından emin ol.
Radyoyu açmayı unutmak (MicroPython)
Python'da radio.on() yazmazsan radyo kapalı kalır ve hiçbir şey gönderilmez. MakeCode'da radyo bloğunu kullanmak onu otomatik açar; Python'da açmak sana kalmıştır.
Sayı ile metni karıştırmak
radyo sayı gönder ile yollanan mesaj yalnız radyo sayı aldığında ile alınır; radyo metin gönder ise radyo metin aldığında ile alınır. Gönderdiğin türle aldığın tür aynı olmalı.
Ekranı hiç temizlememek
Kalbi gösterip ekranı temizlemezsen, bir sonraki mesaj geldiğinde eski görüntü kalır ve karışıklık olur. Kısa bir bekleme sonrası ekranı temizle eklemek işi düzeltir.
Güvenlik notu
- micro:bit'i pil kutusuyla çalıştırırken pilleri doğru kutupla (+/–) taktığından emin ol; bunu bir yetişkinle birlikte kontrol et. Yalnız düşük gerilimli AAA pil kullanılır.
- Kartı bir çantaya, bisiklete ya da giysiye takarak taşınabilir bir işaret yapacaksan, kabloların takılıp kopmayacağı şekilde sağlam sabitle.
- Bisiklet ya da benzeri bir etkinlik sırasında cihaz seni yoldan alıkoymamalı; sürüş sırasında ekrana bakma, dikkatini yola ver.
Ders özeti
- micro:bit'in içindeki radyo, kablo olmadan mesaj ve sayı gönderip almayı sağlar.
- Radyo grubu (0–255) bir kanal gibidir; yalnız aynı gruptaki kartlar birbirini duyar.
- "Gönder" bir mesaj yollar; "radyo aldığında" olayı mesaj geldiğinde çalışır.
- Sayı ve metin ayrı türlerdir; gönderdiğin türle aldığın tür eşleşmelidir.
- İki kart hem gönderip hem alarak eşler arası bir sistem kurabilir.
Kontrol soruları
- Radyo grubu ne işe yarar ve hangi sayı aralığındadır?
- İki micro:bit'in birbirini duyabilmesi için hangi ayar aynı olmalıdır?
- "Radyo mesaj aldığında" olayını kullanmak, "sürekli" içinde beklemeye göre neden daha uygundur?
radyo sayı gönder 1ile yollanan mesajı hangi blokla alırsın?- MicroPython'da radyoyu kullanmadan önce hangi komutu çağırmalısın?
Cevaplar
- Radyo grubu, hangi kartların birbirini duyacağını belirleyen bir kanal numarasıdır; 0 ile 255 arasındadır. Yalnız aynı gruptaki kartlar birbirinin mesajını alır.
- Radyo grup numarası aynı olmalıdır. Farklı gruplardaki kartlar birbirini duymaz.
- Olay yalnız mesaj geldiği anda çalışır; kart boşuna beklemek yerine mesaj gelince hemen tepki verir. Bu, kodu daha düzenli ve verimli yapar.
radyo sayı aldığındabloğuyla alırsın. Sayı ile gönderilen mesaj yalnız sayı alma bloğuyla yakalanır.radio.on()komutunu çağırmalısın. Ayrıcaradio.config(group=...)ile grubu ayarlarsın.
Kaynak ve doğrulama notu
“Radyo ile Haberleşme” dersi için doğrulama odağı Radyo nasıl çalışır? ile Gönder ve al olayı 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
Pinler ve Harici Bileşenler: micro:bit'in altındaki pinleri kullanarak dış dünyaya bağlanmayı, buton, LED ve krokodil kablolarla küçük devreler kurmayı öğreneceğiz.