BeagleBone İlk İncelemeler

Bu yazımızda Texas Instrument firmasının piyasaya çıkardığı BeagleBone Rev. A3 cihazını inceleyeceğiz. Üzerinde 720MHz superscalar ARM Cortex™-A8 tabanlı AM3359 işlemcisi bulunmaktadır.

Gelecekte şu an kullandığımız MCU ların yerini alacak ürünlerin başında gelmektedir. Düşük maliyet ve yüksek hız bizi bu cihazlara çekecek en büyük etmenler olacaktır. BeagleBoard serisi cihazlar single-board computer sloganıyla piyasaya çıkmış ve daha çok mikro denetleyicileri ve donanımları kontrol etme amacıyla sunulmuştur. BeagleBone ise bu özelliklerin yanında mikro denetleyicilerin yerini alması için tasarlanmış bir cihazdır. İşlemci programlama adına kolaylıklar eklenerek oluşturulmuştur. Bu bakımdan daha popüler olacaktır.

Ayrıca üzerinde dahili debugger bulunmaktadır. Buda yeni bir özellik olup bize programlama adına çok büyük avantajlar sağlayacaktır.

 

BeagleBone Donanımı

  • BeagleBone üzerinde 720MHz AM3359 işlemci bulunuyor. Cihaz üzerindeki gücü verme şeklimize göre bu hız 500 ile 720 Mhz arasında değişiklik göstermektedir. Ayrıca üzerinde 256Mb 400MHz DDR2 ram bulunuyor. Bu özellikleri düşündüğümüzde oldukça güçlü bir cihaz olduğunu söyleyebiliriz. Ayrıca kullanılan işlemcinin 5$ olduğunu düşündüğümüzde düşük maliyet bazında da ilgi çekecektir.

AM3359 Datasheet

  • Cihaz üzerinde Debug özelliği mevcut. Dahili JTAG- USB debug desteği sağlıyor. Bu özellikle birlikte Code Composer Studio ile birlikte çalışma fırsatı tanıyor.  Aynı zamanda cihazımızı MCU gibi programlayıp CCS ile birlikte debug edebilecek ve kullanabileceğiz.
  •  Üzerinde dahili ethernet portu ile geliyor. Ayrıca I2C,  PWM, SPI, LCD, MMC, ADC(4), seri port(3), GPIO(65) çıkışları mevcut. Ağırlığı ise sadece 40gr.
  • Üzerinde TPS65127 güç yönetim cihazı bulunuyor. Bu cihaz, sistemin gücünü sağlayabilmek için ayrık LDO  kullanıyor.

 

BeagleBone Paket İçeriği

  • BeagleBone
  • Önceden içerisine Angstrom işletim sistemi kurulmuş 1 adet 4Gb MMC kart
  • İçerisinde CCS 5, StarterWare ve gerekli BeagleBone dökümanlarının olduğu 1 adet 4Gb MMC kart
  • 1 adet mini USB – USB dönüştürücü kablo
  • BeagleBone taşıma kabı ( gerçekten çok güzel:) )

Aslında dışarıdan temin edilmesi gereken tek şey ethernet kablo olacaktır. Fakat cihaz modem bağlantısı istiyor. Hem cross kablo hemde normal ethernet kablosuyla bilgisayarıma bağladım fakat aralarında bağlantı kuramadım. Modeme de uzak olduğum için bir router kullanmak zorunda kaldım.

 

BeagleBone İlk Kurulum

Ethernet ve USB bağlantılarını yapıyoruz. Cihaz bağlantılarını yaptıktan sonra Angstrom OS yüklü olan MMC kartı cihazımıza yerleştiriyoruz ve cihazı çalıştırıyoruz. İlk olarak BeagleBone için sürücü yüklememiz gerekiyor. Host bilgisayar olarak Ubuntu 10.04 kullandığım için ubuntu için bir sürücü yüklemesi yapacağım. FTDI sürücüsünü tanıtmak için terminalden aşağıdaki kodu yazıyoruz.

sudo modprobe ftdi_sio vendor=0×0403 product=0xa6d

Rev. A5 cihazlar için geçerli değil falat incelememizde Rev. A3 cihaz kullandığımız için bir ayar daha yapmamız gerekiyor. Sistem her boot edildiğinde sürücünün çalışması için /etc/udev/rules.d/73-beaglebone.rules oluşturup içerisine sürücü komutlarını yazmamız gerekiyor.

[codesyntax lang=”text”]

ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_interface", \
        ATTRS{idVendor}=="0403", ATTRS{idProduct}=="a6d0", \
        DRIVER=="", RUN+="/sbin/modprobe -b ftdi_sio"

ACTION=="add", SUBSYSTEM=="drivers", \
        ENV{DEVPATH}=="/bus/usb-serial/drivers/ftdi_sio", \
        ATTR{new_id}="0403 a6d0"

ACTION=="add", KERNEL=="ttyUSB*", \
	ATTRS{interface}=="BeagleBone", \
        ATTRS{bInterfaceNumber}=="00", \
	SYMLINK+="beaglebone-jtag"

ACTION=="add", KERNEL=="ttyUSB*", \
	ATTRS{interface}=="BeagleBone", \
        ATTRS{bInterfaceNumber}=="01", \
	SYMLINK+="beaglebone-serial"

[/codesyntax]

Ardından dosyayı aktif hale getirecek komutu terminalden giriyoruz.

sudo udevadm control –reload-rules

Artık sürücümüzü host üzerinde tanıtma işlemini bitirdik. Şimdi hangi UART portuna bağlandığını görebilmek için terminale aşağıdaki kodu yazıyoruz.

