Öğrenme ve Kendin Yap

Arduino & Raspberry Pi

Robotik projelerin iki temel kartını baştan sona tanıyın: hangisini ne zaman seçeceğinizi, mikrodenetleyiciyi nasıl programlayacağınızı, sensörleri hangi protokollerle bağlayacağınızı ve bir devre şemasını nasıl okuyacağınızı tek sayfada, örnek kodlarla öğrenin.

Hangisini seçmeliyim?

Kısa cevap: elektronikle başlıyorsanız Arduino, yazılım ve görüntü işleme ağırlıklıysa Raspberry Pi.

ArduinoSensör, motor, anında açılış
vs
Raspberry PiKamera, yapay zeka, internet
Karşılaştırmayı gör
1

Arduino mu, Raspberry Pi mi?İki farklı dünya, iki farklı iş

En sık sorulan soru bu, ama aslında iki kart birbirinin rakibi değil. Arduino bir mikrodenetleyici kartıdır: tek bir işi, çok hızlı ve güvenilir şekilde, işletim sistemi olmadan yapar. Raspberry Pi ise tek kartlı bir bilgisayardır: Linux çalıştırır, ekran, klavye, kamera ve internetle çalışır.

Basit bir benzetme: Raspberry Pi robotun beyni, Arduino ise omuriliğidir. Beyin "ileri git, karşıdaki nesneyi tanı" gibi kararları verir; omurilik motorlara milisaniye hassasiyetinde sinyal gönderir ve sensörleri dinler. Gelişmiş robotlarda ikisi birlikte kullanılır.

ÖzellikArduino Uno R3Arduino Uno R4 MinimaRaspberry Pi PicoRaspberry Pi 5
TürMikrodenetleyici kartıMikrodenetleyici kartıMikrodenetleyici kartıTek kartlı bilgisayar
İşlemciATmega328P, 8 bit, 16 MHzRenesas RA4M1, 32 bit Arm Cortex-M4, 48 MHzRP2040, çift çekirdek Cortex-M0+, 133 MHzBCM2712, 4 çekirdek Cortex-A76, 2,4 GHz
Bellek32 KB flash, 2 KB SRAM256 KB flash, 32 KB SRAM2 MB flash, 264 KB SRAMGB seviyesinde RAM, microSD veya SSD
İşletim sistemiYokYokYokRaspberry Pi OS (Linux)
Mantık gerilimi5V5V3,3V3,3V
Analog giriş6 adet, 10 bit6 adet, 14 bite kadar3 adet, 12 bitYok (harici ADC gerekir)
ProgramlamaC/C++ (Arduino IDE)C/C++ (Arduino IDE)MicroPython, C/C++Python, C/C++ ve neredeyse her dil
Açılış süresiAnındaAnındaAnındaOnlarca saniye
Güç tüketimiÇok düşükÇok düşükÇok düşükYüksek (5V 5A adaptör önerilir)

Arduino seçin, eğer…

  • Sensör okuyup LED, motor veya röle kontrol edecekseniz
  • Zamanlama kritikse (servo, adım motoru, PWM)
  • Proje pil ile uzun süre çalışacaksa
  • Elektriği kesilip geri geldiğinde anında çalışmalıysa
  • Elektroniğe yeni başlıyorsanız (bozulmaya daha dayanıklı)

Raspberry Pi seçin, eğer…

  • Kamera ile görüntü işleme veya nesne tanıma yapacaksanız
  • Yapay zeka modelleri çalıştıracaksanız
  • Web sunucu, veri tabanı veya internet bağlantısı gerekiyorsa
  • Ekran, klavye ve fare ile kullanılacak bir sistem kuruyorsanız
  • ROS gibi Linux tabanlı robotik yazılımlar kullanacaksanız
İkisini birlikte kullanmak: Raspberry Pi ile Arduino'yu bir USB kablosuyla bağlayın. Pi kameradan gelen görüntüyü işleyip "sola dön" kararını verir ve bunu seri port üzerinden Arduino'ya gönderir; Arduino da motorları sürer. Böylece Linux'un esnekliğini ve mikrodenetleyicinin gerçek zamanlı güvenilirliğini bir arada kullanırsınız.

Popüler kartlar ve kullanım alanları

Arduino · Başlangıç

Arduino Uno R3

Çip
ATmega328P
Pin
14 dijital (6 PWM), 6 analog
Seviye
5V

Eğitimlerin ve kütüphanelerin büyük kısmı bu kart için yazılmıştır. İlk kart olarak en güvenli seçimdir.

Arduino · Küçük boyut

Arduino Nano

Çip
ATmega328P
Pin
14 dijital, 8 analog
Seviye
5V

Uno ile aynı kodu çalıştırır, ama doğrudan breadboard'a takılır. Robot araç ve giyilebilir projeler için idealdir.

Arduino · Çok pin

