20 Mayıs 2023, 23:47 tarihinde eklendi

Arduino Uno ile USART Seri Haberleşme Uygulaması-2

Arduino Uno ile USART Seri Haberleşme Uygulaması-2

Arduino UNO geliştirme kartı, bilgisayara USB portu üzerinden takıldığında COM portu olarak tanınır. COM portu, seri haberleşme adı verilen bir bağlantı türü için kullanılır. Bilgisayarla Arduino’yu haberleştirmek için Arduino IDE yazılımında bulunan “Seri Port Ekranı” kullanılır.

Seri haberleşme, iki cihaz arasında çift yönlü iletişim kurulmasıdır. Seri haberleşmede en çok kullanılan protokollerden biri UART/USART'dır. ATMega 328P mikrodenetleyicisi de UART/USART seri haberleşmeyi destekler. UART/USART, iki cihaz arasında seri iletişim için kullanılan bir donanım cihazı veya devresidir. Bu donanım mikrodenetleyici içerisinde bulunur. UART, alınan paketlerden veri göndermek veya yeniden oluşturmak için verileri paketlere dönüştürerek çalışır. Aynı anda sadece iki UART cihazı birbirine bağlanabilir. UART ile verilerin taşınabilmesi için TX, RX ve GND olmak üzere 3 bağlantı yeterlidir. 

UART: Evrensel Asenkron Alıcı/Verici (Universal Asynchronous Receiver/Transmitter).

Görsel 1.1: UART seri haberleşme

Kullanılan Arduino geliştirme kartı modeline göre bir veya daha fazla USART donanımı bulunabilir. Arduino Uno ve Arduino Nano üzerinde 1 adet, Arduino Mega üzerinde 4 adet UART/USART seri haberleşme, donanımsal olarak mevcuttur. Arduino UNO’da seri haberleşme için veri alıcı pin RX (receiver: alıcı) 0 nolu pindir. Veri gönderici pin TX (transmitter: verici) 1 nolu pindir. Arduino Nano’da tam tersidir. 0 nolu pin TX, 1 nolu pin RX’dir.

Serial.begin() fonksiyonu: Seri haberleşmeyi başlatmak için kullanılır. Yazım şekli, Serial.begin (baud rate); şeklindedir.

Baud rate (hızı): Bu terim seri haberleşme hızını belirtir. Bir UART cihazının iletebileceği/alabileceği saniyedeki bit (bps) sayısıdır. Doğru veri iletimi için her iki UART cihazı da aynı baud hızına ayarlanmalıdır. Her byte için 10 bit gönderildiğinden gönderilen byte miktarı bu değerlerin 10’a bölümüyle bulunur. Örneğin, 9600 bps hızında saniyede en fazla 9600 / 10 = 960 karakter gönderilebilir. Baud hızı olarak 300, 1.200, 2.400, 4.800, 9.600, 14.400, 19.200, 28.800, 38.400, 57.600, 74.880, 115.200, 230.400, 250.000, 500.000, 1.000.000 ve 2.000.000 baud kullanılabilir. Gönderici tarafta baud hızı neyse alıcı tarafta da aynı değer kullanılmalıdır. Aksi halde iletişim sağlanır ancak giden veriler alıcı tarafta yanlış okunur. Arduino ile seri haberleşmede baud hızı standart olarak 9600 baud kullanılır.

Seri haberleşmede veri gönderme fonksiyonları: Serial.print(), Serial.println() ve Serial.write() komutlarıdır.

Serial.print() ve Serial.println() fonksiyonları Arduino’dan ASCII karakter dizileri göndermek için kullanılır. Bu fonksiyonlar çift tırnak içinde yazan yazının seri port ekranında görünmesini sağlar. Serial.print (“veri”), gönderilen verileri sonuna karakter eklemeden (satır atlamadan) gönderilir. Karşı tarafta alınan veri yan yana gelmiş olur. Serial.println (“veri”), gönderilen verilerin sonuna “\n” yani Enter karakteri eklenir. Bu karakter karşı tarafta alınan verilerin alt alta gelmesini sağlar. Böylece satır atlanmış olur.

Serial.write(“veri”) ile veriler binary (ikili) formatta gönderilir. İkili formatta gönderim, ASCII formata göre biraz daha farklıdır.

