Raspberry Pi Pico’nun 2021’in başlarında mikrodenetleyici pazarını bozduğunu söylemek doğru olur. 4 dolarlık anakartın bir Arduino ile Raspberry Pi’den daha fazla ortak yanı var, ancak Pico’nun çok daha yetenekli bir canavar olduğu kanıtlandı.
Raspberry Pi Pico ile LED’lerin yanıp sönmesini, robotlar oluşturmasını ve hatta Doom’u çalıştırmasını sağlayabiliriz. Ancak programlamaya, mikrodenetleyicilere ve elektroniklere yeni başlayanlar için, girişin çözülmesi gereken birkaç engeli vardır.
MicroPython, Raspberry Pi Pico için mükemmel bir dildir (alçakgönüllü görüşümüze göre sadece CircuitPython tarafından daha iyidir), ancak deneyimsizler için çabucak “kelime çorbası” haline gelebilir. İhtiyacımız olan şey kodu soyutlamak, anlaşılmasını kolaylaştırmak ve neyse ki çözüm PicoZero gibi görünüyor.
PicoZero, GPIO Zero’nun kitabından, yaygın elektronikler için yeni başlayanlar için uygun bir Python kitaplığı olduğu için bir sayfa alır. Eski Raspberry Pi çalışanı Ben Nuttall ve Canonical yazılım mühendisi Dave Jones tarafından oluşturulan ve sürdürülen GPIO Zero, öğrenciler için sismik bir değişim yarattı. Raspberry Pi’de Python kullanarak kullanıcıların yaygın elektroniklerle nasıl etkileşime girebileceğini basitleştirdi ve örneklendirdi. Raspberry Pi Vakfı’ndan PicoZero da aynı prensipleri takip ediyor ve henüz beta aşamasındayken, biz sadece onunla bir proje oluşturmak zorunda kaldık.
Projemiz, iki oyuncunun reflekslerini olağanüstü yüksek sesli bir zile karşı test etmek için tasarlanmış bir reaksiyon oyunu aracılığıyla PicoZero modülünün temel giriş ve çıkışlarını tanıtacak.
Bu Proje İçin İhtiyacınız Olacak
- Ahududu Pi Pico
- 2 x Basmalı düğmeler
- 1 x DC sesli uyarı
- 1 x 10K Ohm Direnç (Kahverengi-Siyah-Turuncu-Altın)
- 8 x Erkekten erkeğe atlama telleri
- Büyük ekmek tahtası
- Kil modelleme / Play-Doh
Oyunu Kablolama
Adım adım alırsak, bu proje için donanım yapısı basittir. İki girişimiz var, oyuncular tarafından kullanılan butonlarımız. Tek çıkış bir buzzer. Tipik olarak buzzer doğrudan GPIO’ya bağlanırdı ancak testlerimizde çok sessiz olduğunu gördük. Bunu aşmak için, esasen elektronik olarak kontrol edilen bir anahtar olan bir NPN transistörü (2n 2222) kullandık. Orta pimi (Taban) Pico’nun GPIO’suna 10K Ohm’luk bir direnç üzerinden bağlayarak, anahtarın kapanmasını tetikleyebilir ve sesli uyarının GND piminin Raspberry Pi Pico’nun GND’sine bağlanmasını sağlayabiliriz.
1. Pico’nun 3V3(Out) ve GND pinlerini breadboard’un + ve – (sırasıyla) raylarına bağlayın. Bu, bu rayların her birindeki tüm pinleri 3V3 (3.3V) ve GND’ye çevirecektir.

2. NPN transistörünün orta pimini hafifçe geriye doğru bükün ve breadboard’a yerleştirin çipin düz tarafı uzağa bakacak şekilde.

3. 10K Ohm direncini kullanarak Pico’nun GPIO16’sını NPN transistörünün orta pimine bağlayın. Bu, transistörün durumunu kontrol etmek için kullanılan Base pinidir.

4. GND’yi – raydan Collector pinine bağlayın (şemada sağ bacak) NPN transistörünün.

5. Buzzer’ın negatif ayağını bağlayın (Siyah tel) Verici pimine (şemada sol bacak) NPN transistörünün. Sesli uyarının pozitif ayağını (kırmızı kablo) devre tahtasının + rayına bağlayın. Şimdi bir açık anahtar bağladık. NPN transistörü tetiklenmediğinde bağlantı kesilir.
Base pinine bir sinyal gönderdiğimizde, zili çalan devrenin kapanmasını sağlıyoruz. Ses seviyesini daha az kulak delme seviyelerine düşürürken zili hafifçe kapatmak için bir Play-Doh bloğu veya modelleme kilinin kullanılabileceğini unutmayın.

6. Birinci oyuncu için düğmeyi takın ve bir bacağı GPIO19’a bağlayın ve diğeri – raya.

7. Bir ayağı GPIO20’ye bağlayarak ikinci oyuncu için düğmeyi ekleyin ve diğeri – raya.

