Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Lecteur MP3 & réveil Arduino à écran tactile : guide DIY complet

Présentation

Projet : lecteur MP3 et réveil à écran tactile Arduino. Écran d'accueil : grande horloge, date, température, boutons Lecteur MP3 et Réveil.

Vidéo ou tutoriel écrit.

Interface utilisateur

Écran d'accueil

Lecteur MP3 & réveil Arduino à écran tactile : guide DIY complet

Horloge (police 7 segments), date, température, boutons "Music Player" et "Alarm Clock".

Lecteur MP3

Lecteur MP3 & réveil Arduino à écran tactile : guide DIY complet

Bouton central Play/Pause, Précédent/Suivant latéraux. Barre progression haut, barre volume + boutons +/- bas. Horloge coin sup. droit, bouton Menu (retour) gauche.

Réveil

Lecteur MP3 & réveil Arduino à écran tactile : guide DIY complet

Boutons H (heures) et M (minutes) pour régler. Bouton SET pour valider, CLEAR pour annuler.

Lecteur MP3 & réveil Arduino à écran tactile : guide DIY complet

Déclenchement : lecture 1er titre carte SD volume élevé (25) jusqu'à appui "DISMISS".

Architecture matérielle

Arduino Mega + écran TFT 3,2" tactile + shield adapté. Lecture MP3 : module BY8001-16P (carte microSD, MP3/WAV, amplificateur 3W intégré, haut-parleur 0,5W direct). Horloge temps réel : DS3231 RTC (température incluse).

Lecteur MP3 & réveil Arduino à écran tactile : guide DIY complet

Composants

Schéma de câblage

Lecteur MP3 & réveil Arduino à écran tactile : guide DIY complet

Astuce : Le shield TFT bloque les pins libres → connecteurs mâles sur mesure insérés entre shield et Mega. Alimentation 5V : souder connecteur supplémentaire sur pin 5V du shield (pins VCC Arduino toutes utilisées).

Lecteur MP3 & réveil Arduino à écran tactile : guide DIY complet

Module MP3 BY8001-16P

Lecture microSD (MP3/WAV), ampli 3W intégré → haut-parleur 3W direct. Contrôle : 5 pins boutons OU série (UART).

Lecteur MP3 & réveil Arduino à écran tactile : guide DIY complet
Lecteur MP3 & réveil Arduino à écran tactile : guide DIY complet

Important : UART module en 3,3V → résistance 1kΩ sur RX module (depuis TX Arduino). Pads A/B/C : mode contrôle. Pour contrôle microcontrôleur → retirer 3 résistances sur ces pads. Sorties HP : pins 6/7 (direct) ou 4/5 (ampli externe).

Librairie Arduino BY8001 (GitHub) : fonctions simples (playTrackFromFolder(), pause(), setVolume(), etc.).

Code source

Librairies : UTFT.h, URTouch.h (écran), SoftwareSerial.h, BY8001.h, DS3231.h. Objets + variables + bitmaps boutons (convertis via ImageConverter565 fourni avec UTFT).

#include <UTFT.h> #include <URTouch.h> 
#include <SoftwareSerial.h> #include <BY8001.h> #include <DS3231.h>

UTFT myGLCD(SSD1289, 38, 39, 40, 41); // Adapter à votre shield/écran
URTouch myTouch(6, 5, 4, 3, 2);
SoftwareSerial mp3Serial(11, 10); // RX, TX
BY8001 mp3;
DS3231 rtc(SDA, SCL);

// Polices
extern uint8_t SmallFont[]; extern uint8_t BigFont[]; extern uint8_t SevenSegNumFont[];
// Bitmaps boutons (fichiers .c à placer dans dossier sketch)
extern unsigned int MusicPlayerButton[0x1040]; extern unsigned int AlarmButton[0x1040];
extern unsigned int ButtonPlay[0x1AE9]; extern unsigned int ButtonPause[0x1AE9];
extern unsigned int PreviousButton[0x9C4]; extern unsigned int NextButton[0x9C4];
extern unsigned int VolumeDown[0x170]; extern unsigned int VolumeUp[0x3B8];

