Difference between revisions of "Réveil mp3 avec arduino"

(Cette version a été marquée pour être traduite)
Line 1: Line 1:
 
{{ {{tntn|Tuto Details}}
 
{{ {{tntn|Tuto Details}}
 +
|SourceLanguage=none
 +
|Language=fr
 +
|IsTranslation=0
 
|Licences=Attribution (CC BY)
 
|Licences=Attribution (CC BY)
|Description=<translate><!--T:1--> Boite Réveil mp3 avec arduino uno</translate>
+
|Description=<translate>Boite Réveil mp3 avec arduino uno</translate>
 
|Area=Electronics, House, Music and Sound
 
|Area=Electronics, House, Music and Sound
 
|Type=Creation
 
|Type=Creation
Line 9: Line 12:
 
|Cost=50
 
|Cost=50
 
|Currency=EUR (€)
 
|Currency=EUR (€)
|SourceLanguage=none
 
|Language=fr
 
|IsTranslation=0
 
 
}}
 
}}
 
{{ {{tntn|Introduction}}
 
{{ {{tntn|Introduction}}
|Introduction=<translate><!--T:2--> Boites en contreplaqué contenant un réveil-mp3 et un écran fonctionnant grâce à un arduino uno</translate>
+
|Introduction=<translate>Boites en contreplaqué contenant un réveil-mp3 et un écran fonctionnant grâce à un arduino uno</translate>
 
}}
 
}}
 
{{ {{tntn|Materials}}
 
{{ {{tntn|Materials}}
|Material=<translate><!--T:3-->
+
|Material=<translate>Arduino uno
Arduino uno
 
  
<!--T:4-->
 
 
Grove - MP3 v2.0
 
Grove - MP3 v2.0
  
<!--T:5-->
 
 
Grove - RTC
 
Grove - RTC
  
<!--T:6-->
 
 
Mini SD
 
Mini SD
  
<!--T:7-->
 
 
N'importe quelle baffle mobile connectée au composant Grove - MP3 v2.0 par un mini jack
 
N'importe quelle baffle mobile connectée au composant Grove - MP3 v2.0 par un mini jack
  
<!--T:8-->
 
 
Plaque contreplaqué</translate>
 
Plaque contreplaqué</translate>
|Tools=<translate><!--T:9-->
+
|Tools=<translate>découpeuse lazer
découpeuse lazer
 
  
<!--T:10-->
 
 
imprimante 3d ultimaker 2</translate>
 
imprimante 3d ultimaker 2</translate>
 
|Tuto_Attachments={{ {{tntn|Tuto Attachments}}
 
|Tuto_Attachments={{ {{tntn|Tuto Attachments}}
 
|Attachment=Bento Box V1 2018 - etage meteo.pdf
 
|Attachment=Bento Box V1 2018 - etage meteo.pdf
}}{{ {{tntn|Tuto Attachments}}}}{{ {{tntn|Tuto Attachments}}
+
}}{{ {{tntn|Tuto Attachments}}
|Attachment=Bento Box V1 2018 - etage meteo.pdf
+
|Attachment=Porte voix.stl
}}{{ {{tntn|Tuto Attachments}}}}
+
}}
 
}}
 
}}
 
{{ {{tntn|Separator}}}}
 