Arduino Mega 2560

Çip
ATmega2560
Pin
54 dijital (15 PWM), 16 analog
Bellek
256 KB flash, 8 KB SRAM

Çok sayıda servo, sensör ve ekran kullanan robot kolu ve 3D yazıcı gibi projeler için.

Wi-Fi + Bluetooth

ESP32 DevKit

Çip
Çift çekirdek, 240 MHz'e kadar
Kablosuz
Wi-Fi ve Bluetooth
Seviye
3,3V

Arduino IDE ile programlanır. Telefondan kontrol, IoT ve internete veri gönderen projeler için en popüler kart.

Raspberry Pi · Mikrodenetleyici

Raspberry Pi Pico

Çip
RP2040 (Pico 2'de RP2350)
Dil
MicroPython, C/C++
Seviye
3,3V

Python ile mikrodenetleyici programlamak isteyenler için uygun fiyatlı bir başlangıç. Wi-Fi'lı "W" sürümleri de vardır.

Raspberry Pi · Bilgisayar

Raspberry Pi 5

İşlemci
4 çekirdek, 2,4 GHz
GPIO
40 pin, 3,3V
Bağlantı
Wi-Fi, Bluetooth, Ethernet, 2× kamera

Görüntü işleme, yapay zeka, ROS ve masaüstü kullanım için. Kararlı çalışması için resmi 27W güç adaptörü önerilir.

2

Mikrodenetleyici Programlamaİlk koddan bellek yönetimine

Mikrodenetleyici (MCU), işlemci, bellek ve giriş/çıkış birimlerinin tek bir çipe sığdırıldığı küçük bir bilgisayardır. Çamaşır makinenizden arabanızın kapı kilidine kadar etrafınızda yüzlercesi çalışır. Arduino kartı, bu çipi kolayca programlayabilmeniz için USB bağlantısı, voltaj regülatörü ve pin başlıkları ekler.

Arduino IDE kurulumu ve ilk yükleme

  1. IDE'yi indirin

    arduino.cc adresinden işletim sisteminize uygun Arduino IDE 2 sürümünü indirip kurun. Kurulum sırasında sürücü yükleme isteklerini onaylayın.

  2. Kartı bağlayın

    Arduino'yu USB kablosuyla bilgisayara takın. Yeşil ON ışığı yanmalı. Bazı klon kartlar CH340 sürücüsü ister; port görünmüyorsa bu sürücüyü kurun.

  3. Kartı ve portu seçin

    Üst kısımdaki açılır menüden kartınızı (Arduino Uno) ve görünen portu (Windows'ta COM3 gibi, macOS'ta /dev/cu.usbmodem…) seçin.

  4. Örnek kodu açın

    Dosya › Örnekler › 01.Basics › Blink yolunu izleyin. Bu kod kart üzerindeki LED'i yakıp söndürür.

  5. Yükleyin

    Sağ ok (→) düğmesine basın. IDE kodu önce derler, sonra karta gönderir. "Yükleme tamamlandı" mesajından sonra kart üzerindeki L LED'i saniyede bir yanıp sönmelidir.

Bir Arduino kodunun (sketch) yapısı

Her Arduino programı iki zorunlu fonksiyondan oluşur. setup() kart açıldığında veya resetlendiğinde bir kez çalışır; pin ayarları ve başlangıç işlemleri buraya yazılır. loop() ise setup bittikten sonra kart kapanana kadar sonsuz döngüde tekrar eder.

sketch_yapisi.inoC++
// 1) Kütüphaneler ve sabitler en üste yazılır
const int ledPin = 13;     // Kart üzerindeki dahili LED

// 2) Global değişkenler: her yerden erişilebilir
int sayac = 0;

// 3) setup(): kart açıldığında BİR kez çalışır
void setup() {
  pinMode(ledPin, OUTPUT);   // Pini çıkış yap
  Serial.begin(9600);        // Bilgisayarla haberleşmeyi başlat
}

// 4) loop(): setup bittikten sonra SÜREKLİ tekrar eder
void loop() {
  digitalWrite(ledPin, HIGH);
  delay(500);
  digitalWrite(ledPin, LOW);
  delay(500);

  sayac++;                   // sayac = sayac + 1
  Serial.print("Tur: ");
  Serial.println(sayac);
}

Temel fonksiyonlar

FonksiyonNe yapar?Örnek
pinMode()Pini giriş, çıkış veya dahili pull-up'lı giriş olarak ayarlar.pinMode(2, INPUT_PULLUP);
digitalWrite()Çıkış pinini HIGH (5V) veya LOW (0V) yapar.digitalWrite(13, HIGH);
digitalRead()Giriş pinindeki değeri HIGH veya LOW olarak okur.int b = digitalRead(2);
analogRead()Analog pindeki 0–5V gerilimi 0–1023 arası sayıya çevirir.int v = analogRead(A0);
analogWrite()~ işaretli pinlerden 0–255 arası PWM sinyali üretir.analogWrite(9, 128);
delay()Programı belirtilen milisaniye kadar durdurur.delay(1000);
millis()Kart açıldığından beri geçen süreyi ms olarak verir; programı durdurmaz.unsigned long t = millis();
map()Bir değeri bir aralıktan diğerine orantılı taşır.map(v, 0, 1023, 0, 180);
Serial.println()Bilgisayardaki Seri Port Ekranına yazı gönderir.Serial.println(v);

Veri tipleri ve bellek

Arduino Uno'nun yalnızca 2 KB çalışma belleği (SRAM) vardır. Bu yüzden değişkenlere doğru veri tipini seçmek, masaüstü programlamadan çok daha önemlidir.

TipBoyut (Uno)Değer aralığıNe zaman kullanılır?
bool1 bayttrue / falseAçık-kapalı durumları
byte1 bayt0 – 255PWM değeri, küçük sayaçlar
char1 bayt−128 – 127Tek karakter
int2 bayt−32.768 – 32.767Pin numaraları, sensör okumaları
unsigned int2 bayt0 – 65.535Negatif olmayan sayaçlar
long4 bayt±2,1 milyarBüyük sayılar, mesafe hesapları
unsigned long4 bayt0 – 4,29 milyarmillis() ve micros() sonuçları
float4 bayt6–7 basamak hassasiyetSıcaklık, voltaj gibi ondalıklı değerler
Arduino Uno R4, ESP32 ve Raspberry Pi Pico gibi 32 bitlik kartlarda int 4 bayttır. Kodunuzu farklı kartlarda çalıştıracaksanız boyutu kesin olması gereken yerlerde int16_t, uint32_t gibi tipleri tercih edin. Ayrıca sabit metinleri Serial.println(F("Merhaba")); şeklinde yazarak SRAM yerine flash bellekte saklayabilirsiniz.

delay() yerine millis() kullanmak

delay(1000) çalışırken Arduino bir saniye boyunca hiçbir şey yapamaz: buton basışlarını kaçırır, sensörleri okuyamaz. Birden fazla işi aynı anda yürütmek için "zamanı geldi mi?" diye soran millis() yöntemi kullanılır. Bu, robotik projelerin olmazsa olmaz tekniğidir.

millis_coklu_gorev.inoC++
// delay() kullanmadan iki LED'i farklı hızlarda yakıp söndürme
const int led1 = 8;
const int led2 = 9;

unsigned long onceki1 = 0;
unsigned long onceki2 = 0;
bool durum1 = LOW;
bool durum2 = LOW;

void setup() {
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}

void loop() {
  unsigned long simdi = millis();

  // 1. görev: her 500 ms'de bir
  if (simdi - onceki1 >= 500) {
    onceki1 = simdi;
    durum1 = !durum1;
    digitalWrite(led1, durum1);
  }

  // 2. görev: her 120 ms'de bir
  if (simdi - onceki2 >= 120) {
    onceki2 = simdi;
    durum2 = !durum2;
    digitalWrite(led2, durum2);
  }

  // Buraya buton okuma, sensör ölçme gibi başka görevler eklenebilir
}

Kodunuz karta nasıl ulaşır?

  1. Ön işleme

    IDE, yazdığınız .ino dosyasına fonksiyon tanımlarını ve Arduino.h başlığını ekleyerek onu standart bir C++ dosyasına dönüştürür.

  2. Derleme

    Uno için avr-gcc derleyicisi C++ kodunu işlemcinin anladığı makine koduna çevirir ve bir .hex dosyası üretir. Yazım hataları bu aşamada yakalanır.

  3. Yükleme

    avrdude programı .hex dosyasını USB üzerinden gönderir. Çipin içindeki küçük bootloader programı veriyi alıp flash belleğe yazar.

  4. Çalışma

    Kart yeniden başlar; bootloader kısa bir süre yeni kod bekler, gelmezse sizin programınızı çalıştırır. Kod flash bellekte kalıcıdır, elektrik kesilse bile silinmez.

Kütüphane kullanımı

Kütüphaneler, sensör ve modüllerle konuşmak için başkalarının yazdığı hazır kod paketleridir. IDE'de sol taraftaki kitap simgesine (Kütüphane Yöneticisi) tıklayıp modülün adını aratarak kurabilirsiniz. Kurduktan sonra #include satırıyla kodunuza eklenir. Kütüphanenin örnek kodlarına Dosya › Örnekler menüsünden ulaşabilirsiniz; yeni bir modülü denerken her zaman önce bu örneklerle başlayın.

Raspberry Pi ile Python programlama

Raspberry Pi'de kod doğrudan kartın üzerinde, Linux altında çalışır. Derleme ve yükleme adımı yoktur; Python dosyasını kaydedip çalıştırmanız yeterlidir. GPIO pinlerini kontrol etmek için Raspberry Pi OS ile birlikte gelen gpiozero kütüphanesi önerilir.

  1. İşletim sistemini yazın

    Raspberry Pi Imager programıyla microSD karta Raspberry Pi OS yükleyin. Ayarlar ekranında kullanıcı adı, Wi-Fi ve SSH'yi şimdiden tanımlayabilirsiniz.

  2. Kartı başlatın

    microSD kartı takın, ekran ve klavyeyi bağlayın, en son güç kablosunu takın. İlk açılış birkaç dakika sürebilir.

  3. Sistemi güncelleyin

    Terminali açıp sudo apt update ve ardından sudo apt full-upgrade komutlarını çalıştırın.

  4. Kodu yazıp çalıştırın

    Thonny editöründe aşağıdaki kodu yazıp Run düğmesine basın veya terminalden python3 led_buton.py komutuyla çalıştırın.

led_buton.pyPython
# Raspberry Pi: butona basınca LED yanar
# LED: GPIO17 (fiziksel pin 11) -> 330 ohm direnç -> LED -> GND
# Buton: GPIO2 (fiziksel pin 3) ile GND arasına
from gpiozero import LED, Button
from signal import pause

led = LED(17)
buton = Button(2)        # Dahili pull-up otomatik açılır

buton.when_pressed = led.on
buton.when_released = led.off

print("Hazir. Cikmak icin Ctrl+C")
pause()                  # Programın kapanmasını engeller
Pin numaralarına dikkat: gpiozero BCM (GPIO) numaralarını kullanır, kart üzerindeki fiziksel pin sırasını değil. LED(17) fiziksel 11 numaralı pindir. Ayrıca eski RPi.GPIO kütüphanesi Raspberry Pi 5'te çalışmaz; yeni projelerde gpiozero kullanın.

Raspberry Pi Pico ile MicroPython

Pico bir mikrodenetleyicidir ama Python'un küçültülmüş hali olan MicroPython ile programlanabilir. Thonny editöründe sağ alttan yorumlayıcıyı "MicroPython (Raspberry Pi Pico)" olarak seçmeniz yeterli. Dosyayı Pico'ya main.py adıyla kaydederseniz kart her açıldığında otomatik çalışır.

main.pyMicroPython
# Raspberry Pi Pico: dahili LED'i yakıp söndürme
from machine import Pin, ADC
import time

led = Pin("LED", Pin.OUT)   # Kart üzerindeki LED
pot = ADC(26)               # GP26 = ADC0, potansiyometre orta bacağı

while True:
    deger = pot.read_u16()   # 0 - 65535
    bekleme = 0.05 + deger / 65535   # 0,05 - 1,05 saniye
    led.toggle()
    time.sleep(bekleme)
3

Sensör BağlamaDoğru pin, doğru gerilim, doğru protokol

Sensörler robotun duyu organlarıdır. Bir sensörü bağlamadan önce üç soruyu cevaplamanız gerekir: Kaç volt ile beslenir? Çıkışı ne tür bir sinyaldir? Hangi protokolle haberleşir? Bu üç cevap, sensörün hangi pinlere ve nasıl bağlanacağını belirler.

Sinyal türleri

TürNasıl çalışır?Arduino'da okumaÖrnek sensörler
DijitalSadece iki durum verir: var (HIGH) veya yok (LOW).digitalRead()Buton, PIR, eğim sensörü, IR engel sensörü
AnalogÖlçülen büyüklüğe göre 0–5V arasında değişen gerilim verir.analogRead()LDR, potansiyometre, toprak nem, MQ gaz sensörleri
Darbe (pulse)Bilgiyi bir sinyalin süresiyle iletir.pulseIn()HC-SR04 ultrasonik mesafe sensörü
HaberleşmeliÖlçümü sayısal veri paketleri halinde gönderir.Kütüphane ile (Wire, SPI, Serial)MPU-6050, BMP280, DS18B20, GPS modülü

Haberleşme protokolleri

I2C

2 kablo · çok cihaz

Veri (SDA) ve saat (SCL) hatlarından oluşur. Her cihazın bir adresi vardır, böylece aynı iki kabloya onlarca sensör bağlanabilir. Hatlarda pull-up direnci gerekir; çoğu modülde hazır bulunur.

Uno SDA=A4 SCL=A5Pi GPIO2 / GPIO3

SPI

4 kablo · çok hızlı

MOSI, MISO, SCK ve CS hatlarını kullanır. I2C'den çok daha hızlıdır; SD kart, TFT ekran ve RFID okuyucularda tercih edilir. Her cihaza ayrı bir CS (seçim) pini gerekir.

Uno D11 D12 D13 D10Pi GPIO10 9 11 8

UART (Seri)

2 kablo · noktadan noktaya

TX (gönder) ve RX (al) hatları çapraz bağlanır: birinin TX'i diğerinin RX'ine gider. İki tarafın baud hızı aynı olmalıdır. GPS, Bluetooth (HC-05) ve parmak izi modülleri bu yolla çalışır.

Uno D0=RX D1=TXPi GPIO14 / GPIO15

1-Wire

1 kablo · uzun mesafe

Tek veri hattı ve bir 4,7 kΩ pull-up direnci yeterlidir. Her cihazın fabrikadan gelen benzersiz bir kimliği vardır. En bilinen örneği su geçirmez DS18B20 sıcaklık sensörüdür.

Uno herhangi bir dijital pinPi varsayılan GPIO4
Arduino Uno'da D0 ve D1 pinleri USB bağlantısıyla paylaşılır. Bu pinlere bir modül bağlıyken kod yükleme başarısız olabilir. Bluetooth veya GPS gibi seri modülleri SoftwareSerial kütüphanesiyle başka pinlere bağlamak daha rahattır.

Sık kullanılan sensörler

SensörÖlçtüğüÇıkış / protokolBeslemeBağlantı notu
LDRIşıkAnalog3,3–5V10 kΩ ile gerilim bölücü kurulur.
HC-SR04Mesafe (2–400 cm)Darbe (Trig / Echo)5VPi'de Echo hattına gerilim bölücü şarttır.
HC-SR501 (PIR)HareketDijital (3,3V çıkış)5VAçılışta 30–60 sn ısınma süresi ister.
DHT11 / DHT22Sıcaklık ve nemTek hat dijital3,3–5VVeri hattına 10 kΩ pull-up (modüllerde hazır). En fazla saniyede bir okunur.
DS18B20Sıcaklık1-Wire3–5,5VVeri ile VCC arasına 4,7 kΩ direnç.
MPU-6050İvme ve jiroskopI2C (0x68)Modülde 3,3–5VDenge robotu ve drone projelerinin temeli.
BMP280Basınç ve sıcaklıkI2C (0x76 / 0x77) veya SPI3,3VRegülatörsüz modülleri 5V'a bağlamayın.
Kapasitif toprak nemToprak nemiAnalog3,3–5VDirençli modellere göre çok daha uzun ömürlüdür.
MQ-2Gaz ve dumanAnalog + dijital eşik5VIsıtıcısı yaklaşık 150 mA çeker; ısınma süresi ister.

5V ve 3,3V: mantık seviyeleri

Arduino Uno ve Mega 5V ile, Raspberry Pi, Pico ve ESP32 ise 3,3V ile çalışır. 3,3V'luk bir karta 5V sinyal göndermek pini, hatta işlemcinin tamamını kalıcı olarak bozabilir. Bu, Raspberry Pi kullanıcılarının en sık yaptığı ve en pahalıya patlayan hatadır.

5V → 3,3V (sinyali düşürmek)

İki dirençle basit bir gerilim bölücü kurun: sinyal hattına seri 1 kΩ, pin ile GND arasına 2 kΩ. Çıkış: 5V × 2k / (1k + 2k) ≈ 3,33V. HC-SR04'ün Echo hattı için idealdir.

Çift yönlü hatlar

I2C gibi iki yönlü veri taşıyan hatlarda gerilim bölücü çalışmaz. Bunun yerine MOSFET tabanlı bir mantık seviyesi dönüştürücü (logic level shifter) modülü kullanın. 3,3V tarafı LV, 5V tarafı HV pinine bağlanır.

Raspberry Pi'de analog giriş yoktur. LDR, potansiyometre veya toprak nem sensörü gibi analog sensörleri okumak için ADS1115 (I2C, 16 bit) veya MCP3008 (SPI, 10 bit) gibi bir analog-dijital dönüştürücü ekleyin ya da sensörleri Pico veya Arduino'ya bağlayıp veriyi Pi'ye seri porttan gönderin.

Örnek: Arduino ile DHT11 sıcaklık ve nem sensörü

Kütüphane Yöneticisinden DHT sensor library (Adafruit) kütüphanesini kurun; kurulum sırasında istenen Adafruit Unified Sensor kütüphanesini de onaylayın. Modülün VCC pinini 5V'a, GND'yi GND'ye, DATA pinini D2'ye bağlayın.

dht11_okuma.inoC++
#include <DHT.h>

#define DHTPIN 2        // DATA pininin bağlı olduğu pin
#define DHTTYPE DHT11   // DHT22 kullanıyorsanız DHT22 yazın

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  delay(2000);   // DHT sensörleri yavaştır, 2 saniye bekle

  float nem = dht.readHumidity();
  float sicaklik = dht.readTemperature();   // Santigrat

  // Okuma başarısızsa NaN (sayı değil) döner
  if (isnan(nem) || isnan(sicaklik)) {
    Serial.println("Sensor okunamadi, kablolari kontrol edin.");
    return;
  }

  Serial.print("Nem: ");
  Serial.print(nem);
  Serial.print(" %   Sicaklik: ");
  Serial.print(sicaklik);
  Serial.println(" C");
}