// Variables état
int x, y; char currentPage, playStatus;
int iV = 15; int trackNum = 1; int b = 16;
int aHours = 0, aMinutes = 0;
boolean alarmNotSet = true; String alarmString = "";
float currentTemperature, temperature;
word totalTime, elapsedTime, playback, minutes, seconds, minutesR, secondsR;
String currentClock, currentDate, timeString, ...

Setup : initialisation écran, tactile, RTC, MP3, écran d'accueil

void setup() {
  myGLCD.InitLCD(); myGLCD.clrScr();
  myTouch.InitTouch(); myTouch.setPrecision(PREC_MEDIUM);
  rtc.begin();
  Serial.begin(9600); mp3Serial.begin(9600); // BY8001 requiert 9600 baud
  mp3.setup(mp3Serial); delay(800); // Démarrage module
  drawHomeScreen();
  currentPage = '0'; playStatus = '0';
  mp3.setVolume(15); delay(100);
  currentTemperature = rtc.getTemp();
  currentDate = rtc.getDateStr();
  currentClock = rtc.getTimeStr();
  // Extraction heures/minutes/secondes pour affichage 7 segments
  timeString = rtc.getTimeStr();
  currentHours = timeString.substring(0,2);
  currentMinutes = timeString.substring(3,5);
  currentSeconds = timeString.substring(6,8);
}

Boucle principale : 3 écrans (accueil, MP3, alarme)

Écran d'accueil (currentPage='0')

Mise à jour horloge/seconde (police 7 segments), date, température (police BigFont) seulement si changement. Détection tactile : bouton Music Player → drawFrame() (cercle rouge temporaire) → currentPage='1' → drawMusicPlayerScreen(). Bouton Alarm → currentPage='2'.

if (myTouch.dataAvailable()) {
  myTouch.read(); x = myTouch.getX(); y = myTouch.getY();
  // Music Player button (zone 55-120, 125-190)
  if (x>=55 && x<=120 && y>=125 && y<=190) {
    drawFrame(87,157,33); currentPage='1'; myGLCD.clrScr(); delay(100);
    drawMusicPlayerScreen(); delay(100);
  }
  // Alarm button (zone 195-260, 125-190)
  if (x>=195 && x<=260 && y>=125 && y<=190) {
    drawFrame(227,160,29); currentPage='2'; myGLCD.clrScr();
  }
}

Écran Lecteur MP3 (currentPage='1')

Gestion tactile : Play/Pause (toggle playStatus 0/1/2), Précédent/Suivant (mp3.previousTrack()/nextTrack()), Volume +/- (increaseVolume()/decreaseVolume() + barre graphique), Menu → retour accueil.

// Play/Pause
if (x>=116 && x<=204 && y>=77 && y<=165) {
  if (playStatus=='0') { drawFrame(159,121,42); drawPauseButton(); mp3.playTrackFromFolder(00,001); playStatus='2'; }
  else if (playStatus=='1') { drawFrame(159,121,42); drawPauseButton(); mp3.play(); playStatus='2'; }
  else if (playStatus=='2') { drawFrame(159,121,42); drawPlayButton(); mp3.pause(); playStatus='1'; }
  return;
}
// Volume +/-
if (x>=230 && x<=280 && y>=165 && y<=209) { // Volume Up
  drawUnderline(235,205,275,205);
  if (iV>=0 && iV<=30) { iV++; drawVolume(iV); }
  mp3.increaseVolume(); delay(100);
}
// Menu button (coin 0-75, 0-30)
if (x>=0 && x<=75 && y>=0 && y<=30) { myGLCD.clrScr(); drawHomeScreen(); currentPage='0'; return; }

Barre progression titre