dmesg | grep FTDI | grep “now attached to” | tail -n 1 | awk ‘{ print $NF }’

Bu komutla birlikte bize hangi porttan bağlandığını gösterecektir. Terminalde ttyUSB0,ttyUSB1 gibi port değerleri görecceğiz. Daha sonra öğrendiğimiz port değerini dinlemek için screen komutunu kullanıyoruz. Cihazımız 115200 Baud 8N-1 de çalışıyor. Gerekli ayarları terminalden giriyoruz.

screen /dev/ttyUSB1 115200

Artık cihazımıza UART üzerinden bağlanmış durumdayız. Cihaz üzerindeki reset tuşuna basıyoruz ve boot işlemlerini gözlemliyoruz. Boot işlemleri bittikten sonra karşımıza kullanıcı adı soran bir ekran gelecektir root yazıyoruz enter a basıyoruz. Şifre istemeyecektir. Böylelikle cihaz üzerindeki terminale erişmiş olacağız.

Üzerindeki demo uygulamayı çalıştırmak için yine yeni bir özellik olan Cloud IDE yi çalıştırıyoruz. Bunun için cihaz ile ethernet bağlantısı sağlamamız gerekiyor. Cihazın IP si üzerinden bu IDE ye bağlanacağız. Bunun için açılan BeagleBone konsolundan ip sini öğrenmemiz gerekiyor.

ifconfig eth0 | grep inet

Bu komut bize ip yi yerecektir. Bunula birlikte host bilgisayar üzerinde internet adres çubuğuna bu ip yi yazarak cloud ide yi çalıştırıyoruz. Cloud ide üzerinde blinked.js dosyasını açalım. Bu ara yüz javascript ile BeagleBone programlamak için kullanılıyor.

[codesyntax lang=”javascript”]

var bb = require('./bonescript'); //

var ledPin = bone.P8_3; //
var ledPin2 = bone.USR3; //

setup = function() {
    pinMode(ledPin, OUTPUT); //
    pinMode(ledPin2, OUTPUT); //
};

loop = function() {
    digitalWrite(ledPin, HIGH);//
    digitalWrite(ledPin2, HIGH);//
    delay(1000);//
    digitalWrite(ledPin, LOW);
    digitalWrite(ledPin2, LOW);
    delay(1000);
};

bb.run();

 

[/codesyntax]

Demo uygulama port 8 üzerindeki 3. pin ile USR3 pininin 1 sn arayla yanıp sönmesi üzerine yapılmış. Basit bir kod. IDE nin üst tarafındaki run butonuna bastığımızda USR3 ün 1 sn aralıklarla yanıp sönmesini görebiliriz. Aynı zamanda eğer elimizde led varsa 3. pin üzerinde de aynı işlem gerçekleşecektir.

Linux Shell Üzerinden GPIO Kontrolü

Linux kernel derlerken sisteme işlemcinin mux ayarları da eklenirse işlemciyi terminal üzerinden kontrol etme imkanımız oluyor. Kullandığımız işletim sisteminde bu dosyalar var olduğu için şu aşamada ayrıca kernel derlemeye ihtiyacımız yok. Sadece shell komutlarını bilmemiz gerekiyor.  Mesela bu sefer port 8 deki 3. pini shell üzerinden çalıştıralım.

Klasik MCU mantığı ile yaklaşacağız. Öncelikle seçeceğimiz GPIO pinini belirlememiz gerekiyor. Bunun için system reference manual üzerinden GPIO pinini bulmamız gerekiyor.

GPIO adresi linux üzerinde bi hesaplama ile bulunuyor.

Örnek:

  • GPIO1_6 = 1 * 32 + 6 = 38
  • GPIO3_17= 3 * 32 + 17 = 113

Yani çalışacağımız GPIO ismi GPIO38 olacaktır. Böylelikle hazırlıklarımızı tamamladık. Artık sistemde çalıştırabiliriz. Öncelikle o pini kullanacağımızı belirtiyoruz.

echo “38″ > /sys/class/gpio/export

Daha sonra  belirlediğimiz pinin input mu, output mu olduğunu sisteme belirteceğiz.

 echo “out” > /sys/class/gpio/gpio38/direction

Son olarak ise değerini 1 yapıyoruz. Ve ledimizi yakıyoruz.

echo “1″ > /sys/class/gpio/gpio38/value

 

Linux Shell Üzerinden ADC Kontrolü

Bu kısımda pot üzerindeki değer değişimlerini gözlemleyeceğiz. Basit bir devre üzerinde bu işlemleri yapacağız. İlk olarak ADC kullanımı için ayrılmış pinleri tanıyalım. BeagleBone üzerindeki analog inputların max. volyajı 1.8 volt olmak zorundadır. Aksi halde cihaza zarar verebiliriz. ADC için ayrılmış 1.8volt çıkış veren bir pin beagle bone üzerinde var.

 

AIN serisi analog input girişlerini temsil ediyor. Daha sonra 32 ve 34. pinlere baktığımızda beslemesini ve ground hattını bulabiliriz. Bu pinler yardımıyla cihazımızı çalıştıracağız. AIN üzerinden akım ölçümü yapacağız da diyebiliriz.

Uygulamamızda port 8 pin 32 den 1.8volt alacağız. 34. pin üzerinden ground alacağız. Ve 39. pin üzerinden ain1 pinine bağlanacağız.

Öncelikle ain pinlerini dinleceğimiz shell kısmına gidiyoruz.

cd /sys/devices/platform/tsc

Daha sonra dinlemek istediğimiz pin numarasını cat komutuyla birlikte kullanıyoruz.

cat ain1


You May Also Like

About the Author: tunayan

Leave a Reply

Your email address will not be published. Required fields are marked *