Proje hakkında
Raspberry Pi'nin kenarındaki 40 pinlik başlık, kartın dış dünyayla konuştuğu kapıdır. Bu pinlerin çoğu GPIO (genel amaçlı giriş/çıkış) pinidir ve Python koduyla 3,3V (açık) veya 0V (kapalı) yapılabilir. Bu projede tek bir LED ile bu kapıyı ilk kez açacağız.
Arduino'dan farklı olarak burada derleme veya karta yükleme adımı yoktur. Kodu Raspberry Pi'nin kendi üzerinde yazar, kaydeder ve anında çalıştırırsınız. Python'un okunaklı yapısı ve gpiozero kütüphanesinin sade komutları sayesinde ilk programınız sadece birkaç satır olacak.
- Raspberry Pi GPIO pinlerini ve 3,3V mantık seviyesini
- BCM (GPIO) ve fiziksel pin numaraları arasındaki farkı
- gpiozero ile LED nesnesi oluşturmayı
- Yazılımsal PWM ile parlaklık kontrolünü
Malzeme listesi
Projeyi tamamlamak için aşağıdaki 7 çeşit malzemeye ihtiyacınız var. Raspberry Pi'niz hazırsa geri kalan parçaların çoğu elektronik başlangıç setlerinde bulunur.
Raspberry Pi 4 veya 5 1 adet
Raspberry Pi OS (Bookworm veya üstü) kurulu olmalı. Pi 3B+ ile de çalışır.
microSD kart 1 adet
En az 16 GB, Raspberry Pi OS yüklü.
Resmi güç adaptörü 1 adet
Pi 5 için 5V 5A USB-C, Pi 4 için 5V 3A USB-C.
Breadboard 1 adet
Yarım boy (400 delik) yeterlidir.
5 mm LED 1 adet
Herhangi bir renk. Uzun bacak (+) anot, kısa bacak (−) katottur.
330 Ω direnç 1 adet
Renk kodu: turuncu-turuncu-kahverengi.
Jumper kablo (dişi-erkek) 2 adet
Devre bağlantıları
Bağlantıları Raspberry Pi kapalıyken ve güç kablosu çıkarılmışken yapın. Her satırda önce GPIO (BCM) numarası, ardından kart üzerindeki fiziksel pin numarası yazar; çizgi rengi önerilen kablo rengidir.
pinout yazarak kartınızın pin haritasını ekranda görebilirsiniz.Adım adım kurulum
Raspberry Pi'yi kapatın
Masaüstündeki menüden Kapat'ı seçin veya terminale
sudo shutdown nowyazın. Yeşil ışık sönünce güç kablosunu çıkarın. Bağlantıları her zaman güç yokken yapın.LED'i breadboard'a takın
LED'in uzun ve kısa bacaklarını iki ayrı sütuna yerleştirin. Uzun bacağın sütununa 330 Ω direncin bir ucunu takın.
GPIO17'ye bağlayın
Dişi-erkek bir kabloyla direncin boştaki ucunu Raspberry Pi'nin 11 numaralı fiziksel pinine (GPIO17) bağlayın.
GND'ye bağlayın
İkinci kabloyla LED'in kısa bacağını 9 numaralı pine (GND) bağlayın.
Pi'yi açın ve Thonny'yi başlatın
Güç kablosunu takın. Masaüstü açılınca Menü › Programlama › Thonny yolunu izleyin.
Kodu yazıp çalıştırın
Aşağıdaki ilk kodu yapıştırın, led_blink.py adıyla kaydedin ve yeşil Run düğmesine basın. LED saniyede bir yanıp sönmeli.
Programı durdurun
Thonny'de kırmızı Stop düğmesine basın ya da terminalde çalıştırıyorsanız Ctrl+C tuşlarına basın.
Python kodu
Kodları Thonny editörüne yapıştırıp .py uzantısıyla kaydedin ve Run düğmesine basın ya da terminalden python3 dosya_adi.py komutuyla çalıştırın. Programı durdurmak için Ctrl+C tuşlarını kullanın.
LED'i saniyede bir yakıp söndüren temel kod.
# Raspberry Pi ile LED Yakıp Söndürme
# RobotikHocasi.com
from gpiozero import LED
from time import sleep
led = LED(17) # GPIO17 = fiziksel pin 11
while True: # Sonsuz döngü
led.on()
print("LED yandi")
sleep(1) # 1 saniye bekle
led.off()
print("LED sondu")
sleep(1)
Bonus: LED'in yavaşça parlayıp söndüğü nefes efekti.
# PWMLED ile nefes efekti
from gpiozero import PWMLED
from signal import pause
led = PWMLED(17)
# 1 saniyede parla, 1 saniyede sön; arka planda sürekli tekrar eder
led.pulse(fade_in_time=1, fade_out_time=1)
print("Nefes efekti calisiyor. Durdurmak icin Ctrl+C")
pause() # Programın kapanmasını engeller
Kodu Thonny yerine terminalden çalıştırmak için.
# Kodun bulunduğu klasöre gidin ve çalıştırın
cd ~/Desktop
python3 led_blink.py
# Durdurmak için: Ctrl + C
Kod açıklaması
from gpiozero import LEDgpiozero kütüphanesinden LED sınıfını alır. Kütüphane Raspberry Pi OS ile hazır gelir; ayrıca kurulum gerekmez.
led = LED(17)GPIO17 pinine bağlı bir LED nesnesi oluşturur. Buradaki 17 fiziksel pin numarası değil, BCM (GPIO) numarasıdır.
while True:Koşulu her zaman doğru olan sonsuz döngü. Python'da döngünün içindeki satırlar girintiyle (4 boşluk) belirtilir.
sleep(1)Programı 1 saniye bekletir. 0.5 yazarak yarım saniye de bekleyebilirsiniz.
led.pulse(fade_in_time=1, fade_out_time=1)LED'i arka planda sürekli parlatıp söndürür. Bu sırada ana program başka işler yapabilir.
pause()Programın sonuna gelip kapanmasını engeller; arka plandaki pulse efektinin sürmesini sağlar.
Nasıl çalışır?
led.on() komutu GPIO17 pinini 3,3V yapar. Akım pinden çıkar, 330 Ω direnç ve LED üzerinden GND'ye ulaşır. Kırmızı bir LED yaklaşık 2V düşürdüğü için dirençte kalan gerilim 1,3V'tur; akım ise 1,3 / 330 ≈ 4 mA olur. Bu değer hem LED'i görünür şekilde yakar hem de Raspberry Pi'nin pinini zorlamaz.
Raspberry Pi'nin GPIO pinlerinde gerçek analog çıkış yoktur. PWMLED, pini saniyede yüzlerce kez açıp kapatarak (yazılımsal PWM) ortalama bir parlaklık oluşturur. Linux aynı anda pek çok işi yönettiği için bu yazılımsal PWM, Arduino'daki kadar kararlı değildir; LED'de hafif titreme görürseniz normaldir.
Sorun giderme
LED hiç yanmıyor
GPIO busy veya pin already in use hatası
ModuleNotFoundError: No module named gpiozero
sudo apt install python3-gpiozero komutuyla kurun.IndentationError hatası
Geliştirme fikirleri
Projeyi tamamladıysanız, aşağıdaki fikirlerle bir adım öteye taşıyabilirsiniz.
SOS mors kodu
Kısa ve uzun yanışlarla ··· ––– ··· sinyalini gönderen bir program yazın.
Terminalden kontrol
input() ile kullanıcıdan "ac" veya "kapa" komutu alıp LED'i yönetin.
LEDBoard ile ışık şovu
5 LED bağlayıp LEDBoard sınıfıyla yürüyen ışık efekti oluşturun.
Açılışta otomatik çalışma
Programı Pi açıldığında otomatik başlatmak için bir systemd servisi oluşturun.