Linux Admin

Monday, October 08, 2012

Sonunda Arduino siparis ettim, PIC Linux'cu amatorler icin dandik

Evlendiğimden beri evdeki lambaları yattığım yerden telefonla falan kontrol etmek gibi gereksiz bir isteğim vardı. Yattığım yerden kalkmadan evdeki aletleri ve ışıkları kapatsam saçma bir şekilde mutlu olacakmışım gibi geliyor.

Bu uğurda önce transformatör + rf alıcı + role yi birleştirerek bir şeyler yapabileceğimi sanmıştım. Ama devre mevre yapmak hak getire her ne kadar elektrik-elektronik mühendisliği mezunu da olsam anlamıyorum ki bunlardan hiç bir şey, üzerine de mezun olalı 8 yıl olmuş, zaten bilmediğim bilgileri de tamamen unutmuşum.


Derken bir gün DNR'da 50TL'ye satılan bir pakette bir uzaktan kumanda ve onunla yönetilen 3 adet priz gördüm (resmi yanda), aldım içini açıp devre elemanlarına baktım 433Mhz alıcı verici ve onları sürmek için de iki adet entegre (2262 ve 2272) ile karşılaştım, hatta internette de bir amcanın da aynı yoldan geçtiğini ve üzerine sağlam bir analiz de yaptığını buldum.

Bu işlerden anlayan bir akadaşıma (Samet) danıştım "ne yapalım protheus'ta falan çizsek olur mu?" diye, ama genel devre elemanları dışındaki elemanlar için simülasyonun çok mantıklı olmadığını söyledi ve kendiniz deneyip görün dedi.

Kuzenle biraz uğraşıp 433Mhz rf alıcı'dan gelen sinyalle bir şekilde role'yi süreriz diye başladık ise ama yaptığımız denemeler hep hüsranla sonuçlandı. Bakın karaköyden 10TL'ye aldığımız 433mhz alıcı-verici çifti ile olan ilk girişimimiz yanda, aynı zamanda son da oldu bu. Sanırım aralara bir grup transistör ya da benzer bir şeyler falan da gerekiyordu (ne kadar anladığımı buradan anlayabilirsiniz).

Bu tür şeyleri salt analog devreler ile yapabilmek için çok yetersiz olduğum aşikardı, protheus ile bir kaç deneme yapıp görerek anlayabilirim belki dedim üstelik de basit devre yapılarını anlamak için de faydalı olurdu bir simülatör. Önce protheusu wine ile çalıştırmaya çalıştım, sürekli patlayınca sanal Windows makina içerisine kurduğum protheus/isis kurdum ama gene bitmeyen dertleri ile uğraşmaya başlayıp üstüne de windows üzerinde çalışmaya karşı aşamadığım bir direncim ve linux'ta yapabildiğim bir çok şeyi Windows'ta yapamayıp kendimi çok rahatsız hissetmem eklenince durdum gene. Biraz da VMWare ve VirtualBox yerine açık kaynak olan KVM kullanmaya çalışmamın da etkisi var, gene amaçtan sapıp saçma notlarda takılmışım. Ama hobi için yaptığım bir şeyi yapma sürecinde eğlenme beklentim oluyor ve Windows bunu elimden alıyor.

Çevremde bu konular hakkında fikri olan bir kaç kişi de durmadan "PIC ile yapabilirsin" diyordu. Bu sayede bir çok karmaşık devre tasarımından kurtulabilecektim, ben de artık sadece basit devre elemanları ile başaramayacağımı kabul edip mikrodenetleyicilere kayayım yavaştan dedim. Yazılımdan anlıyor ve yeni dillere ve ortamlara hızlı uyum sağlayabiliyordum ne de olsa. Biraz PIC falan bakındım, kuzende bir PIC yazıcı ve bir kaç PIC vardı ama gene widows gerekmesi (sadece win sürücüsü vardı nanenin) ve PIC'in genellikle windows üzerinde yürüyen yapısı nedeniyle gene kaçtım yandan yandan. Çevremde Linux üzerinde PIC ile uğraşan birileri olsa durum farklı olurdu belki.

