Arduino İletişim Protokolü

Arduino Iletisim Protokolu



İletişim protokolleri, cihazların iletişim kurmasına ve veri alışverişinde bulunmasına izin veren kurallar kümesidir. Arduino sürekli veri gönderip aldığı için bu protokoller Arduino iletişiminde çok önemlidir. Bu protokolleri kullanmak, Arduino'nun hata algılama ve olası hata kurtarma yöntemlerini kapsamasına yardımcı olur. Bu protokoller, analog ve dijital cihazları bir araya getirir ve birden fazla proje tasarlamayı mümkün kılar.

Arduino İletişim Protokolleri

İletişim protokollerini kullanarak Arduino'da herhangi bir sensörün verilerini gönderip alabiliriz.

Kızılötesi (IR) gibi bazı basit sensörler doğrudan Arduino ile iletişim kurabilir ancak Wi-Fi modülü, SD kart modülü ve Jiroskop gibi bazı karmaşık sensörler herhangi bir iletişim protokolü olmadan doğrudan Arduino ile iletişim kuramaz. Bu nedenle, bu protokoller Arduino iletişiminin ayrılmaz bir parçasıdır.







Arduino'nun kendisine bağlı birden fazla çevre birimi vardır; bunların arasında Arduino kartlarında kullanılan üç adet iletişim çevre birimi vardır.



Arduino İletişim Protokolleri

Arduino gibi farklı elektronik cihazlar arasındaki iletişim bu üç protokol arasında standardize edilmiştir; tasarımcıların herhangi bir uyumluluk sorunu olmadan farklı cihazlar arasında kolayca iletişim kurmasını sağlar. Bu üç protokolün çalışması, aynı iletişim amacına hizmet etmeleriyle aynıdır, ancak bir devre içindeki uygulamada farklılık gösterirler. Bu protokollerin daha fazla açıklaması aşağıda tartışılmaktadır.







UART

UART olarak bilinir Evrensel Asenkron Alıcı / Verici. UART, veri bitlerinin birbiri ardına sıralı biçimde aktarılması anlamına gelen bir seri iletişim protokolüdür. UART iletişimini kurmak için iki hatta ihtiyacımız var. Biri Arduino kartının Tx (D1) pini, ikincisi Arduino kartının Rx(D0) pinidir. Tx pini cihazlara veri göndermek içindir ve Rx pini veri almak için kullanılır. Farklı Arduino kartlarının birden fazla UART pini vardır.

Arduino Dijital Pim UART Pimi
D1 Tx
D0 Rx

UART portunu kullanarak Seri iletişim kurmak için aşağıda gösterilen konfigürasyonda iki cihazı bağlamamız gerekiyor:



Arduino Uno'da, genellikle USB bağlantı noktası olarak adlandırılan iletişim için bir seri bağlantı noktası ayrılmıştır. Adından da anlaşılacağı gibi Evrensel Seri Veri Yolu, bu nedenle bir seri bağlantı noktasıdır. Arduino, USB portunu kullanarak bilgisayarlarla iletişim kurabilir. USB bağlantı noktası, Arduino'nun yerleşik Tx ve Rx pinlerine bağlanır. Bu pinleri kullanarak Bilgisayar dışında herhangi bir harici donanımı USB üzerinden bağlayabiliriz. Arduino IDE, SoftwareSerial kitaplığı sağlar (YazılımSeri.h) kullanıcıların GPIO pinlerini Seri Tx ve Rx pinleri olarak kullanmalarını sağlar.

  • UART'ın Arduino ile kullanımı kolaydır
  • UART herhangi bir saat sinyaline ihtiyaç duymaz
  • Baud hızı, veri kaybını önlemek için iletişim cihazlarının %10 sınırı içinde ayarlanmalıdır.
  • UART ile Master Slave konfigürasyonunda Arduino ile birden fazla cihaz mümkün değildir
  • UART yarı çift yönlüdür, yani aygıtlar aynı anda veri gönderip alamaz
  • UART protokolü ile aynı anda sadece iki cihaz iletişim kurabilir

Seri Çevre Birimi Arayüzü (SPI)

SPI mikrodenetleyicilerin kendileriyle iletişim kurması için özel olarak tasarlanmış seri çevresel arabirimin kısaltmasıdır. SPI, tam çift yönlü modda çalışır; bu, SPI'nin aynı anda veri gönderip alabileceği anlamına gelir. UART ve I2C ile karşılaştırıldığında Arduino kartlarında en hızlı iletişim çevre birimidir. LCD ekran ve Micro SD kart uygulamalarında olduğu gibi yüksek veri hızının gerekli olduğu yerlerde yaygın olarak kullanılır.

Arduino üzerindeki SPI dijital pinleri önceden tanımlanmıştır. Arduino Uno için SPI pin konfigürasyonu aşağıdaki gibidir:

SPI Hattı GPIO ICSP Başlık Pimi
SCK 13 3
MİSO 12 1
SİGARA İÇMEK on bir 4
SS 10 -
  • MOSI'nin açılımı Efendi Dışarı Köle İçeri , MOSI, Master'dan Slave'e Veri iletim hattıdır.
  • SCK bir Saat hattı bu, iletim hızını ve başlangıç ​​bitiş özelliklerini tanımlar.
  • SS'nin kısaltması Köle Seçimi ; SS hattı, Master'ın çoklu Slave konfigürasyonunda çalışırken belirli bir Slave cihazı seçmesine izin verir.
  • MISO'nun açılımı Köle Dışarıda Efendi ; MISO, Veri için Master iletim hattına Slave'dir.