Örnek: Raspberry Pi'de I2C cihazlarını bulmak

Raspberry Pi'de I2C arayüzü varsayılan olarak kapalıdır. Önce etkinleştirip ardından bağlı cihazların adreslerini tarayın. Ekranda tablo içinde 68 görüyorsanız MPU-6050, 76 görüyorsanız BMP280 doğru bağlanmış demektir.

terminalBash
# 1) I2C'yi aç: Interface Options > I2C > Yes, ardından yeniden başlat
sudo raspi-config

# 2) Tarama aracını kur
sudo apt install -y i2c-tools

# 3) 1 numaralı I2C hattındaki cihazları listele
i2cdetect -y 1

Örnek: Raspberry Pi ile ultrasonik mesafe ölçümü

HC-SR04'ün VCC'sini 5V'a, Trig'i GPIO23'e bağlayın. Echo pini 5V çıkış verdiği için mutlaka yukarıdaki 1 kΩ / 2 kΩ gerilim bölücü üzerinden GPIO24'e bağlanmalıdır.

mesafe.pyPython
# Raspberry Pi + HC-SR04 mesafe ölçümü
from gpiozero import DistanceSensor
from time import sleep

# max_distance metre cinsindendir
sensor = DistanceSensor(echo=24, trigger=23, max_distance=2)

