프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

무한 거울 (단면 반사 거울) 시계 만들기

2015-05-11 11:11:15

이번에도 Instructables에서 해외 작가 프로젝트를 번역하여 올려드립니다!

이번에 소개한 프로젝트는 단면 반사 거울을 이용한 무한 거울 시계 프로젝트 입니다.

보기만 해도 이쁘고 마치 빨려들어갈것만 같은 모습을 가지고 있습니다.

한쪽면은 거울이고 다른 한쪽면은 반사하는 성질을 이용하여 끝이없는 구멍이 뚫린것 같은 느낌을 주는 시계를 제작했습니다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

 

2. 무한 거울(단면 반사 거울) 시계

URL: http://www.instructables.com/id/Infinity-Mirror-Clock/

 

 

 

 

 

Intro

내가 다룰 수 있는 RGB Strip이 Aliexpress(중국 온라인 거래 사이트)에서 배달 된 후로부터 나는 LED로 할 수 있는 프로젝트에 매력을 느끼게 되었다.

나의 성공적인 찰리플렉싱 LED 프로젝트 이후, 더욱 재밌고 뿌듯한 기분을 느끼게 할 수 있는 무엇인가를 만들고 싶었다.

구글 이미지를 검색하던 중 우연찮게 인스트럭터블에서 아두이노 무한 거울 프로젝트를 보게 되었다. 그 순간 머릿속에 여러 생각이 들면서 “왜 나는 지금까지 무한거울을 이용하여 시계를 만들 생각을 못했지?” 라는 생각이 뇌리속에 스쳐 지나갔다.

 

내가 제작할 무한 거울 시계 프로젝트 제작 계획은 아래와 같다.

1. 시계와 같은 방식으로 작동하되 시계바늘을 다양한 색상으로 표현하고, 블루투스를 통해 프로그램이 가능하다.

2. IR센서를 사용하여 누군가 거울 가까이 접근하면 감지하게 한다. LED의 스위치를 끄면 일반 거울로도 사용할 수 있게 한다.

3. 15분마다 무지개 효과를 낸다.(시간조절 가능)

4. 토글스위치로 시계모드에서 무지개효과 모드로 무지개효과 모드에서 시계 모드로 변환한다.

5. 저녁 모드는 자정부터 오전7시까지로 설정하여 코드로 변화를 준다.

6. 블루투스를 통하여 프로그램 될 수 있다. 따라서 코드의 업데이트가 필요할 때 벽에서 때어낼 필요가 없다.

 

 

Step 1: 필요한 전자 부품

 

