한글시계웍샵_ sw

28
Arduino IDE Installation 아두이노 개발 환경(IDE Integrated Development Environment) 설치 소스 개발, 컴파일, 업로드, 디버깅을 위한 어플리케이션으로 아래 공식 사이트에서 OS별로 다운로드 받아서 설치하 시면 됩니다. 공식 홈페이지 주소 http://arduino.cc/en/Main/Software OS Version 별로 해당 프로그램을 Download 받아서 설치 합니다.

Upload: -

Post on 18-Aug-2015

54 views

Category:

Technology


7 download

TRANSCRIPT

Arduino IDE Installation

아두이노 개발 환경(IDE Integrated Development Environment) 설치 소스 개발, 컴파일, 업로드, 디버깅을 위한 어플리케이션으로 아래 공식 사이트에서 OS별로 다운로드 받아서 설치하시면 됩니다. 공식 홈페이지 주소 http://arduino.cc/en/Main/Software

OS Version 별로 해당 프로그램을 Download 받아서 설치 합니다.

IDE 화면 기본 구성

아두이노 IDE 화면 기본 구성 설치가 완료되었으면, 아두이노 IDE를 실행하고 화면 기본 구성을 살펴 봅니다.

Edit 영역 아두이노를 동작 시키기 위한 소스 Code를 입력하는 영역으로 프로그램을 수정 및 변경하는 영역

Setup() 함수와 Loop() 함수가 위

치 한다

Compile Button 소스 코드를 Build하기 위한 버튼

Upload Button 소스 코드를 Build +

Arduino 보드에 Upload 하기 위한 버튼

Serial Monitor Button

소스 코드를 디버깅하기 위한 메시지 창을 띄우는 버튼

Message 영영 Build, Upload 결과,등의 개발환경을 사용하면서 발생하는 메시

지 창 영역

한글 시계 라이브러리/USB Driver 설치 한글시계 Libraries 복사 -  아래 그림 파일의 경로 또는 아두이노가 설치된 폴더 아래 libraries 폴더에 다음 라이브러리들을 복사 합니다. -  라이브러리 파일(폴더)명 : LedControl, RTClib, Wire, Button

한글시계 USB Driver 설치 -  한글 시계 USB Driver(CH341)를 설치 합니다. -  드라이버 파일(CH341SER.EXE)을 실행하고 USB Driver(CH341)를 설치 합니다.

한글 시계 부품도 USB Cable

Main PCB Arduino

Nano Board

RTC Module

Front

Main Frame

Base

한글 시계 뒷면 조립도

Button

RTC Module

Arduino Nano Bo

ard

LED Control IC

가변 저항

하드웨어 조립 검증

•  HW Test(HangulClock_HW_TEST.ino) 다운로드 한 후, LED 전부 켜지는 지 확인

-> 좌 상단부터 순차적으로 켜졌다가 전부 불 켜지는 지 확인

•  보드 조립 검증 확인 -> 납땜 상태(LED, 저항, 버튼등), Socket 연결 등 확인

데모

•  한글 시계 Demo - 시간 설정 : Button (분/시간) - 사진 모드 - Tool과 연동 : 이미지 만들어 전송하기 : 날씨 정보 읽어 오기 : 시간 Sync. 맞추기(PC 시간과 동기화)

아두이노 기본 예제 배우기 아두이노 IDE 기본 예제 (LED Blink) 실행 아두이노 IDE에서 제공하는 기본 예제(LED Blink)를 선택하고 [ 파일 – 예제 – 01.Basics – Blink ]를 엽니다.

아두이노를 PC에 연결하고 [ 도구 – 보드 – Arduino Uno ]를 선택하고 프로세서는 ATmega328을 선택합니다. 아두이노가 연결된 USB 포트를 선택 합니다.

Serial Monitor 사용하기 Serial Monitor 사용법 통신 속도 정하기 아두이노는 시리얼 포트를 통해서 PC나 Bluetooth, WiFi Module과 통신을 할 수 있습니다. 시리얼 통신을 위해서는 Baudrate라고 하는 통신 속도를 정해줘야 합니다. 기본 baudrate 는 9600bps 입니다. (프로그램에서 설정된 속도와 동일하게 맞춰야 통신이 가능합니다.) 소스 코드에 내용 추가 하기 Setup() 함수 내에서 “Serial.begin(9600);” 추가 합니다. Loop() 함수 내에서 “Serial.print(“디버그 코드”);를 추가 합니다.

