dersblog

Raspberry Pi

Elektronik aletleri kontrol etmek, medya idare merkezi (şarkı, film göstermek) , hatta ufak masaüstü bilgisayarı olarak bile kullanılabilecek bir ufak ama kuvvetli bir bilgisayar; Raspberry Pi. Pi'nin paketten çıktığı haliyle her türlü giriş birimi (klavye, fare) ya da çıkış (monitör, Wifi, Bluetooth) için desteği vardır. İşletim sistemi basit bir SD karttan hızla yüklenebilir, Linux bazlıdır, ve masaüstü kullanımına hazırdır,

Kuruluş

RPi kurmak için Mikro SD kart gerekli, isletim sistemi bu karttan okunuyor. Eğer satın alınan paketten içinde RPi işletim sistemi olan bir SD çıkmadıysa (bazı paketlere dahil ediliyor) bir diğer bilgisayardan bunu kullanıcının yapması lazım. Ayrı pürüz benim bilgisayarda Mikro SD değil SD okuyucu olmasıydı (daha büyük bir kart), o sebepe kart alırken SD / MicroSD çeviricisi gerekti,

Dizüstündeki Ubuntu'ya bunu taktık. Ubuntu'da Disks programı ile takılan disk bulunur ve FAT için formatlanır. Şimdi RPi işletim sistemi imajını SD'ye "yakma" zamanı geldi. [2]'den "Raspberry Pi İmager for Ubuntu" indirilir, bir deb dosyası,

sudo apt-get install qml-module-qt-labs-settings

problem verirse,

sudo apt --fix-broken install

düzeltir. Ardından alınan deb üzerinde,

sudo dpkg -i imager_1.4_amd64.deb

Şimdi

rpi-imager

ile program başlatılır. Çıkan listede "İşletim Sistemi Seç (Choose OS)" için ilk görülen Raspberry Pi seçilebilir. "SD Kart Seç (Choose SD Card)" için daha önce formatlamış olduğumuz kart seçilir. Tamam dedikten sonra bu işlem 1 GB üzerinde bir indirme yapacak, yani hızlı ve yeterince kapasitesi olan bir Internet bağlantımız olması iyi olur.

Güç Kaynağı

Her Pi için gerekli güç kaynağı parametreleri [4]'te. Bizim aldığımız 3B+ modeli için 5.1 V ve 2.5 A diyor, ve giriş Mikro USB. Mikro USB çoğu Samsung cep telefonunun güç girişi, bende birkaç tane şarj edici vardı, fakat bazıları farklı amper seviyelerinde idi. Bir tanesi 5.0 V ve 2.0 Amper diyor, bunu taktık, çalıştı. [4]'un bahsettiği gibi RPi'nin ne kadar akım çektiği ona bağlı olan diğer donanımlara bağlıdır.

İlk Sistem Başlatımı

Ufak olan SD kartını büyük olandan çıkartıp Pi'ye takarız. RPi donanımı olağan haliyle HDMI ekranlara bağlanabilir, ve işletim sistemi USB'ye takılan klavye, fare gibi araçları tanır. Fakat çoğumuzda bu tür giriş araçları olmayabilir, mesela kablolu klavye, ve başta, RPi ilk kez yüklenirken, başlarken bazı girişlerin olması lazım. Ne yapacağız?

Burada çözüm en minimal gereci almak, mesela üzerinde touchpad olan (yani sanal fare) kablosuz klavye ama kablosuz bağlantı dongle ile, yani RPi'nin USB soketine bağlanan bir ufak özel alıcı var, klavye direk bu alıcı ile iletişime geçiyor, böylece Bluetooth vs işleriyle Rpi üzerinden kurcalamaya gerek kalmıyor. Alıcıyı takıyorsunuz, pat diye klavye ve üzerindeki fare tanınıyor. Bu olduktan sonra artık klavyeden giriş yapıp daha çetrefil işleri yapabiliriz.

Bundan sonrası / daha da iyisi, SSH ile erişim. Eğer sisteme girebildiysek ve ekranda Pi gözüküyorsa şimdi SSH ile başka bilgisayardan bağlanmaya gelelim, böylece ekrana ihtiyaç olmayacak, basit bir Wifi bağlantısı ile Pi'ye komut satırında girebileceğiz. Çoğumuzda Android üzerinden cep telefon Internet bağlantısını paylaşma, hotspot özelliği var. Bağlantıyı paylaşalım, ve Pi'mizi bu Wifi noktasına bağlayalım. İnternet'e bağlanabildiğimizi kontrol edelim, tarayıcı ile herhangi bir site. Şimdi Pi'nin şifresini set edelim, menüden Pi | Preferences | RPi Configuration | System ile.

Ardından Pi | Preferences | RPi Configuration | Interfaces üzerinde SSH seçeneğini Enable haline getirelim [3]. Şimdi komut satırına gidelim, ve ifconfig diyelim. Bu bize network donanımlarının bağlı olduğu adresleri gösterir. Aradığımız IP adresi çoğunlukla 192.168.. diye giden bir adres. Simdi ikinci (ve aynı Wifi noktasına bağlı) dizüstü bilgisayara gidelim ve

