Arduino ile ekmek mayalama dolabı yapmak

Pic Kit 2 ile Arduino programlama

Bu derste PICkit 2 programlayıcısı ile nasıl Arduino ve ATMEGA serisi yongaları programlayabileceğinizi anlatmaya çalışacağım.

Ön bilgi

Öncelikle geliştirmeyi düşündüğümüz ekmek mayalama dolabı uygulamasını yapmak için bu bölümü yapmanıza gerek yok. Sadece bize iki tane programlayıcı gerekebilir. Bende de bir tane Arduino olduğu için ikinci programlayıcı olarak PicKit2 kullanmayı düşündüm.

Bu nedenle bu bölümü gönül rahatlığıyla geçebilirsiniz. Eğer sadece sizin de bir Pic Kit2 programlayıcınız var ve nasıl ATMEGA yongalarının programlanabileceğini öğrenmek istiyorsanız o zaman okumaya devam ediniz.

Giriş

PICkit 2 MicroChip firmasının üretmiş olduğu yetenekli bir programlayıcı. Bu derste PICkit 2 programlayıcısı ile nasıl Arduino ve ATMEGA serisi yongaları programlayabileceğinizi anlatmaya çalışacağım.

Malzeme listesi

  • Pic Kit2 programlayıcı ve kablosu
  • Yarım boy deneme kartı
  • ATMEGA328P mikro denetleyici
  • 10 kΩ Direnç
  • 220 Ω Direnç
  • 5mm kırmızı led
  • 16 Mhz kristal
  • 22 pF Sığaç (kondansatör) (2 adet)
  • 1×6 Bağlantı Ucu
  • Kablo

pk2cmd ve avrduda programının kurulumu

Ubuntu altında PICKit2 kullanarak ATMEGA serisi yongaları programlayabilmek için iki tane yazılım kurmanız gerekebilir. Derleyici yazdığımız programları hex uzantılı dosyalara çeviriyor. Derleyici olarak avrdude programını kullanacağız. Derleyici kurulumu için

$ sudo apt-get install avrdude

yazmamız yeterli.

pk2cmd programı ise oluşturulan hex dosyasını mikro denetleyiciye atarak programlıyor.Şimdi bu programın kurulumuna bakalım.

Bu programı kurduğumuzda /usr/local/bin dizinine kuruyor. Linux çalıştırılabilir dosyaların listesini '$PATH'' ortam değişkeni içinde tutuyor. Bu nedenle eğer programı kuracağımız dizin ''$PATH'' içinde yoksa eklememiz gerekecek.

$ echo $PATH
/home/erdem/bin:/usr/local/bin:/usr/bin:/bin:/usr/games

Eğer ''$PATH'' içinde /usr/local/bin göremiyorsanız bir editörle ev dizinizdeki .profile dosyasını açarak aşağıdaki satırları ekleyin.

$ gedit ~/.profile

export PATH=$PATH:/usr/local/bin

Değişikliklerin etkili olabilmesi için bilgisayarı, ya da oturumu kapatıp tekrar açmamız gerekecek.

pk2cmd programını kaynak kodundan derleyerek kuracağız.İlkönce eğer kurulu değilse libusb-dev kütüphanesini kurmanız gerekebilir.

$ sudo apt-get install libusb-dev

Komut satırından yazılımı indirip açıp kurmak için aşağıdaki komutları verelim.

$ wget http://ww1.microchip.com/downloads/en/DeviceDoc/pk2cmdv1.20LinuxMacSource.tar.gz
$ tar xf pk2cmdv1.20LinuxMacSource.tar.gz
$ cd pk2cmdv1.20LinuxMacSource
$ make linux
$ sudo make install
$ sudo cp /usr/share/pk2/PK2DeviceFile.dat /usr/local/bin/

Bu noktada PIC kit2'yi takıp her şeyin PIC kit2'nin algılandığını teyit etmek için aşağıdaki komutları verebilirsiniz.

$ pk2cmd -?V
Executable Version:    1.20.00
Device File Version:   1.55.00
OS Firmware Version:   2.32.00
Operation Succeeded

USB erişimi ile ilgili hatayı giderme

Linux altında yetkili kullanıcı olmadan normal kullanıcı olarak PIC Kit2'yi kullanmak istediğinizde aşağıdaki gibi bir hata mesajı alabilirsiniz.

Could not set configuration. Error code -1, could not set config 1: Operation not permitted.
You may need to run avrdude as root or set up correct usb port permissions.Could not claim interface.
Error code -1, could not claim interface 0: Operation not permitted
You may need to run avrdude as root or set up correct usb port permissions.

Bu hatanın nedeni sadece yetkili kullanıcıya aygıta yazma hakkının verilmiş olmasından kaynaklanıyor.

lsusb komutu ile PIC Kit2'nin veriyolu ve aygıt numarasını öğrenebiliriz.

$ lsusb
Bus 005 Device 003: ID 04d8:0033 Microchip Technology, Inc. PICkit2

Yukarıya baktığımızda veriyolu numarasının 005 ve aygıt numarasının 003 olduğunu görebiliyoruz. Denemek için kontrol edelim.

$ ls -al /dev/bus/usb/005/003 
crw-rw-r-- 1 root root 189, 514 Eki  1 20:56 /dev/bus/usb/005/003

Gerçekten de şimdilik sadece yetkili kullanıcının yazma hakkı olduğunu görebiliyoruz. Geçici çözüm olarak aygıt izinlerini elle şu komutla değiştirebiliriz. Ancak bu seferde aygıtı her takıp çıkarttığımızda bu komutu tekrarlamamız gerekiyor.

