과정명	IoT기반 융합 SW 개발자 양성과정
과목명	하드웨어 분석(2001020301_14v2 )	요소명	하드웨어 수집하기
수행일자	2017 년 12월 20일	훈련생

수행과제

아두이노 우노의 하드웨어 설계 자료를 수집하고 하드웨어 스펙을 조사하시오. 그리고 아두이노와 연결하여 사용하는 모듈과 쉴드가 무엇인지 조사하시오.

과제를 통해 확인할 능력 사항

- 하드웨어 회로도, 설계 문서, 주요 부품 리스트와 데이터시트 등을 확보할 수 있다.

- 회로에 FPGA가 포함되어 있을 때 인터페이스 문서나 HDL 설계 문서를 확보할 수 있다.

- 실제 구현된 하드웨어가 있다면 해당 샘플을 확보할 수 있다.

수행결과

아두이노(Arduino)는 마이크로 컨트롤러 기반으로 만들어진 소형 보드입니다.

아두이노 보드는 여러 종류가 있는데 그 중에 아두이노 우노 R3의 하드웨어 스펙은 다음과 같습니다.

마이크로 컨트롤러: ATmega328

클락 주파수: 16MHz

EEPROM 1KB

SRAM: 2KB

플래시 메모리: 32KB

디지털 입출력 핀: 14개

아날로그 입출력 핀: 6개

동작 전압: 5V

추천 입력 전압: 7V ~ 12V

USB Plug는 컴퓨터와 연결하는 데 사용합니다. 컴퓨터를 통해 아두이노 보드에 전원을 공급하고 스케치를 업로드 및 데이터를 송수신합니다.

아두이노는 오픈 소스를 지향하여 많은 주목을 받고 있습니다. 그리고 모듈과 쉴드를 통해 기능을 확장할 수 있습니다.

모듈은 케이블을 이용하여 아두이노 보드에 연결합니다. 반면 쉴드는 아두이노 보드에 쌓아올려서 사용합니다.

비교적 간단한 기능을 지원하는 하드웨어는 모듈로 제공하고 쉴드는 모듈보다 강력한 기능을 지원하는 하드웨어라고 생각할 수 있습니다.

*아두이노 우노 R3 핀 배치 도면

과정명	IoT기반 융합 SW 개발자 양성과정
과목명	하드웨어 분석(2001020301_14v2 )	요소명	하드웨어 기능 분석하기
수행일자	2017 년 12월 22일	훈련생

수행과제

SG90 서보 모터의 데이터시트를 수집하여 펄스폭과 회전각에 관하여 조사하시오.

과제를 통해 확인할 능력 사항

- 하드웨어 설계 문서와 사용된 부품들의 데이터시트를 이해할 수 있다.

- 회로도 및 설계 문서를 통해 클럭 주파수, 클럭 분주 및 배분 방식, 메모리 맵 구성이 적절한지 분석할 수 있다.

수행결과

서보 모터는 일반 모터와는 다르게 회전이 정해져 있는 모터로 정밀한 회전을 제어하기 위해 사용한다.

SG90의 데이터시트는 전자부품 데이터시트 검색엔진(http://www.alldatasheet.co.kr) 사이트에서 수집하였다.

수집한 데이터시트를 분석한 결과 PWM을 사용하여 서보 모터를 제어할 수 있으며 서보 모터의 펄스는 1ms에서 2ms의 폭을 가지고 있다.

1ms일 때 -90도이며 2m일 때 90도이다. 따라서 1.5ms일 때는 0도임을 유추할 수 있다.

과정명	IoT기반 융합 SW 개발자 양성과정
과목명	하드웨어 분석(2001020301_14v2 )	요소명	시험 요구사항 도출하기
수행일자	2017 년 12월 26일	훈련생

수행과제

아두이노 우노의 동작을 확인하기 위해 스케치 코드를 편집하고 컴파일 한 후에 아두이노 보드로 업로드하여 실행 태스크를 만드는 작업을 수행하고 이 과정을 기술하시오.

과제를 통해 확인할 능력 사항

- 설계 문서를 통해 시험 대상이 되는 하드웨어 요소, 주변 장치들을 구분하고 하드웨어 요소, 주변 장치 간의 기능적 상관관계를 분석할 수 있다.

- 각 시험 대상 장치의 동작 기준을 수립하고 단계별 동작 여부를 확인하는 절차를 수립할 수 있다.

- 두 개 이상의 장치가 연동할 때 구분하여 시험할 수 있는 절차를 수립할 수 있다.

수행결과

아두이노 보드를 컴퓨터에 연결하면 자동으로 장치를 찾아 설치합니다.

[그림] 장치 설치 중

아두이노 프로그램을 실행하여 포트를 설정하세요.

환경에 따라 포트 번호는 다를 수 있어요.

[그림] 포트 설정

이제 코드를 편집합시다.

여기에서 편집할 내용은 시리얼 포트로 "Hello World!" 문자열을 1초 주기로 전송하는 코드입니다.

setup 함수는 시작할 때 한 번 수행하는 루틴으로 태스크 초기에 해야 할 작업을 설정할 함수입니다.

여기에서는 시리얼 포트의 통신 속도를 설정하는 코드를 추가하세요.

시리얼 통신에 관한 작업은 Searial 클래스를 통해 원하는 작업을 할 수 있어요.

Serial.begin(9600);//시리얼 포트의 통신 속도를 9600bps로 설정

초기화 작업인 setup 함수를 수행한 후에는 loop 함수를 반복해서 수행합니다.

여기에서는 시리얼 포트로 "Hello World!"문자열을 1초 주기로 전송할 거예요.

Serial 클래스의 println 메서드는 개행을 포함하여 출력합니다.

Serial.println("Hello World!");//개행 포함하여 시리얼 포트로 출력

그리고 delay 함수는 밀리 초 단위로 대기합니다.

delay(1000);//1초(1000밀리 초) 대기

코드를 작성한 후에 저장을 선택하세요.

[그림] 코드 편집 후 저장

확인을 선택하면 컴파일을 수행합니다.

컴파일을 완료하면 업로드를 선택하여 작성한 스케치를 아두이노 보드로 업로드하세요.

시리얼 모니터를 선택하여 정상적으로 동작하는지 확인합시다.

다음처럼 1초 주기로 "Hello World!"를 출력하는 것을 확인할 수 있습니다.

[그림] 결과확인