Little Wire
Bir yıl kadar bir süredir unutmuştum bu konuyu ancak bir süre önce istanbul hakcerspace'de İhsan Kehribar'in anlatimina gittim, little wire diye bir şeyler anlatıyordu, aralarda "AVR programlayıcı değil" falan gibi şeyler diyordu. O günün karı benim için şunlar oldu ve aslında oldukça da karlı bir gündü, sağol hackerspace:

  1. PIC dışında da mikrodenetleyiciler var (AVR) ve bunların da etkin kullanıcı grupları var,
  2. Arduino AVR programlamak için uygun ve çok kolay,
  3. yurtdışından (özellikle çinden) parça getirtmek karaköyden getirtmekten daha ucuz olabilir (ama çok uzun sürede gelir),
  4. gerekirse az sayıda PCB çinde uygun fiyata bastırılabilir
  5. Açık kaynak gibi bir de açık donanım akımı var ve günden güne güç kazanıyor
  6. Elektronik hobicisi kimselerin kendi aralarında oturmuş bir alt-kültürü oluşmuş (makers)
Eve gelip bir kaç gün bakındım PIC gibi diğer mikrodenetleyicilere ve şunlarla karşılaştım:
PIC, nedenini anlamadığım şekilde ülkemde standart olmuş, Karaköy'de PIC satışı yaygın ama AVR veya MSP430 için gördüğüm kadarıyla aynı şey geçerli değil. Ya da ben öyle biliyorum.

Samet de bir süredir MSP430 ve onun geliştirme kartı Launchpad'den bahsediyordu ama o bunlardan bahsederken neyin ne olduğunu anlamadığım için aslında benim de yapmaya çalıştığım şeye paralel olabilecek şeyler yaptığını anlamamıştım.

Benim gibi hobicilerin (daha hiç bir şey yapmadan nasıl hobici oldum tartışılır) kullanması için bir çok farklı geliştirme kartı mevcutmuş. MSP430 için launchpad; pic için PICAXE, oopic, PICKit gibileri varmış; AVR için olanları bilmiyorum çünkü işin aslı Arduino ile karşılaştıktan sonra AVR için olanları pek araştırmadım.