while True:
    cm = sensor.distance * 100
    print(f"Mesafe: {cm:.1f} cm")
    sleep(0.5)

Raspberry Pi 40 pin GPIO haritası

Raspberry Pi 2'den 5'e kadar bütün modellerde aynı 40 pinlik dizilim kullanılır. Pin 1, kartın köşesine en yakın ve genellikle kare lehim pedine sahip pindir. Soldaki sütun tek, sağdaki sütun çift numaralı pinlerdir.

3,3V güç 5V güç GND (toprak) Genel amaçlı GPIO I2C SPI UART HAT EEPROM (kullanmayın)
Raspberry Pi'nin GPIO pinleri pin başına yalnızca birkaç miliamper güvenli akım verebilir. LED sürmek sorun değildir, ama motor, röle bobini veya buzzer gibi yükleri her zaman bir transistör veya sürücü modülü üzerinden bağlayın. Terminale pinout yazarak kartınızın pin haritasını doğrudan ekranda da görebilirsiniz.

Sensör bağlarken kontrol listesi

  • Bağlantıları her zaman güç kapalıyken (USB çıkarılmışken) yapın ve değiştirin.
  • Sensörün besleme gerilimini veri sayfasından (datasheet) kontrol edin.
  • Tüm cihazların GND'leri birbirine bağlı olmalı; ortak toprak olmadan sinyaller anlamsızlaşır.
  • 3,3V'luk kartlara 5V sinyal göndermeyin; gerektiğinde gerilim bölücü veya seviye dönüştürücü kullanın.
  • I2C, 1-Wire ve buton girişlerinde pull-up direncinin olup olmadığını kontrol edin.
  • Arduino pini başına 20 mA'i geçmeyin; motor ve rölelere doğrudan bağlamayın.
  • Yeni bir sensörü önce kütüphanenin örnek koduyla, tek başına test edin.
