프로젝트

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

iPlatz를 이용하여 네오픽셀링 안경 만들기.

2014-10-28 16:23:41

개요

리뷰에서 소개한바 있던 iPlatz : 아이플라츠 A1620 제품이 있습니다. 초소형 하드웨어인 아이플라츠는 아두이노와 동일한 성능이면서 작고 가볍다는 장점이 있는데다가, 외형도 깔끔해 다양한 프로젝트에 이용하기 좋습니다.


이런 장점을 이용하여 iPlatz 네오픽셀링 안경을 만들어 보겠습니다.

아두이노 미니를 이용해 만들었을 때보다 연결과 업로드가 쉽고, 외형도 깔끔해 프로젝트 완성도가 높아졌습니다.

이번 프로젝트는 하드보드지를 이용해서 안경틀을 만들었기 때문에 내구성이 좀 약했는데, 안쓰는 안경이나 3D프린터를 이용하여 틀을 만들어서 연결하면 좋은 작품이 될 것이라고 생각합니다.

미리보기 동영상

시작전 개념 이해하기

 - iPlatz 소개
 - NeoPixel 사용하기
 - 네오픽셀링 안경 만들기

부품 목록

NO 부품명 수량 상세설명
1 iPlatz A1620 1 아두이노
2 NeoPixel링 2 네오픽셀
3 점퍼케이블 8 점퍼케이블
4 리튬 배터리 1 3.7V
5 철사 + 하드보드지   틀 재료

부품명 iPlatz 네오픽셀링 점퍼케이블 리튬 배터리 철사 + 하드보드지
파트

하드웨어 Making

회로도


브레드보드 레이아웃



연결 방법은 같습니다. 아두이노 우노 대신에 iPlatz를 연결하시면 됩니다. 연결방법은 밑을 참고 하세요.

iPlatz 연결

 네오픽셀 링은 각각 D2, D3번에 연결하였습니다.

 밑의 DIGITAL-A에서 D2, D3번핀과 네오픽셀 IN부분과 연결해 주시고, DIGITAL-A에 5V와 DIGITAL-B에서 GND부분을 네오픽셀링 각각 VCC, GND부분에 연결해 주시면 됩니다.

 외부 전원은 위에 POWER부분에 5V와 GND에 각각 +, -를 연결해 주시면 됩니다.



안경 조립 과정

우선 네오픽셀 링을 붙일 안경 틀을 만듭니다.


안경틀에 네오픽셀 링와 안경을 안경을 고정시킬 철사를 붙입니다.


안경 다리 한쪽에 아이플라츠를 고정시키고(아이플라츠는 나사로 고정시킬 수 있어서 탈부착이 편합니다!) 선을 연결합니다.


그 후 앞서 만든 안경 틀에 양쪽 다리를 붙이면 끝!! 안경 다리에서 아이플라츠와 연결된 선은 깔끔하게 절연테이프로 고정시키면 됩니다.

소프트웨어 Coding

#include <Adafruit_NeoPixel.h>