{{ {{tntn|Separator}}}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
|Step_Title=<translate><!--T:11--> decoupe</translate>
+
|Step_Title=<translate>decoupe</translate>
 
|Step_Content=<translate></translate>
 
|Step_Content=<translate></translate>
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
|Step_Title=<translate><!--T:12--> impression 3D</translate>
+
|Step_Title=<translate>impression 3D</translate>
|Step_Content=<translate><!--T:13-->
+
|Step_Content=<translate>imprimante 3d ultimaker 2
imprimante 3d ultimaker 2
 
  
<!--T:14-->
 
 
Matière utilisée : PLA
 
Matière utilisée : PLA
  
<!--T:15-->
+
Réglages : voir fichier config imp3D.png
Réglages : voir fichier config imp3D.png</translate>
+
 
 +
Modèle : https://www.tinkercad.com/things/0svbwI2n4Ez-copy-of-megaphone/editv2</translate>
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
|Step_Title=<translate><!--T:16--> code arduino</translate>
+
|Step_Title=<translate>code arduino</translate>
|Step_Content=<translate><!--T:17-->
+
|Step_Content=<translate>// DECLARATIONS
// DECLARATIONS
 
  
<!--T:18-->
 
 
// Projet Réveil mp3
 
// Projet Réveil mp3
  
<!--T:19-->
 
 
<nowiki>#</nowiki>include <Wire.h>
 
<nowiki>#</nowiki>include <Wire.h>
  
<!--T:20-->
 
 
// Bibliothèque de gestion de l'horloge
 
// Bibliothèque de gestion de l'horloge
  
<!--T:21-->
 
 
// ************************************
 
// ************************************
  
<!--T:22-->
 
 
<nowiki>#</nowiki>include "DS1307.h"
 
<nowiki>#</nowiki>include "DS1307.h"
  
<!--T:23-->
 
 
DS1307 clock; //define a object of DS1307 class
 
DS1307 clock; //define a object of DS1307 class
  
<!--T:24-->
 
 
// Création des variables de stockage de l'heure et de l'heure du réveil (format HH:MM) :
 
// Création des variables de stockage de l'heure et de l'heure du réveil (format HH:MM) :
  
<!--T:25-->
 
 
// static uint8_t buzzer_hour[5] = {};
 
// static uint8_t buzzer_hour[5] = {};
  
<!--T:26-->
 
 
int buzzer_hour  = 0;
 
int buzzer_hour  = 0;
  
<!--T:27-->
 
 
int buzzer_min   = 0;
 
int buzzer_min   = 0;
  
<!--T:28-->
 
 
int current_hour = 0;
 
int current_hour = 0;
  
<!--T:29-->
 
 
int current_min  = 0;
 
int current_min  = 0;
  
<!--T:30-->
 
 
// MP3
 
// MP3
  
<!--T:31-->
 
 
// ***
 
// ***
  
<!--T:32-->
 
 
<nowiki>#</nowiki>include <SoftwareSerial.h>
 
<nowiki>#</nowiki>include <SoftwareSerial.h>
  
<!--T:33-->
 
 
<nowiki>#</nowiki>include <MP3Player_KT403A.h>
 
<nowiki>#</nowiki>include <MP3Player_KT403A.h>
  
<!--T:34-->
 
 
// define a SoftwareSerial class object that the name must be mp3,
 
// define a SoftwareSerial class object that the name must be mp3,
  
<!--T:35-->
 
 
// but you can change the pin number according to the actual situation.
 
// but you can change the pin number according to the actual situation.
  
<!--T:36-->
 
 
SoftwareSerial mp3(7, 3);
 
SoftwareSerial mp3(7, 3);
  
<!--T:37-->
 
 
// INITIALISATION
 
// INITIALISATION
  
<!--T:38-->
 
 
// ==============
 
// ==============
  
<!--T:39-->
 
 
void setup() {
 
void setup() {
  
<!--T:40-->
 
 
 // Ouverture de la communication avec le PC :
 
 // Ouverture de la communication avec le PC :
  
<!--T:41-->
 
 
 Serial.begin(9600); 
 
 Serial.begin(9600); 
  
<!--T:42-->
 
 
 // Démarrage de l'horloge :
 
 // Démarrage de l'horloge :
  
<!--T:43-->
 
 
 clock.begin();
 
 clock.begin();
  
<!--T:44-->
 
 
 clock.fillByYMD(2018,07,01);//Ju  30,2018
 
 clock.fillByYMD(2018,07,01);//Ju  30,2018
  
<!--T:45-->
 
 
 clock.fillByHMS(20,20,10);//15:00 00"
 
 clock.fillByHMS(20,20,10);//15:00 00"
  
<!--T:46-->
 
 
 clock.fillDayOfWeek(SAT);//Saturday
 
 clock.fillDayOfWeek(SAT);//Saturday
  
<!--T:47-->
 
 
 clock.setTime();//write time to the RTC chip
 
 clock.setTime();//write time to the RTC chip
  
<!--T:48-->
 
 
 // Réglage des paramètres du lecteur MP3 :
 
 // Réglage des paramètres du lecteur MP3 :
  
<!--T:49-->
 
 
 mp3.begin(9600);
 
 mp3.begin(9600);
  
<!--T:50-->
 
 
 SelectPlayerDevice(0x02);   // Select SD card as the player device.
 
 SelectPlayerDevice(0x02);   // Select SD card as the player device.
  
<!--T:51-->
 
 
 SetVolume(0x0E);            // Set the volume, the range is 0x00 to 0x1E [0 31]. 
 
 SetVolume(0x0E);            // Set the volume, the range is 0x00 to 0x1E [0 31]. 
  
<!--T:52-->
 
 
 // Affichage :
 
 // Affichage :
  
<!--T:53-->
 
 
 while(!Serial);
 
 while(!Serial);
  
<!--T:54-->
 
 
 Serial.println("Entrer une heure d'alarme (HH:MM)");
 
 Serial.println("Entrer une heure d'alarme (HH:MM)");
  
<!--T:55-->
 
 
 Serial.println(" ");
 
 Serial.println(" ");
  
<!--T:56-->
 
 
 delay(100);
 
 delay(100);
  
<!--T:57-->
 
 
}
 
}
  
<!--T:58-->
 
 
// BOUCLE PRINCIPALE
 
// BOUCLE PRINCIPALE
  
<!--T:59-->
 
 
// =================
 
// =================
  
<!--T:60-->
 
 
void loop(){  
 
void loop(){  
  
<!--T:61-->
 
 
  // Affichage de l'heure au format HH:MM
 
  // Affichage de l'heure au format HH:MM
  
<!--T:62-->
 
 
  // ************************************
 
  // ************************************
  
<!--T:63-->
 
 
  printTime();  
 
  printTime();  
  
<!--T:64-->
 
 
  // Lecture d'une heure de réveil :
 
  // Lecture d'une heure de réveil :
  
<!--T:65-->
 
 
  // *******************************
 
  // *******************************
  
<!--T:66-->
 
 
  while (Serial.available() > 0) {
 
  while (Serial.available() > 0) {
  
<!--T:67-->
 
 
    // cherche le prochain entier dans l'incoming serial stream :
 
    // cherche le prochain entier dans l'incoming serial stream :
  
<!--T:68-->
 
 
    buzzer_hour = Serial.parseInt();    
 
    buzzer_hour = Serial.parseInt();    
  
<!--T:69-->
 
 
    // do it again:
 
    // do it again:
  
<!--T:70-->
 
 
    buzzer_min = Serial.parseInt();    
 
    buzzer_min = Serial.parseInt();    
  
<!--T:71-->
 
 
    Serial.println(" ");
 
    Serial.println(" ");
  
<!--T:72-->
 
 
    Serial.print("Vous avez saisi l'heure d'alarme suivante: ");
 
    Serial.print("Vous avez saisi l'heure d'alarme suivante: ");
  
<!--T:73-->
 
 
    Serial.print(buzzer_hour);    
 
    Serial.print(buzzer_hour);    
  
<!--T:74-->
 
 
    if(buzzer_min < 10) {
 
    if(buzzer_min < 10) {
  
<!--T:75-->
 
 
      Serial.print(":0");
 
      Serial.print(":0");
  
<!--T:76-->
 
 
      Serial.print(buzzer_min);
 
      Serial.print(buzzer_min);
  
<!--T:77-->
 
 
    }
 
    }
  
<!--T:78-->
 
 
    else {
 
    else {
  
<!--T:79-->
 
 
      Serial.print(":");
 
      Serial.print(":");
  
<!--T:80-->
 
 
      Serial.println(buzzer_min);
 
      Serial.println(buzzer_min);
  
<!--T:81-->
 
 
    }
 
    }
  
<!--T:82-->
 
 
  }    
 
  }    
  
<!--T:83-->
 
 
  // On compare l'heure réglée de l'alarme et l'heure actuelle :
 
  // On compare l'heure réglée de l'alarme et l'heure actuelle :
  
<!--T:84-->
 
 
  // ***********************************************************
 
  // ***********************************************************
  
<!--T:85-->
 
 
  if ((buzzer_hour == current_hour) && (buzzer_min == current_min)) {
 
  if ((buzzer_hour == current_hour) && (buzzer_min == current_min)) {
  
<!--T:86-->
 
 
  //if (1) { // condition pour tester le MP3 au besoin.
 
  //if (1) { // condition pour tester le MP3 au besoin.
  
<!--T:87-->
 
 
    // Lecture :
 
    // Lecture :
  
<!--T:88-->
 
 
    Serial.println("Alarme MP3 Playing");
 
    Serial.println("Alarme MP3 Playing");
  
<!--T:89-->
 
 
    Serial.println(" ");    
 
    Serial.println(" ");    
  
<!--T:90-->
 
 
    // On lance le MP3 pendant 30 secondes et on le met en pause
 
    // On lance le MP3 pendant 30 secondes et on le met en pause
  
<!--T:91-->
 
 
    PlayResume();
 
    PlayResume();
  
<!--T:92-->
 
 
    delay(60000);
 
    delay(60000);
  
<!--T:93-->
 
 
    PlayPause();    
 
    PlayPause();    
  
<!--T:94-->
 
 
    // On nettoie l'heure du buzzer :
 
    // On nettoie l'heure du buzzer :
  
<!--T:95-->
 
 
    buzzer_hour = 0;
 
    buzzer_hour = 0;
  
<!--T:96-->
 
 
    buzzer_min  = 0;    
 
    buzzer_min  = 0;    
  
<!--T:97-->
 
 
    // On propose à nouveau d'entrer un heure d'alarme :
 
    // On propose à nouveau d'entrer un heure d'alarme :
  
<!--T:98-->
 
 
    Serial.println("Entrer une heure d'alarme (HH:MM)");
 
    Serial.println("Entrer une heure d'alarme (HH:MM)");
  
<!--T:99-->
 
 
    Serial.println(" ");
 
    Serial.println(" ");
  
<!--T:100-->
 
 
    delay(100);
 
    delay(100);
  
<!--T:101-->
 
 
  }
 
  }
  
<!--T:102-->
 
 
  delay(100);
 
  delay(100);
  
<!--T:103-->
 
 
}
 
}
  
<!--T:104-->
 
 
// ==================================================== //
 
// ==================================================== //
  
<!--T:105-->
 
 
//    FONCTIONS APPELEES DANS LA BOUCLE PRINCIPALE      //
 
//    FONCTIONS APPELEES DANS LA BOUCLE PRINCIPALE      //
  
<!--T:106-->
 
 
// ==================================================== //
 
// ==================================================== //
  
<!--T:107-->
 
 
// Fonction "printTime" : écrit l'heure sur le moniteur série
 
// Fonction "printTime" : écrit l'heure sur le moniteur série
  
<!--T:108-->
 
 
void printTime() {
 
void printTime() {
  
<!--T:109-->
 
 
 clock.getTime();
 
 clock.getTime();
  
<!--T:110-->
 
 
 Serial.println(" ");
 
 Serial.println(" ");
  
<!--T:111-->
 
 
 current_hour = clock.hour;
 
 current_hour = clock.hour;
  
<!--T:112-->
 
 
 current_min  = clock.minute;
 
 current_min  = clock.minute;
  
<!--T:113-->
 
 
 Serial.print(clock.hour, DEC);
 
 Serial.print(clock.hour, DEC);
  
<!--T:114-->
 
 
 if(clock.minute < 10) {
 
 if(clock.minute < 10) {
  
<!--T:115-->
 
 
   Serial.print(":0");
 
   Serial.print(":0");
  
<!--T:116-->
 
 
   Serial.print(clock.minute, DEC);
 
   Serial.print(clock.minute, DEC);
  
<!--T:117-->
 
 
 }
 
 }
  
<!--T:118-->
 
 
 else {
 
 else {
  
<!--T:119-->
 
 
   Serial.print(":");
 
   Serial.print(":");
  
<!--T:120-->
 
 
   Serial.print(clock.minute, DEC);
 
   Serial.print(clock.minute, DEC);
  
<!--T:121-->
 
 
 }
 
 }
  
<!--T:122-->
 
 
 Serial.println(" ");
 
 Serial.println(" ");
  
<!--T:123-->
 
 
 delay (3000);
 
 delay (3000);
  
<!--T:124-->
 
 
}</translate>
 
}</translate>
 
}}
 
}}
Line 391: Line 274:
 
