본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 시리얼(Serial) 통신을 해보고 RS232 통신으로 LED 제어해 보기

by 오마이엔지니어 2018. 3. 15.
반응형

Arduino Uno 로 시리얼(Serial) 직렬통신을 해보고 RS232 통신으로 LED를 제어해 보는 프로젝트입니다

시리얼통신 이란?
임베디드 시스템은 각종 프로세서와 회로들 간에 서로 통신하며 데이터를 주고 받는것이 기본입니다
임베디드 시스템에서 데이터를 주고 받을때 주로 사용하는 통신방법에는 크게 패러럴(병렬, parallel)과 시리얼(직렬, serial) 통신 방식이 있습니다


패러럴(Parallel) 통신방식은 다수의 비트(bit)를 한번에 전송하는 방법입니다

보통 8 또는 16 또는 그 이상의 라인을 통해 동시에 데이터를 보내줍니다
타이밍(clock)에 맞춰 모든 라인이 같이 동작할 수 있도록 clock(CLK) 라인이 필요하므로 8-bit data bus 의 경우 9라인이 사용됩니다


시리얼(Serial) 통신방식은 데이터를 스트림으로 바꿔서(직렬화, serialization) 한 번에 한 비트씩 전송합니다

시리얼 통신은 clock 라인을 포함 2라인으로 데이터를 전송할 수 있습니다


1.직렬 통신은 하나 또는 두 개의 전송 라인을 사용하여 데이터를 송수신하는 통신 방법으로, 한 번에 한 비트 씩 데이터를 지속적으로 주고 받습니다
적은 신호선으로 연결이 가능하기 때문에 선재와 중계 장치의 비용이 억제되는 등의 장점이 있습니다



2. 시리얼 통신 규격

RS-232C / RS-422A / RS-485는 EIA (전자 산업 협회) 통신 표준입니다
이러한 통신 표준 중 RS-232C는 다양한 응용 분야에서 널리 채택되어 왔으며 컴퓨터의 표준 장비이기도합니다
모뎀 및 마우스 연결에 사용됩니다. 센서 및 액추에이터에는 이러한 인터페이스가 포함되어 있으며 대부분이 직렬 통신을 통해 제어 할 수 있습니다


RS-232C

이 직렬 통신 표준은 널리 사용되며 종종 표준으로 컴퓨터에 장착됩니다."EIA-232"라고도합니다
신호선과 커넥터의 목적과 타이밍이 정의되었습니다 (D-sub 25 핀 또는 D- sub 9 핀).
현재 표준은 신호선을 추가하여 개정되었으며 정식으로 "ANSI / EIA-232-E"라고합니다. 그러나 지금은 일반적으로 "RS-232C"라고도합니다


RS-422A
이 표준은 짧은 전송 거리 및 느린 전송 속도와 같은 RS-232C 문제를 수정합니다, "EIA-422A"라고도합니다.
신호선의 목적과 타이밍은 정의되었지만 커넥터는 아닙니다. 많은 호환 제품 주로 D-sub 25 핀 및 D-sub 9 핀 커넥터를 사용합니다


RS-485
이 표준은 RS-422A에서 몇 가지 연결 장치의 문제점을 수정합니다, "EIA-485"라고도합니다
RS-485는 RS-422A와 호환 가능한 표준입니다.
신호선의 목적과 타이밍이 정의되지만 커넥터 대부분의 호환 제품은 주로 D-sub 25 핀 및 D-sub 9 핀 커넥터를 채택합니다


3. 신호 배치 및 커넥터
RS-232C에서는 사용할 커넥터와 신호 할당이 정의되고 표준화되었습니다
그림은 D-sub 9 핀 신호 지정과 신호 라인을 나타냅니다



1. DCD : Data Carrier Detect, 반송파 감지
2. RXD : Receive Data, 수신 데이터
3. TXD : Transmit Data, 전송 데이터
4. DTR : Data Terminal Ready, 데이터 터미널 준비
5. SG : Signal Ground, 신호 접지 또는 공통 리턴
6. DSR : Data Set Ready, 데이터 세트 준비
7. RTS : Request To Send, 송신 요구
8. CTS : Clear to Send, 송신 허가
9. RI : Ring Indicator, 착신 표시
CASE FG : Frame Ground, 접지


사용된부품
Arduino Uno Italy
미니 브래드보드

점퍼케이블
막대저항 220 Ohm - 2개
5mm LED - 레드, 블루
RS232 to TTL 변환모듈
USB to RS232 변환케이블



구성 배선도-RS232 시리얼 통신해 보기



구성 배선도-RS232 시리얼 통신으로 LED제어해 보기


사용된 예제코드

아두이노 시리얼 통신.txt
아두이노 시리얼 통신 LED제어.txt


