시리얼 포트
- 단일 회선 데이터 전송 기술 : 송신(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 |