By messi (Own work) [CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons (http://commons.wikimedia.org/wiki/File%3AArduino_Closeup.jpg)
Arduino Uno
Arduino içinde de bir AVR var ve kendisi bir AVR programlayıcı olarak da kullanılabiliyor ve wiring diliyle (amaca özel üretilmiş C türevi dillerden güzel bir tanesi) çok rahat programlanabiliyor.

Benim açımdan Arduino'nın görünen büyük faydalarından birisi Linux kullandığım halde kendimi dışlanmış hissetmemek. Oysa PIC kullanmaya çabaladığım dönemde MPLab ve proteus benim için yöklardı ama bulabildiğim her belge bir şekilde MPLab ile nasıl programlanabileceğini ve proteus'ta nasıl simüle edilebileceğini anlatıyordu. Ben bir çok şeyi ancak kendim yapınca kavrayabilen bir insanım.

Arduino IDE
Arduino'nun geliştirme ortamı linux windows ve maç'de aynı şekilde çalışıyor, kurulumu vakit almıyor (benim için sadece "apt-get ınstall arduino"). Bu da nette bulduğum örnek projelerden kimin nerede yaptığından bağımsız olarak faydalanabileceğim anlamına geliyor.

Prototip geliştirmek için çok sayıda algılayıcı ve hazır bileşenleri Arduino uyumlu eklenti (shield) halinde bulmak mümkün. Hem de  bir çoğu örnek kodlarla ve hatta özgür donanım olarak (yani isterseniz kendiniz de yapabilmeniz için gereken her şeyi açık).

Üstüne üstlük yarın bir gün kurduğum devreyi basitleştirmek istediğimde yazdığım kodu basitçe daha uygun bir AVR'ye uyarlayıp yükleyebilecek ve tüm Arduino kartına gerek kalmadan sadece gereken elemanlar ile kurduğum daha basit devre ile kullanabileceğim (başarabilirsem tabii ki). Bütün bunlar biraz daha ucuz olsun diye tabii ki, evin orasına burasına bir dolu sensor bağlamak istersem her birine bir arduino kat harcamak çok pahalı olur.

Arduino almaya karar verdikten sonra başlangıç yapabilmemi sağlayacak kit ararken bir çok kit bakındım ama sonuçta gene dealextreme'den şunları sipariş verdim:
  • 92TL (51.60$) Arduino Compatible UNO 2011 Component Basic Element Pack Starter Kit-142572
  • 99TL (55.10$) ARDUINO Compatible 37-in-1 Sensor Module Kit - Black-142834   
  • 7TL (3.9$) Ultrasonic Sensor Distance Measuring Module-138563
  • 6.3TL (3.5$) IR Infrared Motion Detection Sensor Module (DC 5V~20V)-139624
  • 3.5TL (2$) 38KHz IR Infrared Transmitter Module for Arduino-135040 
Toplam ~ 210TL (116.1$)

Dealextreme'den bu tür şeyleri almak iyi güzel ancak verdiğiniz siparişlerin ülkeme teslim süresi 1 ay kadar sürüyor. Bu yazıyı yazarken siparişimi vereli 28 gün olmuş (paketler de siparişten 9 gün sonra yola çıktılar) ve paketler hala Türkiye'ye girmiş görünmüyor veya bir yerlerde takıldı. Çinden almanın riski bu işte.

Siparişimdeki ilk iki öğenin içindekiler de şunlar:

- 1 x Arduino UNO board
- 1 x Development expansion board
- 1 x Breadboard
- 1 x LED emitter kit (red / blue / yellow; each 5pcs)
- 5 x 10K resistors
- 5 x 1K resistors
- 8 x 220R resistors
- 1 x 74hc595
- 2 x Buzzers
- 1 x Seven-segment display (1-digit)
- 1 x Seven-segment display (4-digit)
- 10 x Push button switches
- 3 x Light dependent resistors
- 1 x Adjustable resistor
- 1 x LM35 temperature sensor
- 1 x 1602 LCD display
- 1 x PS2 joystick
- 1 x Stepping motor
- 1 x Stepping motor driver board
- 1 x Steering engine
- 1 x RGB module
- 30 x Breadboard cables
- 10 x Dupont lines
- 1 x 2.54mm pin header
- 2 x Mercury switches
- 1 x Flame sensor
- 1 x Infrared receiver
- 1 x USB cable (80cm)
- 1 x Remote control (1 x CR2025 included)
- 1 x Battery case


- 1 x Small passive buzzer module KY-006
- 1 x 2-color LED module KY-011
- 1 x Hit sensor module KY-031
- 1 x Vibration switch module KY-002
- 1 x Photo resistor module KY-018
- 1 x Key switch module KY-004
- 1 x Tilt switch module KY-020 
- 1 x 3-color full-color LED SMD modules KY-009
- 1 x Infrared emission sensor module KY-005 
- 1 x 3-color LED module KY-016
- 1 x Mercury open optical module KY-017
- 1 x Yin Yi 2-color LED module 3MM KY-029
- 1 x Active buzzer module KY-012 
- 1 x Temperature sensor module KY-013
- 1 x Automatic flashing colorful LED module KY-034
- 1 x Mini magnetic reed modules KY-021
- 1 x Hall magnetic sensor module KY-003
- 1 x Infrared sensor receiver module KY-022
- 1 x Class Bihor magnetic sensor KY-035
- 1 x Magic light cup module KY-027
- 1 x Rotary encoder module KY-040
- 1 x Optical broken module KY-010
- 1 x Detect the heartbeat module KY-039
- 1 x Reed module KY-025
- 1 x Obstacle avoidance sensor module KY-032
- 1 x Hunt sensor module KY-033
- 1 x Microphone sound sensor module KY-038
- 1 x Laser sensor module KY-008
- 1 x 5V relay module KY-019
- 1 x Temperature sensor module KY-001
- 1 x Temperature sensor module KY-028
- 1 x Linear magnetic Hall sensors KY-024
- 1 x Flame sensor module KY-026
- 1 x Sensitive microphone sensor module KY-037
- 1 x Temperature and humidity sensor module KY-015
- 1 x XY-axis joystick module KY-023
- 1 x Metal touch sensor module KY-036
- 1 x Box


Geliştirmeye başlamak için dikkatimi çeken ülkemdeki alınabilir kitleri not almıştım. Aşağıda, özellikle robitshop inanılmaz yüksek fiyat çekmiş sanki ama gördüğüm kadarıyla fiyat konusunda dealextreme ile yarışabilecek durumda değiller.

243,08 TL (%36 daha pahali) robitshop'ta sanirim aynisi
* Arduino Uno R3
* Arduino and Breadboard Holder
* New and Improved SIK Manual
* Translucent Red Bread Board
* 74HC595 Shift Register
* 2N2222 Transistors
* 1N4148 Diodes
* DC Motor with wires
* Small Servo
* 5V Relay
* TMP36 Temp Sensor
* Flex sensor
* Softpot
* 6' USB Cable
* Jumper Wires
* Photocell
* Tri-color LED
* Red and Yellow LEDs
* 10K Trimpot
* Piezo Buzzer
* Big 12mm Buttons
* 330 and 10K Resistors
* Male Headers

Yukardaki kite benziyor farkları gördüğüm kadarıyla şunlar (olmayanlar için başa "-", fazladan olanlar için "+" koydum), aslında ucuz ve alınabilir gibi:
- 74HC595 Shift Register
- Small Servo
- 5V Relay
- Softpot
- Piezo Buzzer
- Male Headers
- Flex sensor
- New and Improved SIK Manual
- Arduino and Breadboard Holder
+ 16x2 LCD ekran (yeşil)
+ 7 Segment Display
+ AT24C02 EEPROM
+ 9V Pil Başlığı
+ 7" Mano Malzeme Kutusu

169,45 TL (%57 daha pahali) robitshop'ta sanirim eski modeli 
* Arduino UNO: En yeni Arduino USB kartı, eksiksiz olarak montajlı ve test edilmiş.
* 15 cm USB A’dan B’ye kablo
* Mini Breadboard
* Jumper Wires Premium 3'' M/M Pack of 10: Bunlar, dişi bağlantıları Arduino üzerinden bileşenlere ve breadboard’a bağlantı kurmanıza izin veren yüksek kalitedeki kablolardır.
* Fotosel: Çevredeki ışığı algılamaya yarayan sensör. Bir çekmecenin açılmasını ya da gece vaktinin geldiğini algılama işleri için uygun.
* Isıl Direnç: Çevre sıcaklığını ve sıcaklık değişimlerinin algılamaya yarayan sensör.
* Üç Renkli LED: Bu LED’i ihtiyaç duyduğunuz herhangi bir rengi PWM ile karıştırmak için kullanın.
* Temel LED'ler
* Linear Trimpot: Aynı zamanda değişken direnç olarak bilinmektedir, bu cihaz genel olarak ses kontrolü, kontrast için kullanılmaktadır ve genel kontrol girişi için iyi bir cihazdır.
* Buzzer: Harika, kafa patlatan sesler, alarmlar ve belki de müzik yapabilirsiniz!
* 12mm buton
* 330 Ohm Dirençler
* 10K Direnç
* Titreşim sensörü: Titreşimleri algılamanıza yarayan sensör.

About Me

My photo

Breakfast rocks, eating is fun, Linux is also fun and all that other good stuff...

At first I was a webmaster who creates pages with FrontPage, but that was not that fun.

Then simply resigned to be able to use Linux in my daily work. After that I worked as a, respectively,
  • desperate customer responsible,
  • software product administrator,
  • not so bad software developer,
  • not so good project manager, and at least
  • system administrator.

Until I found my girl friend, I've always thought everything are as they should be, but apparently they were not. I like my job, love my love, and its getting better day by day.