시리얼 모니터 버튼을 클릭하고 Baudrate를 9600bps로 맞춰 줍니다.

디버깅 모니터 화면

한글시계 기본 구조

Setup Button check

Time Update

Display Update

Serial 명령 Check

Loop 함수 Setup 함수

1 2 3

4 5

한글시계 자료 복사(3주차)

•  아래 경로의 파일을 바탕화면에 복사 •  G:\한글시계 교육자료\SRC\3주차

한글시계 LED Matrix Control 구조

한글시계 기본 예제

-  LED 하나 켜보기 : 예제(HangulClock_LED_ONE.ino) 다운로드 -  LED 모양 만들어 켜보기 : 하트 모양, 다이아몬드, 화살표 등 -  움직이는 모양 만들어 보기 : 화살, 하트등

LED Control 하기 한글시계 예제( HangulClockExample ) 실행 아두이노 IDE를 실행하고 파일 – 열기 메뉴(아래 그림 참조)에서 한글 시계 예제 파일을 엽니다.

아두이노를 PC에 연결하고 [ 도구 – 보드 – Arduino Nano ]를 선택 합니다. 아두이노가 연결된 USB 포트를 선택 합니다.

한글시계 구조 배우기

한글시계 라이브러리 1. LEDControl (MAX7219 Matrix driver) : LED Control Driver IC 라이브러리 - LedControl.cpp, LedControl.h 2. RTClib (ds1307 Module) : RTC Module에서 시간 데이터를 읽어오기 위한 라이브러리 - RTClib.cpp, RTClib.h 3. Wire (I2C 통신) : RTC Module과 연동(통신)을 위하여 사용됨. - Wire.cpp, Wrie.h 4. Button : 특정 기능(시간/분, 모드 설정 등)을 위한 사용자와의 Interface 제공을 위한 button 라이브러리 - Button.cpp, Button.h

라이브러리 추가 방법 1.  LED Control 라이브러리 추가 : 소스 상단에 오른쪽과 같이 코드 추가한다. #include <LedControl.h>

한글시계 구조 배우기

기능별 동작 프로그래밍 (라이브러리 함수 사용) 1.  LED Control (Row/Colum) 라이브러리 함수 : Driver IC의 DIG(Row)/SEG(Col.) Pin들을 가로, 세로로 배열하고 교차한 Point에서 LED를 구동함. - LedControl을 위한 Instance 생성 : LedControl Ic = LedControl ( DataPin, ClockPin, CsPin, DeviceNumber ) 12th Line 참조 - setRow(int addr, int row, byte value) : Led를 켜기 위한 함수 -> REFRESH_PANEL() 매크로 35th Line 참조 - clearDisplay(int addr) : Led를 끄기 위한 함수 -> CLEAN_PANEL() 매크로 참조 39th Line 참조 - shutdown(int addr, bool b) : Driver(Max7219 IC)를 켜고, 끄기 위한 함수 -> 266th Line 참조 - setIntensity(int addr, int intensity) : Led 밝기를 조절하기 위한 함수 -> 16단계 조절(0~15) -> 267th Line 참조

LED 제어 함수

LED 제어 함수를 이용하여 LED 제어 하기 1. _P_ON( row, column) - panel data [ ] Update 매크로 함수 - 좌표 값(row, column)에 따라 panel data 버퍼에 데이터를 저장.

2.  CLEAN_PANEL( ) - 매크로 함수로 LED를 전부 off 시킨다. (LED를 켜기 전에 불려 진다.) - panel data를 Clear 한다. - clearDisplay(0) 라이브러리 함수가 불려 진다.

LED 제어 함수

LED 제어 함수를 이용하여 LED 제어 하기 3. REFRESH_PANEL( ) - 매크로 함수로 panel data를 참조하여 LED를 제어하는 함수(panel data가 Update된 후 불려진다.) - update한 panel data를 사용하여 LED를 켜거나 끈다. - setRow( ) 라이브러리 함수가 불려 진다.

