NEW 트랙 오픈 중 · 초·중·고 맞춤형 코딩·메이킹 상시 상담, 성인 개인 맞춤형 생성형 AI 실무 아케데미, 대표자 및 실무자 AX 모델 컨설팅
← 목록으로 돌아가기
아두이노 메이킹

[프로젝트] NodeMCU, DFPlayer를 이용한 MP3 플레이어 만들기

작성자: 잡** 조회수: 1

NodeMCU에서 제공하는 웹서버 기능을 이용해서 MP3모듈의 기능을 웹으로 제공합니다.


다양한 스피커들을 모아 봤습니다.


회로를 꾸며보았습니다.


 

[htmlcode] 는
<a href='/prev'>prev</a><br><a href='/next'>next</a><br><a href='/stop'>stop</a><br><a href='/up'>up</a><br><a href='/down'>down</a><br>
입니다.
#include <DFPlayer_Mini_Mp3.h>
#include <SoftwareSerial.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h> 
#include <SoftwareSerial.h>
#include <ESP8266HTTPClient.h>

const char* ssid = "****";
const char* password = "****"; 
ESP8266WebServer    server(80);

#define PULLUP_BTN D3
SoftwareSerial mp3Serial(D1, D2); // RX, TX

int pullUp = 0;
int volume = 30;

void setup () {
  Serial.begin (9600);
  mp3Serial.begin (9600);

  pinMode(PULLUP_BTN , INPUT_PULLUP);
  
  mp3_set_serial (mp3Serial);  
  mp3_set_volume (volume);
  mp3_stop();

 // ip 주소 지정하기
  IPAddress ipaddr(192,168,0,103);
  IPAddress gate(192,168,0,1);
  IPAddress subnet(255,255,255,0);

  WiFi.mode(WIFI_STA);
  WiFi.config(ipaddr, gate, subnet);
  WiFi.begin(ssid, password);
  
  while (WiFi.status( ) != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP( ));

  
  // 웹브라우저 접속 주소
  server.on("/", [ ]( ){
    server.send(200, "text/html", "");
  });

  // music next
  server.on("/next", [ ]( ){ 
    mp3_stop ();
    delay(100);
    mp3_next ();
    Serial.println("Start next...");
    delay(1000);
    
    server.send(200, "text/html", "[htmlcode]");
  });

  // music prev
  server.on("/prev", [ ]( ){ 
    mp3_stop ();
    delay(100);
    mp3_prev ();
    Serial.println("Start prev...");
    delay(1000);
    
    server.send(200, "text/html", "[htmlcode]");
  });

  // off
  server.on("/stop", [ ]( ){
    mp3_stop();
    Serial.println("stop...");
    server.send(200, "text/html", "[htmlcode]");
  });

 // play
  server.on("/play", [ ]( ){     
       String no = server.arg("no");
       mp3_play(no.toInt());
       mp3_play();
       server.send(200, "text/plain", "play no : " + no);
  });


  // volume up
  server.on("/up", [ ]( ){ 
    int temp1 = volume + 3;
    if(temp1 >= 30 ) {
      temp1 = 30;
    } 
    volume = temp1;
    mp3_set_volume (volume);
    Serial.println("up..." + volume);
    server.send(200, "text/html", "[htmlcode]");
  });
  
  // volume down
  server.on("/down", [ ]( ){ 
    int temp2 = volume - 3;
    if(temp2 <= 0 ) {
      temp2 = 0;
    }
    volume = temp2;
    mp3_set_volume (volume);
    Serial.println("down..." + volume);
    server.send(200, "text/html", "<a href='[htmlcode]");

  
  });

  //웹서버 시작
  server.begin();
  Serial.println("HTTP server started");

}

void loop () {
  pullUp = digitalRead(PULLUP_BTN);

  if(!pullUp) {
    mp3_stop ();
    delay(500);
    mp3_next ();
  }

  server.handleClient( );//클라이언트 접속을 관리합니다.
}

회로를 꾸며서 테스트해보고 그걸 PCB에 옮겨서 작게 만들었어요



이 정도면 들을만 하죠 ^^

📎 첨부파일 (0개)

클릭 시 원본 파일명으로 즉시 다운로드됩니다.

등록된 첨부파일이 없습니다.

💬 응원 댓글 (0)

함께 보면 좋은 다른 작품·게시물