4

Devre ŞemalarıSembolleri okumak, değer hesaplamak, doğru kurmak

Devre şeması, bir devrenin elektriksel haritasıdır. Parçaların fiziksel görünüşünü değil, birbirine nasıl bağlandığını gösterir. Breadboard çizimleri (bağlantı diyagramları) başlangıçta kolay görünür, ama karmaşık projelerde şema okumayı bilmek size çok zaman kazandırır ve internetteki binlerce projeyi kurabilmenizi sağlar.

Temel şema sembolleri

DirençR1, R2… · akımı sınırlar
LEDD1… · ok ışık yayar
DiyotAkımı tek yönde geçirir
KondansatörC1… · yük depolar
Elektrolitik kond.Kutupludur, + tarafına dikkat
ButonS1… · basınca devre kapanır
PotansiyometreOrta uç ayarlanabilir
NPN transistörQ1… · küçük akımla büyüğü anahtarlar
DC motorM1… · endüktif yük
GND (toprak)Tüm GND sembolleri birbirine bağlıdır
Besleme (VCC)Etiketi gerilimi gösterir
Pil / bataryaUzun çizgi + kutuptur
Türkiye ve Avrupa'da kullanılan IEC standardında direnç dikdörtgen, ABD'de kullanılan ANSI standardında ise zikzak çizgiyle gösterilir. İnternetteki şemalarda ikisine de rastlayacaksınız; anlamları aynıdır.

