사물인터넷(IoT) 프로그래밍 기초 5. 시리얼통신.

Slides:



Advertisements
Similar presentations
QWith Cloud System 제안서 (Zero Client System) Cloud System 사업본부 과장 김 재 호 휴대전화 : 홈페이지 :
Advertisements

1 모터 (Motors) 김원웅. 2 모터 (Motor) □ 모터 응용분야 □ Desktop PC 의 DVD ROM, HDD □ 러닝머신, 전동드릴, 선풍기 등 전력에 의해서 뭔가가 움직이 는 분야에는 거의 모두 모터가 사용 □ 우리가 배울 모터의.
Ubiquitous Computing Practice (Photo Resistor) Youn-Hee Han, In-Seok Kang {yhhan, Laboratory of Intelligent Networks Advanced Technology.
학부모 연수 SW교육 연구시범학교 운정초등학교.
2.1 컴퓨터 시스템의 구성 2.2 컴퓨터 시스템의 정보 표현 2.3 중앙처리장치 2.4 저장장치 2.5 컴퓨터 주변기기
D1 GRANDPRIX OSD 설정 메뉴얼 - Check! - LOBIT 300GT
마이크로프로세서설계 - 3 ATmega128 마이크로컨트롤러의 특징 LED 실습 1
Vision System Lab, Sang-Hun Han
Copyright SangSangDom, All Rights Reserved.
아두이노 활용 SW코딩 시작하기 아두이노 소개 개발툴 다운로드 USB 드라이버 설치하기 개발툴 실행하기
소프트웨어와 운영체제.
LCD를 활용한 특수문자 표시 및 알람 시계 만들기
PIC는 우리의 친구 한국정보통신대학교 디지털미디어연구소.
AVR 5관절 로봇 암 활용 예제.
2015년 2학기 PULSE 4 전자물리실험 11주차 – 초음파 거리 측정 실험 - DSU 메카트로닉스 융합공학부 -
USER’S MANUAL 모델명: CCR-201 코드시스템(주)
2013 스마트 컨트롤러 중간 프로젝트 김성엽 진종영 조유진
아두이노 프로그래밍 1일차 – Part2 아두이노 사양 강사: 김영준 목원대학교 겸임교수.
컬러 LED바 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 컬러 LED바 이해 및 프로그램 실습 응용 작품 만들기.
제어기술 소개 목표 : 제어기의 종류, 제어 방식 등을 살펴본다. 주요내용 제어기의 종류 제어방식 : 시퀀스, 피드백, 등.
Arduino와 Led를 이용하여 Wearable Display 만들기
자동제어 실험(2) 라인트레이서 제어.
임베디드 프로그래밍 Lecture #
아두이노 프로그래밍 5일차 – Part2 지그비 통신 강사: 김영준 목원대학교 겸임교수
1. 아두이노란 무엇인가? - 스마트 폰으로 제어하는 아두이노 -.
12. 아두이노와 센서를 이용한 제어 - 스마트 폰으로 제어하는 아두이노 -.
시리얼 통신 (Rs232를 통한 PLD와 컴퓨터의 직렬통신).
㈜학술교육원 온라인논문투고시스템 투고자 메뉴얼.
Arduino uno의 Hardware 구성부품의 종류와 그 용도.
아두이노와 Node.js를 이용한 IoT 프로젝트
고등용 LED를 이용한 재미있는 표현.
제 3 장 아두이노 무조건 따라하기 - 스마트 폰으로 제어하는 아두이노 -.
AVR Studio 소개 1. AVR Studio의 다운로드 - AVR Studio 관련 홈페이지 -
사물인터넷(IoT) 융합실습을 위한 교육용 실습장비
아두이노 프로그래밍 2일차 – Part4 아날로그 키패드 활용하기 강사: 김영준 목원대학교 겸임교수.
PV-6232 음원설정방법 작성일자 : 2016년 11월 2일 INTER-M C/S팀 길근우.
캡스톤 물리 음성 인식을 통한 무드 등 지금은 6시 55분 조.
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수.
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수
RB-510 사용설명서(근태용) 1.기능 .최대 500개의 사용자 비밀번호 입력 .최대 500명의 카드 사용자 등록
아두이노 프로그래밍 3일차 – Part1 컬러 LED바 활용하기 강사: 김영준 목원대학교 겸임교수
중앙대 원격교육원 범용공인인증서 홈페이지 등록 방법 .
아두이노 프로그래밍 5일차 – Part2 아두이노 보드간 통신 강사: 김영준 목원대학교 겸임교수.
2016년 2학기 PULSE 4 Experiment 12 – 블루투스 통신.
아두이노 프로그래밍 1일차 – Part4 값출력 및 디지털 읽기 강사: 김영준 목원대학교 겸임교수
2015년 2학기 PULSE 4 전자물리실험 09-Servo Motor 제어 - DSU 메카트로닉스 융합공학부 -
02강 아두이노 LED 기본 개념 LED Example1 LED Example2 LED Example3
8. 아두이노를 이용한 아날로그 제어 - 스마트 폰으로 제어하는 아두이노 -.
센서값 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
ST 모드 활용하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
ST모드에서 데이터 읽기 및 제어하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
클라우드 서버로 데이터 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
2015년도 스마트공장 지원사업에 대한 사업비 타당성 평가
함수를 이용한 키패드 센서 제어하기 재료준비 및 브레드 보드 배선 구성하기 키패드 센서를 통한 함수 이해하기 및 활용 실습
코딩체험교실 아두이노 로봇 코딩 4차산업기술 체험 (SW코딩/자율주행기술).
차량차단기 설치 설명서
탐색 선형 탐색, 이진 탐색, 이진 탐색 트리.
아두이노 프로그래밍 4일차 – Part1 모바일 로봇 강사: 김영준 목원대학교 겸임교수
클라우드 접속 설정하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
아두이노 프로그래밍 Lecture #
Tone 명령어 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 Tone 명령어 기본 및 프로그램 이해 응용 작품 만들기.
MA125T ▶ 제품개요 MA125T는 Temic & EM-CARD를 Read 하여 카드 데이터 전송모듈
아날로그일까? 디지털일까? -사용자 경험 기반 디지털 기술을 활용한 반응하는 액자 만들기-
아두이노 서보로봇 제어 (블루투스 스마트폰 조종) -03차시-
4 LED 출력 LED 점멸 LED 밝기 조절 RGB LED로 색상 표현하기 FND 제어 4-digit FND 제어 Dot matrix 제어 Dot matrix를 이용한 애니메이션.
MARK•Vu.
RB-680 사용 설명서 1.프로그램 모드 진입 ① * + 마스터 비밀번호(4자리) + # ② 초기 비밀번호 2416
임베디드 프로그래밍 Lecture #
3. Arduino 실습 – 아날로그 입력(1) 아날로그 입력 – 먼지 센서 먼지 센서 개요 먼지 센서 특징 먼지 검출 센서
Presentation transcript:

사물인터넷(IoT) 프로그래밍 기초 5. 시리얼통신

목차 직렬통신 vs 병렬통신 아두이노가 외부와 통신하는 방법 Hardware Serial (UART), Software Serial Serial 객체를 이용한 시리얼 통신 실습 1: Hardware Serial 기본 사용법 실습 2: 스위치 동작 횟수 전달하기 (Pull-UP 복습 포함) 응용 1: PC에서 스위칭 횟수 초기화 하기 실습 3: PC에서 LED 3개 점멸 제어 실습 4: 아두이노를 이용한 PC간 채팅

직렬 통신 vs. 병렬 통신 직렬통신 병렬통신 통신거리 원거리 통신 유리 단거리 전송 데이터 전송량 적다 많다 구현 기술 단순 복잡 구현 비용 저렴 고가 대표적 예 PC의 RS-232C HDD IDE 케이블

아두이노가 외부와 통신하는 방법 Hardware Serial Software Serial I2C (Inter-Integrated Circuit: Inter IC) SPI (Serial Peripheral Interface)

Hardware Serial Serial 객체를 이용 아두이노가 외부와 통신하는 방법 Hardware Serial UART(Universal asynchronous receiver/transmitter) (범용 비동기화 송수신기) 아두이노 보드의 시리얼 통신 전용 핀 사용 0번: (RX: Receiver 수신) 1번: (TX: Transmitter 송신) USB 포트와 하드웨어적으로 공유 USB와 전용핀 동시 사용 불가능 USB로 PC와 연결할 때는 0, 1번 핀 연결 분리해야 함 (PC에서 아두이노로 스케치 업로드 불가능) Serial 객체를 이용 별도의 라이브러리 설치가 필요 없음

UART 통신 개념

Software Serial 0, 1번 외에 다른 디지털 핀으로 Serial 통신을 원할 때 사용 아두이노가 외부와 통신하는 방법 Software Serial 0, 1번 외에 다른 디지털 핀으로 Serial 통신을 원할 때 사용 SoftwareSerial 라이브러리 사용 #include <SoftwareSerial.h> SoftwareSerial 객체를 생성하여 사용 객체 생성 시, 통신에 사용할 핀 번호 지정 예: SoftwareSerial softSerial(7, 8); // 7, 8번 사용

Serial 아두이노가 PC, 다른 장치와 통신할 때 사용하는 객체 UART 기반의 통신에 필요한 다양한 함수들을 제공 아두이노 하드웨어 시리얼 통신 함수 Serial 아두이노가 PC, 다른 장치와 통신할 때 사용하는 객체 UART 기반의 통신에 필요한 다양한 함수들을 제공 Serial 객체 함수: Serial.begin(속도값); //시리얼 통신을 속도값으로 초기화 Serial.available( ); //시리얼 포트로 수신된 바이트 수 반환 Serial.read( ); // 수신 버퍼에서 1바이트 읽음 (없으면 -1) Serial.write(byte); //1byte 송신 Serial.print(value [,format]); // 값(value)을 송신 Serial.println(value [,format]); //값(value)을 송신 후 줄바꿈 …….. https://www.arduino.cc/reference/ko/

실습 1: Hardware Serial 기본 사용법 주제: 수신한 문자의 코드값 송신하기 시리얼 모니터: 송신창, 수신창 사용법 준비물 : 아두이노보드, PC, USB Cable 연결 PC와 아두이노보드 USB 케이블로 연결 COM 포트 설정 IDE화면 우측 상단의 시리얼 모니터 열기

Serial.available() 시리얼 포트로부터 읽을 수 있는 바이트의 수를 가져옴 시리얼 포트로부터 읽을 수 있는 바이트의 수를 가져옴 반환값은 읽어온 바이트의 수로, 0일 경우 받은 데이터가 없음 int inByte; void loop() { if(Serial.available()>0){ //아두이노가 받은 데이터가 있으면 inByte = Serial.read(); //읽어서 변수에 저장한다. }

Serial.read() 시리얼 포트로부터 데이터를 읽음 반환값은 읽어온 바이트의 수로, 0일 경우 받은 데이터가 없음 반환값은 읽어온 바이트의 수로, 0일 경우 받은 데이터가 없음 int inByte; void loop() { if(Serial.available()>0){ //아두이노가 받은 데이터가 있으면 inByte = Serial.read(); //읽어서 변수에 저장한다. Serial.print(“받은 데이터 : “); //10진수 형태로 시리얼모니터에 출력 Serial.println(inByte, DEC); }

시리얼 모니터 열기 실습 1: Hardware Serial 기본 사용법 Sketch

시리얼 모니터 송신창 PC → 아두이노 수신창 PC ← 아두이노 통신속도 서로 일치해야 함 실습 1: Hardware Serial 기본 사용법 송신창 PC → 아두이노 시리얼 모니터 수신창 PC ← 아두이노 통신속도 서로 일치해야 함

시리얼 모니터 실습 1: Hardware Serial 기본 사용법 송신: A[ENTER] 수신: 65 <- 문자 ‘A’의 ASCII Code 값 65 10 <- ENTER key ASCII Code값 10

실습 1: Hardware Serial 기본 사용법 :Rx :Tx Tx: Rx: [ENTER] A 수신 데이터: 65 / 수신 데이터: 10

아두이노 시리얼 통신 코딩의 핵심 문자 단위로 수신한 데이터를 아두이노 쪽에서 어떻게 읽고 처리할 것인가를 결정하는 것 문자 단위로 수신한 데이터를 아두이노 쪽에서 어떻게 읽고 처리할 것인가를 결정하는 것 아두이노에서 외부로 송신하는 것은 수신 처리에 비해 비교적 간단함

실습 2: 스위치 동작 횟수 전달하기 주제: Pull-Down 스위치 누른 횟수 송신하기 준비물 : 회로구성: 동작 스위치 1개, 저항(10kΩ) 1개 회로구성: Pull-Down 저항 스위치를 7번 핀에 연결 동작 스위치를 누를 때마다 1씩 증가하는 값을 PC로 전송

풀업(PULL UP), 풀다운(PULL DOWN) 저항 VCC에 저항 연결 GND에 저항 연결 A : 회로의 전압을 읽어 냄

실습 2: 스위치 동작 횟수 전달하기 회로 구성

실습 2: 스위치 동작 횟수 전달하기 회로도

Sketch 실습 2: 스위치 동작 횟수 전달하기 Serial 객체의 통신 속도 설정 후, Serial.begin(9600); PC와의 COM 포트 연결이 될 때까지 모니터링 하며 대기 while ( ! Serial ) ;

동작화면 실습 2: 스위치 동작 횟수 전달하기 스위치 누를 때마다 송신 PC와의 COM 포트 연결이 될 때까지 모니터링 하며 대기, 완료되면 while 종료 while ( ! Serial ) ; 연결된 후에 완료 메시지 송신 Serial.pintln(“시리얼 통신 준비 완료“); 동작화면 스위치 누를 때마다 송신

응용 1: PC에서 스위칭 횟수 초기화 하기 주제: 시리얼 모니터에서 ‘C’를 전송하여 누적된 스위칭 누적 횟수 0으로 초기화 하기 준비물 : 실습 2 회로 구성 유지 Sketch 수정 수신 데이터에서 문자 ‘C’가 전송되면 swCount 값을 0으로 초기화 한다. if (Serial.available() > 0) { if(Serial.read() == ‘C’) { swCount = 0; //스위칭 횟수 값을 0으로 초기화 Serial.println(“스위치 누른 회수: 0으로 초기화“); }

serialEvent() 전달된 데이터가 사용가능해지면 호출됨 Serial 객체의 함수 void serialEvent() { //여기에 실행되어야 하는 명령어 작성 }

Sketch 응용 1: PC에서 스위칭 횟수 초기화 하기 void serialEvent() { } //시리얼 통신으로 데이터가 //수신될 때마다 자동으로 실행 } if (Serial.available() > 0) { //이 코드를 loop()에 포함시키는 //는 것보다 편리함. }

응용 1: PC에서 스위칭 횟수 초기화 하기 동작화면 스위치 누름

실습 3: PC에서 LED 3개 점멸 제어 주제: PC에서 시리얼 통신으로 LED 3개 (Red, Green, Blue) 점멸 제어하기 준비물 : - 실습 2 회로 유지 - LED (Red) 1개 - LED (Green) 1개 - LED (Blue) 1개 - 저항 220 Ω 3개 회로구성: LED(Red): 8번, LED(Green): 9번, LED(Blue): 10번 동작 PC에서 ‘R’, ‘G’, ‘B’ 문자로 점멸 제어

실습 3: PC에서 LED 3개 점멸 제어 회로 구성

실습 3: PC에서 LED 3개 점멸 제어 회로도

Sketch 실습 3: PC에서 LED 3개 점멸 제어 세 부분의 내용이 LED 색을 제외하면 동일 재사용이 가능한 사용자 함수로 작성 ToggleLED(ledPin)

toggleLED(ledPin) 지정한 핀(ledPin)에 연결된 LED의 상태를 반전시킴 사용 예) 사용자 정의 함수 toggleLED(ledPin) 지정한 핀(ledPin)에 연결된 LED의 상태를 반전시킴 사용 예) toggleLED(4); //4번 핀 연결 LED의 점멸 상태를 반대로 설정 void toggleLED(int ldePin) { if(digitalRead(ledPin) == HIGH) //켜져 있으면 digitalWrite(ledPin, LOW); // LED를 끔 else //꺼져 있으면 digitalWrite(ledPin, HIGH); // LED를 켬 }

실습 3: PC에서 LED 3개 점멸 제어 Sketch

LED 점멸 제어 연습 (순서대로) Red, Green, Blue 순서대로 켜기 Red, Green, Blue 순서대로 끄기 실습 3: PC에서 LED 3개 점멸 제어 LED 점멸 제어 연습 (순서대로) Red, Green, Blue 순서대로 켜기 “R G B” 송신 // R과 G, G와 B 사이에 빈칸 Red, Green, Blue 순서대로 끄기 Red, Green, Blue 동시에 켜기 “RGB” 송신 // 빈 칸 없음 Red, Green, Blue 동시에 끄기 응용1: 다양한 점멸 시나리오를 구성해보기 응용2: 추가 제어 기능 구현해 보기

Software Serial 0, 1번 외에 다른 디지털 핀으로 Serial 통신을 원할 때 사용 아두이노가 외부와 통신하는 방법 Software Serial 0, 1번 외에 다른 디지털 핀으로 Serial 통신을 원할 때 사용 SoftwareSerial 라이브러리 사용 #include <SoftwareSerial.h> SoftwareSerial 객체를 생성하여 사용 소프트웨어 시리얼 통신에 사용할 핀 번호 지정하여 객체 생성 예: SoftwareSerial swSerial(7, 8); // 7, 8번 사용하는 객체 생성 //이후로는 생성된 swSerial 객체를 Serial과 같은 방법으로 이용 swSerial.begin(9600); swSerial.available(); swSerial.read(); swSerial.println(…);

실습 4: 아두이노를 이용한 PC간 채팅 주제: 아두이노 2개를 이용한 PC간 채팅하기 Software Serial과 Hardware Serial 모두 이용 준비물 : - 아두이노 2개 - PC 2대 회로구성: PC와 아두이노는 USB 케이블로 연결 (Hardware Serial 이용) 두 개의 아두이노는 Software Serial 설정 디지털 핀 연결 Tx와 Rx를 서로 연결, GND간의 연결 동작 각 PC의 시리얼 모니터를 이용하여 채팅

회로 구성 User Chatting 실습 4: 아두이노를 이용한 PC간 채팅 Hardware Serial PC A Software Serial Hardware Serial PC A 회로 구성 Software Serial User Chatting PC B Hardware Serial

Sketch 실습 4: 아두이노를 이용한 PC간 채팅 #include <SoftwareSerial.h> SoftwareSerial swSerial(7, 8); //7,8번 핀을 사용하는 SW 시리얼 통신 객체 생성 void setup() { Serial.begin(9600); // PC와 통신은 HW시리얼 사용 swSerial.begin(9600); // 아두이노 간의 통신은 SW 시리얼 사용 } void loop() { if (swSerial.available() > 0) //아두이노에서 수신된 데이터는 Serial.write(swSerial.read()); //PC로 전송 if (Serial.available() > 0) //PC에서 수신된 데이터는 swSerial.write(Serial.read()); //아두이노로 전송

시리얼 모니터에 한글이 깨질 경우 아두이노 폴더에서 아래 두개의 파일에 다음과 같이 추가한다. 메모장을 사용자권한으로 실행해야 변경되 내용 저장이 가능하다. arduino.l4j.ini arduino._debug.l4j.ini