You are on page 1of 27

indekiler

1.1 Beagleboard ve DONANIM ...............................................................................................1 1.2 SSTEMN BALATILMASI (BOOT) ...................................................................................... 3 1.2.1 Beagleboardu Fabrika Ayarlarna dndrmek............................................................... 4 1.2.2 Nand Boot ...................................................................................................................... 5 1.2.3 Mmc Boot ...................................................................................................................... 6 1.3 LNUX DAITIMALARI ....................................................................................................... 6 1.3.1 ANGSTROM .................................................................................................... 6 1.3.2 ANDROID ..................................................................................................... 7 1.3.3 UBUNTU .................................................................................................... 8 2.1 Python Programlama Diline Genel Bak............................................................................ 9 2.2 Kullanld Alanlar ............................................................................ 9 2.3 Yorumlaycnn altrlmas ............................................................................. 9 2.4 Szdizimi ...............................................................................10 2.4.1 Girintileme .............................................................................. 10 2.5 fadeler ve ak kontrol .................................................................................. 10 2.6 Modller ............................................................................... 11 2.7 Giri ve k ............................................................................... 13 2.8 Dosya Okuma ve Yazma ................................................................................ 15 2.8.1 Dosya Nesnelerinin Metodlar .............................................................................. 16 2.9.1 Sunucu(Server) Program.18 3 Ardunio ...20 3.1 Ardunio nedir?.20 3.2 Neden Ardunio?................................................................................................................21 4 Kablosuz Balant...23 4.1 Kablosuz a(wireless network)...23 4.2 Kullandmz kablosuz a(wireless network)nn zellikler 23 5 Motor Srcs25 6 Sonu .25 Referanslar..26

1.1) Beagleboard ve DONANIM

BeagleBoard Texas Instruments ve Digi-Key tarafndan retilen dk g tketimli bir tek kart bilgisayardr. Texas Instruments'in OMAP3530 platformunu tantmak, ak kaynak donanm ve yazlmlarn yapabileceklerini gstermek ve eitim ve hobi amal kullanm iin bir grup Ti mhendisi tarafndan gelitirilmitir. Creative Commons SharedAlike lisansyla satlmaktadr. Beagle, ad Keltce bir szck olan ve "kk" anlamna gelen "beag"'den tretilmi olan bir kpek trdr. Beagle herkesi seven, nazik, tatl, hayat dolu ve merakl bir kpektir. BeagleBoard 3" boyutunda ufak ama gl ve yetenekli bir cihaz olduu iin benzerlikten dolay bu kpein maskot olarak seildii dnlmektedir. BeagleBoard basit bir bilgisayarn yapabilecei btn ilevleri yerine getirebilir. OMAP 3530 ilemci olarak ARM Cortex A8 (zerinde Windows, Linux veya Symbian altrabilir). Beagle Board ARM (OMAP3530) ilemci tabanl orta seviye bir uygulama kartdr. Bu kart Linux iletim sistemi destei sayesinde normal bir bilgisayar gibi kullanlabilir. Temel olarak 167 MHZ ilemci (yeni srmlerde 600 MHZ e kadar kyor), Monitr iin DVI k, 128 MB Ram ve 256 MB Nand flash hafzas vardr. Ayrca SD ya da MMC kart balanabilmektedir. Mini USB k ile birok evre aygtna destek vermektedir. Ses giri k portlar vardr. S-Video k yine grnt aygtlarna balanmay salar. DC in yazan giri elektrik almak iin kullanlr. Ayn zamanda USB 5V olduu iin USB giriini de g girii olarak kullanabilirsiniz. RS 232 ise seri port giriidir. Sol tarafta geniletme deliklerini gryorsunuz bunlara pin balayarak dier donanm aygtlarn balant yaplabilir. Bu geniletme portlar genel amal giri k aygt (GPIO) olarak da kullanlabilir. Kullancnn eriiminde iki tane LED vardr. Bunlar basit bir komut ile ap kapayabilirsiniz. JTAG emlatr girii sayesinde JTAG standard ile programlarn hatalarn ayklama imkn salar. Reset tuu beaglen programn batan balatr. MMC den balatmak iin ayrca bir de USER tuu konulmutur. SDRAM 0x80000000 adresinden balar. Buraya yazlan bir ekirdek direk olarak boot edilebilir. DVI-D Framer adl yonga Omap ilemciden gelen ilenmemi LCD verisini DVI formatna evirir. Yeni srm kartlarda usb host balants da eklenmitir.

Beagleboard Teknik zellikleri


TI OMAP3530 lemci - 720 MHz ARM Cortex-A8 'HD Destei' TMS320C64x+ ilemci (520 MHz, 720p @30 fps)

PowerVR SGX 2D/3D ekran kart (oklu ekran destei) 256 MB LPDDR RAM hafza 256 MB NAND Flash hafza D Balantlar DVI-D (HDMI maksimum znrk1280x1024)

S-Video USB OTG (mini AB) 1 USB portu SD/MMC kart girii Stereo ses giri / k RS232 portu JTAG balant noktas G Girii (5V)

Yazlm

ROM ierisinde boot argmanlar

NAND hafzadan boot olabilme, SD/MMC, USB veya Seri porttan boot olabilme Alternatif boot ilemleri iin tu Kullanlabilir iletim sistemleri; Linux: Android*, Angstrom*, Fedora, Ubuntu*, Gentoo ve Maemo Windows: Windows CE Dier: Symbian, QNX, RISC OS Open

* Kurulum ilemleri yaplan ve altrlan iletim sistemleri


1.2 SSTEMN BALATILMASI (BOOT) Beagleboardun alabilmesi iin boot ayarlarnn yaplm olmas gereklidir. Bu ilem ise RS232 ile baladmz bilgisayar aracl ile yaplabilmektedir. RS232 zerinden veri alveriini salamak iin bilgisayara ykl bir terminal program gereklidir. Linux altnda minicom adl terminal programn kullandk. Minicom program konsol zerinden alan bir terminal programdr. Minicom programnn usb seri porttan almas iin minicom s komutu ile seri port ayarlar yaplmaldr. Bizim minicom iin seri port ayarlarmz aadaki gibidir: (minicom programnn kts)

