네오픽셀 + 블루투스 통신

by Da Young Jung | 2017-02-03 18:37
네오픽셀 무드등 블루투스 아두이노

재료

  • 혹시모를 저항 1개
  • 네오픽셀 1개
  • 점퍼선 7개
  • 아두이노 나노 1개
  • 브레드보드 1개
  • 블루투스 모듈 1개

도구

  • 블루투스 앱
  • 코드 작성할 컴퓨터

무드등을 만들면서, 맘으로 바라는 스펙은 점점 높고 다양해지고, 실력은 제자리걸음인것 같고.
일단은 기본적인 기능부터 정의하고, 그걸 만들어 낸 후에 추가적인 기능을 고민해보는게 현실적일것 같아서
잔 가지를 쳐내고, 1차로 어떤 무드등을 만들지 정해보았다.

해외 프로젝트로 올라온 "스마트폰 컨트롤 무드라이트"를 따라 만들려 했지만, bluelight bean 이라는 재료가 생각보다 많이 비싸서... 되게 작고 이쁘던데, 그냥 가지고 있는 아두이노로 대체해보도록 했다.


1차 스펙

1. 아두이노를 이용

2. 네오픽셀을 이용, 색깔 변화가 가능하도록

3. 블루투스를 이용, 폰으로 컨트롤 할 수 있도록

일단 이렇게 두가지를 가능하게 만들고, 다른 기능을 만들어보겠다.


0. 스케치 작성

실습 해보았던 코드들을 섞어서 만들어봤다. 되면 좋겠다...하는 마음으로

#include "neo.h"

#define neopixelPIN    3
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, neopixelPIN, NEO_GRB + NEO_KHZ800);
int delayval = 500;

int color[] = {255,0,0 ,0,255,0 ,0,0,255 ,255,0,255 ,255,255,0 ,0,255,255 , 255,255,255};

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  neopixelInit();
}

void loop() {
    byte data;
    data = Serial.read();
    if(data=='y'){
      digitalWrite(13, HIGH);
      neopixelOn(5, 100, 100);   
    }
    if(data=='n'){
      digitalWrite(13, LOW);  
      neopixelOff(); 
    }
}

neo.h

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define NUMPIXELS      3



neo

//neopixel
void neopixelInit() {
#if defined (__AVR_ATtiny85__)
  if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
  pixels.begin();
}

void neopixelOn(int red, int green, int blue) {
  for (int i = 0; i < NUMPIXELS; i++) {
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels.setPixelColor(i, pixels.Color(red, green, blue)); // Moderately bright green color. (0, 150, 0)
    pixels.show(); // This sends the updated pixel color to the hardware.
    delay(delayval); // Delay for a period of time (in milliseconds).
  }
}

void neopixelOff() {
  for (int i = 0; i < NUMPIXELS; i++) {
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    pixels.show();
    delay(delayval);
  }
}
위처럼 3개의 탭으로 나눠서 작성했다. 항상 포트연결 먼저 확인하기!


1. 아두이노

아두이노 나노를 사용하기로 했다~ 되게 비싼줄 알았는데, 다시 찾아보니 생각보다 비싸지 않고 (왜 지난번하고 다르게 찾아진지 모르겠지만...) 마침 지난 캐릭터 수업때 받은게 있어서.^^


내가 사용한 아두이노 나노. 
(예전엔 이런거 봐도 뭐가 뭔지 몰랐는데, 적어도 아두이노라는 사실은 알게되었다는 쥐어짜내는 감동)

이걸 빵판에 꽂아놓고, 다음단계로 넘어간다!


2. 네오픽셀


네오픽셀은 다리가 세개 있고 각각 영어가 써있다...ㅋㅋ 무슨뜻인지 찾아보고... 잘 모르겠지만,

- GND : GROUND

- VCC : Voltage of Common Collector

- IN


각각을 아두이노에 적합?하게 연결하면 된다.

네오픽셀아두이노
GNDGND
VCC5V
IND3


3. 블루투스 연결

이렇게 생긴 블루투스 모듈을 가지고 있다. 찾아보니 마지막 양쪽 두 다리는 없는 것도 있고, 이번에 해볼때도 양쪽 두개는 사용하지 않았다.

- STATE

- RXD : Receive Data (수신 데이터 선)

- TXD : Transmit Data (송신 데이터 선)

- GND

- VCC

- EN


각각을 연결하면,

블루투스아두이노
RXDTX
TXDRX
GNDGND
VCC5V


4. 블루투스 앱 설치

내 폰이 아이폰이라서 LightBlue 설치함


1차 결과물

일단 불안?해서 중간에 저항 하나 끼워놓고 ㅋㅋ (이때 사용하는게 맞나요?ㅋㅋ)
작성해둔 스케치를 올렸다. 첨에 포트 설정을 깜빡해서 안되기도 하고, 잘못 가져온 소스땜에 안되기도 했는데
블루투스 앱으로 켰다 껐다 할 수 있는 무드등의 기본 기능이 완성되었다...!!!


(사실 지금 문제가 있더라도 일단 되니까 잘 모르겠다 ;ㅋㅋ)

화질이 왜 이렇게 올라가는지는 모르겠지만 ㅋㅋㅋ 다시올리긴 귀찮으므로 패스. 별거 없다

"y" 입력하면 불켜지고, "n" 입력하면 불꺼진다!

아두이노와 잘 맞지 않는것 같다며 투덜댔는데, 아두이노가 나한테 밀당하네^^



---

참고(한) 자료

네오픽셀 무드등 만들기 (김영석)
http://www.makewith.co/page/project/522/story/1004/ 
블루투스 통신 사용예제 (이지환)
http://www.makewith.co/page/project/324/story/625/ 
슈퍼문 무드등 만들기 (코코아팹)
http://kocoafab.cc/make/view/686 
반응형 네온사인 조명 (하드카피월드)
http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=project_hardcopy&wr_id=284 
평소 궁금했던 Vcc, Vdd, Vss
http://blog.daum.net/shksjy/32 
TXD RXD
http://blog.daum.net/i-maman/13624275 
스마트폰 컨트롤 무드라이트
http://www.instructables.com/id/Smartphone-controlled-mood-light/ 
https://www.hackster.io/punch-through/smartphone-controlled-mood-light-359dac?ref=part&ref_id=8241&offset=0 

댓글 0

MADE BY

Da Young Jung

123d design, CSS, fusion 360, html, Illustrator, Photoshop, sculptris, 가죽공예, 디자인, 떡빚기, 뜨개질, 모델링기초, 손바느질, 퍼블리싱