You are on page 1of 17

İletişim Protokolleri

(Communication Protocols)
• Arduino dış dünya ile iletişim kurabilmek için genel amaçlı i/o pinleri
önceki konu başlığında incelenmişti.
• LED, buton, role vb. cihazlardan girdi almak veya bu cihazlara çıktı
göndermek GPIO üzerinden kolay bir şekilde gerçekleştirilebilir.
• Fakat daha karmaşık sensor düzeneklerinin olduğu durumlarda farklı
iletişim protokolleri kullanılır.
• UART, I2C (TWI) ve SPI Arduino ekosisteminde sıkça kullanılan
iletişim protokolleridir.
UART
(Universal Asynchronous Receiver-Transmitter)
• Asenkron seri iletişim için geliştirilmiş bir donanımdır. Veri format ve
transfer hızı ayarlanabilir. Asenkron seri iletişimde veri herhangi bir
zamanda gönderilebilir. Veri gönderiminin olmadığı durumlarda hat boşta
kalır. Senkron veri iletişimine göre daha yavaştır.
• UART veri bytelarını göndericiden alıcıya seri bir şekilde iletir. Karşı
taraftaki UART alıcısı ise almış olduğu byteları bir araya getirerek
verinin kendisini oluşturur.

• Tek bir kablodan verinin bu şekilde aktarılmasının maliyeti oldukça


düşüktür.
• ATmega328, pin0(RX) ve pin1(TX) yardımıyla UART’ın kullanımına
izin verir (TTL-5V).

• Arduino UNO üzerinde tek bir UART kanalı bulunmaktadır. Bu kanal


aynı zamanda ATmega16U2 tarafından da kullanılmaktadır.
Dolayısıyla Arduino ile USB üzerinden bilgisayarla iletişim
kurulmadığı durumlarda pin0 ve pin1 üzerinden bağlı olan diğer
UART cihazları ile iletişim kurulabilir.
I2C (Inter-Integrated Circuit)
TWI (Two Wire Interface)
• I2C, seri veri yoludur. Philips tarafından tasarlanmıştır.
• Genellikle entegre devrelerin ve diğer düşük hızlı elektronik
sistemlerin birbirlerine bağlanabilmesi için geliştirilmiştir.
• İlk olarak tek bir baskı devre kartında kullanılmak üzere
düşünülmüştür.
• Senkron veri iletişimi
• 2 hat ile birçok birim arasında bilgi aktarımına imkan vermektedir.
• Bir tanesi data için kullanılırken diğeri saat darbesi içindir.
• Günümüzde bir çok cihazın I2C arayüzü bulunmaktadır.
(Mikrokontrolcü, EEPROM, LCD cihazlar, A/D dönüştürücüler)
Senkron İletişim
• Alıcı ve verici arasında zaman uyumunu sağlamak için bir saat işareti
kullanılır.
• İlk olarak önceden belirlenmiş olan bir senkronizasyon karakteri karşı
tarafa gönderilir. Alıcı belirlenmiş olan karaktere bakarak veri
yolundaki veriyi okur ya da okumaz.
• Asenkron iletişime göre oldukça hızlıdır.
Hız ve Adresler
• Klasik I2C 100K bits/sn. Dir.
• “Fast Mode” da 400K bits/sn ‘ye
• “High Speed Mode” da ise 3.4M bits/sn ‘ye kadar ulaşır.
• Mikrokontrolcü üzerinde daha az sayıda pin kullanarak GPIO’ların
gereksiz yere kullanılmasının önüne geçer.
• Bu arayüzü kullanarak devre kartına bağlanan herbir birimin 7 bitlik
adresi vardır.
• İki hattan birincisi SDA veri transferi için gerekli iken, diğeri saat
içindir (SCL). Bu pinler Arduino UNO’da belirtilmiştir. Ayrıca ilave
olarak SDA için A4, SCL için de A5 kullanılabilir.
• Güvenlikli veri aktarımı için ortak ground kullanılır.

• Her iki yönde veri aktarımına izin verir fakat bunu aynı zaman içinde
gerçekleştirmez. (half-duplex)

• Master ve Slave olmak üzere iki adet yol tanımlaması bulunur.


Master:
Start/Stop komutlarıyla veri transferini başlatır.
Saat darbesini üretir.
Slave adresini transfer eder.
Veri transferinin yönünü belirler.
Slave :
Sadece adreslendiği zaman yanıt verir.
Zamanlama, clock hattı ile kontrol edilir.
SPI
(Serial Peripheral Interface Bus)
• Motorola tarafından geliştirilmiştir.
• Önceki protokollerden farklı olarak aynı anda hem veri gönderimine
hem de alımına izin vermektedir (full-duplex).
• Master-slave çalışma şekli bu protokol için de geçerlidir.

CS : Chip Select
SCKL : Clock
SDI : Serial Data Input
SDO : Serial Data Output
SS : SlaveSelect
SCKL : Serial Clock
MOSI : Master Out, Slave In
MISO : Master In, Slave Out
• Sistemde bir tane master ve çok
sayıda slave mevcuttur.

• Full-dublex iletişim sadece seçili


olan slave ile master arasında
gerçekleşir.

You might also like