아두이노? 2005년 이탈리아 이브레아에서 예술가와 디자이너를 위한 마이크로컨트롤러 프로젝트로 시작 아두이노는 2005년 이탈리아 이브레아에서 예술가와 디자이너를 위한 마이크로컨트롤러 프로젝트로 시작 아두이노는 하드웨어(아트멜의 AVR 시리즈 마이크로컨트롤러)와 소프트웨어(프로그램 개발을 위한 전용 라이브러리를 포함하는 개발 환경)를 함께 지칭 아두이노 하드웨어는 마이크로컨트롤러 보드의 일종임 아두이노 보드라고도 함 마이크로컨트롤러(AVR uC) + 커넥터 + 아두이노의 하드웨어와 소프트웨어는 모두 오픈 소스 정책에 따라 공개되어 있음
아두이노 우노
아두이노 보드의 종류 – 핀 헤더 유무 핀 헤더 있음 : 교육&개발 핀 헤더 없음 : 제품 적용 ATmega328 ATmega32u4 나노 마이크로
특수 목적용 아두이노 보드 릴리패드 : 웨어러블 제작 에스플로라 : 센서 및 입력 장치 포함 메가ADK : 안드로이드 액세서리 개발 로봇 : 주행장치 개발
동일한 핀 배열 : 공통 확장 보드인 ‘쉴드’ 제작 가능 아두이노 우노와 아두이노 메가2560 메가2560의 확장 핀 배열 : 우노에 비해 추가 기능 제공 동일한 핀 배열 : 공통 확장 보드인 ‘쉴드’ 제작 가능
쉴드 (Shield) 아두이노 보드의 기능 확장을 위한 하드웨어 다양한 아두이노의 공식 쉴드 및 써드 파티 업체의 호환 쉴드 존재 호환 쉴드는 아두이노의 오픈 하드웨어 정책에 따라 가능 와이파이 쉴드 USB 호스트 쉴드
아두이노 보드의 종류 – uC의 종류 아두이노 마이크로컨트롤러 아키텍처 CPU 비트 수 우노 ATmega328 AVR 8 레오나르도 ATmega32u4 메가2560 ATmega2560 제로 ATSAMD21G18 ARM Cortex M0+ 32 듀에 AT91SAM3X8E ARM Cortex M3
AVR 기반 아두이노 보드 항목 우노 레오나르도 메가2560 uC ATmega328 ATmega32u4 ATmega2560 클록 16MHz 핀 수 28 44 100 디지털 입출력 핀 수 14 18(12) 54 아날로그 입력 핀 수 6 6(12) 16 입출력 핀 수 20 24 70 PWM 채널 수 7 15 플래시 메모리 32KByte 256KByte SRAM 2KByte 2.5KByte 8KByte EEPROM 1KByte 4KByte
아두이노 우노 아두이노 보드 중 가장 기본이 되는 보드 8비트 CPU 포함 20개의 디지털 입출력 핀 사용 가능 0번에서 19번까지 핀 단위의 번호 지정 6개의 핀으로 PWM 신호 출력 가능 3, 5, 6, 9, 10, 11번 핀 6개의 아날로그 입력 핀 사용 가능 14번에서 19번까지의 디지털 입력 핀과 동일 10비트 ADC 사용 (0~1023의 양자화된 값) DAC는 포함되어 있지 않으므로 아날로그 값 출력은 불가능 아두이노 메가2560은 디지털/아날로그 핀의 수만 다르고 기본적인 기능은 아두이노 우노와 동일
아두이노 우노 사양 항목 내용 비고 마이크로컨트롤러 ATmega328 ATmega328P-PU 동작 전압 5V - 입력 전압 추천 입력 범위 디지털 입출력 핀 14개 6개 PWM 출력 핀 (3, 5, 6, 9, 10, 11번 핀) 아날로그 입력 핀 6개 14번에서 19번까지의 디지털 핀 플래시 메모리 32KB ATmega328, 부트로더 0.5KB SRAM 2KB EEPROM 1KB 클록 주파수 16MHz
(1) IDE 다운로드 : www.arduino.cc (2) 인스톨러 실행 (1) IDE 다운로드 : www.arduino.cc
아두이노 IDE 설치 – 2 (3) 설치 디렉터리 지정 (5) 아두이노 보드 연결 : 가상 COM 포트 자동 설정 (4) 아두이노 보드 드라이버 자동 설치
아두이노 IDE 작고 간단한 통합개발환경 초보자를 위해 꼭 필요한 기능들만으로 구성 초보자를 위해 꼭 필요한 기능들만으로 구성 한 번의 클릭으로 컴파일에서 업로드까지 진행 Java로 구현되어 OS 간 이식성이 뛰어남 디버깅 기능은 제공하지 않음
아두이노 스타일 : 모든 아두이노 보드에서 동일함 아두이노 SW 장점 – 추상화된 함수 서로 다른 uC를 사용한 아두이노 보드를 동일한 코드로 동일한 동작을 구현할 수 있도록 해줌 ATmega2560의 Blink DDRB |= 0x80; PORTB |= 0x80; 아두이노 메가2560과 아두이노 우노의 Blink pinMode(13, OUTPUT); digitalWrite(13, HIGH); ATmega328의 Blink DDRB |= 0x20; PORTB |= 0x20; AVR 스타일 : 컨트롤러에 따라 약간씩 차이가 있음 아두이노 스타일 : 모든 아두이노 보드에서 동일함
아두이노 SW 장점 – 라이브러리 주변장치 또는 uC의 특정 기능을 위한 전용의 C++ 스타일 라이브러리 대부분의 아두이노 보드에서 사용 가능 AVR 시리즈 uC를 사용한 보드에 비해 ARM Cortex-M 시리즈 uC를 사용한 보드는 호환성이 떨어짐 라이브러리별로 디렉터리 관리 라이브러리 디렉터리에는 소스(*.cpp) 및 헤더(*.h) 파일을 포함하는 디렉터리와 예제 디렉터리가 포함 라이브러리의 종류 기본 라이브러리 : 아두이노 IDE와 함께 기본적으로 설치 확장 라이브러리 : 개별적으로 설치
라이브러리 설치 디렉터리 기본 라이브러리 확장 라이브러리 아두이노 설치 디렉터리 아래 ‘libraries’ 디렉터리에 설치 라이브러리 설치 디렉터리 기본 라이브러리 확장 라이브러리 아두이노 설치 디렉터리 아래 ‘libraries’ 디렉터리에 설치 설치 디렉터리가 ‘C:\Arduiuno’인 경우 ‘C:\Arduino\libraries’ 스케치북 디렉터리 아래 ‘libraries’ 디렉터리에 설치 스케치북 디렉터리는 ‘파일 → 환경 설정’에서 확인 스케치북 디렉터리가 ‘D:\Arduino’인 경우 ‘D:\Arduino\libraries’
첫 번째 아두이노 프로그램 아두이노에서 프로그램은 그림을 그리듯 쉽게 작성할 수 있다는 의미에서 ‘스케치(sketch)’라 불림 블링크 (Blink) 스케치 13번 핀의 LED를 1초 간격으로 점멸하는 스케치 C 언어에서의 ‘Hello World’에 해당 ‘파일 → 예제 → 01.Basics → Blink’ 선택
프로그램 업로드를 위한 설정 1 아두이노 보드 선택 사용하고자 하는 보드를 선택 ‘도구 → 보드’ 메뉴에서 ‘Arduino/Genuino Mega or Mega 2560’ 선택
프로그램 업로드를 위한 설정 2 프로세서 선택 선택한 보드가 서로 다른 uC로 만들어진 버전이 존재하는 경우 해당 uC 선택 ‘도구 → 프로세서’ 메뉴에서 ‘ATmega2560’ 선택
프로그램 업로드를 위한 설정 3 포트 선택 아두이노 보드에 할당된 가상 COM 포트 선택 ‘도구 → 포트’ 메뉴에서 해당 포트 선택 아두이노 보드에 할당된 포트는 장치관리자에서 확인
프로그램 업로드 툴바 사용 확인 : 스케치 컴파일 업로드 : 스케치 컴파일 및 생성된 기계어 파일을 uC로 업로드 → 한 번의 클릭으로 업로드까지 진행 시리얼 모니터 : 컴퓨터와의 데이터 송수신을 위한 프로그램 실행
시리얼 모니터 가상 COM 포트 시리얼 모니터 사용 예 프로그램 업로드를 위한 통로로 사용 컴퓨터와의 UART 시리얼 통신을 위한 통로로 사용 → ‘시리얼 모니터’를 통해 확인 가능 시리얼 모니터 사용 예 ‘파일 → 예제 → 04.Communication → ASCIITable’ 선택 ‘업로드’ 버튼으로 스케치 컴파일 및 업로드 툴바의 ‘시리얼 모니터’ 버튼으로 시리얼 모니터 실행 및 결과 확인
스케치의 구조 스케치는 C/C++을 기반으로 함 main 함수는 존재하지 않음 2개의 기본 함수로 구성 setup 함수 초기화 함수 스케치 실행이 시작될 때 한 번만 실행 loop 함수 반복 실행 함수 uC를 위한 프로그램에서 메인/이벤트 루프에 해당
스케치의 구조 비교 uC를 위한 프로그램의 구조 아두이노를 위한 스케치의 구조
맺는말 아두이노는 비전공자들을 위한 마이크로컨트롤러 플랫폼 표준화되고 공개된 하드웨어와 소프트웨어 간단한 사용을 위한 최소한의 기능 제공 지속적인 개선과 기능 추가 확장 라이브러리를 통한 소프트웨어 확장 쉴드를 통한 하드웨어 확장 C/C++ 언어 기반의 스케치