Lecteur MP3 piloté par navigateur avec Arduino et shield PHPoC WiFi
Composants nécessaires
- 1 × Arduino UNO
- 1 × Shield PHPoC WiFi pour Arduino (ou shield PHPoC standard)
- 1 × Lecteur MP3 série Catalex
- 1 × Carte micro SD
- 1 × Haut-parleur
À propos du projet
Un lecteur MP3 peut être utile dans un musée ou une exposition pour fournir des informations vocales aux visiteurs à la demande. Ce projet montre comment contrôler la lecture MP3 via une page web en utilisant un Arduino Uno.
Lecteur MP3 série
Le lecteur MP3 série possède deux interfaces :
- Une prise jack pour le haut-parleur
- Une interface série vers le microcontrôleur (Arduino dans ce projet)
Lorsqu'il reçoit une commande du microcontrôleur (LECTURE, PAUSE, VOLUME+, etc.), le lecteur lit le fichier .mp3 sur la carte SD et exécute l'action correspondante. Avant utilisation, copiez les fichiers .mp3 sur la carte SD et insérez-la dans le lecteur.
Câblage
- Emboîtez le shield PHPoC sur l'Arduino
- Connectez GND, VCC, TX et RX du lecteur MP3 à GND, 5V, broche 8 et broche 9 de l'Arduino respectivement
Flux de données
Navigateur web → Shield PHPoC WiFi → Arduino
L'application web envoie des commandes basées sur les événements tactiles/clics au shield PHPoC via WebSocket. Le shield transmet la commande à l'Arduino, qui la relaie au lecteur MP3.
Note : le shield PHPoC intègre un programme qui transmet les données du navigateur à l'Arduino ; vous n'avez pas à vous en soucier.
Étapes de mise en œuvre
- Configurer les informations WiFi du shield PHPoC (SSID et mot de passe)
- Téléverser l'interface web (remote_mp3.php) sur le shield via PHPoC Debugger
- Écrire et téléverser le code Arduino
Test
- Ouvrez le moniteur série sur l'IDE Arduino pour obtenir l'adresse IP
- Dans un navigateur, accédez à
https://<adresse_IP>/remote_mp3.php - Cliquez sur « Connect » et testez les commandes
Code Arduino
#include "SPI.h"
#include "Phpoc.h"
#include
#define ARDUINO_RX 8
#define ARDUINO_TX 9
AltSoftSerial mySerial(ARDUINO_RX, ARDUINO_TX);
static int8_t Send_buf[8] = {0};
#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
PhpocServer server(80);
char name;
int value;
void setup() {
mySerial.begin(9600);
delay(500);
sendCommand(CMD_SEL_DEV, DEV_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();
if (name == 'P') {
Serial.println("Play mp3");
sendCommand(CMD_PLAY, 0x0000);
}
if (name == 'S') {
Serial.println("Pause mp3");
sendCommand(CMD_PAUSE, 0x0000);
}
if (name == 'N') {
Serial.println("Play next mp3");
sendCommand(CMD_PLAY_NEXT, 0x0000);
}
if (name == 'B') {
Serial.println("Play previous mp3");
sendCommand(CMD_PLAY_PREV, 0x0000);
}
if (name == 'V') {
Serial.print("Change volume to ");
Serial.println(value);
sendCommand(CMD_SET_VOLUME, value);
}
}
}
}
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]);
}
}
Interface web (remote_mp3.php)
Le fichier PHP/HTML/JavaScript complet est disponible dans la section code du projet original. Il fournit une interface tactile avec boutons Lecture/Pause, Suivant/Précédent et curseur de volume, communiquant via WebSocket avec le shield PHPoC.
Schéma de câblage
Processus de fabrication
- Piano mécanique : fusion de la tradition acoustique et de la précision automatisée
- Construire un Spybot Arduino piloté par Bluetooth
- FlickMote : Télécommande IR à gestes pour maison connectée
- TV-B-Gone DIY Arduino : Télécommande universelle pour toutes les TV
- Construire une horloge maître LED personnalisée avec alarme – Visible à 12 mètres
- Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
- Solutions d'alimentation optimisées pour projets Arduino
- Comment lire de l'audio avec Arduino UNO et DFPlayer Mini – Guide étape par étape
- Morpion sur matrice LED MAX7219 avec boîtier en carton