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.
~$ sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential
~$ sudo apt install libstdc++-arm-none-eabi-newlib # Debian kullanıcıları içinDerleyicilerimizi indirdikten sonra sıra SDK'yı, yani kütüphanelerimizi indirme zamanı. Bunu yapabilmek için git yazılımını kullanacağız.
~$ git clone https://github.com/raspberrypi/pico-sdk.git
~$ echo "PICO_SDK_PATH=../path/to/sdk" >> ~/.bashrcŞimdi hazır uygulamaları indirelim ilgili git reposundan.
~$ git clone https://github.com/raspberrypi/pico-examples.git
~$ cd pico-examples/
~$ git submodule update --initBir build klasörü yaratalım ve indirdiğimiz pico-examples dosyalarını onun içine derleyelim.
~$ mkdir build && cd build
~$ cmake ..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.
~$ ls /dev/ttyACM*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 minicomArdından minicom'a az önce bulduğumuz ttyACMX portuna bağlanmasını söyleyememiz gerekmektedir.
~$ minicom -o -D /dev/ttyACMXArdı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 PinArdı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 pPins are numbered 0-29, and 26-29 have ADC capabilitiesPins are numbered 0-29, and 26-29 have ADC capabilitiesPin 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 verBu 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.