|Step_Content=<translate></translate>
 
|Step_Content=<translate></translate>
 
}}
 
}}
{{ {{tntn|Tuto Step}}
+
{{ {{tntn|Notes}}
|Step_Title=<translate><!--T:125--> impression 3D</translate>
+
|Notes=<translate>Pour les libraries arduino :
|Step_Content=<translate><!--T:126-->
 
imprimante 3d ultimaker 2
 
 
 
<!--T:127-->
 
Matière utilisée : PLA
 
 
 
<!--T:128-->
 
Réglages : voir fichier config imp3D.png</translate>
 
}}
 
{{ {{tntn|Tuto Step}}
 
|Step_Title=<translate><!--T:129--> code arduino</translate>
 
|Step_Content=<translate><!--T:130-->
 
// DECLARATIONS
 
 
 
<!--T:131-->
 
// Projet Réveil mp3
 
 
 
<!--T:132-->
 
<nowiki>#</nowiki>include <Wire.h>
 
 
 
<!--T:133-->
 
// Bibliothèque de gestion de l'horloge
 
 
 
<!--T:134-->
 
// ************************************
 
 
 
<!--T:135-->
 
<nowiki>#</nowiki>include "DS1307.h"
 
 
 
<!--T:136-->
 
DS1307 clock; //define a object of DS1307 class
 
 
 
<!--T:137-->
 
// Création des variables de stockage de l'heure et de l'heure du réveil (format HH:MM) :
 
 
 
<!--T:138-->
 
// static uint8_t buzzer_hour[5] = {};
 
 
 
<!--T:139-->
 
int buzzer_hour  = 0;
 
 
 
<!--T:140-->
 
int buzzer_min   = 0;
 
 
 
<!--T:141-->
 
int current_hour = 0;
 
 
 
<!--T:142-->
 
int current_min  = 0;
 
 
 
<!--T:143-->
 
// MP3
 
 
 
<!--T:144-->
 
// ***
 
 
 
<!--T:145-->
 
<nowiki>#</nowiki>include <SoftwareSerial.h>
 
 
 
<!--T:146-->
 
<nowiki>#</nowiki>include <MP3Player_KT403A.h>
 
 
 
<!--T:147-->
 
// define a SoftwareSerial class object that the name must be mp3,
 
 
 
<!--T:148-->
 
// but you can change the pin number according to the actual situation.
 
 
 
<!--T:149-->
 
SoftwareSerial mp3(7, 3);
 
 
 
<!--T:150-->
 
// INITIALISATION
 
 
 
<!--T:151-->
 
// ==============
 
 
 
<!--T:152-->
 
void setup() {
 
 
 
<!--T:153-->
 
 // Ouverture de la communication avec le PC :
 
 
 
<!--T:154-->
 
 Serial.begin(9600); 
 
 
 
<!--T:155-->
 
 // Démarrage de l'horloge :
 
 
 
<!--T:156-->
 
 clock.begin();
 
 
 
<!--T:157-->
 
 clock.fillByYMD(2018,07,01);//Ju  30,2018
 
 
 
<!--T:158-->
 
 clock.fillByHMS(20,20,10);//15:00 00"
 
 
 
<!--T:159-->
 
 clock.fillDayOfWeek(SAT);//Saturday
 
 
 
<!--T:160-->
 
 clock.setTime();//write time to the RTC chip
 
 
 
<!--T:161-->
 
 // Réglage des paramètres du lecteur MP3 :
 
 
 
<!--T:162-->
 
 mp3.begin(9600);
 
 
 
<!--T:163-->
 
 SelectPlayerDevice(0x02);   // Select SD card as the player device.
 
 
 
<!--T:164-->
 
 SetVolume(0x0E);            // Set the volume, the range is 0x00 to 0x1E [0 31]. 
 
 
 
<!--T:165-->
 
 // Affichage :
 
 
 
<!--T:166-->
 
 while(!Serial);
 
 
 
<!--T:167-->
 
 Serial.println("Entrer une heure d'alarme (HH:MM)");
 
 
 
<!--T:168-->
 
 Serial.println(" ");
 
 
 
<!--T:169-->
 
 delay(100);
 
 
 
<!--T:170-->
 
}
 
 
 
<!--T:171-->
 
// BOUCLE PRINCIPALE
 
 
 
<!--T:172-->
 
// =================
 
 
 
<!--T:173-->
 
void loop(){  
 
 
 
<!--T:174-->
 
  // Affichage de l'heure au format HH:MM
 
 
 
<!--T:175-->
 
  // ************************************
 
 
 
<!--T:176-->
 
  printTime();  
 
 
 
<!--T:177-->
 
  // Lecture d'une heure de réveil :
 
 
 
<!--T:178-->
 
  // *******************************
 
 
 
<!--T:179-->
 
  while (Serial.available() > 0) {
 
 
 
<!--T:180-->
 
    // cherche le prochain entier dans l'incoming serial stream :
 
 
 
<!--T:181-->
 
    buzzer_hour = Serial.parseInt();    
 
 
 
<!--T:182-->
 
    // do it again:
 
 
 
<!--T:183-->
 
    buzzer_min = Serial.parseInt();    
 
 
 
<!--T:184-->
 
    Serial.println(" ");
 
 
 
<!--T:185-->
 
    Serial.print("Vous avez saisi l'heure d'alarme suivante: ");
 
 
 
<!--T:186-->
 
    Serial.print(buzzer_hour);    
 
 
 
<!--T:187-->
 
    if(buzzer_min < 10) {
 
 
 
<!--T:188-->
 
      Serial.print(":0");
 
 
 
<!--T:189-->
 
      Serial.print(buzzer_min);
 
 
 
<!--T:190-->
 
    }
 
 
 
<!--T:191-->
 
    else {
 
  
<!--T:192-->
+
http://wiki.seeedstudio.com/Grove-MP3_v2.0/
      Serial.print(":");
 
  
<!--T:193-->
+
http://wiki.seeedstudio.com/Grove-RTC/</translate>
      Serial.println(buzzer_min);
 
 
 
<!--T:194-->
 
    }
 
 
 
<!--T:195-->
 
  }    
 
 
 
<!--T:196-->
 
  // On compare l'heure réglée de l'alarme et l'heure actuelle :
 
 
 
<!--T:197-->
 
  // ***********************************************************
 
 
 
<!--T:198-->
 
  if ((buzzer_hour == current_hour) && (buzzer_min == current_min)) {
 
 
 
<!--T:199-->
 
  //if (1) { // condition pour tester le MP3 au besoin.
 
 
 
<!--T:200-->
 
    // Lecture :
 
 
 
<!--T:201-->
 
    Serial.println("Alarme MP3 Playing");
 
 
 
<!--T:202-->
 
    Serial.println(" ");    
 
 
 
<!--T:203-->
 
    // On lance le MP3 pendant 30 secondes et on le met en pause
 
 
 
<!--T:204-->
 
    PlayResume();
 
 
 
<!--T:205-->
 
    delay(60000);
 
 
 
<!--T:206-->
 
    PlayPause();    
 
 
 
<!--T:207-->
 
    // On nettoie l'heure du buzzer :
 
 
 
<!--T:208-->
 
    buzzer_hour = 0;
 
 
 
<!--T:209-->
 
    buzzer_min  = 0;    
 
 
 
<!--T:210-->
 
    // On propose à nouveau d'entrer un heure d'alarme :
 
 
 
<!--T:211-->
 
    Serial.println("Entrer une heure d'alarme (HH:MM)");
 
 
 
<!--T:212-->
 
    Serial.println(" ");
 
 
 
<!--T:213-->
 
    delay(100);
 
 
 
<!--T:214-->
 
  }
 
 
 
<!--T:215-->
 
  delay(100);
 
 
 
<!--T:216-->
 
}
 
 
 
<!--T:217-->
 
// ==================================================== //
 
 
 
<!--T:218-->
 
//    FONCTIONS APPELEES DANS LA BOUCLE PRINCIPALE      //
 
 
 
<!--T:219-->
 
// ==================================================== //
 
 
 
<!--T:220-->
 
// Fonction "printTime" : écrit l'heure sur le moniteur série
 
 
 
<!--T:221-->
 
void printTime() {
 
 
 
<!--T:222-->
 
 clock.getTime();
 
 
 
<!--T:223-->
 
 Serial.println(" ");
 
 
 
<!--T:224-->
 
 current_hour = clock.hour;
 
 
 
<!--T:225-->
 
 current_min  = clock.minute;
 
 
 
<!--T:226-->
 
 Serial.print(clock.hour, DEC);
 
 
 
<!--T:227-->
 
 if(clock.minute < 10) {
 
 
 
<!--T:228-->
 
   Serial.print(":0");
 
 
 
<!--T:229-->
 
   Serial.print(clock.minute, DEC);
 
 
 
<!--T:230-->
 
 }
 
 
 
<!--T:231-->
 
 else {
 
 
 
<!--T:232-->
 
   Serial.print(":");
 
 
 
<!--T:233-->
 
   Serial.print(clock.minute, DEC);
 
 
 
<!--T:234-->
 
 }
 
 
 
<!--T:235-->
 
 Serial.println(" ");
 
 
 
<!--T:236-->
 
 delay (3000);
 
 
 
<!--T:237-->
 
}</translate>
 
}}
 
{{ {{tntn|Tuto Step}}
 
|Step_Title=<translate></translate>
 
|Step_Content=<translate></translate>
 
}}
 
{{ {{tntn|Notes}}
 
|Notes=<translate></translate>
 
 
}}
 
}}
 
