亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino 网页控制 MP3 播放器:浏览器实现无线点歌

元器件清单

元器件数量备注
Arduino UNO1主控板
PHPoC WiFi Shield for Arduino1也可用 PHPoC Shield 替代
Catalex 串口 MP3 播放器模块1支持 TF 卡,串口控制
Micro SD 卡1存放 MP3 文件
扬声器1连接 MP3 模块输出

项目简介

本项目实现通过网页界面远程控制 MP3 播放器,适用于博物馆、展览馆等场景的语音导览系统。用户在手机或电脑浏览器打开网页,即可控制播放/暂停、上一曲/下一曲、音量调节等功能。系统采用 PHPoC WiFi Shield 实现 WebSocket 通信,Arduino 通过串口向 MP3 模块发送指令。

硬件接线

MP3 模块引脚Arduino 引脚
GNDGND
VCC5V
TX数字引脚 8 (软串口 RX)
RX数字引脚 9 (软串口 TX)

系统数据流向

Web 浏览器 → PHPoC WiFi Shield → Arduino → MP3 播放器

网页端通过 WebSocket 发送控制指令(如播放、暂停、音量),PHPoC Shield 透传给 Arduino,Arduino 再按协议转发给 MP3 模块。

MP3 模块指令集

指令功能参数
0x0D播放无
0x0E暂停无
0x01下一曲无
0x02上一曲无
0x06设置音量XX (0-30)
0x03指定曲目播放曲目索引
0x22指定音量播放音量+曲目
0x09选择存储设备0x02 (TF卡)
0x19单曲循环设置0x00 开/0x01 关

实施步骤

  1. 配置 PHPoC Shield WiFi:设置 SSID 和密码,参考官方文档
  2. 上传 Web UI:下载 remote_mp3.php,通过 PHPoC Debugger 上传到 Shield
  3. 安装 Arduino 库:在 Arduino IDE 安装 PHPoC 库并重启
  4. 编写/上传 Arduino 代码:参考下方完整代码
  5. 测试运行:打开串口监视器获取 IP 地址,浏览器访问 https://[IP]/remote_mp3.php

Arduino 完整代码

#include "SPI.h"
#include "Phpoc.h"
#include 

#define ARDUINO_RX 8  // 接 MP3 模块 TX
#define ARDUINO_TX 9  // 接 MP3 模块 RX
AltSoftSerial mySerial(ARDUINO_RX, ARDUINO_TX);

static int8_t Send_buf[8] = {0};

// MP3 模块指令定义
#define CMD_PLAY_NEXT     0x01
#define CMD_PLAY_PREV     0x02
#define CMD_PLAY_W_INDEX  0x03
#define CMD_SET_VOLUME    0x06
#define CMD_SEL_DEV       0x09
#define CMD_PLAY_W_VOL    0x22
#define CMD_PLAY          0x0D
#define CMD_PAUSE         0x0E
#define CMD_SINGLE_CYCLE  0x19
#define DEV_TF            0x02
#define SINGLE_CYCLE_ON   0x00
#define SINGLE_CYCLE_OFF  0x01

// WebSocket 服务器
PhpocServer server(80);
char name;
int value;

void setup() {
  mySerial.begin(9600);
  delay(500); // 等待 MP3 模块初始化
  
  sendCommand(CMD_SEL_DEV, DEV_TF); // 选择 TF 卡
  delay(200);
  
  Serial.begin(9600);
  while(!Serial);
  
  Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
  server.beginWebSocket("remote_slide");
  
  Serial.print("WebSocket server address: ");
  Serial.println(Phpoc.localIP());
}

void loop() {
  PhpocClient client = server.available();
  if (client) {
    String slideStr = client.readLine();
    if (slideStr) {
      name = slideStr.charAt(0);
      value = slideStr.substring(1).toInt();
      
      switch (name) {
        case 'P': // 播放
          Serial.println("Play mp3");
          sendCommand(CMD_PLAY, 0x0000);
          break;
        case 'S': // 暂停
          Serial.println("Pause mp3");
          sendCommand(CMD_PAUSE, 0x0000);
          break;
        case 'N': // 下一曲
          Serial.println("Play next mp3");
          sendCommand(CMD_PLAY_NEXT, 0x0000);
          break;
        case 'B': // 上一曲
          Serial.println("Play previous mp3");
          sendCommand(CMD_PLAY_PREV, 0x0000);
          break;
        case 'V': // 音量
          Serial.print("Change volume to ");
          Serial.println(value);
          sendCommand(CMD_SET_VOLUME, value);
          break;
      }
    }
  }
}

void sendCommand(int8_t command, int16_t dat) {
  delay(20);
  Send_buf[0] = 0x7e; // 起始字节
  Send_buf[1] = 0xff; // 版本
  Send_buf[2] = 0x06; // 数据长度
  Send_buf[3] = command;
  Send_buf[4] = 0x00; // 无反馈
  Send_buf[5] = (int8_t)(dat >> 8);  // 高字节
  Send_buf[6] = (int8_t)(dat);       // 低字节
  Send_buf[7] = 0xef; // 结束字节
  
  for (uint8_t i = 0; i < 8; i++) {
    mySerial.write(Send_buf[i]);
  }
}

Web 界面代码 (remote_mp3.php)

网页端采用 HTML5 Canvas 绘制圆形控制界面,包含播放/暂停、上一曲/下一曲、音量滑块,通过 WebSocket 与 Arduino 实时通信。完整代码较长,核心逻辑如下:

Arduino 网页控制 MP3 播放器:浏览器实现无线点歌
系统原理框图
Arduino 网页控制 MP3 播放器:浏览器实现无线点歌
详细接线原理图

制造工艺

  1. 自动钢琴:融合原声传统与自动化精准
  2. DIY 蓝牙控制 Arduino 间谍小车
  3. FlickMote:基于手势的智能家居红外遥控器
  4. DIY Arduino TV-B-Gone:万能关机遥控器
  5. 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
  6. Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
  7. Arduino 项目优化供电方案:从按键开关到电池监测与数据记录
  8. Arduino UNO 与 DFPlayer Mini 播放音频完整指南
  9. Arduino 井字棋游戏:MAX7219 点阵屏 + 纸板外壳 DIY
  10. 从零构建智能 Arduino 四足机器人:完整指南
  11. DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南
  12. 利用 Arduino Nano R3 自制全功能 CNC 雕刻机