3시간에 아두이노 감 잡기! 메카솔루션 CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 3시간에 아두이노 감 잡기! 메카솔루션
전세계적으로 열풍인 아두이노 그리고 메이커문화 CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 전세계적으로 열풍인 아두이노 그리고 메이커문화 아두이노 우노 R3 4차 산업혁명을 견인 메이커문화를 조성 인텔에서도 아두이노에 관심을 보임 오바마도 관심 Cool! 구글 트랜드 고공행진~
CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 아두이노의 매력이 뭐길래… ‘오픈소스 (Open-source)’를 기반으로 하여 다양한 연구/개발 등을 ‘쉽고’, ‘빨리’ 할 수 있다. ‘오픈소스 (Open-source)’로 인해 수많은 사람들이 아두이노라는 플랫폼을 사용한다. 즉, 많은 정보와 소스코드, 사용방법을 웹에서 구할 수 있으며, 질문에 대한 답변을 위한 커뮤니티가 다수 존재한다. 마치, 학계에서 논문을 쓰고, 인용을 하면서 더 좋은 연구를 하고 과학/공학이 발전한 것과 같이, 오픈소스로 인해 창의적인 아이디어가 구현될 수 있다.
아두이노의 매력이 뭐길래… CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 아두이노의 매력이 뭐길래… ‘오픈소스 (Open-source)’를 기반으로 하여 다양한 연구/개발 등을 ‘쉽고’ ‘빨리’ 할 수 있다. 농업에서 작물의 생장을 모니터링하고 싶은 충북 진천의 김모 아저씨 (58) 취미 삼아 드론을 직접 만들어보고 싶은 로봇고등학교 2학년 홍모군 (18) 빠른 승진을 위해 고가의 PLC장비를 아두이노로 대체하려는 정대리 (25)
어떤 아두이노를 사용하지? CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 어떤 아두이노를 사용하지? 아두이노 우노 R3 가장 많이 판매되었기 때문에, 교육 자료, 소스코드 등이 가장 많고 활발 처음 시작한다면 아두이노 우노로 시작하면 된다. 아두이노 쉴드: 적층식으로 기능 확장 아두이노라는 이름의 다른 형제들 만약, 사이즈 및 기능을 바꾸고 싶다면 아두이노 나노, 아두이노 메가, 아두이노 듀에, 아두이노 윤 등의 보드를 사용할 수 있다.
마이크로컨트롤러를 사용하여 LED를 켜보라고 전해라~ CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 마이크로컨트롤러를 사용하여 LED를 켜보라고 전해라~ [아두이노가 도래하기 이전 세상] AVR 혹은 PIC의 많은 마이크로칩의 레지스터를 공부 개발보드를 선정 (무수히 많음) AVR Studio, Code vision 등으로 컴파일링 AVRISP 업로더, JTAG 장비로 업로딩 필요한 소스코드가 없어서 진땀을 빼야 함 (초보자 범접하기 어려움) [아두이노가 도래하기 이후 세상] 아두이노 우노 컴퓨터 연결 아두이노 IDE에서 예제 불러오기 업로드 버튼 꾹! 구글링만 잘하면 어지간한 소스코드는 다 있음 :D
아두이노 키트 구성 CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 아두이노 키트 구성 아두이노 우노 R3 호환보드 푸쉬버튼 220옴 저항 LED와 함께 연결 LED 점퍼케이블 (아두이노와 컴포넌트 연결) 조도센서 10K옴 저항 조도센서 및 버튼과 연결 브레드보드 40핀 헤더 USB 케이블 (전원/통신)
아두이노 우노 호환보드 CONTENTS 1. 우리는 왜 아두이노를 공부하는가 마이크로컨트롤러: ATmega328P 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 아두이노 우노 호환보드 마이크로컨트롤러: ATmega328P 동작 전압: 5V (하지만, 7~12V도 가능) 14개의 디지털 입출력 핀 (그 중 6개는 PWM으로 사용 가능) 6개의 아날로그 입력 핀 (센서값 읽을 때 주로 사용) 32KB의 플래시 메모리 (전원을 껐다켜도 프로그램은 저장되어 있음) 클럭 속도: 16MHz 사이즈: 68.6mm x 53.4mm (25g) USB 포트: 디지털 포트: 0번에서 13번까지 이 중, 3,5,6,9,10,11은 PWM 포트 0번과 1번은 RX, TX로 통신 포트 전원을 공급(5V) 프로그래밍 업로드 시리얼 유선 통신 ATmega328 블루투스, 센서 등 연결 포트(옵션) 아날로그 포트: 10비트 (0~1023의 분해능) 입력 A4 (SDA), A5 (SCL)로 I2c 통신 배럴잭 (외부전원): 12V까지 전원공급 가능 3.3V 및 5V 출력 보드의 모든 GND끼리는 연결되어 있음
아두이노 시작해봅시다. CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 아두이노 시작해봅시다. 아두이노 소프트웨어 설치 (https://www.arduino.cc/en/Main/Software) CH340 드라이버 설치 (http://makeshare.org/bbs/board.php?bo_table=arduino&wr_id=1) USB 케이브을 사용하여 컴퓨터의 USB 포트와 아두이노의 USB를 연결한다. 아두이노 소프트웨어에서 상단의 도구 – 보드 – Arduino/Genuino Uno 선택 상단의 도구 – 포트에서 연결된 USB 포트 번호 선택 (USB 포트 번호를 모를 때는 연결된 USB를 컴퓨터에서 뺐다가 다시 끼우면 사라졌다 나타나는 COM포트 번호를 확인할 수 있다.) 5. 아두이노 소프트웨어에서 기본 예제 (파일-예제-01.Basics-Blink 클릭) 끝으로 업로드 버튼을 누르면 아두이노에 TX/RX LED가 깜빡거리며 내장된 LED가 깜빡이는 것을 확인할 수 있다. 깜빡이는 LED (참 쉽죠~?)
모든 시스템의 시작과 끝은 전원 배럴잭을 통한 전원 공급 USB 케이블을 통한 전원 공급 VIN과 GND를 통한 전원 공급 CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 모든 시스템의 시작과 끝은 전원 배럴잭을 통한 전원 공급 USB 케이블을 통한 전원 공급 VIN과 GND를 통한 전원 공급 배럴잭
브레드보드? 빵판? CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 브레드보드? 빵판? 구멍 다섯개씩 연결되어서 컴포넌트를 서로 연결하기 용이함 전원 채널은 한줄로 길게 연결되어 편리함
자주 사용하는 아두이노 내장 함수들 CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 자주 사용하는 아두이노 내장 함수들 Void setup() { pinMode(10,OUTPUT); // 10번 핀을 출력으로 사용하겠음 Serial.begin(9600); // 9600 bps 속도로 시리얼 속도를 세팅 } Void loop() digitalWrite(10, HIGH); // 출력을 HIGH (5v) 혹은 LOW (0V)로 할 지 결정 변수 = digitalRead(12); //12번 핀으로부터 디지털 값을 읽게 된고 변수에 저장. 변수명은 바꿀 수 있음 analogWrite(3, 127); // 디지털핀 중 PWM 핀들 (3, 5, 6, 9, 10, 11)을 통해 0~255의 값을 넣어서 아날로그 값 출력 delay(500); //500ms, 즉 0.5초간 프로그램 중지. 딜레이가 실행하는 동안은 다른 일은 하지 않는다. Serial.println(“Hello World!”); // ()에 변수 혹은 텍스트를 넣으면 출력한 후 줄바꿈 Serial.print(변수); //()에 변수 혹은 텍스트를 넣으면 출력한 후 줄바꿈하지 않음
아두이노를 사용하여 “컨트롤”할 때 – 디지털 출력 CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 아두이노를 사용하여 “컨트롤”할 때 – 디지털 출력 0부터 13번까지 사용할 수 있으며 D0, D1, D2, …, D13으로 표기되어 있다. 이중 ‘~’ 혹은 ‘/’ 표시는 PWM으로 사용. 예제 1) LED를 켜거나 (high, 5v 출력) 끌 때 (low, 0v 출력), 디지털 핀들을 사용해서 컨트롤할 수 있다. 예제 2) 모터를 돌리거나 (high, 5V 출력), 정지시킬 때 (low, ov 출력)도 디지털 핀들을 사용. 예제 3) 릴레이를 동작시켜서 전기적으로 스위칭을 할 때
실습 1) 아두이노로 LED 켜기 (난이도 ★☆☆) CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 실습 1) 아두이노로 LED 켜기 (난이도 ★☆☆) USB 케이블을 아두이노에 끼우고, 다른 한쪽을 컴퓨터의 USB 포트에 연결 Setup은 한번만 실행 Loop는 무한반복 일종의 메인함수 오른쪽의 코드를 입력한 후, 업로드 버튼을 누르면 LED가 1초에 한번씩 깜빡이는 것을 확인할 수 있다. 아두이노의 함수는 대소문자를 인식하며, 내장 함수는 제대로 입력하면 색이 변한다.
풀업 저항과 풀다운 저항 Q. 버튼을 눌렀을 때, 디지털 입력으로 1이 들어오게 하려면? 정답: 풀다운 저항 CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 풀업 저항과 풀다운 저항 디지털 입력을 받을 때, 포트에 아무 것도 연결되지 않으면 애매모호한 논리값이 들어오게 된다. 풀업 저항과 풀다운 저항은 애매모호한 논리값이 들어오지 않도록 하기 위함이며, 장치가 연결되지 않은 상태에도 논리적으로 안정된 값 (HIGH 혹은 LOW)가 들어올 수 있도록 함이 목적. 풀업 저항 풀다운 저항 5V 5V Q. 버튼을 눌렀을 때, 디지털 입력으로 1이 들어오게 하려면? 정답: 풀다운 저항 아두이노 입력 아두이노 입력 0V 0V 스위치가 떨어졌을 때, 아두이노쪽으로는 5V가 인가되고 스위치가 닫히면 저항이 없는 0V쪽이 아두이노로 입력된다. 스위치가 떨어졌을 때, 아두이노쪽으로는 0V가 인가되고 스위치가 닫히면 저항이 없는 5V쪽이 아두이노로 입력된다.
실습 2) 버튼 입력 받아 LED 컨트롤하기 (난이도 ★★☆) CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 실습 2) 버튼 입력 받아 LED 컨트롤하기 (난이도 ★★☆) USB 케이블을 아두이노에 끼우고, 다른 한쪽을 컴퓨터의 USB 포트에 연결 풀다운 저항 5V D7와 스위치 연결 GND 10k 저항을 스위치와 GND에 연결 연결되어 있음 떨어져 있음 If 조건문: val(변수)에 저장된 버튼값(D7)이 HIGH이면 LED를 켜고, LOW이면 LED를 끈다.
밝기, 세기, 속도 조절은 PWM (Pulse Width Modulation) CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 밝기, 세기, 속도 조절은 PWM (Pulse Width Modulation) PWM이란 Pulse Width Modulation을 의미하며 출력되는 신호의 HIGH와 LOW의 비율을 이용하여 전체적인 전압을 제어해주는 방식이라고 볼 수 있다. PWM의 사용 용도 LED 밝기 조정 오디오 신호 만들기 모터 속도 제어하기 아날로그 신호 출력하기 PWM의 사용방법 analogWrite(11,127); // 11번핀 2.5V를 출력 8비트 즉 0~255까지의 숫자로 0~5V의 전압을 출력할 수 있기 때문에 127은 약 2.5V의 전압이 출력된다.
실습 3) PWM으로 LED 밝기 컨트롤하기 (난이도 ★★☆) CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 실습 3) PWM으로 LED 밝기 컨트롤하기 (난이도 ★★☆) 주황색은 D5 for(시작, 끝, 증감량) 점점 밝아지다가 220옴 저항의 반대쪽은 GND 다리 짧은 쪽과 220옴 저항 연결 점점 어두워졌다가 다리 긴쪽과 주황색 연결 다리가 긴 쪽이 anode (+) 짧은 쪽이 cathode (-) analogWrite(핀번호, 값)에서 값은 0~255까지 사용할 수 있지만, 100이상에서는 밝기가 충분해서 0~100까지 사용함.
아두이노를 사용하여 “모니터링”할 때 – 아날로그 입력 CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 아두이노를 사용하여 “모니터링”할 때 – 아날로그 입력 A0부터 A5번까지 사용할 수 있으며 0~5V를 0~1023의 숫자로 읽을 수 있다. 예제 1) 밝기나 온도를 센싱할 때 예제 2) 기울기를 on-off가 아닌 각도로 인식할 때 예제 3) 전압을 측정할 때 5V analogRead() 실제전압 1023
실습 4) 조도센서 사용해서 밝기 모니터링 (난이도 ★★☆) CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 디지털 출력 5. 아두이노 디지털 입력 6. 아두이노 PWM 출력 7. 아두이노 아날로그 입력 8. 혼자 공부하는 법 실습 4) 조도센서 사용해서 밝기 모니터링 (난이도 ★★☆) 조도센서(이하 CdS)는 저항의 일종이며 광전자를 이용한 반도체 효과를 이용하여 외부 빛의 조도에 의해 저항값이 결정. 빛이 강해지면 저항값이 약해짐. 업로드 후, 클릭 조도센서는 극성이 없다. 10k 저항
아두이노를 공부하는 현명한 방법 “There is no royal road to learning” – 배움에는 왕도가 없다. CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 전원 5. 아두이노 디지털 출력 6. 아두이노 디지털 입력 7. 아두이노 PWM 출력 8. 아두이노 아날로그 입력 9. 혼자 공부하는 법 아두이노를 공부하는 현명한 방법 “There is no royal road to learning” – 배움에는 왕도가 없다. 하지만 현명한 방법은 있다. 1. 아두이노가 무엇인지 감을 잡았다면, 무엇을 만들어볼지 고민한다. 2. 어떤 컴포넌트가 필요할지 결정하고, 어렵다면 상담을 받아본다. (www.mechasolution.com) 3. 각 컴포넌트와 아두이노를 연결하는 방법을 구글에서 검색한다. 4. 필요한 배경지식은 검색을 통해서 이해하거나 블로그를 참고한다. (blog.naver.com/roboholic84) 5. 각각의 컴포넌트를 결합하고 문제를 해결하면서 프로젝트를 완성한다. 6. 문제가 해결되지 않을 경우에는 커뮤니티를 통해 질문을 한다. (www.makeshare.org) 7. 해달라고 하지 말고, 해줄 것이라는 기대를 접자. 그리고 스스로 내공을 키우자. 아두이노의 함수에 대해서는 http://www.arduino.cc/en/Reference/HomePage 아두이노의 프로젝트들에 대해서는 http://blog.naver.com/roboholic84 아두이노와 관련 질문은 http://makeshare.org
Make and Share! Thank you! :D CONTENTS 1. 우리는 왜 아두이노를 공부하는가 2. 아두이노 알아보기 3. 아두이노 시작하기 4. 아두이노 전원 5. 아두이노 디지털 출력 6. 아두이노 디지털 입력 7. 아두이노 PWM 출력 8. 아두이노 아날로그 입력 9. 혼자 공부하는 법 Make and Share! Thank you! :D