{{ {{tntn|Tuto Status}}
 
{{ {{tntn|Tuto Status}}
 
|Complete=Published
 
|Complete=Published
 
}}
 
}}

Revision as of 14:56, 2 July 2018

Author avatarCyriljak | Last edit 9/12/2019 by Clementflipo

No image yet

Boite Réveil mp3 avec arduino uno
Difficulty
Medium
Duration
10 hour(s)
Categories
Electronics, House, Music & Sound
Cost
50 EUR (€)
Other languages:
français
License : Attribution (CC BY)

Introduction

Boites en contreplaqué contenant un réveil-mp3 et un écran fonctionnant grâce à un arduino uno

Materials

Arduino uno

Grove - MP3 v2.0

Grove - RTC

Mini SD

N'importe quelle baffle mobile connectée au composant Grove - MP3 v2.0 par un mini jack

Plaque contreplaqué

Tools

découpeuse lazer

imprimante 3d ultimaker 2

Step 1 - decoupe

Step 2 - impression 3D

imprimante 3d ultimaker 2

Matière utilisée : PLA

Réglages : voir fichier config imp3D.png

Modèle : https://www.tinkercad.com/things/0svbwI2n4Ez-copy-of-megaphone/editv2

Step 3 - code arduino

// DECLARATIONS