if (playStatus=='1' || playStatus=='2') trackPlayTime();

void trackPlayTime() {
  totalTime = mp3.getTotalTrackPlaybackTime(); delay(10);
  elapsedTime = mp3.getElapsedTrackPlaybackTime(); delay(10);
  minutes = elapsedTime / 60; seconds = (elapsedTime/60.0 - minutes) * 60;
  playback = totalTime - elapsedTime;
  minutesR = playback / 60; secondsR = (playback/60.0 - minutesR) * 60;
  // Affichage temps écoulé/restant + barre rouge progression
  int trackBarX = map(elapsedTime, 0, totalTime, 0, 224);
  myGLCD.setColor(255,0,0); myGLCD.fillRect(48,50, 48+trackBarX, 58);
  if (totalTime == elapsedTime) { mp3.nextTrack(); /* reset barre */ }
}

Horloge coin sup. droit via printClock().

Écran Réveil (currentPage='2')

Affichage heures/minutes (police 7 segments, deux points verts). Boutons H/M incrémentent (modulo 24/60). SET → formate alarmString "HH:MM:00" (même format que rtc.getTimeStr()) → affichage "Alarm set for: HH:MM:00". CLEAR → efface. Menu → retour accueil.

// Formatage alarme pour correspondance exacte avec getTimeStr()
if (aHours < 10 && aMinutes < 10) alarmString = "0"+String(aHours)+":0"+String(aMinutes)+":00";
else if (aHours < 10) alarmString = "0"+String(aHours)+":"+String(aMinutes)+":00";
else if (aMinutes < 10) alarmString = String(aHours)+":0"+String(aMinutes)+":00";
else alarmString = String(aHours)+":"+String(aMinutes)+":00";

Activation alarme

Hors mode réglage (alarmNotSet==false), comparaison alarmString == rtc.getTimeStr(). Si égalité : écran noir, volume 25, lecture titre #1, affichage "ALARM" + bitmap + bouton DISMISS. Boucle alarmOn jusqu'à appui DISMISS → arrêt lecture, volume 15, retour accueil.

Construction du boîtier


Design SolidWorks. Tôle alu découpée multi-outils, pliée sur bord bureau + serre-joints/lattes.

Lecteur MP3 & réveil Arduino à écran tactile : guide DIY complet
Lecteur MP3 & réveil Arduino à écran tactile : guide DIY complet

Haut-parleurs : motif circulaire imprimé, collé, perçage trous. Découpe latéraux, collage pistolet sur tôle pliée. Peinture finale. Électronique collée pistolet, câblage, couvercle arrière (2 boulons).

Lecteur MP3 & réveil Arduino à écran tactile : guide DIY complet
Lecteur MP3 & réveil Arduino à écran tactile : guide DIY complet

Code complet (avec toutes fonctions graphiques : drawHomeScreen(), drawMusicPlayerScreen(), drawFrame(), drawRectFrame(), drawVolume(), drawTrackBar(), printClock(), drawColon(), drawHomeClock()) disponible ici.

Questions en commentaires, découvrez ma collection de projets Arduino !

Processus de fabrication

  1. Horloge POV Arduino : Construire un affichage LED à persistance rétinienne
  2. Construire une horloge maître LED personnalisée avec alarme – Visible à 12 mètres
  3. Moniteur de Température et Horloge Temps Réel Arduino avec Écran TFT 3.2"
  4. Comment lire de l'audio avec Arduino UNO et DFPlayer Mini – Guide étape par étape
  5. Horloge numérique TM1637 avec réglage heure/alarme – Prototype Arduino Nano
  6. Lecteur MP3 piloté par navigateur avec Arduino et shield PHPoC WiFi
  7. Morpion sur matrice LED MAX7219 avec boîtier en carton
  8. Construire un voltmètre DIY avec Arduino et écran Nokia 5110
  9. Construire un Réveil Fiable avec RTC DS1302 et Arduino UNO