SPI protokolünün en önemli özelliklerinden biri Master-Slave konfigürasyonudur. SPI kullanarak bir cihaz, birkaç Slave cihazını kontrol etmek için Master olarak tanımlanabilir. Master, SPI protokolü aracılığıyla Slave cihazlarının tam kontrolündedir.

SPI senkron protokoldür, yani iletişim Master ve Slave arasındaki ortak saat sinyali ile bağlantılıdır. SPI, tek bir gönderme ve alma hattı üzerinden birden fazla cihazı Slave olarak kontrol edebilir. Tüm Köleler, ortak kullanılarak Master'a bağlanır. MİSO ile birlikte hat almak SİGARA İÇMEK bir ortak iletim hattı. SCK aynı zamanda Master ve Slave cihazlar arasındaki ortak saat hattıdır. Slave cihazlarda tek fark, her bir slave cihazın ayrı ayrı kontrol edilmesidir. SS satırı seçin. Bu, her Slave'in Arduino kartından o belirli Slave cihazı için seçim hattı görevi görecek ekstra bir GPIO pinine ihtiyacı olduğu anlamına gelir.

SPI protokolünün ana özelliklerinden bazıları aşağıda listelenmiştir:

  • SPI, I2C ve UART'tan daha hızlı protokoldür
  • UART'ta olduğu gibi başlatma ve durdurma bitlerine gerek yoktur, bu da sürekli veri iletiminin mümkün olduğu anlamına gelir
  • Basit Master Slave konfigürasyonu sayesinde Slave kolayca ele alınabilir
  • Her Slave için Arduino kartında fazladan bir pin bulunur. Pratik olarak 1 Master, 4 Slave cihazı kontrol edebilir
  • UART'ta kullanıldığı gibi veri onayı eksik
  • Çoklu Master konfigürasyonu mümkün değil

I2C İletişim Protokolü

Inter Integrated Circuit (I2C), Arduino kartları tarafından kullanılan bir başka iletişim protokolüdür. I2C, Arduino ve diğer cihazlarla uygulanması en zor ve karmaşık protokoldür. Karmaşıklığına rağmen, çoklu Master ve çoklu Slaves konfigürasyonları gibi diğer protokollerde eksik olan çoklu özellikler sunar. I2C, ana Arduino kartına 128 adede kadar cihazın bağlanmasına izin verir. Bu, yalnızca I2C'nin tüm Slave cihazları arasında tek bir kabloyu paylaştığı için mümkündür. Arduino'daki I2C bir adres sistemi kullanır, yani Slave cihazına veri göndermeden önce Arduino'nun benzersiz adres göndererek Slave cihazı seçmesi gerekir. I2C, genel Arduino pin sayısını azaltan yalnızca iki kablo kullanır, ancak bunun kötü yanı, I2C'nin SPI protokolünden daha yavaş olmasıdır.

Arduino Analog Pimi I2C Pimi
A4 SDA
A5 SCL

Donanım düzeyinde I2C, biri olarak bilinen bir veri hattı için olmak üzere yalnızca iki kabloyla sınırlıdır. SDA (Seri Veri) ve ikincisi Saat hattı için SCL (Seri Saat). Boş durumda hem SDA hem de SCL yükseğe çekilir. Verilerin iletilmesi gerektiğinde bu hatlar MOSFET devresi kullanılarak aşağı çekilir. Projelerde I2C kullanılması, normalde 4.7Kohm değerindeki yukarı çekme dirençlerinin kullanılması zorunludur. Bu çekme dirençleri, hem SDA hem de SCL hatlarının rölanti başlangıcında yüksek kalmasını sağlar.

I2C protokollerinin ana özelliklerinden bazıları şunlardır:

  • Gerekli pin sayısı çok düşük
  • Birden fazla Master Slave cihazı bağlanabilir
  • Sadece 2 kablo kullanır
  • Yukarı çekme dirençleri nedeniyle hız SPI'ye kıyasla daha yavaştır
  • Dirençler devrede daha fazla alana ihtiyaç duyar
  • Cihaz sayısındaki artışla birlikte projenin karmaşıklığı artıyor

UART ile I2C ve SPI arasındaki karşılaştırma

Protokol UART SPI 2C
Hız en yavaş en hızlı UART'tan daha hızlı
Cihaz sayısı 2 'ye kadar 4 cihaz 128 cihaza kadar
Gerekli teller 2(Tx,Rx) 4(SCK,DUMAN,GÖZLER,SS) 2(SDA,SCL)
Dubleks Modu Tam Dubleks Modu Tam Dubleks Modu Yarım Dubleks
Mümkün olan Master-Slave sayısı Tek Ana-Tek Köle Tek Master-Çoklu Köleler Çoklu Master-Çoklu Slave
karmaşıklık Basit Birden fazla cihazı kolayca kontrol edebilir Cihazlardaki artışla karmaşık
Teşekkür biti Hayır Hayır Evet

Çözüm

Bu yazıda, Arduino'da kullanılan üç UART, SPI ve I2C protokolünün kapsamlı bir karşılaştırmasını ele aldık. Birden fazla cihazı entegre etmek için sonsuz fırsatlar sunduğundan, tüm protokolleri bilmek önemlidir. Tüm iletişim çevre birimlerini anlamak zaman kazandıracak ve projeleri doğru protokole göre optimize etmeye yardımcı olacaktır.