#define PIN 2
#define PIN1 3
// 네오픽셀링 1개는 2번핀에, 다른 1개는 3번핀에 연결하였습니다.
#define redColor strip.Color(255, 0, 0) #define blueColor strip.Color(0, 0, 255) #define greenColor strip.Color(0, 255, 0) #define nullColor strip.Color(0, 0, 0) #define whiteColor strip.Color(255, 255, 255)
// 네오픽셀에 대한 색상 정의 Adafruit_NeoPixel strip = Adafruit_NeoPixel(16, PIN, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(16, PIN1, NEO_GRB + NEO_KHZ800); // 2, 3번핀에 연결된 네오픽셀링 선언
void setup() { strip.begin(); strip1.begin(); strip.show(); strip1.show(); } void loop() { // 네오픽셀링에 색깔을 출력 colorWipe(redColor, 50); // Red colorWipe(greenColor, 50); // green colorWipe(blueColor, 50); // Blue
// 네오픽셀링을 전부 끈다. colorWipe(nullColor, 50);
// 네오픽셀 하나씩 차례대로 빛을 깜빡인다. blinkWipe(); blinkWipe();
// 네오픽셀링에 무지개색을 출력 rainbow(10); rainbowCycle(10); } // 네오픽셀링에 색깔을 채워주는 함수(네오픽셀 1번은 정방향으로, 2번은 역방향 순서로 채워줍니다.) void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i<strip.numPixels(); i++) { int j = 15 - i; strip.setPixelColor(i, c); strip1.setPixelColor(j, c); // 네오픽셀 링 픽셀 하나씩 색깔을 세팅해 줍니다. strip.show(); strip1.show(); // 세팅해 준 색깔을 출력합니다. delay(wait); } } void blinkWipe(){ // 네오픽셀 링 픽셀 하나씩 빛을 깜빡입니다. for(uint16_t i = 0; i<strip.numPixels(); i++){ int j = 15-i; strip.setPixelColor(i, whiteColor); strip.show(); delay(50); strip.setPixelColor(i, nullColor); strip.show(); // 네오픽셀 링 1번에 픽셀 1개에 흰색 불을 켜주고, 0.05초 후에 불을 꺼줍니다.
strip1.setPixelColor(j, whiteColor); strip1.show(); delay(50); strip1.setPixelColor(j, nullColor); strip1.show();
// 네오픽셀 링 2번에 픽셀 1개에 흰색 불을 켜주고, 0.05초 후에 불을 꺼줍니다. } } // 네오픽셀 링을 무지개색 순서대로 빛을 출력하는 함수 void rainbow(uint8_t wait) { uint16_t i, j; for(j=0; j<256; j++) { for(i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, Wheel((i+j) & 255)); strip1.setPixelColor(i, Wheel((i+j) & 255)); } strip.show(); strip1.show(); delay(wait); } }
// 네오픽셀 링을 무지개색으로 출력하는 함수 void rainbowCycle(uint8_t wait) { uint16_t i, j; for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel for(i=0; i< strip.numPixels(); i++) { strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255)); strip1.setPixelColor(i, Wheel(((i * 256 / strip1.numPixels()) + j) & 255)); } strip.show(); strip1.show(); delay(wait); } } uint32_t Wheel(byte WheelPos) { if(WheelPos < 85) { return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); } else if(WheelPos < 170) { WheelPos -= 85; return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3); } else { WheelPos -= 170; return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3); } }
// 출처 : Adafruit_NeoPixel.h 라이브러리 standtest 예제를 KocoaFab에서 수정하였습니다.

소프트웨어 설명

위의 소스를 사용하기 위해서는 Adafruit_Neopixel 라이브러리가 추가로 필요합니다. 
(라이브러리 사용법은 링크를 참고하시기 바랍니다.)

기본 소스는 Adafruit_NeoPixel 라이브러리의 예제 standtest와 같습니다. 추가된 부분과 수정된 부분 위주로 설명하겠습니다.
#define redColor strip.Color(255, 0, 0)
#define blueColor strip.Color(0, 0, 255)
#define greenColor strip.Color(0, 255, 0)
#define nullColor strip.Color(0, 0, 0)
#define whiteColor strip.Color(255, 255, 255)
// 네오픽셀에 대한 색상 정의

 네오픽셀 색깔을 설정을 정의하는 부분입니다. 매번 색깔을 설정하기 위해 'strip.Color(255, 0, 0)' 부분을 쓰기 번거로우니 따로 정의 하여 빨간색을 쓰기 위하면 redColor, 파란색은 blueColor 만 쓰면 됩니다.
 위에서는 빨간색, 파란색, 녹색, 색없음, 흰색 총 5가지 색깔을 정의 하였습니다.

 
void blinkWipe(){ // 네오픽셀 링 픽셀 하나씩 빛을 깜빡입니다.
  for(uint16_t i = 0; i<strip.numPixels(); i++){
   int j = 15-i;
   strip.setPixelColor(i, whiteColor); 
   strip.show();
   delay(50);
   strip.setPixelColor(i, nullColor);
   strip.show();
   // 네오픽셀 링 1번에 픽셀 1개에 흰색 불을 켜주고, 0.05초 후에 불을 꺼줍니다.   
strip1.setPixelColor(j, whiteColor); strip1.show(); delay(50); strip1.setPixelColor(j, nullColor); strip1.show();
// 네오픽셀 링 2번에 픽셀 1개에 흰색 불을 켜주고, 0.05초 후에 불을 꺼줍니다. } }

각 픽셀 하나 씩 흰색 빛을 켯다까 끕니다. 1번 네오픽셀 링의 픽셀 1개가 블링크 하면 2번 네오픽셀 링의 픽셀 1개가 블링크 합니다. 이렇게 한바퀴 돌 때 까지 반복 합니다.

1번 네오픽셀 링의 픽셀 한개를 하얀색으로 세팅하고 켜준다음 다시 같은 픽셀 한개를 꺼줍니다. 그후 2번 네오 픽셀링 픽셀 한개를 하얀색으로 세팅하고 켜준다음 다시 같은 픽셀 한개를 꺼줍니다.

이것을 각 네오픽셀링 개수만큼 반복 하면, 화려한 무대에서 나오는 조명 효과 처럼 나옵니다.



판다마니아

iPlatz, 네오픽셀 링