Posted on 2 Comments

반짝반짝 작은별(블루투스 조명예시)

손목을 돌리며 ‘반짝반짝 작은 별’ 노래를 불러주다 보면,

어느새 손동작을 따라하는 아이들이 기특하기만 합니다.

 

이왕이면 손동작과 함께 하늘에 작은별들이 반짝이고, 별자리 신화를 이야기 해주면 좋겠습니다.

이렇게요~~~

imgTwinkleStar imgTwinkleStarEXam

별자리에는 아이들이 좋아하는 코끼리, 사자도 넣구요.

큰곰자리, 작은곰자리와 함께 북두칠성 별자리 이야기를 들려줍니다.

큰곰자리는 부근의 작은곰자리와 함께 그리스 신화의 칼리스토의 전설과 관련되어 있다. 제우스의 애인인 칼리스토가 제우스의 아내 헤라의 질투로 곰의 모습이 되었는데, 제우스가 이를 별자리로 만들었다는 것이다.  –위키백과 참조– –참고동영상 링크

 

반짝반짝 작은별을 만들기 위해 필요한 준비물은

  • MCU : 아두이노 나노 or UNO
  • 통신 : 블루투스 모듈(HC-06)
  • 전원 : AA 배터리 4개, 스위치달린 배터리팩
  • 출력 : LED(원하는 색으로 여러개 준비)
  • 별자리보드 : 우드락, 별자리 그림이 있는 인쇄물
  • 기타 : 브레드보드, 케이블, 안드로이드 스마트폰, 글루건

 

시스템 구조

시스템구성은 별자리보드, 신호송신기로 구분됩니다.
본 시스템은 블루투스로 부터 특정값을 수신받아 LED를 제어하는 별자리보드와 특정 값을 블루투스로 전송할 수 있는 송신장치로 구성됩니다.
이때 송신장치는 스마트폰을 활용할 수도 있고, 별도의 디바이스르 제작할 수 있습니다.
단, 송신장치는 시스템의 목적과 부합될 수 있도록, 흔들거릴때마다 값을 보내면 됩니다.
별자리보드와 송신장치가 블루투스로 연결되면,
흔들리는 형태에 따라 1, 2, 3과 같은 특정 값을 별자리 보드로 보냅니다.
이 후에는 별자리보드에서 값을 읽고, 해당 값에 따라 LED를 제어합니다.
예를 들어, 1의 값을 받을 때는 Orange색 LED만 서서히 켰다, 껐다 할 수 있고,
2의 값을 받으면 Blue색 LED만 서서히 켰다, 껐다 할 수 있습니다.
그리고 3의 값을 받으면 모든 LED가 반짝일 수 있습니다.

별자리 모양, LED 제어 등은 사용자에 따라 얼마든지 변형해서 이용할 수 있습니다.

imgTwinkleStarSystem

 

회로도

회로도를 그릴 수 있는 Fritzing 도구로 제작한 ‘반짝반짝 작은별’ 제어장치 회로도 입니다.

구조는 매우 간단합니다.
다만, 사용하는 LED 수에 따라 선정리가 관건입니다.
imgTwinkleStarCircuit

 

제작순서

  • 1단계 : 제어장치 심플버전으로 제작 및 테스트
  • 2단계 : 별자리 보드 제작
    • 별자리 인쇄
    • 우드락에 붙이기
      imgTwinkleStarPicture
    • LED 배치
      imgTwinkleStarCircuit
  • 3단계 : 제어장치 연결 및 테스트
    imgTwinkleStarCircuitFinal
    imgTwinkleStarFinal

안드로이드 App

  • ‘반짝반짝 작은별’ App 다운로드 링크
  • 현재 버전은 하단에 4가지 토글버튼으로 각각 다른형태의 LED를 제어할 수 있습니다.

 

아두이노 소스코드

GitHub 주소 : https://github.com/forearth/arduino-learning-sample/tree/master/TwinkleStarNormalLED

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2,3); //RX, TX


#define fadeStar1 9
#define fadeStar2 10
#define fadeStar3 11

void setup() {
 // put your setup code here, to run once:
 Serial.begin(9600);
 while (!Serial) {
 ; // wait for serial port to connect. Needed for native USB port only
 }

 mySerial.begin(9600);

}

void loop() {
 if (mySerial.available()) {
 byte data=mySerial.read();
 Serial.write(data);

 switch(data){
 case '1':
 star1();
 break;
 case '2':
 star2();
 break;
 case '3':
 star3();
 break;
 case '4':
 star4();
 break;
 default:
 return;
 }

 }
 if (Serial.available()) {
 mySerial.write(Serial.read());
 }

}

void star1(){
 for(int fadeValue=0; fadeValue<=255; fadeValue+=5){
 analogWrite(fadeStar1, fadeValue);
 delay(30);
 }
 for(int fadeValue=255; fadeValue>=0; fadeValue-=5){
 analogWrite(fadeStar1, fadeValue);
 delay(30);
 } 
}

void star2(){
 for(int fadeValue=0; fadeValue<=255; fadeValue+=5){
 analogWrite(fadeStar2, fadeValue);
 delay(30);
 }
 for(int fadeValue=255; fadeValue>=0; fadeValue-=5){
 analogWrite(fadeStar2, fadeValue);
 delay(30);
 } 
}

void star3(){
 for(int fadeValue=0; fadeValue<=255; fadeValue+=5){
 analogWrite(fadeStar3, fadeValue);
 delay(30);
 }
 for(int fadeValue=255; fadeValue>=0; fadeValue-=5){
 analogWrite(fadeStar3, fadeValue);
 delay(30);
 } 
}


void star4(){
 for(int fadeValue=0; fadeValue<=255; fadeValue+=5){
 analogWrite(fadeStar1, fadeValue);
 analogWrite(fadeStar2, fadeValue);
 analogWrite(fadeStar3, fadeValue);
 delay(30);
 }
 for(int fadeValue=255; fadeValue>=0; fadeValue-=5){
 analogWrite(fadeStar1, fadeValue);
 analogWrite(fadeStar2, fadeValue);
 analogWrite(fadeStar3, fadeValue);
 delay(30);
 } 
}

2 thoughts on “반짝반짝 작은별(블루투스 조명예시)

  1. 혹시 별자리 이야기도 아두이노를 통해 넣을 수 있을까요?

  2. 안녕하세요 혹시 아두이노 led 연결하신거 저렇게 하려면 어떤방식으로 해야 많이 연결 할 수 있을 까요 ?
    그리고 저기 있는 오픈소스는 led 몇개로 하셨을 때로 설정을 하신건가요??ㅜ 아두이노 초보중에 초보입니다!

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다