ssh pi@192.168.... 

diyelim. Giriş yapılmış olmalı. Eğer işimizi ilerisi için daha da kolaylaştırmak istersek, şifresiz giriş ayarlarını yapabiliriz.

Wifi üzerinden bu bağlantı işliyor çünkü aynı hotspot'a bağlandıysak aynı network'un içindeyiz demektir ve aynı network içinde makinalar birbirlerini bulabilirler.

Eğer başlangıçta masaüstü başlatılmasın istiyorsak raspi-config deriz ve alttaki seçimleri yapınca

ekran 1 ekran 2 ekran 3

bir sonraki başlatımda sadece konsol bazlı bir RPi işliyor olacaktır. Eğer RPi sadece otomatik kontrol ya da servis bazlı amaçlar için kullanılıyorsa, bellek sarfiyetini azaltma bakımından bu seçim faydalı olur.

Taşınabilir RPi

Çok az miktarda elektronik aletle, mesela kampta vs, seyahat etmek isteyenler, cep telefonuna bir SSH müşteri programı kurup onun üzerinden RPi'ye komut satırından bağlanabilir. RPi tam tekmilli bir Linux olduğu için istenen her ağır işlem burada gerçekleştirilir, HDMİ özellikli taşınabilir ufak monitörler var, bu bağlanır, enerji kaynağı olarak herhangi bir taşınabilir pil, powerbank, RPi işletebiliyor. Pi üzerindeki SSD 64, 256 GB bile olabilir, disk problemi olmaz. Ayrıca Pi çok rahat şekilde (Ubuntu olduğu için) her türlü harici diske erisebilir. Kablosuz klavye ile RPi'ye bağlanabiliyoruz, bu durumda neredeyse dizüstü bilgisayara eşdeğer bir sistem elde edebilmiş oluruz.

Mobil sistem şöyle olabilir demek ki, Android Hotstpot ile İnternet bağlantısını paylaşır, bunu yaparken DHCP üzerinden IP adresi de yaratmaktadır, bu adresi ifconfig -a ile bulup (192.168.x.x gibi olur çoğunlukla) ona ya SSH ile bağlanabiliriz. Powerbank ile RPi isletilebilir, bundan bahsettik, zaten telefonun pili de benzer sekilde doldurulabilmektedir.

Android uzerinde Termux ssh var ise, ve bir X-Server programi [6] isliyorsa, Termux'tan ssh -X ile RPi'a baglaninca gorsel X programlari Android uzerinde gorebiliriz.

Donanım Programcılığı

Pin Kontrolu, Ilk Program

RPi'i ustte anlatildigi gibi kurunca donanim uzerinde gorulen pinlerin durumunu raporlayabilen, onlara erisebilen programlara sahip oluyoruz. Mesela

pinout

komutu elimizdeki Pi'nin pin halini gösterir.

Bende mesela

   3V3  (1) (2)  5V    
 GPIO2  (3) (4)  5V    
 GPIO3  (5) (6)  GND   
 GPIO4  (7) (8)  GPIO14
   GND  (9) (10) GPIO15
GPIO17 (11) (12) GPIO18
GPIO27 (13) (14) GND   
GPIO22 (15) (16) GPIO23
   3V3 (17) (18) GPIO24
GPIO10 (19) (20) GND   
 GPIO9 (21) (22) GPIO25
GPIO11 (23) (24) GPIO8 
   GND (25) (26) GPIO7 
 GPIO0 (27) (28) GPIO1 
 GPIO5 (29) (30) GND   
 GPIO6 (31) (32) GPIO12
GPIO13 (33) (34) GND   
GPIO19 (35) (36) GPIO16
GPIO26 (37) (38) GPIO20
   GND (39) (40) GPIO21

Bu raporun sonu bu arada, üstünde daha grafiksel bir görüntü de var.

Pi'ye USB portları aşağı dönük halde baktığımızı düşünmek gerekiyor, o zaman sağda üstten üçüncü pin GND yani toprak oluyor.

Python'dan erisim icin virtualenv Python 3 ortamina gecelim, ve

pip install RPi.GPIO
pip install gpiozero

kuralim. Ilk program

from gpiozero import LED
from signal import pause

red = LED(17)

red.blink()

pause()

500 Ohm civarı bir direnç ile seri halde bir LED'i GND ile GPİO17 pinine takalım, ve üstteki programı çalıştıralım. LED'in yanip söndüğünü göreceğiz.

PIN'lere voltaj gidip gitmedigini gormek icin

gpio readall

faydalı olabilir.

Kaynaklar

[1] https://www.raspberrypi.org/documentation/installation/noobs.md

[2] https://www.raspberrypi.org/downloads/

[3] https://www.raspberrypi.org/documentation/remote-access/ssh/

[4] https://www.raspberrypi.org/documentation/hardware/raspberrypi/power/README.md

[5] https://www.thedigitalpictureframe.com/ultimate-guide-systemd-autostart-scripts-raspberry-pi/

[6] https://play.google.com/store/apps/details?id=x.org.server&hl=en_GB


Yukarı