아두이노 통신 프로토콜

Adu Ino Tongsin Peulotokol

통신 프로토콜은 장치가 통신하고 데이터를 교환할 수 있도록 하는 일련의 규칙입니다. 이러한 프로토콜은 Arduino가 지속적으로 데이터를 보내고 받기 때문에 Arduino 통신에서 매우 중요합니다. 이러한 프로토콜을 사용하면 Arduino가 오류 감지 및 가능한 오류 복구 방법을 다룰 수 있습니다. 이러한 프로토콜은 아날로그 및 디지털 장치를 함께 가져와 여러 프로젝트를 설계할 수 있도록 합니다.

Arduino 통신 프로토콜

통신 프로토콜을 사용하여 Arduino에서 모든 센서의 데이터를 보내고 받을 수 있습니다.

적외선(IR)과 같은 일부 간단한 센서는 Arduino와 직접 통신할 수 있지만 Wi-Fi 모듈, SD 카드 모듈 및 자이로스코프와 같은 일부 복잡한 센서는 통신 프로토콜 없이 Arduino와 직접 통신할 수 없습니다. 이것이 바로 이러한 프로토콜이 Arduino 통신의 필수적인 부분인 이유입니다.



Arduino에는 여러 주변 장치가 연결되어 있습니다. 그 중 Arduino 보드에 사용되는 세 가지 통신 주변 장치가 있습니다.



Arduino 통신 프로토콜

Arduino와 같은 다른 전자 장치 간의 통신은 이 세 가지 프로토콜 간에 표준화되어 있습니다. 이를 통해 설계자는 호환성 문제 없이 서로 다른 장치 간에 쉽게 통신할 수 있습니다. 이 세 가지 프로토콜의 작동은 동일한 통신 목적을 수행한다는 점에서 동일하지만 회로 내부에서 구현하는 방식이 다릅니다. 이러한 프로토콜에 대한 추가 설명은 아래에서 설명합니다.



UART

UART는 범용 비동기 수신기 송신기. UART는 데이터 비트가 순차적으로 전송되는 직렬 통신 프로토콜입니다. UART 통신을 설정하려면 두 개의 라인이 필요합니다. 하나는 Arduino 보드의 Tx(D1) 핀이고 두 번째는 Arduino 보드의 Rx(D0) 핀입니다. Tx 핀은 장치로 데이터를 전송하는 데 사용되며 Rx 핀은 데이터를 수신하는 데 사용됩니다. 다른 Arduino 보드에는 여러 UART 핀이 있습니다.

아두이노 디지털 핀 UART 핀
D1 송신
D0 수신

UART 포트를 사용하여 직렬 통신을 설정하려면 아래 표시된 구성에서 두 개의 장치를 연결해야 합니다.



Arduino Uno에서 하나의 직렬 포트는 일반적으로 USB 포트라고 하는 통신 전용입니다. Universal Serial Bus라는 이름에서 알 수 있듯이 직렬 포트입니다. USB 포트를 사용하여 Arduino는 컴퓨터와 통신을 설정할 수 있습니다. USB 포트는 Arduino의 온보드 핀 Tx 및 Rx에 연결됩니다. 이 핀을 사용하여 USB를 통해 컴퓨터 이외의 모든 외부 하드웨어를 연결할 수 있습니다. Arduino IDE는 SoftwareSerial 라이브러리를 제공합니다 (SoftwareSerial.h) 이를 통해 사용자는 GPIO 핀을 직렬 Tx 및 Rx 핀으로 사용할 수 있습니다.

  • UART는 Arduino로 작동하기 쉽습니다.
  • UART에는 클럭 신호가 필요하지 않습니다.
  • 데이터 손실을 방지하기 위해 통신 장치의 10% 제한 내에서 전송 속도를 설정해야 합니다.
  • 마스터 슬레이브 구성의 Arduino가 있는 여러 장치는 UART에서 가능하지 않습니다.
  • UART는 반이중(half duplex)이므로 장치가 동시에 데이터를 송수신할 수 없습니다.
  • 한 번에 두 개의 장치만 UART 프로토콜과 통신할 수 있습니다.

직렬 주변기기 인터페이스(SPI)

SPI 마이크로 컨트롤러가 통신할 수 있도록 특별히 설계된 직렬 주변 장치 인터페이스의 약어입니다. SPI는 전이중 모드에서 작동하므로 SPI는 데이터를 동시에 보내고 받을 수 있습니다. UART 및 I2C와 비교할 때 Arduino 보드에서 가장 빠른 통신 주변 장치입니다. LCD 디스플레이 및 Micro SD 카드 애플리케이션과 같이 높은 데이터 전송률이 필요한 곳에 일반적으로 사용됩니다.

Arduino의 SPI 디지털 핀은 미리 정의되어 있습니다. Arduino Uno의 경우 SPI 핀 구성은 다음과 같습니다.

SPI 라인 GPIO ICSP 헤더 핀
SCK 13
미소 12 1
연기 열하나 4
봄 여름 시즌 10
  • MOSI는 마스터 아웃 슬레이브 인 , MOSI는 Master to Slave용 데이터 전송 라인입니다.
  • SCK는 시계줄 전송 속도와 시작 끝 특성을 정의합니다.
  • SS는 슬레이브 선택 ; SS 라인을 통해 마스터는 여러 슬레이브 구성에서 작동할 때 특정 슬레이브 장치를 선택할 수 있습니다.
  • MISO는 마스터 인 슬레이브 아웃 ; MISO는 Data를 위한 Slave to Master 전송 라인입니다.