// Projet Réveil mp3

#include <Wire.h>

// Bibliothèque de gestion de l'horloge

// ************************************

#include "DS1307.h"

DS1307 clock; //define a object of DS1307 class

// Création des variables de stockage de l'heure et de l'heure du réveil (format HH:MM) :

// static uint8_t buzzer_hour[5] = {};

int buzzer_hour  = 0;

int buzzer_min   = 0;

int current_hour = 0;

int current_min  = 0;

// MP3

// ***

#include <SoftwareSerial.h>

#include <MP3Player_KT403A.h>

// define a SoftwareSerial class object that the name must be mp3,

// but you can change the pin number according to the actual situation.

SoftwareSerial mp3(7, 3);

// INITIALISATION

// ==============

void setup() {

 // Ouverture de la communication avec le PC :

 Serial.begin(9600); 

 // Démarrage de l'horloge :

 clock.begin();

 clock.fillByYMD(2018,07,01);//Ju  30,2018

 clock.fillByHMS(20,20,10);//15:00 00"

 clock.fillDayOfWeek(SAT);//Saturday

 clock.setTime();//write time to the RTC chip

 // Réglage des paramètres du lecteur MP3 :

 mp3.begin(9600);

 SelectPlayerDevice(0x02);   // Select SD card as the player device.

 SetVolume(0x0E);            // Set the volume, the range is 0x00 to 0x1E [0 31]. 

 // Affichage :

 while(!Serial);

 Serial.println("Entrer une heure d'alarme (HH:MM)");

 Serial.println(" ");

 delay(100);

}