$ sudo chmod 666 /dev/bus/usb/005/003

Kalıcı çözüm

Kalıcı çözüm için aygıt yöneticisi kuralı eklememiz gerekiyor. Bunun için aşağıdaki komutu vererek PIC Kit2 için bir aygıt yöneticisi kuralı oluşturalım. Burada emacs kurulu değilse nano gibi başka bir metin düzenleyici de kullanabilirsiniz.

$ sudo emacs /etc/udev/rules.d/99-PICkit2.rules

Oluşturduğumuz kütüğün içine de şunları girip kaydedelim.

# PICKit2 için grup oluştur
SUBSYSTEM=="usb", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="0033", GROUP="dialout"

Ubuntu'da dialout grubu modem, avuçiçi aygıtlar gibi seri ve USB aygıtları kullanma izni olan ekibi belirtiyor.

Son olarak da kendimizi bu gruba ekliyoruz.

$ sudo gpasswd -a erdem dialout

Değişikliklerin etkili olması için bilgisayarını kapatıp açabilirsiniz.

Devreyi kuralım

PIC Kit2'yi deneme tahtasına takmak için 6'lı bağlantı uçlarını hafifçe kıvırabilirsiniz. Yeşil üçgene dikkat edin PIC Kit2'nin 1 numaralı ucunu gösteriyor.

Pic Kit2 bağlantı uçları

Burada PIC Kit2'nin 2 numaralı VDD ucunu kullanmak isteğe bağlı. Eğer devreyi başka bir kaynaktan besleyecekseniz bunu kullanmaya gerek yok.

Arduino işletim sisteminin yükleyelim

Eğer aldığınız ATMEGA328P boşsa işletim sistemi yüklemek gerekecek. Eğer zaten programlandıysa bu adımı atlayabilirsiniz.

Arduino yazılımını kurduğunuz dizinin arduino-1.6.12/hardware/arduino/avr/bootloaders/optiboot alt dizinine gidelim. Burada optiboot_atmega328.hex kütüğü ile aldığımız ATMEGA328P'ye eğer boşsa işletim sistemi yükleyebiliriz.

$ avrdude  -c pickit2 -p m328p -e -u -U lock:w:0x3f:m -U efuse:w:0x05:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m -U flash:w:optiboot_atmega328.hex

PIC Kit2 ile arduino programlayalım

PIC Kit2 ile Arduino programlamak için sizin için bir make kütüğü hazırladım.

$ git clone https://github.com/erdemoncel/arduino
$ cd arduino/
$ emacs ilkprogram.cc

Bu dosyaları indirdikten sonra ilkprogram.cc dosyasında ledin bağlı olduğu kapıyı 9 numaralı ikili çıkış kapısı olacak şekilde belirliyoruz. Çıkarken de kaydetmeyi unutmayın.

#include `<Arduino.h>`
/*
PIC Kit2 ile Arduino programlama

*/

int ledCikis = 9;

void setup()
{
    pinMode(ledCikis, OUTPUT);
}

void loop()
{
    digitalWrite(ledCikis, HIGH);
    delay(1000);
    digitalWrite(ledCikis, LOW);
    delay(1000);
}

Programı derlemek ve hex dosyasını mikrodenetleyiciye yüklemek için sadece

$ make nano

komutunu vermeniz yeterli. Durdurmak için de make dur komutunu verebiliriz.

Bu komutu verdiğinizde eğer ARDUINODIR dizinini bulamadığını söylüyorsa

ARDUINODIR is not set correctly; arduino software not found

ve yukarıdakine benzer bir hata iletisi alıyorsanız bir bağ oluşturmanız gerekecek.

$ sudo ln -s /home/erdem/İndirilenler/arduino-1.8.5 /usr/share/arduino

Burada Arduino hangi dizinde kuruluysa o dizine bir bağ vermeniz gerekebilir. Benim verdiğim örnekte indirilenler dizininde kuruluydu.

Make kütüğü kullanmadan hex dosyasını mikrodenetleyiciye yüklemek isterseniz aşağıdaki komutu kullanarak yapabilirsiniz:

$ avrdude -c pickit2 -p m328p -v -V -U flash:w:"dosya.hex":a

Sorun giderme

Bağlantılarda eksiklik var

avrdude: MicroChip's PICkit2 Programmer firmware version 2.32.0
program_enable(): sending command. Resp = ff ff ff ff 
avrdude: initialization failed, rc=-2
         Double check connections and try again, or use -F to override
         this check.

Eğer bu hatayı alıyorsanız büyük ihtimal PIC Kit2 ya da kablolarla da bir bağlantısızlık olabilir. Tüm kabloları çıkartıp tekrardan dikkatlice devreyi kurmanızı tavsiye ederim.

PIC Kit2 meşgul ışığı yanıp sürüyor

PIC Kit2 üzerindeki meşgul ışığı (kırmızı olan) bir saniye aralıklarla yanıp sönüyorsa bu sağlıklı çalışan bir işletim sistemi olmadığını gösteriyor.

Yeni işletim sistemini buradan indirebilirsiniz.

İşletim sistemini yüklemek için şu komutu vermeniz gerekiyor.

$ pk2cmd -D PK2V023200.hex

Eğer işletim sistemi yüklendiyse aşağıdaki gibi bir çıktı görebilirsiniz.

Downloading OS...
Verifying new OS...
Resetting PICkit 2...
OS Update Successful.
Operation Succeeded

Yorumlar

yorum yaz

Yorum yaz

Henüz yorum yok.