테스트방법
위 첨부된 첫번째 '아두이노 시리얼 통신' 예제 코드를 스케치 업로드 해줍니다
아두이노와 연결된 시리얼 COM포트 (장치관리자를 확인해 보니 COM5로 연결되었습니다)를 확인하고 IDE의 시리얼 모니터를 실행 시킵니다


COM5 포트의 시리얼 모니터 입력창에 원하는 문구를 입력해 주면, 하단 시리얼 모니터로 출력해 줍니다
10ms마다 반복하며 수신된 데이터가 있을때 다시 그데이터를 송신해주는 방식입니다

이번에는 R232 통신 방식으로 통신을 해보겠습니다
보통의 마이크로컨트롤러는 트랜지스터 직접회로이기 때문에 입출력전압이 TTL 레벨인 0, 5V (아두이노 등) 이고
컴퓨터의 경우는 -12V ~ 12V 시리얼 신호를 사용하며, RS232C 레벨은 -12V ~ 12V 입니다
때문에 컴퓨터의 USB를 RS232 DB9로 변환해 주는 USB to RS232 변환 케이블 (CH340 드라이버 설치필요) 과

RS232C 레벨을 TTL 레벨로 변환 시켜주는 RS232 to TTL 모듈 을사용해서 테스트 하였습니다
위 첨부된 'RS232 시리얼 통신해 보기' 구성 배선도를 참조해서 배선 하도록 합니다
VCC-5V, GND-GND, TX-TX(1), RX-RX(0)
이렇게 배선하고 예제코드는 먼저 스케치 업로드 했던것과 동일한 '아두이노 시리얼 통신' 예제를 스케치 업로드 해줍니다

하지만 이번에는 장치관리자를 확인해서 아두이노가 연결된 COM5 가 아니라
RS232 변환모듈이 연결된 COM3 으로 통신을 하기위해 포트 설정을 COM3으로 해줍니다


동일한 방식이지만 COM3포트로 시리얼 모니터 입력창에 원하는 문구를 입력해 주면, 하단 시리얼 모니터로 출력해 줍니다
10ms마다 반복하며 수신된 데이터가 있을때 다시 그데이터를 송신해주는 방식입니다



이제 시리얼 통신으로 LED를 제어해 보도록 하겠습니다
위 두번째 구성 배선도 'RS232 시리얼 통신으로 LED제어해 보기' 를 참조해서 배선합니다
(일단 아두이노의 시리얼 통신으로 LED를 제어해 보기위해 RS232 to TTL 모듈은 배선하지 않습니다)
위 첨부된 두번째 예제코드 '아두이노 시리얼 통신 LED제어' 를 스케치 업로드 해줍니다

아두이노가 연결된 COM5로 포트지정을 한 후 시리얼 모니터를 실행합니다



시리얼 모니터의 입력창에
1를 입력하면 첫번째 7번핀에 연결 된 레드
 LED가 켜지고, 2를 입력하면 두번째 6번핀에 연결된 블루 LED가 켜집니다
다시 1를 입력하면 첫번째 7번핀에 연결 된 레드 LED가 꺼지고, 2를 입력하면 두번째 6번핀에 연결된 블루 LED가 꺼집니다

--------------------------------------------------------------------------------------------------------------------------------
int led1 = 7;

int led2 = 6;

int led1_status = LOW; // LED1 상태

int led2_status = LOW; // LED2 상태
--------------------------------------------------------------------------------------------------------------------------------

이번에는 RS232 통신으로 LED를 제어해 보도록 하겠습니다
위 두번째 구성배선도 'RS232 시리얼 통신으로 LED제어해 보기' 를 참조해서 배선합니다
마찬가지로 위 첨부된 두번째 예제코드 '아두이노 시리얼 통신 LED제어' 를 스케치 업로드 해줍니다

하지만 이번에는 장치관리자를 확인해서 아두이노가 연결된 COM5 가 아니라
RS232 변환모듈이 연결된 COM3 으로 통신을 하기위해 포트 설정을 COM3으로 해줍니다


동일한 방식이지만 COM3포트로 시리얼 모니터의 입력창에
1를 입력하면 첫번째 7번핀에 연결 된 레드
 LED가 켜지고, 2를 입력하면 두번째 6번핀에 연결된 블루 LED가 켜집니다
다시 1를 입력하면 첫번째 7번핀에 연결 된 레드 LED가 꺼지고, 2를 입력하면 두번째 6번핀에 연결된 블루 LED가 꺼집니다



프로젝트 동영상-아두이노로 시리얼 통신해 보기


프로젝트 동영상-RS232 시리얼 통신해 보기


프로젝트 동영상-아두이노 시리얼 통신으로 LED 제어해 보기


프로젝트 동영상-RS232 시리얼 통신으로 LED 제어해 보기


아두이노 시리얼 통신 LED제어.txt
0.0MB
아두이노 시리얼 통신.txt
0.0MB
반응형

댓글