// BOUCLE PRINCIPALE

// =================

void loop(){  

  // Affichage de l'heure au format HH:MM

  // ************************************

  printTime();  

  // Lecture d'une heure de réveil :

  // *******************************

  while (Serial.available() > 0) {

    // cherche le prochain entier dans l'incoming serial stream :

    buzzer_hour = Serial.parseInt();    

    // do it again:

    buzzer_min = Serial.parseInt();    

    Serial.println(" ");

    Serial.print("Vous avez saisi l'heure d'alarme suivante: ");

    Serial.print(buzzer_hour);    

    if(buzzer_min < 10) {

      Serial.print(":0");

      Serial.print(buzzer_min);

    }

    else {

      Serial.print(":");

      Serial.println(buzzer_min);

    }

  }    

  // On compare l'heure réglée de l'alarme et l'heure actuelle :

  // ***********************************************************

  if ((buzzer_hour == current_hour) && (buzzer_min == current_min)) {

  //if (1) { // condition pour tester le MP3 au besoin.

    // Lecture :

    Serial.println("Alarme MP3 Playing");

    Serial.println(" ");    

    // On lance le MP3 pendant 30 secondes et on le met en pause

    PlayResume();

    delay(60000);

    PlayPause();    

    // On nettoie l'heure du buzzer :

    buzzer_hour = 0;

    buzzer_min  = 0;    

    // On propose à nouveau d'entrer un heure d'alarme :

    Serial.println("Entrer une heure d'alarme (HH:MM)");

    Serial.println(" ");

    delay(100);

  }

  delay(100);

}

// ==================================================== //

//    FONCTIONS APPELEES DANS LA BOUCLE PRINCIPALE      //

// ==================================================== //

// Fonction "printTime" : écrit l'heure sur le moniteur série

void printTime() {

 clock.getTime();

 Serial.println(" ");

 current_hour = clock.hour;

 current_min  = clock.minute;

 Serial.print(clock.hour, DEC);

 if(clock.minute < 10) {

   Serial.print(":0");

   Serial.print(clock.minute, DEC);

 }

 else {

   Serial.print(":");

   Serial.print(clock.minute, DEC);

 }

 Serial.println(" ");

 delay (3000);

}

Step 4 -

Notes and references

Pour les libraries arduino :

http://wiki.seeedstudio.com/Grove-MP3_v2.0/

http://wiki.seeedstudio.com/Grove-RTC/

Comments

Published