Şema okuma kuralları

Bağlantılar

  • Kesişen iki çizginin üzerinde nokta varsa bağlıdır, yoksa sadece üst üste geçiyordur.
  • Aynı isimli etiketler (örneğin iki ayrı yerdeki "SDA") kablo çizilmese de birbirine bağlıdır.
  • Şemadaki her GND sembolü aynı noktaya bağlanır.

Etiketler

  • R = direnç, C = kondansatör, D = diyot / LED, Q = transistör, U = entegre, S = anahtar.
  • 4k7 = 4,7 kΩ; 100n = 100 nF. Harf, ondalık virgülün yerini alır.
  • Sinyaller genellikle soldan sağa, gerilim yukarıdan aşağıya (VCC üstte, GND altta) akar.

Ohm Kanunu: her şeyin temeli

Bir devredeki gerilim (V, volt), akım (I, amper) ve direnç (R, ohm) arasındaki ilişki V = I × R formülüyle ifade edilir. Gücü ise P = V × I verir. Bu iki formülle robotik projelerde karşılaşacağınız hesapların büyük çoğunluğunu yapabilirsiniz: LED direnci, gerilim bölücü, direnç ve adaptör gücü.

LED direnci hesaplama

LED'e seri bağlanacak direnç: R = (Besleme − LED gerilimi) / Akım. Aşağıdaki hesaplayıcı sonucu en yakın standart (E12) direnç değerine yuvarlar. Yukarı yuvarlamak, LED'in güvenli tarafta kalmasını sağlar.

