Arduino'da TTL-Seri İletişimi

Arduino, mikrodenetleyiciler için yazılan onlarca satırlık komutları basitleştirerek, giriş seviyesindeki hobi elektronikçilerinin bu konulara daha hızlı hakim olmasını sağlayan, bir noktaya kadar da ileri düzey elektronikçilerin prototip aşamasında kullandığı bir donanım-yazılım bileşimidir.

Biz de bir projemizde bolca analog/dijital sensörler, röleler ile haşır neşir olmak durumunda kaldık. Başlangıç aşamalarında ihtiyacımız olan veri toplama işlemini ise Arduino Mega 2560'lar sayesinde hızlıca devreye aldık.

Projemizin bu başlığın konusu olan seri iletişim ile ilişkisi, kendilerinin 6 farklı TTL-Serial bağlantıya olan ihtiyacından doğuyor.

Arduino Mega 2560'larda 4 adet Donanımsal Seri1, bolca Yazılımsal Seri bağlantı oluşturmak mümkün2. Tabi yazılımsal seri bağlantılarda sorun yaşamamak için aynı anda sadece bir portu açmanız, haliyle de o porttan veri alabilmeniz için de biraz beklemeniz gerekebiliyor. Donanımsal olan portlar ise interruptlarla çalıştığı için bu tip bir beklemeye pek gerek kalmayabiliyor.

Önce donanımsal seri bağlantılardan başlayalım:

Donanımsal Portlar

Seri Port Okuma

Yukarıdaki kodu bir Arduino Uno için compile etmeye çalıştığınızda Serial1-3 portları sadece Arduino Mega için kullanılabilir olduğundan hata ile karşılaşacaksınız.

Biraz Daha Güzelleştirelim

Seri port bağlantılarını yukarıdaki şekilde okumak (eğer birden fazla bağlantınız var ise, ve yazılımınız seri port okumaktan başka işler de yapıyorsa) pek sağlıklı olmayacaktır. Bunun için çeşitli farklı yöntemler mevcut. Benim favorim; Seri Port bufferlarının dolmasını beklemek için biraz delay kullanmak ve sonucunu bir bufferda toplamak. Aşağıda bu yöntemle hazırlanmış bir echo uygulaması mevcut:

Seri Porta Yazma

-hazırlanıyor-


  1. http://arduino.cc/en/Reference/serial ↩︎

  2. http://arduino.cc/en/Reference/SoftwareSerial . ↩︎