MainQuiPointeDroite.png Bonne année 2025 ! Meilleursvoeux.gif

ENIB 2025 : BoiteATemps

De Les Fabriques du Ponant
Aller à : navigation, rechercher

Titre de la fiche expérience :

Description (résumé)

Membres de l'équipe : PICHON Maxime | SEVIK Kenji | MESSAGER Nolan | DE PLUVIÉ Charles

BoiteATemps photo de groupe.jpg BoiteATemps completee.jpg

Introduction

Ce projet c'est déroulé dans le cadre du Hackaton "Hack The Bot" durant lequel nous avons été donné un kit de préparation pour un petit robot et nous devions le retravailler pour un autre objectif.

Nous avons reçus au début de ce projet un kit pour construire la "Boxson", une boîte qui fait un bruit aléatoire tiré d'une carte SD lorsque l'on appuie sur le bouton.

Notre idée de projet est donc de créer un minuteur à partir du kit fourni et de matériaux supplémentaires.

outil et matériel

recto de l'enceinte
verso de l'enceinte
bouton poussoir utilisé

Outils nécessaires :

- Pistolet à colle
- Fer à souder (si besoin pour l'interrupteur et l'enceinte)
- Cutter (de quoi couper du carton)
- Scotch

Matériel nécessaire :

- 1 bouton poussoir
- 1 carte Arduino Nano (ATmega328P)
- 2 potentiomètres (entre 10 kOhm et 100 kOhm)
- 1 MP3-TF-18P
- 1 enceinte
- 1 Batterie 5V
- 1 bread board
- Du carton
- Câbles M-M
- Câbles F-M
- Câbles F-F
- Affichage 7 segments 4 chiffres (TM1637)

fichiers à joindre

Mettre du code Arduino

Il est nécessaire de télécharger les bibliothèques suivantes :

"DFRobotDFPlayerMini.h"

"TM1637Display.h"

 1  
 2 ////////////////////////
 3 //   BOITE A TEMPS    //
 4 ////////////////////////
 5 //La boîte à temps est un minuteur qui peut jouer des sons personnalisés
 6 #include "Arduino.h"
 7 #include "SoftwareSerial.h"
 8 #include "DFRobotDFPlayerMini.h"  // bibliothèque pour jouer les sons
 9 #include "TM1637Display.h"        // bibliothèque pour l'affichage 7 segments