LED direnci hesaplayıcı
Önerilen standart direnç
220 Ω
Hesaplanan değer200 Ω
Gerçek akım13,6 mA
Dirençte harcanan güç41 mW
1/4 W (250 mW) direnç yeterlidir.

Direnç renk kodları

4 bantlı dirençlerde ilk iki bant rakamı, üçüncü bant çarpanı (kaç sıfır ekleneceğini), dördüncü bant toleransı gösterir. Toleransı gösteren altın veya gümüş bant sağa gelecek şekilde tutup soldan okuyun.

RenkRakamÇarpanTolerans
Siyah0×1–
Kahverengi1×10±%1
Kırmızı2×100±%2
Turuncu3×1k–
Sarı4×10k–
Yeşil5×100k±%0,5
Mavi6×1M±%0,25
Mor7×10M±%0,1
Gri8–±%0,05
Beyaz9––
Altın–×0,1±%5
Gümüş–×0,01±%10

Projelerde en sık kullanacağınız üç değer: 220 Ω kırmızı-kırmızı-kahverengi, 1 kΩ kahverengi-siyah-kırmızı, 10 kΩ kahverengi-siyah-turuncu. Emin olamadığınızda multimetrenin ohm kademesiyle ölçün.

Breadboard nasıl çalışır?

Kenarlardaki uzun güç hatları (kırmızı +, mavi −) boydan boya bağlıdır. Ortadaki her sütunda üstteki 5 delik (a–e) birbirine, alttaki 5 delik (f–j) birbirine bağlıdır. Ortadaki kanal iki yarıyı ayırır; entegreler ve butonlar bu kanalın üzerine oturtulur. Bazı uzun breadboard'larda güç hatları ortadan kesiktir.

Örnek şema 1: LED ve pull-down'lı buton

Arduino Uno 5V D2 D8 GND S1 buton R2 10 kΩ R1 220 Ω D1 LED
Nasıl okunur? D8 pininden çıkan akım R1 (220 Ω) üzerinden LED'e, oradan GND'ye gider. Buton basılı değilken R2 (10 kΩ) D2 pinini GND'ye çeker ve pin LOW okunur; butona basıldığında 5V doğrudan D2'ye ulaşır ve pin HIGH olur. Siyah noktalar, çizgilerin birleştiği bağlantı noktalarıdır.

Örnek şema 2: Transistör ile DC motor sürme

Arduino Uno D9 GND +6V (harici) M D1 1N4007 R1 1 kΩ Q1 NPN TIP120 / 2N2222 Ortak GND
Neden böyle? Arduino pini motorun istediği akımı veremez. D9'dan gelen küçük akım R1 üzerinden transistörün tabanına gider ve transistörü bir anahtar gibi açar; motor akımı harici kaynaktan transistör üzerinden GND'ye akar. Motor durduğunda bobininde oluşan ters gerilim (geri EMK) transistörü yakabilir; D1 diyotu bu gerilimi güvenle sönümler. Harici kaynağın eksi ucu ile Arduino'nun GND'si mutlaka birleştirilmelidir. Yön kontrolü de gerekiyorsa L298N veya TB6612FNG gibi bir motor sürücü modülü kullanın.

Güç beslemesi: kim ne kadar akım verebilir?