+---------------------------------------------------------------------+ | A - Serial Device | B - Lockfile Location | C - Callin Program | D - Callout Program | E - Bps/Par/Bits : /dev/ttyUSB0 : /var/lock : : : 115200 8N1 | | | | | | | | |

| F - Hardware Flow Control : No | G - Software Flow Control : No | | Change which setting?

+---------------------------------------------------------------------+

Minicomda gerekli ayarlarn yaplmasndan sonra donanm balantlar tamamlanp beagleboarda g taklr. Bu ilem sonucu aadaki gibi bir kt grlmektedir:

Texas Instruments X-Loader 1.41 Starting OS Bootloader... U-Boot 1.3.3 (Jul 10 2008 - 16:33:09) OMAP3530-GP rev 2, CPU-OPP2 L3-165MHz OMAP3 Beagle Board + LPDDR/NAND DRAM: 128 MB NAND: 256 MiB In: serial Out: serial Err: serial Audio Tone on Speakers ... complete OMAP3 beagleboard.org #

Grld gibi ilk olarak X-loader ykleniyor sonra U-Boot a gei yapyor. Bu programlar standart olarak NAND hafzas zerindedir. Gncel programlara sahip olmak hatalar azaltmak iin daha avantajl olacaktr.Bundan sonra yklenmesi gereken Linux ekirdeidir. Ardndan dosya sistemi ekirdee balanmaldr. Bunun yaplmas iin MMC kartn iki blme ayrlmas ilk blmnn FAT32 dosya sistemi ile biimlendirilmesi ikinci blmnn ise EXT3 ya da EXT2 Linux dosya sistemi ile biimlendirilmesi gerekmektedir. MMC diskin FAT ksmna MLO, u-boot.bin, uImage ve rd (ram disk) dosyalar ikinci blme ise dosya sistemi kopyalanmaldr.

1.2.1 BeagleBoardu fabrika ayarlarna dndrmek: 1) Gerekli dosyalar buradan http://dl.dropbox.com/u/1449225/beagleboard%20factory%20reset.tar.gz indirip an 2) Dosyalar SD kartnzn FAT dosya sistemine sahip ilk blmne kopyalayn 3) Kart bilgisayardan karp beagleboard'a takn 4) beagleboard'un gcn kesip USER tuuna basl tutun 5) USER tuundan elinizi ekmeden g kablosunu takn 6) Beagleboard almaya baladnda elinizi butondan ekip beagleboard'un boot olmasn bekleyin. Boot ilemi bittiinde kart ierisindeki betikler NAND hafzas fabrika ayarlarna dnm olacaktr. 7) imdi kartnz karp beagleboard'u yeniden balatabilirsiniz. Beagleboard u-Boot ile boot olacaktr.

1.2.2 NAND BOOT BeagleBoardun standart olarak NAND zerinden balamaya ayarlanmtr. NAND kartn ierisinde bulunan kalc hafzadr. Eer buradan balatma ilemi baarsz olursa sra ile UART, USB, MMC yollarn dener. stendii takdirde a zerinden de sistemi balatmak mmkndr. Kart Xloader ve U-boot programlar fabrika ayar olarak geldiinden eer bozmadysanz NAND hafzadan bu programlar balatacaktr.

Boot Parametreleri; Boot parametreleri Linux ekirdeinin balarken uyaca kurallar belirler. Bunlar evre Deikenleri denilen stringlerde tutulur. imdi gelen OMAP3 beagleboard.org # satr bir komut sistemidir. Burada help yazarak btn komutlar grebilirsiniz. printenv ya da ksaca p komutu evre deikenlerini gstermeyi salar. Aada bizim rnek evre deikenlerimiz vardr. Biz beagleboardumuzu farkl modlarda kullanmak iin normalde kullanlandan fazla evre deikeni ekledik. Bylece run komutunu kullanarak bu evre deikenlerini sanki bir scriptmi gibi altrabiliyoruz.

OMAP3 beagleboard.org # printenv bootm=mmcinit;fatload mmc 0 0x80000000 i;fatload mmc 0 0x81600000 rd;bootm 0x80000000 anotherbootargs=setenv bootargs console=ttyS2,115200n8 noinitrd root=/dev/mmcblk0p2 rootfstype=ext2 rw rootdelay=2 bootmmc=mmcinit;fatload mmc 0 0x80000000 i;run anotherbootargs;bootm android=setenv bootargs console=ttyS2,115200n8 noinitrd root=/dev/mmcblk0p2 video=omapfb.mode=dvi:1280x720MR-24@50 init=/init rootfstype=ext3 rw rootdelay=1 nohz=off androidboot.console=ttyS2 bootandroid=mmcinit;mmc init;fatload mmc 0 0x80000000 uImage bootargs=console=ttyS2,115200n8 noinitrd root=/dev/mmcblk0p2 video=omapfb.mode=dvi:1280x720MR-24@50 init=/init rootfstype=ext3 rw rootdelay=1 nohz=off androidboot.console=ttyS2 filesize=1D2AAC bootcmd=run android;run bootandroid;bootm stdin=serial stdout=serial stderr=serial

Burada biz birok zellii destekleyecek ekilde yazm olduumuz evre deikeni sistemini gryorsunuz. Temel olarak iki evre deikeni aktiftir bunlar: 1. Bootcmd = bu deiken program baladnda otomatik olarak arlacak komutlar tutar. Bu komutlar noktal virgl ile ayrlmtr. 2. Bootargs = Linux ekirdeine gnderilen evre deikenidir. Konsol, balanma noktas, dosya sistemi tipi, znrlk ayar gibi zellikleri tutar. Bu evre deikenlerini kullanarak sistemin nereden balayaca belirlenir. Ana dizin ram zerinde, MMC zerinde ya da bir a aygt zerinde olabilir.

