2. 캐릭터에서 노래가 나오게 하기

by 이서희 | 2017-07-03 16:55
character mp3 노래 만들기 무드등 쉬운 아두이노 캐릭터

재료

  • 캐릭보드 1개

저번 스토리에서는 캐릭터 무드등의 색깔을 바꿔보았습니다.

이번에는 스피커를 이용해 노래가 나오는 캐릭터 무드등으로 바꾸어봅시다.


준비물

캐릭보드, 아두이노 나노, 아두이노 나노 케이블, 네오픽셀, mp3모듈, 스피커, 스탠드, 캐릭터


1. 라이브러리 설치

mp3 라이브러리는 다음 링크에서 다운로드 받을 수 있습니다.

- DFplayer    https://github.com/DFRobot/DFPlayer-Mini-mp3


오른쪽의 Clone or download 버튼을 클릭후 나타나는 탭에서 Download ZIP을 선택합니다.


집을 다운받은 후엔 압축을 풀어줍니다.




압축을 풀고 나면 폴더(DFPlayer-Mini-Mp3-master)의 한 단계 하부 디렉토리인 (DFPlayer-Mini-Mp3)가 실제 라이브러리 파일들을 갖고 있는 상태입니다. 


 따라서 'DFPlayer-Mini-Mp3' 폴더만 라이브러리 폴더로 옮겨주셔야합니다. 그렇지 않으면 라이브러리 폴더가 잘못 되었다는 에러가 발생할 수 있습니다.



저는 윈도우를 사용하므로 C:\Program Files (x86)\Arduino\libraries 의 위치에 라이브러리를 추가하였습니다.



2. 모듈 연결하기

저번 시간에 네오픽셀을 연결하였으므로 mp3 모듈과 스피커만 연결하면 됩니다. 회로도는 다음과 같습니다.


연결을 완료한 모습입니다.


3. sd카드에 노래 넣기

다음은 듣고 싶은 노래를 sd카드에 넣어 보겠습니다!

먼저 sd카드 리더기에 sd카드를 꽂습니다.



그리고 sd카드 리더기를 자신의 컴퓨터에 꽂으면 이동식 디스크가 연결이 되었다고 뜹니다. 이 안에 mp3폴더를 만들고 노래를 넣어주시면 됩니다.

 


저는 프로듀스 101의 열혈 시청자이므로 Pick me 노래를 선택했습니다. (강다니엘 짱짱)

노래제목은 0008Title, 0009Title, ... 로 설정해주세요.


이제 sd 카드를 DFplayer Mini 칩에 꽂으면 프로그램을 실행할 준비가 완료됩니다. 



4. 아두이노 프로그램 실행하기

다음과 같은 프로그램을 실행해보았습니다.

트랙 8번에 나야나가 저장되어 있고 노래가 대략 3분 정도 되므로 360초간 재생되도록 설정했습니다.

볼륨은 0~20까지 선택 가능합니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 6
 
SoftwareSerial mp3Serial(1213);
Adafruit_NeoPixel strip = Adafruit_NeoPixel(5, PIN, NEO_GRB + NEO_KHZ800);
 
int red = 0;
int green = 0;
int blue = 0;
 
void setup() {
  strip.begin();
  Serial.begin(9600);
  mp3Serial.begin(9600);
  mp3_set_serial (mp3Serial);
  delay(1);
  mp3_set_volume (12);  //볼륨 설정 (0~15)
  red = 255;
  green = 255;
  blue = 0;
}
 
void loop() {
  for (int i = 0; i < 5; i++) {
    strip.setPixelColor(i, strip.Color(red, green, blue));
    strip.show();
  }
  mp3Serial.listen();
  if (mp3Serial.isListening()) {
    Serial.println("Play");
    mp3_play(8);  //몇 번째 곡을 재생할 지 선택
    delay (360000);  //몇 초간 재생할 지 선택
    mp3_stop();
  }
  delay(1000);
}
 
cs


저같은 경우는 반복적으로 실행을 하다가 Error opening serial port 'COM3'. (Port busy) 에러가 발생하였는데요, 구글링을 통해 이미 연결되어있는 포트를 실행하여 생긴 문제라는 것을 알 수 있었습니다. 다행히 USB포트를 뽑았다가 다시 연결해보니 다시 실행이 되었습니다.


노래를 재생시켜 봅시다. 저는 조금 더 현란한 캐릭터를 만들기 위하여 도현양의 돌아가는 무지개 코드를 활용하여 무지개 색으로 빛나는 mp3 캐릭터를 만들어 보았습니다!

코드는 다음과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 6
 
SoftwareSerial mp3Serial(1213);
Adafruit_NeoPixel strip = Adafruit_NeoPixel(5, PIN, NEO_GRB + NEO_KHZ800);
 
int red = 0;
int green = 0;
int blue = 0;
int colors[5][3];
 
void setup() {
  strip.begin();
  Serial.begin(9600);
  mp3Serial.begin(9600);
  mp3_set_serial (mp3Serial);
  delay(1);
  mp3_set_volume (20);  //볼륨 설정 (0~20)
  red = 255;green = 255;blue = 255;
  rainbow();
}
void rainbow() {
  colors[0][0= 255; colors[0][1= 0; colors[0][2= 0//빨
  colors[1][0= 255; colors[1][1= 255; colors[1][2= 0//노
  colors[2][0= 0; colors[2][1= 255; colors[2][2= 0//초
  colors[3][0= 0; colors[3][1= 0; colors[3][2= 255//파
  colors[4][0= 253; colors[4][1= 0; colors[4][2= 255//보  
}
 
void loop() {
  for (int i = 0; i < 5; i++) {
    strip.setPixelColor(i, strip.Color(colors[i][0], colors[i][1], colors[i][2]));
    strip.show();
  }
  mp3Serial.listen();
  if(mp3Serial.isListening()){
    Serial.println("Play");
    mp3_play(8);  //몇 번째 곡을 재생할 지 선택
    delay (360000);  //몇 초간 재생할 지 선택
    mp3_stop();
  }
  delay(1000);
}
 
cs


이제 실행시켜 보니 무지개 빛으로 빛나는 '나야나' 캐릭보드가 탄생하게 되었습니다.



네 맘을 훔칠 캐릭보드 나야나~ 나야나~ ♬




신나는 마음으로 다음 시간에는 빛센서를 이용하여 어두울때 자동으로 켜지는 무드등을 만들어 보겠습니다..


댓글 0

MADE BY

3. 어두울 때 켜지는 무드등 다음글 2. 캐릭터에서 노래가 나오게 하기현재글 1. LED 컬러 변경하기 이전글