Raspberry Pi Pico (RP2040) İlk Kullanım
> Bu yazı düzenlemeye ihtiyaç duymaktadır.
Öncelikle herkese merhaba. Yakın bir zamanda Raspberry Pi Pico kartının siparişini verdim ve bugün elime ulaştı. Gerekli kurulumları ve ilk denememi sizinle de paylaşmak istedim.
Ben bu yazıda ilk olarak C/++ ile bir giriş yapacağım.
ARM mikrokontrolcülerine bir yazılım derleyebilmek için gcc
'nin ARM paketini yüklemeliyiz. Eğer bilgisayarınızda bulunmuyor ise cmake
'i de yüklemeniz faydalı olacaktır.
Derleyicilerimizi indirdikten sonra sıra SDK'yı, yani kütüphanelerimizi indirme zamanı. Bunu yapabilmek için git
yazılımını kullanacağız.
Şimdi hazır uygulamaları indirelim ilgili git reposundan.
Bir build
klasörü yaratalım ve indirdiğimiz pico-examples
dosyalarını onun içine derleyelim.
Artık build/blink
dizinine gidebiliriz ve buradaki projeyi make -j4
ile derleyebiliriz. Oluştan blink.uf2
dosyası Pico'muzun içine atacağımız program dosyasıdır.
Pico'yu bilgisayarınıza bağlayabilmek için geliştirme kartınızın üstünde yer alan BOOTSEL
butonuna basılı tutmanız ve ardından USB bağlantısını yapmanız gerekmektedir. Eğer ki RPI-RP2 adlı bir aygıt görüyorsanız bağlantınız olmuş demektir.
Şimdi oluşturduğumuz blink.uf2
dosyamızı GUI üzerinden sürükle-bırak tekniği ile kartımıza atalım. Kartınıza attığınız gibi bilgisayarınızdan Pico'nun bağlantısı kopacak ve ledimiz yanıp sönmeye başlayacaktır.
Eh, hani MicroPython?
Dökümantasyondan gördüğüm kadarı ile MicroPython ile çalışmak, normal derleme ve dosyayı karta yüklemekten farklıymış. Pico kartında MicroPython'ın kullanıldığı iki mod varmış, bunlardan biri REPL, yani kartı interpreter modu ile çalıştırma ve diğeri ise hazırlanmış Python dosyasını kartta çalıştırma.
Ben bu yazımda REPL modunu deneyeceğim çünkü dökümantasyonda direk o anlatılmış. Eğer ki diğerini de merak ediyorsanız, örneğin ben ediyorum, herkes Thonny'i kullanarak interpreter ayarını MicroPython (Raspberry Pi Pico)
seçiyor ve dosyayı yazıp göndere basıyor. Açıkçası ben bir yazılıma bağlı kalmaktan nefret ettiğim için özellikle kullanmıyorum. Onu da elimle, terminalle, nasıl yapacağımı öğrenince paylaşacağım.
İlk yapılması gerekilen şey MicroPython'ın çalışabilmesini sağlayacak olan uf2
dosyasını karta daha önce yaptığımız şekilde göndermek. BOOTSEL
tuşunu basılı tutmatı unutmayın. Ardından şu bağlantıyı kullanarak indireceğiniz dosyayı kartın içine sürükle-bırak ile gönderin.
Artık kartınızın içinde bir tane Python yorumlayıcısı uyuyor haldedir. Şimdi ana cihazınızdan USB ile haberleşerek o yorumlayıcıyı uyandıracağız.
Eğer kartımızı bağlı görüyorsak, minicom
programı ile seri-haberleşmesini yapmaya başlayabiliriz. Eğer program yüklü değilse, yükleyebilmek için aşağıdaki komutu yazabilirsiniz.
~$ sudo apt install minicom
Ardından minicom'a az önce bulduğumuz ttyACMX portuna bağlanmasını söyleyememiz gerekmektedir.
~$ minicom -o -D /dev/ttyACMX
Ardından bir kere Enter klavye tuşuna basın ve Python yorumlayıcısı karşınızda olacaktır. help()
yazdığınızda bu yorumlayıcının MicroPython'a ait olduğunu görebilirsiniz.
Hadi şimdi blink uygulamamızı deneyelim.
Öncelikle machine
kütüphanemizden Pin
sınıfımızı çağıralım.
from machine import Pin
Ardından bir Pin
nesnesi yaratalım. Pin nesnemizin oluşturucu fonksiyonu üç parametreye ihtiyaç duyar. Bunlardan ilk ikisi zorunludur: pin numarası ve pinin giriş/çıkış modu.
Eğer ki help()
komutunu çağırdıysanız şu satırları görebilirsiniz:
machine.Pin(pin, m, [p]) -- get a pin and configure it for IO mode m, pull mode p
Pins are numbered 0-29, and 26-29 have ADC capabilities
Pins are numbered 0-29, and 26-29 have ADC capabilities
Pin pull modes are: Pin.PULL_UP, Pin.PULL_DOWN
Bu bilgilere ek olarak kartımızın bize verilen şematiğinden görmekteyiz ki, LED'imiz 25. pinimize bağlıdır.
Şimdi LED'imizin üzerinden aç-kapat yapacağımız program kodumuzu yazalım. Halihazırda Pin
sınıfımızı programımıza tanıttığımızı hatırlatırım.
# utime kütüphanemizden sleep fonksiyonumuz
# çağırıyoruz.
from utime import sleep
# Pin nesnemizi yaratıyoruz.
led_pin = Pin(25, Pin.OUT)
pin_state = False
# Açılışta led_pin'imize LOW
# veriyoruz.
led_pin.value(pin_state)
# Sonsuz döngü içerisinde programımıza
# LEDi açıp kapatması gerektiğini söylüyoruz.
while True:
sleep(0.5) # 500ms bekleme
pin_state = not pin_state # pin_state'i tersine çevir
led_pin.value(pin_state) # led_pin'imize pin_state ver
Bu kod sayesinde programımız 0.5 saniye aralıklarla ledini kapatıp açacaktır. Kartımızın bağlantısını söküp taktığınızda bunun devam etmediğini göreceksinizdir, bunun sebebi MicroPython yorumlayıcında yazmamız. Bir şekilde bir dosya olarak yazıp, cihaza bu dosyayı çalıştırması gerektiğini söylememiz gerekiyordu.
İleride, daha iyi yazılarda görüşmek dileği ile.