Raspberry Pi Pico’nuza PicoZero yükleme
PicoZero, konulara yeni başlayanlar için elektronik ve programlamanın karmaşıklıklarını özetleyen bir MicroPython modülüdür. Raspberry Pi tarafından varsayılan düzenleyici olarak önerilen Thonny Python düzenleyicisini kullanacağız.
1. yükleyin (veya güncelleyin) en son Thonny Python editörü işletim sisteminiz için.
2. Raspberry Pi Pico’nuzu bağlayın ve Thonny’yi başlatın. Thonny, Pico’yu otomatik olarak algılamalı ve kullanıma hazır şekilde bağlanmalıdır. Ahududu Pi Pico’nuz MicroPython’u çalıştırıyor olmalı, eğer aşağıdaki talimatlarımızı takip etmiyorsanız. Raspberry Pi Pico kılavuzunun Kurulumu ve Programlanması.
3. bir aç PicoZero kaynağına web tarayıcısı ve picozero.py kodunu kopyalayın.
4. Kodu boş bir belgeye yapıştırın.
5. Kodu Raspberry Pi Pico’ya picozero.py olarak kaydedin
Proje Kodu
PicoZero’nun soyutlaması sayesinde projenin kodu son derece basittir. Projenin amacı bir reaksiyon oyunu yaratmaktır. Bir sesli uyarı, oyuncular için geri sayım için bip sesi verir, ardından tekrar çalmadan önce beş ila on saniye arasında rastgele bir süre duraklar. Düğmesine en hızlı basan oyuncu oyunu kazanacak ve can sıkıcı zili kapatacaktır.
1. Thonny’de yeni bir boş dosya oluşturun.
2. PicoZero modülünden Button ve Buzzer sınıflarını içe aktarın. Bu iki sınıf, fiziksel düğmeler ve buzzer ile etkileşim kurmak için kullanılır.
from picozero import Button, Buzzer3. İki modül daha içe aktarın. Kodumuzdaki gecikmeyi kontrol etmek için zaman kullanılır; uyku işlevi bir duraklama ekler. Random, rasgele sayı üretimi, rasgele seçim için sınıfların ve işlevlerin kullanılmasını sağlar.
from time import sleep
import random4. Düğmemizi kontrol eden transistöre bağlı GPIO pinini saklayacak bir nesne, buzzer oluşturun.
buzzer = Buzzer(16)5. Her düğmenin bağlı olduğu GPIO pinini depolayacak olan p1 ve p2 adlı iki nesne daha oluşturun.
p1 = Button(19)
p2 = Button(20)6. Zil sesini üç kez biplemek için bir for döngüsü kullanın; oyunun başladığını gösteren bir geri sayım. 0,1’lik kısa bir uyku, sesli uyarının kısa bir süre çalmasına neden olur, sesli uyarıyı 0,9 saniyeliğine kapatmak bize düzenli bir “kalp atışı” geri sayımı verir.
for i in range(3):
buzzer.beep()
sleep(0.1)
buzzer.off()
sleep(0.9)7. Rastgele seçilen bir kayan nokta sayısını 5 ile 10 saniye arasında saklayacak bir nesne, zaman oluşturun, o zamanlar oyunu duraklatmak için bu değeri kullanın. Bu beklenti anı, sesli uyarı hızlı mı çalacak yoksa tam 10 saniye beklememiz mi gerekecek? Bu, reaksiyon oyununun rastgele doğasıdır.
time = random.uniform(5, 10)
sleep(time)8. Zil sesini açın. Bir oyuncu düğmesine basana kadar buzzer çalacaktır.
buzzer.on()9. Oyun kodunu çalıştırmak için bir while True döngüsü oluşturun. Bu, hangi oyuncunun düğmesine bastığını kontrol eden kodu sürekli çalıştıracaktır.
while True:10. 1. oyuncunun düğmesine basılıp basılmadığını kontrol edin. Varsa, bir for döngüsü Python Kabuğuna beş kez “Yeşil Kazançlar” yazdıracaktır. Ardından döngü bozulur ve kodun çalışması durdurulur.
if p1.is_pressed:
for i in range(5):
print("Green Wins")
break11. Aynı kontrolü 2. oyuncunun düğmesi için de yapın. Tek fark, for döngüsünün “Sarı Kazanır” yazdırmasıdır.
if p2.is_pressed:
for i in range(5):
print("Yellow Wins")
break12. Buzzer’ı kapatın, oyunu bitirin.
buzzer.off()13. Kodu Reaksiyon.py olarak Raspberry Pico’ya kaydedin.
14. Oyunu başlatmak için Çalıştır’a tıklayın. Oyun tamamlandıktan sonra, oyunu tekrar başlatmak için Çalıştır’a tıklayın ve rakibe bir rövanş için meydan okuyun!
Komple Kod Listeleme
from picozero import Button, Buzzer
from time import sleep
import random
buzzer = Buzzer(16)
p1 = Button(19)
p2 = Button(20)
for i in range(3):
buzzer.beep()
sleep(0.1)
buzzer.off()
sleep(0.9)
time = random.uniform(5, 10)
sleep(time)
buzzer.on()
while True:
if p1.is_pressed:
for i in range(5):
print("Green Wins")
break
if p2.is_pressed:
for i in range(5):
print("Yellow Wins")
break
buzzer.off()


