Macademia'nın robotik ve mühendislik programı · ücretsiz seviye tespiti ve kişisel öğrenme yolu

2. ünite / 10 · yaklaşık 4 saat

Raspberry Pi OS ve Linux komut satırı

Dosya sistemi, izinler, sudo, apt ile paket kurma ve ssh ile uzaktan bağlanma.

Bu ünitenin sonunda

  • Raspberry Pi Imager ile SD karta işletim sistemi yazıp ilk ayarları (kullanıcı, Wi-Fi, SSH) yapmak
  • ls, cd, cat, nano, mkdir, cp, mv, rm ile dosya sisteminde gezinmek
  • Dosya izinlerini (rwx) okumak ve chmod ile değiştirmek; sudo'nun ne zaman gerektiğini bilmek
  • apt ile paket kurmak ve ssh ile Pi'ye uzaktan bağlanmak

Ders notları

Raspberry Pi OS, Debian tabanlı bir Linux dağıtımıdır. Robotlarda genelde ekransız (headless) kullanılır: Raspberry Pi Imager'da kullanıcı adı, Wi-Fi ve SSH önceden ayarlanır, Pi açılınca dizüstünden ssh pi@raspberrypi.local ile bağlanılır.

Dosya sistemi

Her şey tek bir kökten (/) dallanır: /home/pi senin evin (~), /etc ayar dosyaları, /boot/firmware/config.txt donanım ayarları, /sys ve /dev ise çekirdeğin donanımı dosya gibi gösterdiği yerlerdir. Linux'ta "her şey bir dosyadır": DS18B20 sıcaklığı bile /sys/bus/w1/devices/.../w1_slave dosyasından okunur.

İzinler ve sudo

ls -l çıktısındaki -rwxr-xr-- üç gruptur: sahip, grup, diğerleri; r okuma, w yazma, x çalıştırma. chmod +x start.sh betiği çalıştırılabilir yapar, chmod 644 sekizlik gösterimdir. Sistem dosyaları root'undur; onları değiştirmek için komutun başına sudo eklenir. Her şeyi sudo ile yapmak kötü alışkanlıktır: yanlış bir komut sistemi bozar.

Paketler

sudo apt update paket listesini yeniler, sudo apt install i2c-tools paketi kurar. Python kütüphaneleri için önce apt'a bak (python3-opencv); apt'ta yoksa sanal ortamda pip kullan.

Simülasyon

Raspberry Pi OS terminali (benzetim)

Küçük bir sanal dosya sistemi üzerinde gerçek komutlar: ls, cd, cat, nano, chmod, sudo, apt, systemctl, journalctl, i2cdetect. Ağ, paket kurulumu ve ssh benzetimdir; hiçbir şey indirilmez. Görev listesi durumu denetleyerek işaretlenir.

Raspberry Pi OS benzetimi. "help" yaz.

Görevler · 0/5

  • ~/robot/logs klasörünü oluştur (mkdir)
  • echo ile ~/robot/logs/ilk.txt dosyasına bir satır yaz
  • start.sh betiğini çalıştırılabilir yap (chmod +x)
  • i2c-tools paketini kur (sudo apt install)
  • python3-opencv paketini de kur

Hızlı komutlar (dokun, Enter'a bas):

Kendin dene

Terminalde görev listesini bitir: ~/robot/logs klasörü, echo ile bir dosya, start.sh'yi çalıştırılabilir yapma, i2c-tools ve python3-opencv kurulumu. Sonra sudo olmadan /etc/hostname dosyasına yazmayı dene ve hata mesajını oku. ls -l ile start.sh'nin izinlerinin chmod öncesi ve sonrasını karşılaştır. Gerçek Pi'de: Imager ile kart hazırla ve ssh ile bağlan.

Kod

İlk kurulum betiği (setup.sh)
#!/bin/bash
# Hata olursa dur, tanımsız değişkeni hata say
set -euo pipefail
sudo apt update && sudo apt full-upgrade -y
sudo apt install -y python3-gpiozero python3-opencv python3-picamera2 i2c-tools python3-smbus2 python3-flask
# Arayüzleri etkinleştir (raspi-config'in etkileşimsiz kipi; 0 = aç)
sudo raspi-config nonint do_i2c 0
sudo raspi-config nonint do_spi 0
sudo raspi-config nonint do_ssh 0
# Kullanıcıyı donanım gruplarına ekle: sudo'suz GPIO/I2C/SPI erişimi
sudo usermod -aG gpio,i2c,spi,video "$USER"
mkdir -p ~/robot/logs
chmod +x ~/start.sh
echo "Bitti. Grupların geçerli olması için yeniden başlat: sudo reboot"
Sanal ortam: sistem paketlerini görerek
# Bookworm'da pip sistem Python'una kurmaz (PEP 668): sanal ortam kullan
python3 -m venv --system-site-packages ~/robot/.venv   # picamera2 ve gpiozero apt'tan gelir, görünür kalır
source ~/robot/.venv/bin/activate
pip install pyyaml pytest                               # yalnız apt'ta olmayanlar
pip freeze > ~/robot/requirements.txt                   # sürümleri sabitle

Sık yapılan hatalar

  • Her komutu sudo ile çalıştırmak: dosyalar root'a geçer, sonra normal kullanıcı yazamaz.
  • rm -rf'i yol denetlemeden kullanmak: geri dönüşüm kutusu yoktur.
  • apt update yapmadan install: eski liste yüzünden paket bulunamaz ya da eski sürüm gelir.
  • Varsayılan parolayla SSH'yi internete açmak: anahtarla giriş (ssh-copy-id) kullan, parola girişini kapat.

Yazılım mühendisliği bağlantısı

Kurulum adımlarını elle değil betikle yap ve sürüm denetimine koy: aynı betik ikinci Pi'yi dakikada hazırlar.

  • Betik idempotent olsun: iki kez çalışınca da aynı sonucu versin (mkdir -p, apt install -y).
  • set -euo pipefail ile hatada dur; sessizce yarım kurulum bırakma.

Kendini sına

  1. -rw-r--r-- izinli bir betiği çalıştırmak için hangi komut gerekir?

  2. sudo apt install neden sudo ister?

  3. chmod 754 dosya ne anlama gelir?

  4. Ekransız bir Pi'ye dizüstünden bağlanmanın standart yolu nedir?

Bu üniteden sonra bitirme projesinde

Gerçek parçalar (Hyvex, 3B modelli)

Esc
  • PanelAna sayfaSayfa
  • ModüllerTüm modüllerSayfa
  • ParçalarParça ansiklopedisiSayfa
  • Mühendislik yoluBüyükler için robotik: 128 parça, 7 seviyeSayfa
  • Robotik dersi (ESOF 323)Üniversite robotik dersi, 14 haftaSayfa
  • Drone dersiBüyükler için: parça, simülasyon, yazılım; 10 üniteSayfa
  • Blok atölyesiSerbest blok programlamaAraç
  • Devre laboratuvarıSanal Arduino ve devreAraç
  • Robot arenasıSanal robot sürüşüAraç
  • OyunlarBloklarla 8 öğretici oyunAraç
  • Mikro Kart atölyesiSanal LED kartı bloklarla programlaAraç
  • Robot atölyesiMikro Kart'ı robota tak, bloklarla görev yapAraç