1.2.3 MMC BOOT MMC BOOT Xloader ve Uboot programlarnn MMC diskten ykleyerek balamak demektir. USER tuuna basldnda Boot sras deiecek ve MMC den balatma ncelikli olacaktr.(Aslnda USB UART MMC NAND srasnda) ncelikle MMC den balatabilmek iin MLO dosyasnn formatlanm blme ilk olarak atlmas gerekmektedir. Bunun yaplmas iin MMC kartn iki blme ayrlmas ilk blmnn FAT32 dosya sistemi ile biimlendirilmesi ikinci blmnn ise EXT3 ya da EXT2 Linux dosya sistemi ile biimlendirilmesi gerekmektedir. Birinci blm formatlayp boot edilebilir ekilde iaretledikten sonra MLO, u-boot.bin dosyasn ve uImage dosyasn sra ile koyun. Sonra RESET tuuna USER tuu ile birlikte basn MMC BOOT yazdn greceksiniz. Bundan sonra artk U-loader MMC den balatlmtr geri kalan ekirdek yklenmesi NAND boot da olduu gibidir.

1.3 LNUX DAITIMALARI 1.3.1 ANGSTROM DAITIMI Angstrm iletim sistemi Embedded Sistemler iin gelitirilmi bir iletim sistemidir. Yaklak 500 MB yer kaplyor. u anki en son ekirdek srm 2.6.29. Beagle Boardn btn donanmlarn destekliyor. Web sitesi: http://www.angstrom-distribution.org/ Beagleboard'umuza kendimize zel angstrm iletim sistemini kurmak iin ncelikle aadaki adrese girmemiz gerekmektedir. http://narcissus.angstrom-distribution.org/

1.3.2 ANDROID

Linux tabanl iletim sistemininde androidin indirilmesi derlenmesi; Projemizde androidin zel bir srm olan Rowboat kullanlmtr. lgili programlarn kurulu olmas(pyhton 2.4 java sdk 5, git 1.5.4 veya zeri ) lgili paketlerin kurulmas (Ubuntu 8.4 ve zeri iin gerekli paketlerin kurulumu iin gerekli paketlerin karlanmas iin terminale yazlmas gereken kodlar: $sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gccmultilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11dev lib32readline5-dev lib32z-dev ) Google repository'lerinin yklenmesi

$wget https://dl-ssl.google.com/linux/google-repo-setup.sh $bash google-repo-setup.sh

Android'in repo'ya eklenmesi

$ curl http://android.git.kernel.org/repo > ~/bin/repo $ chmod a+x ~/bin/repo

Yeni bir klasr ap klasr ierisine girilmesi

$ mkdir klasor-ismi $ cd klasor-ismi

rowboat projesinin bilgisayara indirilmesi iin gerekli terminal kodlar

$ repo init -u git://gitorious.org/rowboat/manifest.git -m ManifestName $ repo sync burada ManifestName ksmna hangi srm kurmak istiyorsak o srm yazmamz gerekmektedir;

rowboat-donut.xml - rowboat projesinin donut versionu iin rowboat-donut-dsp.xml - rowboat projesinin DSP destei olan donut versionu iin rowboat-eclair.xml - rowboat projesinin eclair versionu iin rowboat-eclair-dsp.xml - rowboat projesinin DSP destei olan eclair versionu iin rowboat-froyo.xml - rowboat projesinin donut versionu iin rowboat-froyo-dsp.xml - rowboat projesinin DSP destei olan donut versionu iin

1.3.3 UBUNTU

Ubuntu olduka popler bir Linux datmdr. Bu datmn beagleboarda ve dier ARM tabanl kartlara kurulabilir olmas olduka avantajl bir durumdur. Websitesi: http://cdimage.ubuntu.com/ubuntu-netbook/ports/releases/ Verilen adresten istenilen ubuntu versiyonu indirilip kurulur. ndirilen majn Hafza Kartna Yazdrlmas Ubuntunun yeni versiyonlarnn ARM tabanl sistemlere uyarlanm halleri en az 4GB hafza kart kullanlmaldr. Admlar: 1. 2. 3. 4. SD kart bilgisayara taklr Kart donanmsal olarak takl fakat iletim sistemine mount edilmemi olmaldr. Donanm ismi doru ekilde girilir (like /dev/sdb) Aadaki komut terminal penceresine girilir:

sudo sh -c 'zcat ./ubuntu-netbook-10.10-preinstalled-netbook-armel+<omap image>.img.gz >/dev/<device name>'

Bizim donanmmz iin bu komut aadaki gibi olmaldr. sudo sh -c 'zcat ./ubuntu-netbook-10.10-preinstalled-netbook-armel+omap.img.gz >/dev/sdb'

Gerekli komutlar girildiinde dosya aktarm bitene kadar beklenir ardndan aadaki komut girilir sync Ardndan Beagleboarda g verilir ve Ubuntu netbook srm alr.

