1. Arduino IDE Installation
아두이노 개발 환경(IDE Integrated Development Environment) 설치
소스 개발, 컴파일, 업로드, 디버깅을 위한 어플리케이션으로 아래 공식 사이트에서 OS별로 다운로드 받아서 설치하
시면 됩니다.
공식 홈페이지 주소
http://arduino.cc/en/Main/Software OS Version 별로 해당
프로그램을 Download
받아서 설치 합니다.
2. IDE 화면 기본 구성
아두이노 IDE 화면 기본 구성
설치가 완료되었으면, 아두이노 IDE를 실행하고 화면 기본 구성을 살펴 봅니다.
Edit 영역
아두이노를 동작 시키기 위한 소스
Code를 입력하는 영역으로 프로
그램을 수정 및 변경하는 영역
Setup() 함수와 Loop() 함수가 위
치 한다
Compile Button
소스 코드를 Build하
기 위한 버튼
Upload Button
소스 코드를 Build +
Arduino 보드에 Uplo
ad 하기 위한 버튼
Serial Monitor But
ton
소스 코드를 디버깅하
기 위한 메시지 창을
띄우는 버튼
Message 영영
Build, Upload 결과,
등의 개발환경을 사용
하면서 발생하는 메시
지 창 영역
3. 한글 시계 라이브러리/USB Driver 설치
한글시계 Libraries 복사
- 아래 그림 파일의 경로 또는 아두이노가 설치된 폴더 아래 libraries 폴더에 다음 라이브러리들을 복사 합니다.
- 라이브러리 파일(폴더)명 : LedControl, RTClib, Wire, Button
한글시계 USB Driver 설치
- 한글 시계 USB Driver(CH341)를 설치 합니다.
- 드라이버 파일(CH341SER.EXE)을 실행하고 USB Driver(CH341)를 설치 합니다.
4. 한글 시계 부품도
USB C
able
Main P
CBArduino
Nano B
oard
RTC M
odule
Front
Main Fr
ame
Base
5. 한글 시계 뒷면 조립도
Button
RTC M
odule
Arduino
Nano Bo
ard
LED Co
ntrol IC
가변 저항
6. 하드웨어 조립 검증
• HW Test(HangulClock_HW_TEST.ino) 다운
로드 한 후, LED 전부 켜지는 지 확인
-> 좌 상단부터 순차적으로 켜졌다가 전부 불 켜지는 지 확인
• 보드 조립 검증 확인
-> 납땜 상태(LED, 저항, 버튼등), Socket 연결 등 확인
7. 데모
• 한글 시계 Demo
- 시간 설정 : Button (분/시간)
- 사진 모드
- Tool과 연동
: 이미지 만들어 전송하기
: 날씨 정보 읽어 오기
: 시간 Sync. 맞추기(PC 시간과 동기화)
8. 아두이노 기본 예제 배우기
아두이노 IDE 기본 예제 (LED Blink) 실행
아두이노 IDE에서 제공하는 기본 예제(LED Blink)를 선택하고 [ 파일 – 예제 – 01.Basics – Blink ]를 엽니다.
아두이노를 PC에 연결하고 [ 도구 – 보드 – Arduino Uno ]를 선택하고 프로세서는 ATmega328을 선택합니다.
아두이노가 연결된 USB 포트를 선택 합니다.
9. Serial Monitor 사용하기
Serial Monitor 사용법
통신 속도 정하기
아두이노는 시리얼 포트를 통해서 PC나 Bluetooth, WiFi Module과 통신을 할 수 있습니다.
시리얼 통신을 위해서는 Baudrate라고 하는 통신 속도를 정해줘야 합니다.
기본 baudrate 는 9600bps 입니다. (프로그램에서 설정된 속도와 동일하게 맞춰야 통신이 가능합니다.)
소스 코드에 내용 추가 하기
Setup() 함수 내에서 “Serial.begin(9600);” 추가 합니다.
Loop() 함수 내에서 “Serial.print(“디버그 코드”);를 추가 합니다.
시리얼 모니터 버튼을 클릭하고 Baudrate를 9600bps로 맞춰 줍니다.
14. 한글시계 기본 예제
- LED 하나 켜보기
: 예제(HangulClock_LED_ONE.ino) 다운로드
- LED 모양 만들어 켜보기
: 하트 모양, 다이아몬드, 화살표 등
- 움직이는 모양 만들어 보기
: 화살, 하트등
15. LED Control 하기
한글시계 예제( HangulClockExample ) 실행
아두이노 IDE를 실행하고 파일 – 열기 메뉴(아래 그림 참조)에서 한글 시계 예제 파일을 엽니다.
아두이노를 PC에 연결하고 [ 도구 – 보드 – Arduino Nano ]를 선택 합니다.
아두이노가 연결된 USB 포트를 선택 합니다.
16. 한글시계 구조 배우기
한글시계 라이브러리
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>
17. 한글시계 구조 배우기
기능별 동작 프로그래밍 (라이브러리 함수 사용)
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 참조
18. 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) 라이브러리 함수가 불려 진다.
19. 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)을 입력 한다.
21. 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
생성
함수 선언
22. Button Interface 제어
Button Short/Long Key 제어 하기
1. 라이브러리 파일 :
- Button.cpp/h
2. 라이브러리 함수 :
- button 제어를 위한 Instance 생성
- uniquePress() : 버튼이 처음 눌렸을때 true 리턴
- wasPressed() : 버튼이 길게 눌러 졌을때 true 리턴
3. Button (Short/Long Key) : 시간, 분 설정 및 특정 기능(사진 모드등) 구현
- 시간/분 버튼 구현하기
: 시간/분 버튼 눌렸을때 시간/분 변경하기
- 버튼이 길게 눌려 졌을때 사진 모드로 전환하기
23. 한글시계 Tool과 연동하기
Tool 과 연동을 위한 기능 추가
1. Serial Rx Buffer 늘리기 : tool에서 전송되는 데이터가 잘리지 않도록 수신 버퍼를 64 -> 256 bytes로 수정한다
- 수정 파일 및 경로 :
C:Program Files (x86)ArduinohardwarearduinoavrcoresarduinoHardwareSerial.h
- #define SERIAL_RX_BUFFER_SIZE 64 ->256
RX Buffer Size만
늘려 준다
24. 한글시계 Tool과 연동하기
Tool 과 연동을 위한 기능 추가
2. 시간 동기화 :
- #S<hh><mm><ss> : 시리얼 명령어 처리 부분 구현
- Loop 문 안에 아래 내용 추가
25. 한글시계 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
26. 한글시계 Tool과 연동하기
Tool 과 연동을 위한 기능 추가
3. 날씨 데이터 읽어오기 & Display 하기 :
- Mode Define 하고 Func. 구현
- #WR(Rainy), WH(Haze), WS(Snowy), WC(Cloudy)등
Command 처리 부분 추가
- 해당 날씨에 맞는 이미지 Display 하는 Func. 구현
- loop 문 안에 옆의 코드 추가
27. 한글시계 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
28. 한글시계 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