Kaynak / pinGerilimPratik sınırNot
Uno G/Ç pini5V20 mA önerilen, 40 mA mutlakTüm pinlerin toplamı yaklaşık 200 mA'i geçmemeli.
Uno 5V pini (USB ile)5VUSB portunun verebildiği kadar (≈500 mA)Birkaç sensör ve bir küçük servo için yeterli.
Uno 3,3V pini3,3V≈50 mAWi-Fi modülü gibi akım çeken modüller için yetersizdir.
Uno DC jak / Vin7–12V önerilenRegülatör ısısıyla sınırlıYüksek gerilimde regülatör ısınır.
Raspberry Pi 55V, USB-C5A adaptör önerilirDüşük akımlı adaptörde USB çıkışları kısıtlanır.
Raspberry Pi GPIO3,3VPin başına birkaç mAYükleri her zaman sürücü üzerinden bağlayın.

Şema çizim ve simülasyon araçları

Tinkercad Circuits

Tarayıcıda çalışır, Arduino kodunu sanal olarak çalıştırır. Yeni başlayanlar için en iyi seçenek.

Wokwi

Arduino, ESP32 ve Pico simülasyonu; çok sayıda sensör ve ekran destekler.

Fritzing

Breadboard görünümü, şema ve PCB aynı projede. Dokümantasyon için popüler.

KiCad

Ücretsiz ve açık kaynak, profesyonel seviyede şema ve baskı devre tasarımı.

EasyEDA

Tarayıcıda şema ve PCB çizimi; tasarımı doğrudan üretime gönderebilirsiniz.

En sık yapılan devre hataları

  • LED'i dirençsiz bağlamak: LED veya Arduino pini zarar görür.
  • 5V ile GND'yi doğrudan birleştirmek (kısa devre): USB portu kapanır veya regülatör yanar.
  • Motoru, röleyi veya birden fazla servoyu doğrudan Arduino pininden ya da 5V pininden beslemek.
  • Harici güç kaynağı kullanırken GND'leri birleştirmeyi unutmak.
  • Elektrolitik kondansatörü ters takmak: ısınır, şişer, hatta patlayabilir.
  • Butonu breadboard'da yanlış yönde takıp sürekli kısa devre durumunda bırakmak.
  • Raspberry Pi'nin GPIO pinine 5V sinyal göndermek.
5

Sık Sorulan Sorular

Robotiğe yeni başlayan biri Arduino mu Raspberry Pi mi almalı?
Elektronik ve sensörlerle başlamak istiyorsanız Arduino Uno daha uygundur; anında açılır, bozulması zordur ve 5V sensörlerin çoğuyla doğrudan çalışır. Kamera, yapay zeka veya internet gerektiren projeler için Raspberry Pi seçilmelidir. Pek çok öğrenci önce Arduino ile temelleri öğrenip sonra Raspberry Pi'ye geçer.
Klon (uyumlu) Arduino kartlar orijinali kadar iyi mi?
Uyumlu kartların çoğu aynı ATmega328P işlemcisini kullanır ve aynı kodu çalıştırır. En sık görülen fark, USB çipinin CH340 olmasıdır; bu durumda bilgisayarınıza CH340 sürücüsünü kurmanız gerekir. Orijinal kart almak, Arduino projesinin geliştirilmesini desteklemiş olursunuz.
Raspberry Pi'ye 5V sensör bağlanabilir mi?
Sensör 5V ile beslenebilir, ancak sensörden Raspberry Pi'ye giden sinyal hattı 3,3V'u geçmemelidir. 5V çıkış veren sensörlerde gerilim bölücü veya mantık seviyesi dönüştürücü kullanın. PIR sensörü gibi 5V ile beslenip 3,3V çıkış veren sensörler doğrudan bağlanabilir.
Raspberry Pi analog sensör okuyabilir mi?
Doğrudan okuyamaz, çünkü analog girişi yoktur. ADS1115 veya MCP3008 gibi bir analog-dijital dönüştürücü ekleyebilir ya da analog sensörü bir Arduino veya Pico'ya bağlayıp ölçümü Pi'ye seri port üzerinden gönderebilirsiniz.
Arduino ile Raspberry Pi'yi nasıl haberleştiririm?
En kolay yol USB kablosudur. Arduino'da Serial.println() ile gönderdiğiniz veriyi Raspberry Pi'de Python'un pyserial kütüphanesiyle /dev/ttyACM0 portundan okuyabilirsiniz. I2C veya UART pinleriyle de bağlanabilir, ancak bu durumda 5V-3,3V seviye farkına dikkat etmeniz gerekir.
Kodu yüklerken "port bulunamadı" hatası alıyorum, ne yapmalıyım?
Önce kablonuzu değiştirin; bazı USB kabloları yalnızca şarj içindir ve veri taşımaz. Ardından klon kartlar için CH340 sürücüsünü kurun, D0/D1 pinlerine bağlı modülleri çıkarın ve IDE'de doğru portun seçili olduğunu kontrol edin.