SPI 프로토콜의 주요 하이라이트 중 하나는 마스터-슬레이브 구성입니다. SPI를 사용하면 하나의 장치를 마스터로 정의하여 여러 슬레이브 장치를 제어할 수 있습니다. 마스터는 SPI 프로토콜을 통해 슬레이브 장치를 완전히 제어합니다.

SPI는 동기식 프로토콜로 마스터와 슬레이브 간의 공통 클럭 신호로 통신이 연결됩니다. SPI는 단일 송수신 라인을 통해 여러 장치를 슬레이브로 제어할 수 있습니다. 모든 슬레이브는 공통을 사용하여 마스터에 연결됩니다. 미소 와 함께 라인을 수신 연기 하나의 공통 전송 라인. SCK 또한 마스터 및 슬레이브 장치 간의 공통 클럭 라인입니다. Slave 장치의 유일한 차이점은 각 슬레이브 장치가 별도의 장치를 통해 제어된다는 것입니다. 봄 여름 시즌 라인을 선택합니다. 이것은 각 슬레이브가 특정 슬레이브 장치에 대한 선택 라인으로 작동할 Arduino 보드의 추가 GPIO 핀이 필요하다는 것을 의미합니다.

SPI 프로토콜의 주요 하이라이트 중 일부는 다음과 같습니다.

  • SPI는 I2C 및 UART보다 빠른 프로토콜입니다.
  • 연속 데이터 전송이 가능함을 의미하는 UART와 같이 시작 및 정지 비트가 필요하지 않습니다.
  • 간단한 Master Slave 구성으로 Slave를 쉽게 주소 지정 가능
  • 각 슬레이브에 대해 Arduino 보드에 추가 핀이 사용됩니다. 실질적으로 하나의 마스터가 4개의 슬레이브 장치를 제어할 수 있음
  • UART에서 사용된 것처럼 데이터 승인이 누락되었습니다.
  • 다중 마스터 구성 불가능

I2C 통신 프로토콜

I2C(Inter Integrated Circuit)는 Arduino 보드에서 사용하는 또 다른 통신 프로토콜입니다. I2C는 Arduino 및 기타 장치로 구현하기 가장 어렵고 복잡한 프로토콜입니다. 복잡성에도 불구하고 다중 마스터 및 다중 슬레이브 구성과 같은 다른 프로토콜에는 없는 다중 기능을 제공합니다. I2C를 사용하면 최대 128개의 장치를 기본 Arduino 보드에 연결할 수 있습니다. 이는 I2C가 모든 슬레이브 장치 간에 단일 와이어를 공유하기 때문에 가능합니다. Arduino의 I2C는 주소 시스템을 사용합니다. 즉, Arduino는 Slave 장치에 데이터를 보내기 전에 먼저 고유한 주소를 보내 Slave 장치를 선택해야 합니다. I2C는 전체 Arduino 핀 수를 줄이는 두 개의 와이어만 사용하지만 I2C가 SPI 프로토콜보다 느리다는 단점이 있습니다.

Arduino 아날로그 핀 I2C 핀
A4 SDA
A5 SCL

하드웨어 수준에서 I2C는 2개의 와이어로 제한됩니다. 하나는 다음으로 알려진 데이터 라인용입니다. SDA(시리얼 데이터) 그리고 두 번째 것은 클록 라인을 위한 것입니다. SCL(직렬 시계). 유휴 상태에서 SDA와 SCL은 모두 하이로 풀링됩니다. 데이터를 전송해야 할 때 이 라인은 MOSFET 회로를 사용하여 로우로 풀링됩니다. 프로젝트에서 I2C를 사용하려면 일반적으로 4.7Kohm 값의 풀업 저항을 사용해야 합니다. 이러한 풀업 저항은 SDA 및 SCL 라인이 모두 유휴 시작 시 높은 상태로 유지되도록 합니다.

I2C 프로토콜의 주요 하이라이트는 다음과 같습니다.

  • 필요한 핀 수가 매우 적습니다.
  • 여러 마스터 슬레이브 장치를 연결할 수 있습니다.
  • 2선만 사용
  • 풀업 저항으로 인해 SPI에 비해 속도가 느림
  • 저항은 회로에 더 많은 공간이 필요합니다.
  • 장치 수 증가에 따른 프로젝트 복잡성 증가

UART 대 I2C 대 SPI의 비교

규약 UART SPI 2C
속도 가장 느림 가장 빠른 UART보다 빠름
장치 수 최대 2 4개의 장치 최대 128개 장치
필요한 전선 2(송신,수신) 4(SCK,스모크,아이즈,SS) 2(SDA,SCL)
이중 모드 전이중 모드 전이중 모드 반이중
가능한 마스터-슬레이브 수 단일 마스터-단일 슬레이브 단일 마스터-다중 슬레이브 다중 마스터 - 다중 슬레이브
복잡성 단순한 여러 장치를 쉽게 제어할 수 있습니다. 장치의 증가로 인한 복잡성
승인 비트 아니요 아니요

결론

이 기사에서는 Arduino에서 사용되는 세 가지 프로토콜 UART, SPI 및 I2C를 포괄적으로 비교했습니다. 여러 장치를 통합할 수 있는 무한한 기회를 제공하므로 모든 프로토콜을 아는 것이 중요합니다. 모든 통신 주변 장치를 이해하면 시간을 절약하고 올바른 프로토콜에 따라 프로젝트를 최적화하는 데 도움이 됩니다.