초판 1쇄발행 2014년 5월 30일지은이허경용펴낸이장성두펴낸곳제이펍출판신고 2009년 11월 10일제 호주소경기도파주시문발로 141 뮤즈빌딩 403호전화 / 팩스 홈페이지

Similar documents
Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx

C++ Programming

09 강제근로의 금지 폭행의 금지 공민권 행사의 보장 중간착취의 금지 41 - 대판 , 2006도7660 [근로기준법위반] (쌍용자동차 취업알선 사례) 11 균등대우의 원칙 43 - 대판 , 2002도3883 [남녀고용평등법위

PowerPoint 프레젠테이션

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

슬라이드 1

JARDUINO-UNO-BT 커넥터 / 스위치기능 종류 USB 커넥터리셋스위치 DC 전원잭업로드선택스위치 ISP 모드선택점퍼블루투스시리얼모듈전원 / 디지털포트 / 아날로그포트커넥터및 ISP 커넥터 기능 +5V 전원공급, 유선업로드기능누른상태에서전원을공급하면부트로더프로그

Arduino- 서보모터 서울과학기술대학교기계시스템디자인공학과 교수김성환

C++ Programming

PowerPoint 프레젠테이션

목차 1 아두이노와이어링 & 코딩 1-1 아두이노초보자를위한 아두이노와이어링과코딩에의한 LED ON OFF 12 Coding_LED_ON_OFF_ 아두이노초보자에게위험스러운 아두이노코딩에의한 LED

PowerPoint 프레젠테이션

저작자표시 - 비영리 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

C 허경용 All Rights Reserved. 초판 1 쇄발행 2015 년 7 월 29 일 지은이허경용 펴낸이장성두 펴낸곳제이펍 출판신고 2009 년 11 월 10 일제 호 주소경기도파주시문발로 141 뮤즈빌딩 403 호 전화

법학박사학위논문 실손의료보험연구 2018 년 8 월 서울대학교대학원 법과대학보험법전공 박성민

°æÁ¦Àü¸Á-µ¼º¸.PDF

INDUS-8.HWP

CONTENTS.HWP


Microsoft Word - MAI-ISP-STK500_매뉴얼_Ver25.docx

<C1A4C3A5BFACB1B D3420C1A4BDC5C1FAC8AFC0DAC0C720C6EDB0DFC7D8BCD220B9D720C0CEBDC4B0B3BCB1C0BB20C0A7C7D120B4EBBBF3BAB020C0CEB1C720B1B3C0B020C7C1B7CEB1D7B7A520B0B3B9DF20BAB8B0EDBCAD28C7A5C1F6C0AF292E687770>

Install stm32cubemx and st-link utility

목차 1 아두이노코딩 1-1 아두이노초보자를위한 아두이노코딩에의한 LED ON OFF 14 Coding_LED_ON_OFF_ 아두이노초보자에게위험스러운 아두이노코딩에의한 LED ON OFF 18 Co

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

[ 마이크로프로세서 1] 1 주차 2 차시. 마이크로프로세서와마이크로컨트롤러발달과정 1 주차 2 차시마이크로프로세서와마이크로컨트롤러발달과정 학습목표 1. 마이크로프로세서발달과정과종류를설명할수있다. 2. 인텔 8051 계열과아트멜 (Atmel) 의특성을설명할수있다. 학습

Microsoft PowerPoint - es-arduino-lecture-03


Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - EastSocket매뉴얼_ _.doc

Microsoft Word - src.doc

SIGIL 완벽입문

Motor Control Solution

untitled

ISP and CodeVisionAVR C Compiler.hwp

세계 비지니스 정보

<4D F736F F F696E74202D20325FBEC6B5CEC0CCB3EB20B1E2C3CABDC3C7E82E BC8A3C8AF20B8F0B5E55D>

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

영암군 관광종합개발계획 제6장 관광(단)지 개발계획 제7장 관광브랜드 강화사업 1. 월출산 기( 氣 )체험촌 조성사업 167 (바둑테마파크 기본 계획 변경) 2. 성기동 관광지 명소화 사업 마한문화공원 명소화 사업 기찬랜드 명소화 사업 240

C 허경용 All Rights Reserved. 초판 1 쇄발행 2015 년 7 월 29 일 지은이허경용 펴낸이장성두 펴낸곳제이펍 출판신고 2009 년 11 월 10 일제 호 주소경기도파주시문발로 141 뮤즈빌딩 403 호 전화

Microsoft Word - PLC제어응용-2차시.doc

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

- 2 -

1

ez-shv manual


구성품 - UMD 2808 모듈 - JTAG 커넥터 - 젂원 케이블 주요 특징 모듈의 부품화 : 고신뢰성의 DSP 모듈을 최적화된 시스템에 적용 용이 TMS320F2808 ZGMS - 100MHz 탑재 : 확장된 온도규격 (-40 도 ~ 125 도) 적용 Ultralo

고객 카드


이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

<4D F736F F F696E74202D203131C1D6C2F7202D E6FB8A620C0CCBFEBC7D120C4B3B8AFC5CD204C43442C C1A6BEEEC7CFB1E2205

Spring Boot/JDBC JdbcTemplate/CRUD 예제

내지-교회에관한교리

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

ADP-2480

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

준비물 아두이노보드, 올인원쉴드, USB 연결케이블 아두이노우노보드 올인원쉴드 - 2 -


PowerPoint Presentation

Microsoft PowerPoint - es-arduino-lecture-01

i

슬라이드 1

워드프레스(김대중)_내지_최종.indd

CAN-fly Quick Manual

슬라이드 1

특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - e2.ppt [호환 모드]

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

네이버블로그 :: 포스트내용 Print VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52 /carrena/ VMware 에서 l

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Musique(002~095).indd

[ 마이크로프로세서 1] 1 주차 1 차시. 마이크로프로세서개요 1 주차 1 차시마이크로프로세서개요 학습목표 1. 마이크로프로세서 (Microprocessor) 를설명할수있다. 2. 마이크로컨트롤러를성능에따라분류할수있다. 학습내용 1 : 마이크로프로세서 (Micropr

vRealize Automation용 VMware Remote Console - VMware

Microsoft Word - PEB08_USER_GUIDE.doc

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

*Revision History 날짜 내용 최초작성 Tel Fax [2] page

C O N T E N T 목 차 요약 / 4 Ⅰ. 서론 Ⅱ. 주요국별대형유통망현황 / Ⅲ. 시사점및진출방안 ( 첨부 ) 국가별주요수입업체

00-1표지

Studuino소프트웨어 설치

No Slide Title

<BFDCB1B9C0CE20C5F5C0DAB1E2BEF7C0C720B3EBBBE7B0FCB0E82E687770>

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

Example: LED flashlight

< BACFC7D1B1B3C0B0C1A4C3A5B5BFC7E228B1E2BCFABAB8B0ED D D20C6EDC1FD2035B1B32E687770>

810 & 는 소기업 및 지사 애 플리케이션용으로 설계되었으며, 독립 실행형 장치로 구성하거 나 HA(고가용성)로 구성할 수 있습니다. 810은 표준 운영 체제를 실행하는 범용 서버에 비해 가격 프리미엄이 거의 또는 전혀 없기 때문에 화이트박스 장벽 을

슬라이드 1

내지(교사용) 1-3부

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

인터럽트 (Interrupt) 범용입출력포트에서입출력의내용을처리하기위해매번입출력을요구하는플래그를검사하는일 (Pollong) 에대하여마이크로컨트롤러에게는상당한시간을소비하게만든다. 인터럽트란 CPU가현재처리하고있는일보다급하게처리해야할사건이발생했을때, 현재수행중인일을중단하고

사물인터넷비즈니스빅뱅_내지_11차_ indd

표1

Microsoft PowerPoint - Java7.pptx

ARDUINO Open Physical Computing Platform 오탈자, 문의및보완이필요한내용은 으로알려주세요.

Transcription:

초판 1쇄발행 2014년 5월 30일지은이허경용펴낸이장성두펴낸곳제이펍출판신고 2009년 11월 10일제406 2009 000087호주소경기도파주시문발로 141 뮤즈빌딩 403호전화 070 8201 9010 / 팩스 02 6280 0405 홈페이지 www.jpub.kr / 이메일 jeipub@gmail.com 편집부이민숙, 이슬, 이주원 / 소통 기획팀현지환본문디자인성은경 / 표지디자인미디어픽스용지에스에이치페이퍼 / 인쇄한승인쇄 / 제본광우제책사 ISBN 978-89-94506-93-7 (93000) 값 30,000원 이책은저작권법에따라보호를받는저작물이므로무단전재와무단복제를금지하며, 이책내용의전부또는일부를이용하려면반드시저작권자와제이펍의서면동의를받아야합니다. 잘못된책은구입하신서점에서바꾸어드립니다. 제이펍은독자여러분의아이디어와원고투고를기다리고있습니다. 책으로펴내고자하는아이디어나원고가있으신분께서는책의간단한개요와차례, 구성과저 ( 역 ) 자약력등을메일로보내주세요. jeipub@gmail.com

드리는말씀 이책에기재된내용을기반으로한운용결과에대해저자, 소프트웨어개발자및제공자, 제이펍출판사는일체의책임을지지않으므로양해바랍니다. 이책에등장하는회사명, 제품명은일반적으로각회사의등록상표 ( 또는상표 ) 이며, 본문중에는 TM, C, R 마크등을생략하고있습니다. 이책에서사용하고있는제품버전은독자의학습시점에따라책의내용과다를수있습니다. 이책에사용한그림은대부분저자가직접촬영하였으며, 그외의그림은소유자의허락하에싣거나출처를표시하였습니다. 연습문제는독자의생각을넓히는데도움을주자는취지로만들어졌으며, 아이콘에해당하는문제에한해서해답을제공합니다. 해답은제이펍홈페이지 (www.jpub.kr) 에서확인할수있습니다. 이책에는 ( 주 ) 뉴티씨에서구매할수있는아두이노호환보드의할인쿠폰이제공됩니다. 자세한내용은책의맨마지막페이지를참고하시기바랍니다. 소스코드를직접타이핑해보는것을권장하므로본도서의소스코드는별도로제공되지않습니다. 책의내용과관련된문의사항은저자 (hgycap@deu.ac.kr) 혹은제이펍출판사 (jeipub@gmail.com) 로연락주시기바랍니다.

차례 머리말 베타리더후기 x xii CHAPTER 01 CHAPTER 02 아두이노란무엇인가? 1 마이크로컨트롤러 17 2.1 마이크로프로세서와마이크로컨트롤러 17 2.2 교차개발환경 20 2.3 개발프로그램 22 CHAPTER 03 CHAPTER 04 CHAPTER 05 아두이노개발환경설정 28 아두이노프로그램의구조 49 아두이노의기본입출력 61 5.1 디지털입출력 62 5.2 아날로그입출력 70 CHAPTER 06 아두이노를위한 C/C++ 언어 76 6.1 C/C++ 언어테스트환경 77 6.2 main 함수 79 6.3 데이터형 79 6.4 연산자 89 6.5 제어문 101 6.6 배열 107 6.7 함수 111 6.8 포인터 112 6.9 클래스 117 차례 v

CHAPTER 07 아두이노함수 128 7.1 디지털입출력함수 129 7.2 아날로그입출력함수 132 7.3 고급입출력함수 138 7.4 시간함수 141 7.5 수학함수 144 7.6 삼각함수 147 7.7 난수생성함수 148 7.8 비트조작함수 150 7.9 외부인터럽트함수 152 7.10 인터럽트함수 155 CHAPTER 08 기본클래스 158 8.1 Serial 159 8.2 String 172 CHAPTER 09 라이브러리 189 9.1 기본라이브러리 189 9.2 외부라이브러리 195 9.3 라이브러리만들기 200 CHAPTER 10 아두이노를위한전자부품 209 10.1 저항 209 10.2 다이오드 211 10.3 커패시터 212 10.4 트랜지스터 214 10.5 집적회로 215 10.6 브레드보드 217 CHAPTER 11 시리얼통신사용하기 221 11.1 시리얼통신을통한 RGB LED 밝기제어 222 11.2 시리얼통신에서숫자형식지정하기 225 vi 아두이노상상을스케치하다

11.3 Handshaking 에의한시리얼통신연결 226 11.4 시리얼통신을통한다수의 LED 제어 229 CHAPTER 12 CHAPTER 13 소프트웨어시리얼 234 디지털및아날로그입출력 248 13.1 아두이노스케치를위한최소코드 249 13.2 내장 LED 점멸 249 13.3 풀다운저항이연결된버튼입력 250 13.4 풀업저항이연결된버튼입력 252 13.5 아날로그입력 254 13.6 PWM 형식의아날로그출력 257 13.7 아날로그입력에의한 LED 밝기조절 259 13.8 delay 함수없이 LED 점멸하기 261 13.9 버튼을누른횟수세기 263 13.10 내부풀업저항을이용한버튼입력 265 13.11 멜로디재생 268 13.12 미니키보드 276 13.13 음높이조절하기 278 13.14 LED 미터 280 CHAPTER 14 센서사용하기 1 285 14.1 광센서 286 14.2 압력센서 290 14.3 온도센서 295 CHAPTER 15 센서사용하기 2: 초음파거리센서 300 15.1 초음파센서모듈 - SRF05 301 15.2 초음파거리센서모듈 - Grove 306 CHAPTER 16 7 세그먼트표시장치 312 16.1 7 세그먼트표시장치 314 16.2 7 세그먼트표시장치 + 7447 317 차례 vii

16.3 7 세그먼트표시장치 + 74164 320 16.4 7 세그먼트표시장치 + 74595 323 CHAPTER 17 CHAPTER 18 CHAPTER 19 CHAPTER 20 CHAPTER 21 CHAPTER 22 네자리 7 세그먼트표시장치 329 LED 매트릭스 338 텍스트 LCD 359 그래픽 LCD 373 TFT LCD 386 블루투스 401 22.1 블루투스모듈 HC-06 402 22.2 아두이노와컴퓨터간블루투스통신 406 22.3 아두이노와스마트폰간블루투스통신 413 22.4 마스터와슬레이브간블루투스통신 416 CHAPTER 23 서보 & DC 모터 423 23.1 서보모터 424 23.2 DC 모터 430 23.3 모터쉴드 434 CHAPTER 24 날짜와시간 1 439 24.1 소프트웨어 RTC 440 24.2 하드웨어 RTC 443 CHAPTER 25 날짜와시간 2: Wire 라이브러리 450 25.1 Wire 라이브러리 451 25.2 Wire 라이브러리를이용한 RTC 모듈제어 457 CHAPTER 26 I2C 와 SPI 통신을이용한아두이노연결 467 26.1 I2C 468 26.2 I2C 를이용한아두이노간통신 469 26.3 SPI 471 viii 아두이노상상을스케치하다

26.4 SPI 라이브러리 472 26.5 SPI 를이용한아두이노간통신 476 CHAPTER 27 디지털입출력확장 482 27.1 키매트릭스 483 27.2 아날로그입력핀을이용한버튼입력확장 489 27.3 MCP23017 칩 492 CHAPTER 28 CHAPTER 29 EEPROM 라이브러리 502 타이머라이브러리 509 29.1 Metro 라이브러리 513 29.2 MsTimer2 라이브러리 515 CHAPTER 30 SD 라이브러리 519 30.1 SD 클래스 521 30.2 File 클래스 524 CHAPTER 31 부트로더와메모리 537 31.1 부트로더 537 31.2 ATmega328 의메모리 544 CHAPTER 32 DIY 아두이노 549 32.1 DEUino 회로 550 32.2 아두이노보드를이용한업로드 561 32.3 프로그래머를이용한업로드 570 32.4 UART 시리얼변환기를이용한업로드 573 32.5 8MHz 내부클록이용 576 CHAPTER 33 CHAPTER 34 아두이노와호환가능한마이크로컨트롤러 1: ATmega128 584 아두이노와호환가능한마이크로컨트롤러 2: ATtiny85 602 찾아보기 613 차례 ix

머리말 이탈리아변방에서온아두이노는비전공자들도주변환경과상호작용하는하드웨어를쉽게설계하고제작할수있도록만들어진플랫폼이다. 마이크로컨트롤러를조금이라도다루어보았다면아두이노의기본예제인 LED 깜빡이기를테스트하는순간 쉽다 는것을눈치챌수있을것이다. 기억하기쉬운이름으로추상화된아두이노의함수들은레지스터의이름과각비트의의미를따로찾아보지않아도되도록직관적이고쉬운소프트웨어개발환경을제공한다. 또한, 표준화된하드웨어플랫폼은다양한종류의확장보드들을쉽게구할수있도록해준다. 이처럼쉬운마이크로컨트롤러개발환경이가능한이유는아두이노의오픈소스정신에있을것이다. 그러나이렇게표준화되고간편한하드웨어 / 소프트웨어환경은다른마이크로컨트롤러에서는찾아보기어려운것이사실이다. 아이폰이스마트폰시대를이끌어가는선두주자가될수있었던것은앱스토어를통해구축한 생태계 때문이었음을우리모두가잘알고있다. 안드로이드진영역시플레이스토어를통해이에대응하고있다. 아두이노역시마찬가지다. 만일, 초음파센서에대한정보가필요하다면검색창에 아두이노초음파센서 라고입력해보라. 여러페이지에걸쳐나열되는수많은정보들은오히려당혹스러울정도다. 지난 10년간수많은하드웨어 / 소프트웨어개발자의참여로구축된아두이노의생태계는여타마이크로컨트롤러가따라가지못할강점이며이는앞으로도계속될것이다. 하지만아두이노를다루기위해서는하드웨어는물론이거니와소프트웨어에대한지식이선행되어야한다. 아두이노가다른마이크로컨트롤러에비해알아야할하드웨어및소프트웨어 ( 특히프로그래밍에관련된지식 ) 관련내용이적기는하지만아예없지는않다. 만약하드웨어와소프트웨어에대한지식이있다면, 아두이노는생각한바를빠른시간에구현하고확인할수있도록해주는훌륭한프로토타이핑도구가되어줄것이다. 그러나관련지식이없다고해서실망할필요는없다. 관심과흥미만있다면아두이노는여느마 x 아두이노상상을스케치하다

이크로컨트롤러에비해배우기쉽고활용가능성또한무한한플랫폼으로서, 이를통해주변환경과상호작용할수있는길을열어줄것이다. 이책에는전공자및비전공자들모두가아두이노를사용하기위해필요한하드웨어및소프트웨어관련내용을모두포함시키고자노력하였다. 반복적으로회로를구성해보고코드를입력하여실행시켜봄으로써아두이노를사용하기위해필요한지식을습득할수있으리라생각한다. 책의대부분에서아두이노우노를이용하여구상한바를실제로구현하는데필요한다양한재료들을소개하고, 이를이용할수있는방법을보여주는데주안점을두었다. 하지만모든내용을다룰수는없었으며, 내용을선별하는데개인적인기호가반영된것은당연하다. 되짚어볼수록아쉬운점이자꾸늘어나지만다루지못한내용들에대해서는다음기회를기약하고자한다. 아두이노는쉽다. 이제남은것은상상력뿐이다. 아무런지식없이도 5분이면 LED에불을켤수있는아두이노가흥미롭기는하겠지만, 단지그뿐이라면흥미로움이오래가지는않을것이다. 학습을위한학습이아닌생각한바를구현하기위한도구로서의아두이노를염두에두고, 상상력이필요한곳을찾아주변을둘러보다보면아두이노는훌륭한조력자로자리를지키고있을것이다. 지은이허경용 머리말 xi

베타리더후기 최해성 ( 티켓몬스터 ) 아두이노에관해상세하게, 잘풀어설명되어있어아두이노를접해보지못한사람들도 이책으로학습한다면어느새전문가에준하는자신을발견할수있을것입니다. 송종근 ( 위시컴퍼니 ) 전문적인지식이없어도하드웨어를접해보고이를통해무엇인가를만들어볼수있는길을아두이노가제공해주고있습니다. 이번기회를통해아두이노를통해움직이고, 생각대로어떤일을해내는재미있는경험을해보았습니다. 공학계열전공자가아니더라도누구나충분히재미를느낄만하니많은사람들이한번씩경험해봤으면합니다. 이아름이책을보면서대학동안공부했던것이새록새록떠올랐네요. 그때좀더열심히공부했으면베타리딩에큰도움이되었을텐데 하는아쉬움이있습니다. 책을보면서공부를더해야겠단생각이드는건오랜만이네요. 감사합니다! 정연모 ( 이지닉스 ) 전자쪽을전혀모르더라도쉽게이해할수있을만큼자세한설명과개발에대한기초내용이포함되어있습니다. 누구라도이책한권이면아두이노를이용하여개발하는데전혀문제가없을정도입니다. xii 아두이노상상을스케치하다

최아연 ( 숭실대학교 ) 베타리딩으로읽어보는내내문장도깔끔하고설명도섬세해서굉장히많은노력이들어간책이구나하는생각이들었습니다. 주변에처음아두이노를시작하는사람이있다면주저없이추천해주고싶은책입니다. Beta Readers... 제이펍은책에대한애정과기술에대한열정이뜨거운베타리더들로하여금출간되는모든서적에사전검증을시행하고있습니다. 베타리더후기 xiii

CHAPTER 아두이노란무엇인가? 01 학습목표아두이노는오픈소스기반의하드웨어및소프트웨어개발환경을바탕으로비전공자들도손쉽게컨트롤장치를만들수있도록하기위해시작된프로젝트이다. 이장에서는아두이노의개발배경및특징을살펴보고아두이노사용방법과활용가능성에관해알아본다. 아두이노 (Arduino) 를인터넷에서검색해보면아트멜 (Atmel) 사의마이크로컨트롤러를기반으로만들어진소형보드를가장먼저볼수있다. 그렇다면아두이노는마이크로컨트롤러보드를지칭하는것일까? 어떤점에서는맞지만정확하다고는할수없다. 아두이노는마이크로컨트롤러보드와더불어보드를이용하여프로그램을개발할수있는소프트웨어개발환경까지함께이르는말이기때문이다. 아두이노이전에도마이크로컨트롤러는물론이거니와마이크로컨트롤러를내장한개발보드들이다수존재하였다. 대표적인마이크로컨트롤러로는 AVR*, ARM** 등이있으며현재도많이사용되는마이크로컨트롤러들이다. AVR 과 ARM이성능및활용성이이미입증된마이크로컨트롤러들임에도아두이노가필요한이유는무엇일까? 아두이노가기존의 AVR 이나 ARM과다른점은빠른시간에쉽게마이크로컨트롤러기반의하드웨어제어장치를만들수있도록해준다는점에서찾아야한다. 아두이노의기능은기존의마이크로컨트롤 * http://www.atmel.com ** http://www.arm.com 1

러보드와다르지않으며, 아두이노우노 (UNO) 의경우성능은다른마이크로컨트롤러보드에비해서도낮은것이사실이다. 하지만아두이노가주목을끄는이유는아두이노가오픈소스를바탕으로만들어졌기때문이다. 아두이노의하드웨어는아트멜의마이크로컨트롤러와그주변회로들로구성된다. 아두이노의하드웨어구성은오픈소스로공개되어있어공개된사양을바탕으로손쉽게새로운기능을추가하거나기존기능을변경할수있으며, 실제로다양한아두이노호환보드들이판매되고있다. 그림 1-1 아두이노우노 (UNO) 보드 * 아두이노는 2005년이탈리아밀라노옆에위치한이브레아 (Ivrea) 에서예술가, 디자이너및학생들이쉽게사용할수있는저렴한컨트롤장치를만들수있도록하기위해시작되었다. 프로젝트를시작한마시모밴지 (Massimo Banzi) 와데이비드쿠아르티에예스 (David Cuartielles) 는이마을의역사적인물인이태리의왕 Arduin of Ivrea 에서그이름을따왔다고한다. 2005년발표이후아두이노보드는마이크로컨트롤러를활용하여제어장치를만들고자하는이들에게주목을받기시작하여그판매량이급증하고있으며, 구글이 2011 년아두이노를하드웨어파트너로선택한것은오픈소스의정신을공유하고있음은물론아두이노의확장성과편리함을인정하였기때문이라하겠다. * 출처 : http://arduino.cc/en/main/arduinoboarduno 2 CHAPTER 01 아두이노란무엇인가?

아두이노하드웨어는이탈리아회사인스마트프로젝트 (Smart Projects)* 에서판매하고있다. 하지만아두이노는하드웨어가공개되어있으므로여러회사에서아두이노호환보드를제작하여판매하고있다. 아두이노하드웨어의사양은 2005년이후몇차례개정보완이이루어져여러가지공식아두이노보드가판매되고있으며 ** 현재가장많이사용되는보드는아두이노우노 (UNO) 이다. 아두이노우노는 2011 년 12월에나온 R3 버전이최신버전이며, 이후설명은아두이노우노 R3 버전을기본으로한다. 아두이노우노 R3의외형은그림 1-2 와같다. (a) 전면 (b) 후면 그림 1-2 아두이노우노 R3*** 아두이노우노보드는 ATmega328 마이크로컨트롤러를중심으로외부장치연결을위한 핀헤더, 전원연결잭, 프로그램다운로드를위한 USB 커넥터, 부트로더와프로그램다운 로드를위한 ISP 연결커넥터등으로구성되어있다. * http://www.smartprj.com ** http://arduino.cc/en/main/products *** 출처 : http://arduino.cc/en/main/arduinoboarduno 3

USB 시리얼변환컨트롤러 리셋버튼 디지털핀 USB 커넥터 16MHz 클록 ISP 연결커넥터 ATmega328 외부전원 그림 1-3 아두이노우노보드 * 아날로그핀 아두이노우노는프로그램다운로드를위해서 USB와 ISP 커넥터를제공하고있지만 USB 를통한프로그램다운로드를기본으로사용한다. 아두이노보드와 USB 연결선만있으면별도의장치없이아두이노로프로그램을작성하고실행해볼수있다. 아두이노우노 R3 의주요사양은표 1-1 과같다. 표 1-1 아두이노우노 R3 주요사양항목 내용 비고 마이크로컨트롤러 ATmega328 동작전압 5V 입력전압 7V~12V 추천입력범위 디지털입출력핀 14개 6개 PWM 출력핀 아날로그입력핀 6개 플래시메모리 32KB ATmega328, 부트로더 0.5KB SRAM 2KB ATmega328 EEPROM 1KB ATmega328 클록주파수 16MHz * 출처 : http://arduino.cc/en/main/arduinoboarduno 4 CHAPTER 01 아두이노란무엇인가?

아두이노의또다른특징은쉴드 (shield) 라고불리는다양한확장모듈이존재한다는점이다. 아두이노보드의핀배치는표준화되어있으므로이러한표준을준수한다면누구든손쉽게원하는기능을수행하는쉴드를제작할수있다. 쉴드는그림 1-4와같이아두이노보드에수직으로장착하여사용하며, 각쉴드가사용하는핀이중복되지않는다면여러개의쉴드를적층하여동시에사용하는것도가능하다. (a) 이더넷쉴드 * (b) 모터쉴드 ** 그림 1-4 아두이노쉴드 아두이노의장점은간단하며, 사용하기쉽고, 다양한확장쉴드가존재한다는하드웨어측면에만있는것이아니다. 아두이노는하드웨어인아두이노보드와소프트웨어인통합개발환경 (Integrated Development Environment, IDE) 을함께일컫는말이다. 아두이노개발용소프트웨어는아두이노보드와마찬가지로오픈소스를바탕으로하고있으며, 초보자들도쉽게프로그램을작성할수있도록직관적이고간편한인터페이스를제공하고있다. 아두이노의통합개발환경은다양한운영체제에서실행이가능하도록자바로개발되었으며, IDE를통해한번의클릭으로코드를컴파일해서아두이노보드에프로그램을업로드하고실행시킬수있다. 일반적으로아두이노를위해만들어진프로그램이나코드를스케치 (sketch) 라부르며, 단어의의미그대로그림을그리듯이프로그램을쉽게작성할수있음을의미한다. 그림 1-5는아두이노프로그램을 스케치 하는개발환경을보여준다. * 출처 : http://arduino.cc/en/main/arduinomotorshieldr3 ** 출처 : http://arduino.cc/en/main/arduinoethernetshield 5

그림 1-5 아두이노통합개발환경 아두이노프로그램은아두이노공식홈페이지 * 에서다운받을수있으며, 이외에도여러가 지유용한정보가제공되고있으므로자주들러확인하기바란다. * http://arduino.cc 6 CHAPTER 01 아두이노란무엇인가?

그림 1-6 아두이노공식홈페이지 아두이노보드는여러인터넷사이트를통해구입할수있으며, 표 1-2 는아두이노공식홈 페이지에나열된국내공식판매사이트들이다. 이외에도오픈하드웨어를바탕으로제작된 호환보드를온라인사이트를통해쉽게구할수있다. 7

표 1-2 국내아두이노공식판매사이트 사이트 주소 PlugHouse http://www.plughouse.co.kr MakeZone http://www.makezone.co.kr ArtRobot http://artrobot.co.kr Eleparts http://www.eleparts.co.kr JK DeviceShop http://jkelec.cafe24.com Hanjindata http://www.smartkit.co.kr INIPRO http://www.inipro.net Keytronics Lab Co. http://www.keytronics.co.kr Segyung Britestone http://shop.britestone.com SAMPLE Electronics http://www.robot.co.kr VCTEC Korea http://vctec.co.kr Robot Science Mall http://www.robotscience.kr 아두이노가여타마이크로컨트롤러에비해가지는장점을요약하면다음과같다. 저렴한가격 : 아두이노보드는다른마이크로컨트롤러플랫폼에비해상대적으로가격이싸다. 아두이노보드는저렴한가격으로직접조립할수도있으며, 아두이노우노공식보드의경우국내판매사이트에서 3만 5천원정도의가격으로구입가능하다. 호환보드의경우공식보드가격의절반이하로구입할수있는보드들도다수존재한다. 다양한운영체제지원 : 대부분의마이크로컨트롤러시스템이윈도우만을지원하는데반해아두이노개발환경은윈도우, 매킨토시 OS X, 리눅스를지원한다. 쉽고간단한프로그래밍환경 : 아두이노프로그래밍환경은하드웨어나프로그래밍에경험이적은초보자들도쉽게접근할수있도록쉽고간단하게만들어져있다. 고급기능을원하는고급사용자들을위한유연성역시제공하고있어마이크로컨트롤러에쉽게입문해서고성능칩활용을위한시작점으로서의역할을할수있다. USB 지원 : 기존에마이크로프로세서를위해많이사용하던직렬또는병렬포트가아닌범용적인 USB를기본으로사용한다. 현재 AVR 과 ARM 역시직렬이나병렬포트이외에 USB 연결을지원하고있다. 오픈소스소프트웨어 : 아두이노개발소프트웨어는오픈소스를바탕으로하고있으므로고급사용자들이기능을확장할수있도록하고있다. 아두이노개발언어는 C++ 을기반으로하고있으므로라이브러리를통해그기능을확장할수있음은물론이거니와아두이노가기반하고있는 AVR 용 C 언어를아두이노프로그램에직접사용할수있다. 8 CHAPTER 01 아두이노란무엇인가?

오픈소스하드웨어 : 아두이노보드는아트멜의마이크로컨트롤러를기반으로하고있으며하드웨어사양은 CCL(Creative Commons License) 로공개되어있다. 따라서확장보드를쉽게만들어낼수있으며실제로다양한확장보드들이출시되어있다. 또한, 아두이노보드는그구조가간단하여어렵지않게브레드보드상에직접구현할수있다. 가장많이보급된아두이노우노이외에도여러가지공식아두이노보드들을아두이노사이트에서확인할수있다. 아두이노우노 는 ATmega328 마이크로컨트롤러를사용하고 USB를통한프로그램다운로드를위해별도의전용마이크로컨트롤러를하나더사용한다. 반면 아두이노레오나르도 (Leonardo) 를비롯한여러보드는 USB 통신기능이내장된 ATmega32u4 마이크로컨트롤러를사용하므로 USB 연결을위한별도의마이크로컨트롤러를필요로하지않는다. 아두이노메가 (Mega) 2560 은 ATmega 2560 마이크로컨트롤러를사용하여아두이노우노에비해더많은디지털및아날로그입출력을제공하므로많은입출력이필요한경우사용할수있다. 아두이노나노 (Nano) 는아두이노우노와동일한마이크로컨트롤러를사용하면서크기를작게만든아두이도보드로소형컨트롤러제작을원한다면고려해볼수있다. 아두이노두에 (Due) 는 ARM의 Cortex-M3 를바탕으로한 32비트마이크로컨트롤러를사용하고있어고성능의컨트롤러를제작하기위해사용할수있다. 표 1-3 은아두이노사이트의공식아두이노보드들을비교한것으로보다자세한내용은홈페이지를참고하면된다. 아두이노로할수있는작업은많지만그한계도분명존재한다. 아두이노두에를제외한아두이노보드들은 8비트마이크로컨트롤러를사용하고있으며, 대부분의보드가 16MHz 에서동작하고 32KB의프로그램메모리를가지고있다. 따라서연산량이많은경우, 빠른연산을필요로하는경우, 고속의데이터전송을요하는경우에는아두이노가적합하지않다. 한마디로아두이노는간단한제어장치를만드는데적합하며, 아두이노가 예술가, 디자이너및학생들이쉽게사용할수있는저렴한컨트롤장치를만들기위해 시작되었다는점을잊지말아야한다. 비전공자들을위해서는간단한제어장치를각자의전공분야와결합하기위해, 전공자들을위해서는아이디어를실제로구현하기이전에가능성을검토해볼수있는프로토타이핑시스템으로서그리고본격적인마이크로컨트롤러학습을위한시발점으로아두이노는그가치가있다하겠다. 아두이노를이용한다양한프로젝트들은인터넷검색을통해쉽게찾아볼수있으며유튜브에서다양한작품의실제동작모습들도확인할수있으니시간을내어검색해보길추천한다. 단, 다양하고신기한작품감상에시간이지난줄몰라약속시간에늦었더라도필자를원망하지는말기바란다. 9

표 1-3 아두이노공식보드 보드 아두이노 우노 마이크로 컨트롤러 디지털 핀수 PWM 핀수 아날로그 핀수 클록 (MHz) 플래시 메모리 (KB) ATmega328 14 6 6 16 32 아두이노 소형아두이노보드 ATmega328 14 6 8 16 32 미니 USB 연결커넥터없음 아두이노미니보드에아두이노 ATmega328 14 6 8 16 32 브레드보드장착용핀과나노 USB 연결커넥터추가 릴리패드 입는컴퓨터개발을위한 아두이노 ATmega328V 14 6 6 8 16 원형아두이노보드 아두이노레오나르도 ATmega32u4 20 7 12 16 32 USB 통신기능이내장된 ATmega32u4 사용 USB 통신기능이내장된아두이노 ATmega32u4 20 7 12 16 32 ATmega32u4 사용마이크로 소형아두이노보드 USB 통신기능이내장된 ATmega32u4 사용아두이노 ATmega32u4 20 7 12 16 32 이더넷전용의리눅스윤기반 Atheros AR9331 프로세서를함께사용 아두이노 ATmega2560 사용으로많은메가 ATmega2560 54 15 16 16 256 수의입출력핀제공 2560 아두이노메가 ADK ATmega2560 54 15 16 16 256 아두이노메가 2560에구글 ADK 지원을위한 USB 호스트기능추가 SAM3X8E 아두이노 32비트마이크로컨트롤러 (ARM 54 12 12 84 512 두에사용 Cortex-M3) 기타 아두이노를배우고사용함에있어유용한사이트몇군데를소개하면서이장을마무리하 고자한다. 무엇보다가장중요한사이트는아두이노공식사이트 * 일것이다. 아두이노공 식사이트에는아두이노공식보드에관한정보와학습에필요한참고자료들을제공하고 * http://arduino.cc 10 CHAPTER 01 아두이노란무엇인가?

있다. 또한, 아두이노놀이터 (playground)* 와포럼 ** 에서는질문 / 답변및다양한토론이진행되고있어아두이노와관련된거의모든자료를찾아볼수있다고해도과언이아니다. 국내사이트로는아두이노스토리카페 *** 가있다. 아두이노스토리카페는아두이노관련국내최대의커뮤니티로아두이노를비롯하여마이크로컨트롤러와관련된다양한정보들을찾아볼수있다. 그림 1-7 아두이노스토리카페 아두이노보드구입은표 1-2 의아두이노공식판매사이트를통해가능하다. 표 1-2 의사이트에서는아두이노뿐만아니라마이크로컨트롤러와관련된다양한제품들을판매하고있다. 해외판매사이트중에서는스파크펀 (SparkFun), 에이다프루트 (Adafruit), 시드스튜디오 (seeedstudio) 사이트를방문해보기를추천한다. 스파크펀 **** 은공식아두이노보드뿐만아니라다양한아두이노확장보드를개발하여판매하고있으므로유용하고재미난제품의정보를얻을수있다. * http://playground.arduino.cc ** http://forum.arduino.cc *** http://cafe.naver.com/arduinostory **** https://www.sparkfun.com 11

그림 1-8 스파크펀사이트 에이다프루트 * 는스파크펀과유사하게공식아두이노보드와확장보드들을판매하고있다. 특히에이다프루트는에이다프루트러닝시스템 (AdaFruit Learning System)** 을통해아두이노를비롯한다양한주제에관해쉽고친절하게기술된학습자료를제공하고있으므로읽어보기를추천한다. 그림 1-9 에이다프루트사이트 * http://www.adafruit.com/ ** http://learn.adafruit.com/ 12 CHAPTER 01 아두이노란무엇인가?

시드스튜디오 * 역시아두이노호환보드및확장모듈들을판매하고있다. 특히시드스튜 디오에서제작하는모듈들은 GROVE 시스템이라는표준화된입출력인터페이스를제공하 므로하드웨어에익숙하지않은사용자들이나모듈개발자들은참고할만하다. 그림 1-10 시드스튜디오사이트 아두이노학습에유용한사이트들역시여러곳이있지만체계적이고방대한내용을다루고있는 tronixstuff** 를추천한다. 국내에서쉽게구할수없는부품을사용하는경우가간혹있어구현에어려움이있는경우가있지만, 50개이상의장으로구성된튜토리얼은한권의책에서얻을수있는정보그이상이다. * http://www.seeedstudio.com/ ** http://tronixstuff.com/tutorials/ 13

그림 1-11 tronixstuff 사이트 이외에도 open electronics*, instructables** 등에서유용한정보를얻을수있으므로시간을 내어둘러보기바란다. * http://www.open-electronics.org/ ** http://www.instructables.com/ 14 CHAPTER 01 아두이노란무엇인가?

정리 아두이노는오픈소스를바탕으로하는하드웨어와소프트웨어를통칭하여이르는말로비전공자들을위한플랫폼에서출발하여쉽고빠르게제어장치를구성할수있음을가장큰특징으로한다. 오픈소스하드웨어는공개된회로를바탕으로아두이노보드자체의기능개선및확장이가능하도록해주므로다양한호환보드와확장보드들이판매되고있다. 원하는기능의보드가없는경우에는아두이노의표준을준수하면서직접하드웨어를설계하고제작할수도있다. 소프트웨어역시오픈소스를바탕으로하고있으므로무료로다운받아사용할수있으며, 비전공자들도쉽게사용할수있도록간단하고직관적인사용자인터페이스를제공하고있다. 공식아두이노보드에는가장널리보급된아두이노우노를포함하여십여종의보드가포함되어있으며, 그특성이약간씩달라사용하고자하는용도에맞게선택하여사용할수있다. 아두이노관련정보대부분은아두이노공식사이트와놀이터, 포럼등을통해얻을수있다. 연습문제 1. 아두이노는다른마이크로컨트롤러보드에비해여러가지장점이있다. 하지만아두이노역시완벽한마이크로컨트롤러보드는아니며그한계와단점이존재한다. 아두이노보드의한계와단점은무엇인지생각해보자. 2. 아두이노는또다른오픈소스프로젝트인프로세싱 (Processing) 을바탕으로만들어졌다. 프로세싱이자바를기반으로비주얼프로그래밍을위해만들어진언어라면, 아두이노는 C++ 을기반으로하드웨어제어를위해만들어진언어라는점에서차이가있다. 프로세싱공식홈페이지 * 에서프로세싱프로그램을설치하고다음코드를입력하여무작위로움직이는원이표시되는결과를확인해보자. 프로세싱프로그램은아두이노와마찬가지로압축을푸는것만으로실행이가능하며 [Sketch]-[Run] 메뉴를선택하여프로그램을실행시킬수있다. 그림 1-5의아두이노환경과비교하여프로세싱과의차이점이무엇인지생각해보자. int X = 400; int Y = 400; int max_step = 20; // 윈도우크기, 넓이 // 윈도우크기, 높이 // 한번에움직일수있는최대양 * http://www.processing.org/ 정리 15

int currentx = X / 2; int currenty = Y / 2; // 시작위치, X // 시작위치, Y void setup() { size(x, Y); } // 윈도우크기설정 void draw() { int movex, movey; int nextx, nexty; // 다음원의중심을결정하고윈도우내에중심이있는지검사 do{ movex = (int)random(-max_step, max_step); movey = (int)random(-max_step, max_step); nextx = currentx + movex; nexty = currenty + movey; }while(nextx < 0 nextx >= X nexty < 0 nexty >= Y); currentx = nextx; currenty = nexty; // 현재위치업데이트 ellipse(currentx, currenty, 80, 80); } // 원그리기 16 CHAPTER 01 아두이노란무엇인가?