Serial.available() fonksiyonu: Seri porttan Arduino’ya gönderilen ve okunmayı bekleyen veri olup olmadığını kontrol eden fonksiyondur. Bilgisayardan gelen byte (karakter) olup olmadığı kontrol edilir. Gönderilmiş olan veriyi byte şeklinde değerlendirir. Fonksiyonun döndürdüğü değer sıfırdan büyükse okunmayı bekleyen veri var demektir. Başka bir deyişle Serial.available() fonksiyonu tampon bellekte bulunan okunmamış verilerin sayısını döndürür. Bellekte veri yoksa 0 döndürür. Tampon bellek boyutu sınırlı olduğu için gelen veriler belirli bir zaman aralığında okunmalıdır. Aksi takdirde gelen veriler eskilerin üzerine yazılır. Veri geldiyse gelen verinin uzunluğu kadar tampon boyutu artar. Koşulda 0’dan büyük olduğu için gelen veri Serial.read() fonksiyonuyla okunup değişkene atanır.

Serial.read() fonksiyonu: Seri porttan gelen verileri okumak için kullanılır. Bilgisayar veya başka bir cihazdan seri port üzerinden seri haberleşmeyle gelen veriyi okumak için önce Serial.available() fonksiyonuyla verinin gelip gelmediği kontrol edilir. Veri gelmişse Serial.read() fonksiyonuyla gelen veri okunur. Okunan veri bir değişkene atanabilir. Serial.read() fonksiyonuyla seri porttan gelen veriler byte byte alındıktan sonra seri haberleşme için ayrılmış olan tampon bellek bölgesine yazılır. Programa gelen veriyi okumak içinde Serial.read() fonksiyonuyla tampon bellek okunur. Okunduğu anda tampon bellek silinir.

Uygulamaya Ait Şema, Bağlantı Şekli ve Görseller

Bu uygulamada Arduino UNO kartı yeterli olmaktadır.

Görsel 1.2: Arduino Uno ile USART seri haberleşme uygulaması devre şeması

Malzeme Listesi

Sıra No

Adı

Özelliği

Miktarı

1

Arduino Uno R3

-

1 Adet

 

Uygulamaya Ait Kod

/*

  Uygulama Adı  : Serial.available() ve Serial.read() fonksiyonu uygulaması

  Açıklama         : Bilgisayardan gelen veri Arduino tarafından okunarak tekrar bilgisayara gönderilir ve seri port ekranında yazdırılır.

  Tarih               : 16 Şubat 2022

  Yazan             : İlhan DEMİR

*/

int gelenVeri = 0;

void setup()

{

  Serial.begin(9600);      //Seri haberleşmeyi 9600 baud hızında başlat.

}

void loop()

{

  if (Serial.available() > 0)      //Bilgisayardan veri gelmiş mi?

  {

    gelenVeri = Serial.read();   //Gelen veriyi oku ve değişkene yükle.

    //Bilgisayardan gelen veriyi bilgisayara geri gönder (int tipinde)

    Serial.println(String ("Bilgisayardan gelen veri (int tipinde): ") + gelenVeri); 

    

    //Bilgisayardan gelen veriyi bilgisayara geri gönder (char tipinde) 

    Serial.println(String ("Bilgisayardan gelen veri (char tipinde): ") + (char) gelenVeri);   

    Serial.println();

  }

}

Bu internet sitesi içeriğinde yer alan tüm eserler (yazı, resim, görüntü, fotoğraf, video, müzik vb.) İlhan DEMİR'e ait olup, 5846 sayılı Fikir ve Sanat Eserleri Kanunu ve 5237 sayılı Türk Ceca Kanunu kapsamında korunmaktadır. Bu hakları ihlal eden kişiler, 5846 sayılı Fikir ve Sanat eserleri Kanunu ve 5237 sayılı Türk Ceza Kanununda yer alan hukuki ve cezai yaptırımlara tabi olurlar. İlhan DEMİR, yasal işlem başlatma hakkına sahiptir.

BİR CEVAP YAZ

E-posta hesabınız yayımlanmayacak. Doldurulması zorunlu alanlar işaretlendi *