임베디드기초 6주차

2021. 10. 12. 23:12학교수업

 시리얼 포트

- 단일 회선 데이터 전송 기술 : 송신(TX) 1개 선, 수신(RX) 1개 선을 되어 있다.

- USB는 데이터 전송 2개선 (D+,D-), 5V전원공급하는 2개(5V,GND) 선 총 4개 선

 

시리얼 통신 : USART(Universal Synchronous/Asynchronous Receiver/Transmitter)

- 단일 회선 데이터 전송(serial 통신)

- 여러 회선 데이터 전송(parallel 통신)

 

usb이전 시리얼 통신 RS-232c

- 시리얼 통신 이전에 주로 사용된 데이터 전송 표준

- 원래 터미널 단말기, 모뎀 접속용으로 사용

 

usb와 시리얼 통신(RS-232c)간의 통신 방법 : 서로 간에 직접 호환이 안돼 변환하여 연결

1) USB와 시리얼 간 통신을 중계해 주는 별도 IC 사용 <-아두이노 Uno

2) 마이크로 컨트롤러에 USB-시리얼 통신 변환 기능 내장 <-아두이노 Leonardo

 

아두이노 Uno의 시리얼 통신

- 아두이노 Uno에서 사용된 ATMega 328p등의 마이크로 컨트롤러에는 하드웨어 시리얼 포트가 내장

- 시리얼 포트는 아두이노의 디지털 입출력 0번과 1번 핀으로 송신기(TX), 수신기(RX)로 이루어짐

- 아두이노 내장 하드웨어 시리얼 포트는 USB와 호환되지 않아 별도 칩을 USB-시리얼 변환용으로 사용

-> 별도 칩 사용하는 경우, 컴퓨터와 연결을 위해 전용 드라이버 필요

=> 아두이노 IDE를 설치하면서 해당 드라이버가 기설치 되있다. : FTDI드라이버

 

FTDI칩 : 시리얼과 USB간 신호 변환 기능만 수행

 

USB 기능이 내장된 MCU를 사용하는 아두이노 : Leonardo

- 외부 변환기 거치지 않고 USB로 직접 통신하는 MCU 사용

-> MCU사용시 USB장치로 에뮬레이팅하는게 더 쉽게 사용되며, USB 프로그래머를 다중화할 필요 없다.

 

시리얼 통신을 이용한 데이터값 출력

- print()함수

- 아두이노의 가장 기본적인 시리얼 통신 기능 : Serial.println()함수

- 데이터를 터미널(PC)로 출력하려면 세 가지 함수 사용

1) Serial.begin(baud속도) - setup()에서 한 번만 호출

2) Serial.print("메세지 문자열")

3) Serial.println("메세지 문자열")

- 특수문자 : \는 특수 문자 출력하는 명령어다 \n : 줄바꿈 \\n : \n출력

- 표현 형식 : Serial.print(23,HEX); <- 16진수 OCT(8진수) BIN(2진수) default = 10진수

 

에코 : 컴퓨터에서 아두이노로 전송한 데이터를 다시 컴퓨터로 보내는 것

아두이노에 수신된 데이터는 시리얼 입력 버퍼를 관찰하다 수신되는 문자를 모두 출력

- Serial 객체는 두 함수를 통해 에코 처리

1) Seria.available()

- 현재 아두이노 시리얼 포트의 수신 버퍼에 데이터 저장되어 있는지 상태 반환

- 데이터가 0보다 많으면 버퍼에 데이터가 남아있다.

2) Serial.read()

- 버퍼에 있는 데이터 중 다음 사용할 문자 1바이트씩 반환 -> -1은 -한 번 1한 번 인식

 

컴퓨터에서 아두이노로 보낸 데이터는 문자형으로 처리 (숫자입력해도 문자로받음 : ASCII)

-> parseInt()함수 사용하면 간편하게 정수로 추출

 

CSV (Comma Separated Value)

- CSV는 몇 개 필드를 쉼표로 구분한 텍스트 데이터

- 쉼표로 구분한 여러 값을 동시에 전송해 여러 장치 제어 가능

 

Processing : 오픈 소스 프로그래밍 언어, 그래픽 기반

- 아두이노 IDE는 Processing 기반

- 아두이노와 통신하는 GUI 응용 프로그램 제작 가능

'학교수업' 카테고리의 다른 글

가상현실프로그래밍 6주차  (0) 2021.10.13
정보보호개론 6주차  (0) 2021.10.13
사물인터넷의 이해 6주차  (0) 2021.10.12
웹개발 기초 6주차  (0) 2021.10.11
객체지향프로그래밍 6주차  (0) 2021.10.10