10 
11 SoftwareSerial mySoftwareSerial(11, 10);  // RX, TX
12 DFRobotDFPlayerMini myDFPlayer;
13 
14 #define CLK 5           // Broche CLK du 4-Digit Display
15 #define DIO 6           // Broche DIO du 4-Digit Display
16 int brocheBouton = 3;   // le GPIO 0 du D1 Mini est la broche D3
17 unsigned long time = 0;          // temps (en millis) auquel il faut jouer un son
18 bool counting = false;  // vrai si le compte à rebours est activé
19 int iteration = 0;      // nombre de sonneries après la sonnerie principale
20 unsigned long seconde = 0;
21 unsigned long minute = 0;
22 
23 TM1637Display display = TM1637Display(CLK, DIO);
24 
25 void setup() {
26   mySoftwareSerial.begin(9600);
27   Serial.begin(9600);  // initialise la connexion serie vers le PC a 115200 bauds
28 
29   Serial.println();
30   Serial.println(F("Boite a  sons"));
31   Serial.println(F("Initialisation du lecteur mp3 ... (peut prendre 3 a 5 secondes)"));
32 
33   if (!myDFPlayer.begin(mySoftwareSerial)) {  // utilise softwareSerial pour communiquer avec le MP3-TF-16P.
34     Serial.println(F("Incapable de demarrer:"));
35     Serial.println(F("1. Verifiez les connexions!"));
36     Serial.println(F("2. Inserez la carte SD!"));
37     while (true)
38       ;
39   }
40   Serial.println(F("La Boite a sons est prete !"));
41 
42   myDFPlayer.setTimeOut(500);  // place la communication serie time out 500ms
43   myDFPlayer.volume(20);       // regle le volume (de 0 a 30).
44 
45   pinMode(brocheBouton, INPUT_PULLUP);  // active la resistance de pull-up interne
46 
47   display.setBrightness(5);
48 }
49 
50 void loop() {
51   if (counting == false) {
52     seconde = map(analogRead(A0), 0, 1024, 0, 6) * 10;
53     minute = map(analogRead(A1), 0, 1024, 0, 6);
54     if (digitalRead(brocheBouton) == LOW)  // lance le minuteur lorqu'on appuie sur le bouton
55     {
56       counting = true;
57       time = seconde * 1000 + minute * 60000 + millis();
58     }
59     display.showNumberDecEx(minute, 0b11100000, true, 2, 0);   // affiche les minutes sélectionnées
60     display.showNumberDecEx(seconde, 0b11100000, true, 2, 2);  // affiche les secondes sélectionnées
61     delay(100);
62   }
63 
64   else {
65     if (millis() >= time) {
66       if (iteration == 0) {
67         myDFPlayer.volume(20);
68         display.showNumberDecEx(0, 0b11100000, true, 2, 0);  //affiche les minutes à 0
69         display.showNumberDecEx(0, 0b11100000, true, 2, 2);  //affiche les secondes à 0
70         myDFPlayer.play(1);                                  // Joue le son principal quand le minuteur atteint 0
71         iteration += 1;
72 
73       } else if ((millis() - time) / 1000 >= iteration * 10) {
74         myDFPlayer.play(2);  //Joue le son secondaire toute les 10 secondes après le son principal
75         if (10 + iteration * 2 < 30) {
76           myDFPlayer.volume(10 + iteration * 2);  //Augmente l'intensité du son
77         } else {
78           myDFPlayer.volume(30);
79         }
80         iteration += 1;
81       }
82       if (digitalRead(brocheBouton) == LOW)  // Arrête l'alarme lorqu'on appuie sur le bouton
83       {
84         counting = false;
85         iteration = 0;
86         delay(1000);  // empêche de lancer un autre minuteur juste après en avoir terminé un
87       }
88     } else {
89       display.showNumberDecEx(((time - millis()) / 1000) / 60, 0b11100000, true, 2, 0);  //affiche les minutes restantes
90       display.showNumberDecEx(((time - millis()) / 1000) % 60, 0b11100000, true, 2, 2);  //affiche les secondes restantes
91     }
92   }
93 }

Étapes de fabrication

Étape 0 (si nécessaire)

Faire toutes les soudures nécessaires :

BoiteATemps soudure enceinte.jpg BoiteATemps soudure interrupteur.jpg

Étape 1

Branchez trois câbles sur chacun des deux potentiomètres tels que sur l'image suivante (les câbles rouges seront plus tard reliés à l'alimentation 5V et les câbles marrons à la masse 0V).

Le câble jaune au milieu sert à détecter la rotation du potentiomètre et sera branché directement sur la carte arduino Nano

BoiteATemps potentiometre branche.jpg

Étape 2

Suivre ce schéma de câblage :

BoiteATemps cablage.jpg

Étape 3

Créer une boîte en carton afin de tenir tous les composants en place.

BoiteATemps armature carton.jpg

Étape 4

Fixer sur la boite tous les composants externes et sécuriser leurs connexions électroniques avec de la colle à chaud :

/!\ ATTENTION : Faire attention à ce que le système soit hors tension lorsque vous sécurisez avec la colle à chaud /!\

BoiteATemps interrupteur outside.jpg BoiteATemps interrupteur inside.jpg BoiteATemps potentiometres outside.jpg BoiteATemps potentiometres inside.jpg BoiteATemps enceinte outside.jpg BoiteATemps enceinte inside.jpg BoiteATemps 4digit 7segment display outside.jpg BoiteATemps 4digit 7segment display inside.jpg

Troubleshooting

Aucun problème rencontré avec la version actuelle pour le moment.

Sources et documentation complémentaire

Datasheet arduino Nano : https://docs.arduino.cc/resources/datasheets/A000005-datasheet.pdf

Datasheet afficheur 4 chiffres à sept segments : https://www.puntoflotante.net/DATASHEET-TM1637.pdf

Elément de présentation

Canva pour la présentation : https://www.canva.com/design/DAGc1RgfxGA/oSSAWffk7EsCj1ej6mQAhg/edit?utm_content=DAGc1RgfxGA&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton

ne pas modifier sous cette ligne