1. 아두이노(http://dushyant.ahuja.ws/2013/10/standalone-arduin...) 혹은 아두이노 프로 미니(http://www.aliexpress.com/item/10Pcs-Lot-Pro-Mini-...)

2. RTC모듈 – DS1302(http://fabtolab.com/DS1302-RTC-module?search=rtc)

3. LM2596 step down power supply 모듈 1.3v ~ 35v (http://cgi.ebay.in/ws/eBayISAPI.dll?ViewItem&item=...)

4. 1m 60LEDs/M RGB LED스트립(WS2812B)

(http://www.aliexpress.com/item/1M-WS2812-WS2812B-6...)

5. HC-05 블루투스 모듈(http://www.aliexpress.com/item/RS232-TTL-LC-05-Wir...)

6. IR 근접 센서( http://www.instructables.com/id/Simple-IR-proximit... ) 4 IR LEDs, 1 IR LED 탐지기(http://www.evelta.com/industrial-control/sensors/5...)

7. 터치 패드(http://www.aliexpress.com/item/Touch-Pad-Brick-Sen...)

8. 9v – 2A 어댑터

9. CP2102 USB to TTL(RST핀은 아두이노를 리셋 시키지 못하기 때문에 DTR을 와이어로 연결하여 PCB판에 납땜해야 한다. 이 작업은 DTR신호를 아두이노로 연결하여 리셋 신호를 아두이노에 보내는 것을 가능하게 해준다.)

 

 

Step 2: 회로도

 

 

이 회로도는 정말 쉽고 간단하다.

1. LED 스트립: LM2596 step down power supply 모듈에 전원을 연결한다. 출력을 5v로 조정하고 GND는 GND에 연결한다. 마지막으로 아두이노 D5에 연결한다.

2. 터치 센서: 아두이노 D2에 연결한다.

3. RTC 모듈: SDA와 SCL을 아두이노 A4와 A5에 각각 연결한다.

4. 블루투스 모듈: RX를 아두이노 TX에, TX를 아두이노 RX에 연결한다. 또한 모듈의 32번 핀을 DTR에 연결하여 아두이노에 연결되게 해야한다.(이 작업은 블루투스를 통하여 아두이노에 프로그램을 업로드 할 수 있게 해준다)

5. IR 근접 센서: 인스트럭터블의 링크를 참조하라(http://www.instructables.com/id/Simple-IR-proximit...)포토 다이오드를 A1핀에 연결하고 IR LEDs를 D13에 연결하라.

6. 9v 전원을 연결하여 2A의 전력을 7805와 LM2596에 공급해 준다.

블루투스 프로그래밍 회로를 구성하려면 아래의 링크를 참조하라(http://makezine.com/projects/diy-arduino-bluetooth...)

 

 

Step 3: 코드

 이번에는 아래의 라이브러리를 사용한다.(이 라이브러리를 작성한 분들에게 감사한다는 말씀을 전하고 싶다!)

- RTCLip 아두이노 라이브러리(https://github.com/adafruit/RTClib)

- FastLED 아두이노 라이브러리 v2.1(http://fastled.io/)

(https://github.com/FastLED/FastLED/releases/tag/ar...) 3.0을 지원하면서 어떤 코드가 바뀌었는지 잘 모르기 때문에 v2.1의 라이브러리를 링크해둔다.

- SerialCommand 아두이노 라이브러리(https://github.com/scogswell/ArduinoSerialCommand...)

- TimerOne 아두이노 라이브러리(https://code.google.com/p/arduino-timerone/)

최신 버전의 코드는 깃허브 프로젝트에서 다운받을 수 있다.

(https://github.com/dushyantahuja/Smart-Infinity-Mi...)

 

 

Step 4: 시계 조립

 

이 시계는 주로 아래의 과정을 따라 만들어졌다.

 

1. 두께 8mm 합판 2개(600mm X 600mm). 이것을 도면을 따라 잘라낸다.

 

2. 두께 18mm 블록보드 1개(600mm X 600mm). 이것을 도면을 따라 잘라낸다. 다만 원으로 자르는데 주의해야 한다. 원주는 정확히 1,000mm여야 60개 LED가 정확하게 맞는다. 나는 이 작업을 목수에게 부탁했고, 그는 반경 범위를 159.23 에서 160사이로 둥글게 다듬었다. 이후 양면테이프로 LED를 정확하게 고정시켰다.

 

3. 두께 6mm 지름 400mm의 거울1 개.

 

4. 두께 6mm 지름 400mm의 유리 1개. 유리에 햇빛 차단 필름도 붙인다. 이 필름은 자동차 소모품 판매처 혹은 유리를 설치해주는 업체에서 구할 수 있다. 3M사의 제품은 매우 좋은 제품이기에 판매처에서 구할 수 있다면 사용하는 것이 좋다.

 

5. 둥근 철판 1개(지름 100mm).

 

6. N45 실리콘 접착제.

 

7. 검은색 페인트.

 

8. 검은색 비닐. 이것은 자동차 소모품 판매처 혹은 스티커 생산자에게 구할 수 있다. 우리는 얇은 매트 블랙을 사용했다. 비슷한 것은 아래 링크에 있다.( http://www.ebay.in/itm/Brilliant-Diamond-Black-Pea...)

 

 

제작 단계

1. 블록 보드를 중앙에 유지하고 합판과 블록보드를 고정시킨다. Fevicol(접착제 브랜드)혹은 비슷한 것을 사용하면 좋을 것이다.

 

2. 내부를 검은색으로 칠한다.

 

3. LED스트립을 블록보드를 내부에 동그랗게 잘라서 붙인다. 중요한 점은 첫 번째 LED가 시계의 12시 위치에 오게 해야 한다는 것이다.

 

4. 3번째 단계에 맞춰서 회로를 아두이노와 연결한다. 그리고 글루건으로 사각 귀퉁이에 기판을 고정시킨다.

 

5. 글루건으로 한쪽에 터치 센서를 고정시킨다.(블록보드를 약간 뚫어서 선을 빼주는 작업을 해야 선을 안 보이도록 숨길 수 있다)

 

6. 실리콘 접착제를 사용하여 안쪽(뒤쪽)에 거울을 붙인다.

 

7. 거울 가운데 철판을 붙인다.

 

8. 실리콘 접착제를 사용하여 바깥쪽(앞면)에 유리를 붙인다.

 

9. 전기를 연결하여 회로를 테스트한다.

 

10. 각종 오류를 잡아낸다.

 

11. 검은색 비닐로 앞면을 덮어서 고정한다. 유리와 합판 부분은 가린 상태에서 가운데를 둥글게 잘라 시계 부분만 나오게 한다.

 

 

Step 5: 소모 비용(루피는 인도의 화폐단위)

 제작에 소요한 대략적인 금액을 소개한다.

 

1. 나무 프레임: 나무 자체는 1,200루피, 자르는데 500루피, 조립과 연마에 500루피

2. LED스트립: 1m에 700루피

3. 아두이노: 200루피

4. 블루투스 모듈: 500루피

5. RTC모듈: 155루피

6. LM2596 모듈: 150루피

7. IR LEDs: 50루피

8. 비닐: 1000루피

9. 운송비, 글루건, 와이어 등: 400루피

10. 터치 센서: 250루피

 모두 합하여 5,500루피(약 95$) 물론 내가 들인 시간에 대한 인건비는 포함하지 않았다.

 

 

Step 6: 최종 결과물

 

 

 

특징들

1. 시계와 같은 방식으로 작동하되 시계바늘을 다양한 색상으로 표현하고, 블루투스를 통해 프로그램이 가능하다.

2. IR센서를 사용하여 누군가 거울 가까이 접근하면 감지하게 한다. LED의 스위치를 끄면 일반 거울로도 사용할 수 있게 한다.

3. 15분마다 무지개 효과를 낸다.(시간조절 가능)

4. 토글스위치로 시계모드에서 무지개효과 모드로 무지개효과 모드에서 시계 모드로 변환한다.

5. 저녁 모드는 자정부터 오전7시까지로 설정하여 코드로 변화를 준다.

6. 블루투스를 통하여 프로그램 될 수 있다. 따라서 코드의 업데이트가 필요할 때 벽에서 때어낼 필요가 없다.

 

 시계는 블루투스로 프로그램 변경이 가능하며 아래의 명령어를 활용할 수 있다.

1. MULTI – 다양한 색상으로 무지개 효과를 변경 가능하다.

2. STAT – 시계의 상태를 시리얼 포트를 통해 제공해준다.

3. SETRAIN – 무지개 효과의 지연시간을 조절할 수 있다. 매 5분 마다 효과를 출력하려면 SETRAIN 5 를 입력하자.

4. HOUR [R] [G] [B] – 시침의 색의 조절한다. 시침을 빨간색으로 만들려면 HOUR 255 0 0 를 입력하자.

5. MIN [R] [G] [B] – 분침의 색을 조절한다. 분침을 초록색으로 만들려면 MIN 0 255 0 를 입력하자.

6. SEC [R] [G] [B] – 초침의 색을 조절한다. 초침을 하얀색으로 만들려면 SEC 255 255 255 를 입력하자.

7. BG [R] [G] [B] – LEDs의 배경색을 조절한다. 배경색을 회색으로 만들려면 BG 30 30 30를 입력하자.

8. LIGHT [NIGHT] [DAY] 낮과 밤의 LED 밝기를 조절한다. 밤시간에는 LED를 끄고 낮에는 150의 밝기를 내고 싶다면 LIGHT 0 150 를 입력하자. 현재 코드는 밤시간을 자정에서부터 오전 7시 사이로 정해 놓았다. 이것은 코드 TIME을 사용하여 쉽게 변경할 수 있다.

9. TIME – 이 코드는 시간을 설정한다

 또한 이 시계에 통보기를 추가하여 사용하면 핸드폰에 부재중 전화가 오면 알려주게 할 수도 있다. (http://dushyant.ahuja.ws/2013/11/physical-android-notifier/)

 

 

Step 7: 맞닥뜨린 문제들

 만드는 것은 비교적 간단했음에도 만드는 도중 아래와 같은 문제가 있었다.

1. 원의 크기가 매우 중요하다. 나는 레이저 커터를 사용하지 않고 손으로 둥그렇게 자르는 작업(내가 직접 하지는 않았다)을 했는데 LED 스트립을 유리에 고정하는 과정에서 문제가 발생했다. 동그랗게 자르는 작업은 목수에게 mm단위까지 알려주면서 부탁했었는데 목수가 그것을 인치로 알아들어서 원의 크기가 약간 반올림 되었다. 설상가상으로 가운데 LED스트립을 원형으로 두르는데 있어서 꼭 맞게 고정하려면 정확히 1,000mm가 필요했다. 목수가 원을 크게 만들어 버린 덕분에 완충제를 만들어 안쪽에 양면테이프로 붙여 길이를 맞춰 가면서 만들어야 했다. 바깥쪽에 있는 유리와 거울을 설치할 때는 정 반대의 문제가 발생했다. 원의 크기가 달려져서 유리가 맞지 않았기에 손수 합판을 줄로 갈아 넓혀 유리의 크기에 맞춰야 했다. 이제 와서 생각하는 방법이지만 먼저 유리를 잘라서 크기를 맞춘 다음에 자른 유리를 가지고 합판에 대고 그린 후 잘라서 크기를 맞춰야만 했다. 이런 방식으로 했다면 이렇게 고생하지 않았을 것이다. 다행히도 디자인 자체를 정교하게 하지 않아서 작은 실수는 용납할 수 있는 방식이었기에 최종 조립에 실패하지는 않았다.

 

2. 내가 추측하기에 7805의 히트싱크는 충분히 시계의 전력을 수용할 수 있다고 생각했다. 왜냐하면 일전에 직접 비슷한 회로를 만들어서 작동시켜본 적이 있는데 아무런 문제가 없었었다. 그러나 내가 간과한 것이 있다면 LED의 뒤에 설치한 거울 때문에 빛이 반사되어 더욱 밝아진다는 것이었다. 첫 번째 시도에서는 무지개 효과를 낼 때마다 처리장치가 죽고, 블루투스의 연결이 끊어지는 등의 문제가 발생했다. 하지만 아두이노&Fast LED포럼에서 힌트를 얻어 LED스트립에 별도로 전원을 공급하기 위한 LM2596모듈을 구입함으로써 이 문제를 해결할 수 있었다. 이 모듈은 3A의 히트싱크를 가지고 있었지만 스트립이 전부 하얀색이 들어오게 하려면 3.6A가 필요했으므로 약간은 부족한 점이 있었다. 그래서 소프트웨어에서 조절하여 LED전체가 하얀색이 들어오게 하는 것을 막았다. 또한 나는 시계에 저녁 모드를 추가하여 밤에는 LED의 전원 공급을 낮춰서 열을 식힐 수 있게 함은 물론 LED의 수명도 늘릴 수 있었다.

 

3. 터치버튼도 문제를 일으켰다. 그러나 이 문제는 다른 것이 아닌 우리집 자체의 접지 문제이다. 만약 계속 같은 문제를 겪는다면 친구 집에서 작동시켜 봐야겠다.

 

4. 근접 센서가 유리를 통과하여 작동하지 않았다. 센서를 거울 바로 뒤쪽에 설치하면 작동할 것이라고 생각했으나 유리가 IR을 막았고 그 결과 센서가 작동하지 않았다. 그래서 시계 아래에 센서를 설치했다. 설치하고 보니 딱히 거슬리거나 보기에 나쁘지 않았다. 물론 완벽하지도 않았지만.

 

5. 프로젝트 기획. 나는 항상 여러분들에게 프로젝트를 기획하기 전에 모든 다양한 것들을 고려하라고 제안했었다. 아내가 스마트 거울로 개조하자는 아이디어를 떠올리고 난 후, 나는 부족한 도구와 실력으로 집에서 LED를 자르고, 합판을 갈고 있었으니 문제가 생기지 않을 리가 없었다. 우리의 한계에 대한 부분도 프로젝트를 기획하기 전에 인지했다면 아마 더 나은 결과물을 만들어 냈을 것이다.

 

6. 비용. 나는 이 프로젝트를 위해 2,000루피 정도 준비했었다. 그러나 디자인을 바꾸고 여러 가지를 추가하면서 최종 비용은 5,000루피를 넘었다.(그래도 나는 최종 결과물이 마음에 든다)

 

 

Step 8: 향후 계획

1. TFT LCD를 설치하여 스마트 거울로 변신시킨다. TFT LCD를 통하여 시간과 날씨를 보여주고 농담도 던지게 한다. 지금은 LED가 꺼져 있을 때 TFT스위치를 켜면 일반 거울을 보여주는 방식을 생각 중이다. 유사한 것은 아래 링크를 참조하시라.

(http://www.homecrux.com/2013/10/12/9583/smart-mirr...)

2. 마이크를 설치하여 비트를 인식하게 한다. 비트를 인식하여 제작회사를 탐색하고 그 결과를 통하여 알맞은 음악을 추천해준다.

3. 통보기를 설치하여 부재중 전화, 문자가 오면 알려준다. TFT LCD를 통하여 이름이나 문자를 나타내게 한다.

 기타등등 다른 제안도 환영한다.

 

 

Step 9: 참고 링크

 프로젝트 깃허브(https://github.com/dushyantahuja/Smart-Infinity-Mirror)

 

영감을 준 것들

1. 찰리플렉싱 LED 시계(http://www.instructables.com/id/Arduino-controlled-RGB-LED-Infinity-Mirror/)

2. 아두이노로 컨트롤하는 RGB LED 무한거울(http://www.instructables.com/id/Arduino-controlled-RGB-LED-Infinity-Mirror/)

3. 아두이노로 간단한 IR 근접 센서 사용하기(http://www.instructables.com/id/Arduino-controlled-RGB-LED-Infinity-Mirror/)

 

아두이노 라이브러리

1. AdaFruit RTCLip(https://github.com/adafruit/RTClib)

2. Fast LED 아두이노 라이브러리 v2.1

(http://fastled.io/), (https://github.com/FastLED/FastLED/tree/FastLED2.1)

3. 시리얼 커맨드 아두이노 라이브러리

(https://github.com/scogswell/ArduinoSerialCommand)

4. TimerOne 아두이노 라이브러리

(https://code.google.com/p/arduino-timerone/)

수박쨈

arduino, 아두이노, Instructables, 무한거울, 시계, LED