Arduino'da TTL-Seri İletişimi

×

Error message

  • Warning: ini_set() has been disabled for security reasons in drupal_environment_initialize() (line 692 of /home/korayal/public_html/includes/bootstrap.inc).
  • Warning: ini_set() has been disabled for security reasons in drupal_environment_initialize() (line 695 of /home/korayal/public_html/includes/bootstrap.inc).
  • Warning: ini_set() has been disabled for security reasons in drupal_environment_initialize() (line 696 of /home/korayal/public_html/includes/bootstrap.inc).
  • Warning: ini_set() has been disabled for security reasons in drupal_environment_initialize() (line 697 of /home/korayal/public_html/includes/bootstrap.inc).
  • Warning: ini_set() has been disabled for security reasons in drupal_environment_initialize() (line 700 of /home/korayal/public_html/includes/bootstrap.inc).
  • Warning: ini_set() has been disabled for security reasons in drupal_environment_initialize() (line 702 of /home/korayal/public_html/includes/bootstrap.inc).
  • Warning: ini_set() has been disabled for security reasons in include_once() (line 156 of /home/korayal/public_html/sites/default/settings.php).
  • Warning: ini_set() has been disabled for security reasons in include_once() (line 157 of /home/korayal/public_html/sites/default/settings.php).
  • Warning: ini_set() has been disabled for security reasons in include_once() (line 158 of /home/korayal/public_html/sites/default/settings.php).
  • Warning: ini_set() has been disabled for security reasons in include_once() (line 159 of /home/korayal/public_html/sites/default/settings.php).
  • Warning: ini_set() has been disabled for security reasons in include_once() (line 160 of /home/korayal/public_html/sites/default/settings.php).
  • Warning: ini_set() has been disabled for security reasons in include_once() (line 161 of /home/korayal/public_html/sites/default/settings.php).
  • Warning: ini_set() has been disabled for security reasons in include_once() (line 162 of /home/korayal/public_html/sites/default/settings.php).
  • Warning: ini_set() has been disabled for security reasons in include_once() (line 163 of /home/korayal/public_html/sites/default/settings.php).
  • Warning: ini_set() has been disabled for security reasons in include_once() (line 164 of /home/korayal/public_html/sites/default/settings.php).
  • Warning: ini_set() has been disabled for security reasons in include_once() (line 165 of /home/korayal/public_html/sites/default/settings.php).
  • Warning: ini_set() has been disabled for security reasons in include_once() (line 166 of /home/korayal/public_html/sites/default/settings.php).
  • Warning: ini_set() has been disabled for security reasons in include_once() (line 167 of /home/korayal/public_html/sites/default/settings.php).
  • Warning: ini_set() has been disabled for security reasons in drupal_settings_initialize() (line 806 of /home/korayal/public_html/includes/bootstrap.inc).

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 . ↩︎