4.  한글 시계의 LED를 제어하기 위한 2가지 방법 - Serial 명령(#L )으로 제어 : ex) #L33 - 소스 코드에서 직접 수정하여 제어 : r, c 값을 좌표값(숫자 0~4)을 입력 한다.

LED Control

LED 켜는 부분

RTC Module 제어 RTC Module(DS1307)에서 시간 정보 가져오기 1. 라이브러리 파일 : - RTClib.cpp/h : DS1307 Module 제어를 위한 함수가 구현되어 있는 라이브러리 파일 - Wire.cpp/h : DS1307 Module과 I2C 통신을 위한 라이브러리 파일 2.  라이브러리 함수 : 날짜와 시간을 읽어오거나, 변경하기 위한 함수 - now() : 현재 시간을 읽어와서 시간 값을 return 한다. 3.  RTC Instance 생성 - RTC_DS1307 RTC; 4. 시간 변경 함수 - set_rtc( hour, min, sec ) : 5. 한글 시계에서 시간 변경 방법 - Button 입력으로 시간을 변경 - Serial 명령으로 변경 (#S<hh><mm><ss>)

라이브러리 등록

Instance 생성

함수 선언

Button Interface 제어

Button Short/Long Key 제어 하기 1.  라이브러리 파일 : - Button.cpp/h

2. 라이브러리 함수 : - button 제어를 위한 Instance 생성 - uniquePress() : 버튼이 처음 눌렸을때 true 리턴 - wasPressed() : 버튼이 길게 눌러 졌을때 true 리턴

3.  Button (Short/Long Key) : 시간, 분 설정 및 특정 기능(사진 모드등) 구현 - 시간/분 버튼 구현하기 : 시간/분 버튼 눌렸을때 시간/분 변경하기 - 버튼이 길게 눌려 졌을때 사진 모드로 전환하기

한글시계 Tool과 연동하기

Tool 과 연동을 위한 기능 추가 1.  Serial Rx Buffer 늘리기 : tool에서 전송되는 데이터가 잘리지 않도록 수신 버퍼를 64 -> 256 bytes로 수정한다 - 수정 파일 및 경로 : C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h - #define SERIAL_RX_BUFFER_SIZE 64 ->256

RX Buffer Size만 늘려 준다

한글시계 Tool과 연동하기

Tool 과 연동을 위한 기능 추가 2.  시간 동기화 : - #S<hh><mm><ss> : 시리얼 명령어 처리 부분 구현 - Loop 문 안에 아래 내용 추가

한글시계 Tool과 연동하기

Tool 과 연동을 위한 기능 추가 2.  시간 동기화 : < 실행 순서 > 1. 한글시계가 PC와 연결된 상태에서 Tool을 실행하면 Com Port가 List에 나타난다. 2. Baud Rate가 57600 인지 확인하고 (Default로 설정) 3. 해당 Com Port를 선택하고 Open Button을 Click한다. 4. Time Sync. Button을 누르면 PC 시간과 동기화 한다. 5. 시리얼 연결을 끊으려면 Close 버튼을 Click 한다.

1

2

3

4

5

한글시계 Tool과 연동하기

Tool 과 연동을 위한 기능 추가 3. 날씨 데이터 읽어오기 & Display 하기 :

- Mode Define 하고 Func. 구현 - #WR(Rainy), WH(Haze), WS(Snowy), WC(Cloudy)등 Command 처리 부분 추가 - 해당 날씨에 맞는 이미지 Display 하는 Func. 구현 - loop 문 안에 옆의 코드 추가

한글시계 Tool과 연동하기

Tool 과 연동을 위한 기능 추가 3. 날씨 데이터 읽어오기 & Display 하기 : - Mode Define 하고 Func. 구현 - #WR(Rainy), WH(Haze), WS(Snowy), WC(Cloudy)등 Command 처리 부분 추가 - 해당 날씨에 맞는 이미지 Display 하는 Func. 구현 < 실행 순서 > 1. 한글시계와 PC가 연결된 상태(Open 버튼이 비활성화 됨)에서 도시를 선택하고, 2. Weather 버튼을 누른다. 3. 주기적(1분 주기)으로 날씨 화면(비, 눈, 구름등)이 Display된다. 4. 시리얼 연결을 끊으면 날씨를 한글시계에 표시하지 않는다.

2

1

한글시계 Tool과 연동하기

Tool 과 연동을 위한 기능 추가 4. Tool에서 편집된 이미지 데이타 읽어오기 : - Mode Define 및 해당 Func. 구현 하기(Flash, Vertical Mode 등) : AniModeSet( Mode ); - #F, #V 등 Command 처리 부분 추가 < 실행 순서 > - 한글시계와 PC가 연결된 상태(Open 버튼이 비활성화 됨)에서 시작한다. 1. Edit Screen에서 화면을 편집하고(최대 8개 화면까지 편집 가능), 2. Display Options에서 Flash 선택하고, 3. Send 버튼을 Click 한다.

2 3

1 1