2.1 Python Programlama Diline Genel Bak Python, nesne ynelimli, yorumlanabilen, birimsel (modler) ve etkileimli bir programlama dilidir. Girintilere dayal basit szdizimi, dilin renilmesini ve aklda kalmasn kolaylatrr. Bu da ona sz diziminin ayrntlar ile vakit yitirmeden programlama yaplmaya balanabilen bir dil olma zellii kazandrr. Python programlama dili adn bir srngenden deil, `Monty Python's Flying Circus'' adl bir BBC komedi dizisinden almtr. Python ile programlarnz daha sonra dier Python programlarnzda tekrar kullanabileceiniz modllere ayrabilirsiniz. Python geni bir standart modl koleksiyonu ile size gelmektedir. Dosya giri/k, ses, resim, matematiksel ilemler vs. ile ilgili modller de vardr. Python yorumlanan bir dil olduu iin program gelitirme srasnda size nemli miktarda zaman kazandrabilir nk derleme ve balama gerekmemektedir. Yorumlaycy etkileimli olarak da kullanabilirsiniz; bylece dilin zelliklerini kolayca deneyebilir, hzl bir ekilde kk programlar yazabilir, ya da aadan-yukar program gelitirme srasnda fonksiyonlarnz test edebilirsiniz. Yorumlayc bir hesap makinesi olarak da kullanlabilir. Modler yapy, snf dizgesini (sistem) ve her trl veri alan giriini destekler. Hemen hemen her trl platformda alabilir. (Unix , Linux, Mac, Windows, Amiga, Symbian). Python ile sistem programlama, kullanc arabirimi programlama, a programlama, uygulama ve veritaban yazlm programlama gibi birok alanda yazlm gelitirebilirsiniz. Byk yazlmlarn hzl bir ekilde prototiplerinin retilmesi ve denenmesi gerektii durumlarda da C ya da C++ gibi dillere tercih edilir.

2.2 Kullanld Alanlar: Django, Zope uygulama sunucular, YouTube ve Orijinal BitTorrent istemcisi, Pardus Linux datm Python kullanan nemli projelerden bazlardr. Ayrca Google, NASA ve CERN gibi byk kurumlar da Python kullanmaktadr. Ayrca OpenOffice.org, GIMP, Inkscape, Blender, Scribus ve Paint Shop Pro gibi baz programlarda betik dili olarak kullanlr. Pek ok Linux datmnda Python ntanml bir bileen olarak gelir. 2.3 Yorumlaycnn altrlmas: Python yorumlaycsn Windows iletim siteminde Balat > Programlar > Python 2.7> izleyerek altrabilirsiniz. Python yorumlaycsnn DOS penceresinde alan olduu gibi
9

Windows ortamnda alan da vardr. Python yorumlaycs genellikle C:\Python27 gibi bir dizine kurulur. Bu dizinde python.exe ve pythonw.exe adl iki altrlabilir dosya bulunur. Python.exe altrldnda yorumlayc etkileimli kipte (interactive mode) bir DOS penceresinde alr. Pythonw.exe altrldnda ise hibir ey olmad gzlenir. Yorumlayc altrlacak olan Python programnn dosya ad parametre eklinde verilerek de kullanlabilir. rnein python.exe deneme.py gibi. Unix trevi iletim sitemlerinde ise yorumlaycy balatmak iin konsoldan python komutunu vermek yeterlidir.

2.4 Szdizimi:

Python'un son derece kolay okunabilir olmas dnlmtr. Bu yzden rnein kme parantezleri yerine girintileme ilemi kullanlr. Hatta baz durumlarda girintileme ilemine dahi gerek kalmadan kodun ilgili blm tek satrda yazlabilir. Bylece Python, program kodunuzu en az aba ile ve hzlca yazmanza imkn tanr. Python ile son derece sk ve okunabilir programlar yazabilirsiniz. Birka nedenden Python programlar edeer C veya C++ programlarndan ok daha ksadrlar:

Yksek seviyeli veri trleri ile karmak ilemler tek bir ifede ile yazlabilir. Deyimlerin gruplanmas balama/bitme deyimleri (begin, end veya {} gibi) yerine bloklarn girintili yazlmas ile salanr. Deiken veya argman bildirimlerinin yaplmas gerekmez.

2.4.1 Girintileme Python'da ifade bloklarn snrlandrmak iin ssl ayralar ya da anahtar kelimeler yerine beyaz boluk girintileme kullanlr. Belli ifadelerden sonra girinti artar; girintinin azalmas geerli blokun sonlandn gsterir.

2.5 fadeler ve ak kontrol: Python ifadeleri unlar ierir:

if ifadesi, bir kod blokunu belli bir koula bal olarak, else ve elif (else-if'n kisaltmasi) ile birlikte altrr. for ifadesi, yinelenebilir bir nesne zerinden yineleme yapar, bu srada ilgili bloktaki her geyi bir yerel deikene atar.
10

while ifadesi, koulu doru olduu srece o kod blokunu altrr. try ifadesi, eklenmi kod blokundan dolay oluan hatalar yakalar ve except maddeleriyle; ayrca finally blokundaki temizleme kodunun blok nasl sonlanrsa sonlansn altrlmasn salar. class ifadesi, bir kod blokunu altrr ve onun yerel adalann bir snfa atar, bu sayede o snf Nesne Ynelimli Programlamada kullanlabilir. def ifadesi ile fonksiyon tanmlanr. with ifadesi, bir kod blokunu bir ierik yneticine hapseder (rnein bir kod bloku altrlmadan nce bir kilit edinir ve sonrasnda bu kilidi zer) pass ifadesi bir NOP grevi grr ve geici kod bloku yerine kullanlabilir.

Her ifadenin kendi szdizimi vardr, rnein def ifadesi dier ifadelerin genelinin aksine blokunu annda altrmaz. 2.6 Modller : Python yorumlaycsn kapatp tekrar aarsanz yaptnz tanmlar (fonksiyonlar ve deikenler) kaybolur. Uzunca bir program yazmak isterseniz bunun iin programnz bir metin editr ile hazrlayp yarattnz dosyay yorumlayc girii olarak kullanrsanz daha iyi olur. Bu ileme betik (script) yazmak denir. Programnz uzadka bunu daha kolay idare etmek iin birka dosyaya blmek isteyebilirsiniz. Yazdnz bir fonksiyonu tanmn kopyalamaya ihtiya duymakszn birka programda kullanmay da isteyebilirsiniz. Bu i iin Python'da modl denen dosyalar var. Bunlara yazlan tanmlar dier modllere ya da etkileimli kipteki yorumlaycya import deyimi ile yklenebilirler. Modller .py uzantl metin dosyalardr ve ilerinde Python deyimleri ve tanmlar bulur. Bir modl ierisinde __name__ global deikeninin deeri (bir karakter dizisi) o modln adn verir. rnein, favori metin editrnz ile fibo.py adl bir dosya yaratp Python yorumlaycsnn bulabilecei bir dizine kaydedin. Dosyann ierii de u olsun:
# Fibonacci saylar modl def fib(n): # n e kadar Fibonacci serisini yazdr a, b = 0, 1 while b < n: print b, a, b = b, a+b

11

def fib2(n): # n e kadar Fibonacci serisi geri dndrr sonuc = [] a, b = 0, 1 while b < n: sonuc.append(b) a, b = b, a+b return sonuc

Yorumlaycy ap bu modl u komut ile ykleyin:


>>> import fibo

Bu fibo iindeki fonksiyon tanmlarn yrrlkte olan simge tablosuna eklemez; sadece modl ad fibo tabloya eklenir. Fonksiyonlara modl ad kullanarak eriilebilir:
>>> fibo.fib(1000) 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo'

Bir fonksiyonu sk sk kullanmak isterseniz bunu yerel bir isme atayabilirsiniz:


>>> fib = fibo.fib >>> fib(500) 1 1 2 3 5 8 13 21 34 55 89 144 233 377

Fonksiyon tanmlarnn yansra modl iinde altrlabilir ifadeler de olabilir. Bu ifadeler modln ilk kullanma hazrlanmas iin kullanlabilirler ve sadece modln ilk ykleniinde alrlar. Her modln o modl iindeki btn fonksiyonlar tarafndan global simge tablosu olarak kullanlan kendi simge tablosu vardr. Bu zellik sayesinde modl yazan kii rahatlkla modl iinde global deikenler kullanabilir. Modl kullanan dier kiilerin global deikenleri ile isim akmas olmaz. Modul iindeki global deikenlere de modulAdi.degiskenAdi eklinde ulamak ve istenirse bunlar deitirmek mmkndr. Modller dier modlleri ykleyebilirler. Btn import ifadelerinin modln (ya da betiin) bana konmas gelenektendir; ancak art deildir. Yklenen modller kendilerini ykleyen modln global simge tablosuna ekleniriler. import deyiminin bir modldeki isimleri dorudan ykleyen modln simge tablosuna ekleyen kullanm ekli var. rnek:

12

>>> from fibo import fib, fib2 >>> fib(500) 1 1 2 3 5 8 13 21 34 55 89 144 233 377

Bu kullanm ekinde yklemenin yapld modl ad yerel simge tablosuna eklenmez (yani rnekteki codefibo tanml deildir). Bir modlde tanmlanm btn isimleri de yklemek u ekilde mmkndr:
>>> from fibo import * >>> fib(500) 1 1 2 3 5 8 13 21 34 55 89 144 233 377

2.7 Giri ve k (Input Output) Bir programn ktsn sunmann birka yolu vardr; veri yazdrlabilir ya da gelecekte kullanlabilecek ekilde bir dosyaya kaydedilebilir. Buraya kadar deerleri yazdrman iki yolunu grdk: deyim ifadeleri ve print deyimi. nc bir yol da dosya nesnelerinin write() metodudur. Standart kt dosyasna sys.stdout eklinde atfta bulunulabilir. ou zaman boluklar ile biribirinden ayrlm deerlerden daha iyi biimlendirilimi bir ktya ihtiya duyulur. ktnz biimlendirmenin iki yolu var. lki btn karakter dizisi ilemlerini dilimleme ve birletirme ile yapp istediiniz herhangi bir biimi elde etmek. string standart modl karakter dizilerinin istenen stun geniliine kadar boluklar ile doldurulmasn salayan ,daha sonra deineceimiz, baz faydal fonksiyonlara sahiptir. kinci yol ise sol argman bir karakter dizisi olan % islecini kullanmaktr. % isleci sol argmann sadaki argmanna uygulanacak sprintf() tarz biim karakter dizisi olarak yorumlar ve biimleme ileminden sonra bir karakter dizisi geri dndrr. Saysal deerleri karakter dizisine evirmek iin ise deer repr() veya str() fonksiyonuna geirilebilir ya da ters trnak iareti ( ``) iine alnabilir ( repr() ile ayn etkiyi yapar). str() fonksiyonu deerlerin insan tarafndan okunabilir gsterimini geri dndrrken, repr() fonksiyonu ise yorumlayc tarafndan okunabilir gsterimini geri dndrr (veya uygun szdizim yok ise SyntaxError istisnas oluturur). nsan iin anlam ifade edecek bir gsterimi bulunmayan nesneler iin str() fonksiyonu repr() ile ayn deeri dndrr. Rakamlar, listeler ve szlkler gibi yaplar ile daha pek ok deer iin her iki fonksiyon da ayn sonucu verir. Karakter dizileri ve kayar noktal rakamlar ise iki farkl gsterime sahiptir. te birka rnek:

13

>>> s = 'Hello, world.' >>> str(s) 'Hello, world.' >>> `s` "'Hello, world.'" >>> str(0.1) '0.1' >>> `0.1` '0.10000000000000001' >>> x = 10 * 3.25 >>> y = 200 * 200 >>> s = 'The value of x is ' + `x` + ', and y is ' + `y` + '...' >>> print s Xin deeri 32.5, ynin deeri ise 40000 olsun... >>> # Ters trnaklar saylar dndaki tipler ile de alr: ... p = [x, y] >>> ps = repr(p) >>> ps '[32.5, 40000]' >>> # Karakter dizisinde ise trnaklar ve ters bl iareti eklenir: ... hello = 'hello, world\n' >>> hellos = `hello` >>> print hellos 'hello, world\n' >>> # Ters trnaklarn argman bir demet de olabilir: ... `x, y, ('spam', 'eggs')` "(32.5, 40000, ('spam', 'eggs'))"

Stunlarn arasndaki bir karakterlik boluk print tarafndan eklenir; argmanlarn arasna daima bir boluk karakteri eklenir. Bu rnek karakter dizilerinin ban boluklar ile doldurup bunlar sa tarafa dayayan string.rjust() fonksiyonunu kullanmaktadr. Buna benzer string.ljust() ve string.center() fonksiyonlar da vardr. Bunlar bir ey yazdrmaz; sadece yeni bir karakter dizisi geri dndrrler. Verilen karakter dizisi uzun ise krplmaz ve aynen geri dndrrlr; bu stunlarnzn bozulmasna sebep olmasna ramen hatal bir deer gstermekten iyidir. Byk bir deeri krpmay gerekten istiyorsanz dilimleme ile bunu yapabilirsiniz ("string.ljust(x, n)[0:n]" gibi ). string.zfill() fonksiyonu ise rakamlar ieren karakter dizilerinin ban sfrlar ile doldurur. Bu fonksiyon art ve eksi iaretlerini de dikkate alr:
>>> import string >>> string.zfill('12', 5) '00012'

14

>>> string.zfill('-3.14', 7) '-003.14' >>> string.zfill('3.14159265359', 5) '3.14159265359' % isleci u ekilde kullanlr: >>> import math >>> print 'PI saysnn yaklak deeri: %5.3f' % math.pi PI saysnn yaklak deeri: 3.142

ou biim ayn C dilindeki gibi alr ve doru veri tipinin geirilmesi gerekir; bu yaplamaz ise bir istisna oluur. %s biiminin kullanm daha rahattr; verilen argman karakter dizisi deilse yerleik fonksiyon str() ile karakter dizisine dntrlr. Genilik ya da hassasiyeti belirtmek iin * ile bir tamsay argman kullanlabilir. C dilindeki %n ve %p biimler ise desteklenmemektedir. Eer blmek istemediiniz gerekten uzun bir biim karakter diziniz varsa biimlendirmek istediiniz argmanlara konumu yerine ismiyle atfta bulunabilmeniz gzel olur. Bu aada gsterildii gibi %(isim)biim eklinde yaplabilir:
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678} >>> print 'Jack: %(Jack)d; Sjoerd: %(Sjoerd)d; Dcab: %(Dcab)d' % table Jack: 4098; Sjoerd: 4127; Dcab: 8637678

Bu zellik btn yerel deikenlerin bulunduu bir szlk geri dndren yerleik fonksiyon vars() ile beraber kullanldnda faydal olur.

2.8 Dosya Okuma ve Yazma


open() fonksiyonu bir dosya nesnesi geri dndrr ve genellikle iki argman ile kullanlr:

"open(dosya_ad, mod)"
>>> f=open('/tmp/workfile', 'w') >>> print f <open file '/tmp/workfile', mode 'w' at 80a0960>

lk argman dosya adn ieren bir karakter dizisidir. kincisi ise dosyann nasl kullanlacan belirten karakterlerden oluur. Eriim modu dosyadan sadece okuma yaplacak ise 'r', sadece yazma iin 'w' (an isimli bir dosya zaten var ise bu silinir) ve dosyann sonuna eklemeler

15

yapmak iin 'a' olur. 'r+' modu dosyay hem okuma hem de yazma yapmak iin aar. mod argman seimliktir; kullanlamamas halinde 'r' olduu varsaylr. Windows ve Macintosh zrinde moda eklenen 'b' harfi dosyay binary modunda aar; yani 'rb', 'wb', ve 'r+b' gibi modlar da vardr. Windows metin ve binary dosyalar arasnda ayrm yapmaktadr; metin dosyalarnda okuma veya yazma ilemlerinde satr sonu karakterleri otomatik olarak biraz deiir. Bu grnmez deiiklik ASCII metin dosyalar iin iyidir; anacak JPEG resimler veya .EXE dosyalar gibi binary verileri bozar.

2.8.1 Dosya Nesnelerinin Metodlar Bundan sonraki rneklerde f adl bir dosya nesnesinin nceden yaratlm olduunu varsayacaz. Dosyann ieriini okumak iin belirli miktarda veriyi okuyup bunu karakter dizisi olarak geri dndren f.read(boy) metodu kullanlabilir. boy okunacak bayt saysn belirleyen seimlik bir argmandr; kullanlmamas halinde dosyann tamam okunur. Dosyann sonuna gelindiinde f.read() bo bir karakter dizisi ( "") geri dndrr.
>>> f.read() 'Dosyann tamam bu satrdan oluuyor.\n' >>> f.read() '' f.readline() dosyadan tek bir satr okur. Satrn sonundaki yeni satr karakteri (\n) korunur;

ancak dosya yeni bir satr ile bitmiyor ise son satrda bu karakter silinir. Bu zellik geri dndrlen deerin birden fazla anlama gelmesini engeller; f.readline() bo bir karakter dizisi geri dndrdnde dosyann sonuna ulalrken bo bir satr tek bir '\n' karakteri ile ifade edilir.
>>> f.readline() 'Bu dosyann ilk satr.\n' >>> f.readline() 'Dosyann ikinci satr\n' >>> f.readline() '' f.readlines() dosya iindeki btn satrlarn bulunduu bir liste geri dndrr. Seimlik

parametre boy_ipucu kullanlmas durumunda ise dosyadan boy_ipucu kadar ve bundan bir satr tamamlamaya yetecek kadar fazla bayt okunur ve bunlar yine satrlar listesi eklinde geri dndrlr.
>>> f.readlines()

16

['Bu dosyann ilk satr.\n', 'Dosyann ikinci satr\n'] f.write(karakter_dizisi) metodu karakter_dizisi ieriini dosyaya yazar ve None geri dndrr. >>> f.write('Bu bir deneme satrdr.\n') f.tell() dosya nesnesinin dosya iindeki konumunu belirten bir tamsay geri dndrr

(dosyann bandan bayt cinsinden llr). "f.seek(uzaklk, nereden)" ile de dosyann iinde istenen konuma gidilebilir. Konum uzaklk ile referans noktas nereden deerlerinin toplanmas ile bulunur. nereden 0 olursa dosyann ban, 1 o andaki konumu, 2 ise dosyann sonunu belirtir. nereden kullanlmaz ise 0 olduu varsaylr ve referans noktas olarak dosyann ba alnr.
>>> f=open('/tmp/workfile', 'r+') >>> f.write('0123456789abcdef') >>> f.seek(5) # Dosyadaki 5'inci bayta git >>> f.read(1) '5' >>> f.seek(-3, 2) # Sondan 3'nc bayta git >>> f.read(1) 'd'

Dosya ile iiniz bittiinde metodunu f.close() ararak dosyay kapatabilir ve dosyann igal ettii sistem kaynaklarn serbest brakabilirsiziz. f.close() arldktan sonra dosya zerinde baka ilem yapmaya devam etmek mmkn deildir:
>>> f.close() >>> f.read() Traceback (most recent call last): File "<stdin>", line 1, in ? ValueError: I/O operation on closed file

Dosya nesnelerinin isatty() ve truncate() gibi pek sk kullanlmayan baka metodlar da vardr.

17

2.9 Yazdmz Python Program 2.9.1 stemci(client) Program


#Fatih niversitesi - Elektrik Elektronik Mhendislii Bitirme Projesi# #TCP Balants stemci Taraf Python Scripti

# -*- coding: iso-8859-9 -*# Yukardaki ksm aklama satrlarn Trke karakterler kullanarak yazabilmemiz iin Trke karakterler ieren karakter setini aktifletirmektedir. import socket #tcp balantlarn kurabilmek iin gerekli ktphanelerin eklenmesi

HOST = '10.42.43.12' PORT = 9876

# Sunucu tarafn ip adresi # port numaras

#balant kurulacak olan port numaras (sunucu ve istemcinin port numaralar ayn olmaldr)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # tcp socket'inin oluturulmas s.connect((HOST, PORT)) # sunucuyla balantnn kurulmas

print("Lutfen iletilmesini istediginiz Mesaji Girin") while 1:

data = raw_input('>> ') s.send(data)

# Kullancnn girdii tularn ak durumdaki soketten yollanr s.close()

18

# Girilen bilginin karya yollandktan sonra ak durumdaki soket kapatlr


stemci tarafnda alan program kullancdan input olarak ald verileri IP numaras verilen sunucu tarafna yollamakla ykmldr.

2.9.1 Sunucu(Server) Program


#Fatih niversitesi - Elektrik Elektronik Mhendislii Bitirme Projesi #TCP Balants Sunucu Taraf # -*- coding: iso-8859-9 -*# Yukardaki ksm aklama satrlarn Trke karakterler kullanarak yazabilmemiz iin Trke karakterler ieren karakter setini aktifletirmektedir.

import socket #tcp balantlarn kurabilmek iin gerekli ktphanelerin eklenmesi import serial #seri iletiim kurabilmek iin gerekli ktphanelerin eklenmesi HOST = '' # Sunucu tarafnda ip adresi girilmesi gerekmemektedir. Gelen paketten istemcinin ip adresi ayrtrlabilmektedir PORT = 9876 ayn olmaldr) # balant kurulacak olan port numaras (sunucu ve istemcinin port numaralar

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # tcp socket'inin oluturulmas s.bind((HOST, PORT)) ser = serial.Serial( # Seri balantnn ayarlarnn yaplmas port='/dev/ttyUSB0',

19

# linux'ta usb zerinden taklan bir donanm ilk olarak /dev/ttyUSB0 adresine balanr baudrate=9600, # arduino ile kurulacak olan balantnn baudrate'i 9600 olarak ayarlanr parity=serial.PARITY_ODD, stopbits=serial.STOPBITS_TWO, bytesize=serial.SEVENBITS )

while 1: s.listen(1) # istemci tarafndan gelecek olan paket beklenir conn, addr = s.accept() # gelen paketten istemcinin ip adresi alnr

print 'Istemcinin ip adresi:', addr # istemcinin ip adresinin ekrana yazdrlr while 1: # istemciden gelen paketteki veri alnr data = conn.recv(1024) if not data: break # eer gelen pakette veri yoksa dngden kp yeni paket beklemeye balanr print(data) # veri varsa nce ekrana yazdrlr ser.write(data) # sonra geerli seri balant ayarlar zerinden gelen veri arduino'ya yollanr conn.close()

20

3 Ardunio 3.1 Arduino Nedir?


Arduino, fiziksel dunya ile iletisim ve etkilesim kurmanizi saglayan bir aractir. Acik kaynak kodlu basit bir mikroislemci devresi ve bu devreyi programlamaniza yarayan bir yazilim paketinden olusmaktadir. Arduino projeleriniz hem bir bilgisayara bagli olarak hem de kendi baslarina calisabilirler. Bilgisayara bagli iken cesitli sensorlerden veri toplayip bunu bilgisayarinizda calisan programlariniza aktarabilirler, ornegin oda sicakligina gore arkaplan rengini degistiren bir Flash uygulamasi gelistirebilirsiniz. Baska bir ornek olarak da Processing ile yazdiginiz, ekrandaki cesitli nesneye tiklandiginda Arduino vasitasiyla bir kac motoru kontrol eden bir uygulama gelistirebilirsiniz. Ozetlemek gerekirse, Donanim olarak Arduino: Bilgisayara USB arayuzu ile baglanan basit bit mikroislemci devresidir. Kendi basina otonom bir sekilde calisabilecegi gibi bilgisayara baglanip bilgisayarinizin fiziksel dunya ile iletisim kurmasini saglayabilen bir alettir. Yazilim olarak Arduino: Arduino donaniminin programlandigi, cesitli kutuphaneler vasitasiyla kod uzmani olmadan bir cok ek aletin Arduino tarafindan kontrol edilebilmesini saglayan uygulamalarin gelistirildigi yazilimdir.

3.2 Neden Arduino?


Diger mikroislemci platformlarina gore;

Kullanm kolaydir. Programlamak icin derin donanm bilgisine ve genellikle kullanimi zor olan gelitirme araclarina ihtiyaciniz yoktur. Arduino programini ykledikten sonra tek ihtiyaciniz olan bir adet USB kablosudur. Ucuzdur. Az ncede bahsettigimiz gibi ekstradan gelistirme aletlerine ve pahali yazilimlara ihtiyaciniz olmadan sadece bir adet Arduino boardu alarak (ya da kendiniz yaparak) Arduino ile proje gelistirmeye baslayabilirsiniz. Cross-platform dur. Windows, Linux ve MacOS isletim sistemleri altinda calismaktadir. En nemlisi Ak kaynak kodludur. Arduino yazilimini ozgurce kendi istekleriniz dahilinde deistirebilirsiniz ve yayinlanan devre emalarini kullanarak kendi Arduino uyumlu devrenizi tasarlayabilirsiniz. Enerji tasarrufu: Eger tasinabilir ve pille calisan bir proje gelistiriyorsaniz Arduino size cok uzun sureler hizmet edebilir.

21

4 Kablosuz Balant 4.1 Kablosuz a(Wireless Network)


Wireless Nedir? Kablosuz bilgisayar alarnz kolay kurulumu ile an btn avantajlarn kablo zorunluluu olmakszn size sunar. imdi evinizin ofisinizin her yerini dolaabilirsiniz,hem de internet, email ve bilgisayar anza bal olarak. Dosyalarnz, yazclarnz ve sabit disklerinizi WPA ve WEP sistemleriyle gvenli bir ekilde paylaabilirsiniz. 802.11b Kablosuz Network 802.11b wireless network size 11Mbps hzda a balants kurmanz salar. O internet balantnzn yannda dosya ve evre birimlerini de birlikte kullanmanza olanak salar. Geni aralkl alma iin teklif, btn Wi-Fi cihazlaryla ortak iletim, yerel ,hotspots, kapasitesi ve 54g network rnleri ile iletilebilme, 802.11b btn network ihtiyalarnz iin geni kapsam sunar. Neye ihtiyacnz var? Bir kablosuz network ina etmek kolaydr. Notebook ve PClerinize bir network adaptr takp, bir kablosuz router kullanarak balayabilirsiniz. Kablolu ile kablosuzu karlatrn! Wireless "b" ve "g" nin anlam nedir? Wireless "b" ve "g"nin her ikisi de wireless network teknolojisidirler. Eskiden 54g olarak bilinen Wireless "g", resmen 802.11g olarak bilinir. "G", "b" ile tamamen uyumludur fakat 5 kat daha hzldr. "G" ayrca havaalan ve kafelerde gvenli eriime de olanak salar. Wireless "b" (Wi-Fi), resmen 802.11b olarak bilinir, genie kullanlan ilk kablosuz a teknolojisidir.

4.2 Kullandmz kablosuz a(wireless network)nn zellikler


Balant Arayz : USB 2.0 Stabil alma menzili : 100 metreye kadar kapal alanda ve 280 metreye kadar ak alanda

22

Desteklenen Standartlar IEEE 802.11n, IEEE 802.11g, IEEE 802.11b Modulasyon Methodu BPSK / QPSK /CCK/OFDM Band Genilii 40MHz iin 150Mbps 20MHz iin 72.2Mbps Veri Transfer hz IEEE 802.11n 150Mbps (Max) IEEE 802.11g 54Mbps (Max) IEEE 802.11b 11Mbps (Max) Gvenlik Modlar WEP, TKIP, AES, WPA ve WPA2 Destekledii letim Sistemleri Windows XP / Vista / Win 7, Linux and MAC OS X

23

Kullanlan antenin gc: 5dBi Frekans aral :2.4-2 .4835 GHz Kanal says: 13 Destekledii a protocolleri: CSMA / CA with ACK Transfer yntemi: Direct Sequence Spread Spectrum ( DSSS ) Boyutlar : 40mm x 18mm x 8 mm

5 Motor Srcs
Hazrladmz robotun 4 adet DC motoru olduundan projemize motor src devresi yapmamz gerekmekte idi. Biz de 2 L298 motor src entegresi kullanarak bir motor src devresi tasarladk. Aada devre iziminin 3 boyutlu hali grlmektedir. Devrede kullanlan malzemeler aadaki gibidir; 2 adet L298 17 adet diyot 8 adet SMD diren 8 adet SMD diyot 2 adet 16V 330F kapasitr 1 adet SMD 7805

L298 entegresi ska bavurulabilecek ucuz ve ok kolay bulunabilen bir entegredir. L298 de 2 adet H kprs bulunur. H kprs DC motoru iki ynde de srmeye yarayan faydal bir yntemdir. 4 adet transistr ile anahtarlama yntemi kullanlarak yaplr. Yaps gerei H harfine benzediinden dolay byle adlandrlr. Bu entegre de toplam 15 adet bacak bulunmaktadr. Bunlardan IN1, IN2, OUT1, OUT2, ENA, SENSA A kprs iin, IN3, IN4, OUT3, OUT4, ENB, SENSB B kprs iindir.

24

Hazrladmz ift tarafl L298 motor src iziminde kullandmz program Proteus tur. Proteus birok elektronik paray veritabannda barndrdndan kullanm olduka yaygn bir devre izim programdr. Yaptmz devrenin Proteus Ares iziminin grnm aadaki gibidir.

6 Sonu
Sonu olarak Beagleboard ve Arduinoyu Serial Communication(Seri letiim) kullanarak haberletirdik. Bu ilem sayesinde seri port kullanlan tm bilgisayar ve benzer aralarla arduinoyu haberletirebilecek hale geldik. Python programlama dilini kullanarak TCP protokolu zerinden wireless haberleme kurduk. Bu ilem sayesinde python scripti altrabilen herhangi 2 bilgisayar haberletirebilecek bir program yazdk. Yazdmz program ayrca arduino ile de e zamanl haberlemektedir.

25

Referanslar
http://en.wikipedia.org/wiki/BeagleBoard http://elinux.org/BeagleBoard_with_Arduino http://tr.wikipedia.org/wiki/BeagleBoard http://www.geocities.com/dinceraydin/python/tut/tut.html https://wiki.ubuntu.com/ARM/OMAPMaverickInstall http://freeduino.gen.tr/arduino-nedir/ http://www.sentim.com.tr/web/telekom-wireless-nedir.asp

26

You might also like