Objectif du projet
L’objectif de ce projet est de réaliser un distributeur de monnaie intelligent basé sur la carte Arduino Uno.
Ce système permet à l’utilisateur de sélectionner un montant de pièces à distribuer en utilisant deux boutons poussoirs. Le montant choisi est affiché sur un écran LCD I2C, puis un servomoteur active un mécanisme mécanique qui libère automatiquement le nombre correspondant de pièces.
Ce projet permet d’apprendre plusieurs notions importantes en électronique et en robotique :
- la gestion des boutons poussoirs (entrées numériques),
- le contrôle d’un servomoteur,
- l’utilisation d’un afficheur LCD I2C,
- la programmation d’un système automatisé.
Fonctionnement du système
Le fonctionnement du distributeur de monnaie se déroule en plusieurs étapes :
1- Sélection du montant
L’utilisateur appuie sur le premier bouton poussoir pour augmenter le montant à distribuer (par exemple 1000 millimes à chaque pression).
2- Affichage du montant
Le montant sélectionné est affiché en temps réel sur l’écran LCD I2C, ce qui permet à l’utilisateur de vérifier la valeur choisie.
3- Activation du distributeur
Lorsque le montant désiré est sélectionné, l’utilisateur appuie sur le deuxième bouton poussoir pour lancer la distribution.
4- Distribution des pièces
La carte Arduino Uno envoie un signal au servomoteur, qui fait tourner le mécanisme mécanique afin de libérer une pièce à chaque mouvement.
Le servomoteur répète ce mouvement autant de fois que nécessaire pour distribuer le nombre de pièces correspondant au montant choisi.
En conclusion, le système distribue automatiquement la quantité correcte de pièces et affiche les informations sur l’écran LCD, ce qui rend le dispositif simple, intelligent et interactif.
1- Carte Arduino UNO

La carte Arduino UNO est le cerveau du système. Elle coordonne donc toutes les opérations du distributeur de monnaie.
Elle exécute le programme qui permet de :
- lire l’état des boutons poussoirs,
- contrôler le servomoteur,
- envoyer les informations vers l’écran LCD I2C.
2- Boutons poussoirs (2 pièces)

Les boutons poussoirs sont utilisés pour interagir avec le système.
Premier bouton : permet d’augmenter le montant à distribuer (par exemple 1000 millimes à chaque pression).
Deuxième bouton : permet de lancer la distribution des pièces.
Ils fonctionnent comme des interrupteurs momentanés envoyant un signal numérique à l’Arduino.
3- Résistantes de 10 kΩ (deux pièces)

Les résistances de 10 kΩ sont utilisées avec les deux boutons poussoirs pour stabiliser le signal envoyé aux entrées numériques de la carte.
4. Servomoteur

Le servomoteur est un moteur contrôlé avec précision en angle.
Dans ce projet il sert à actionner le mécanisme mécanique du distributeur et pousser ou libérer une pièce de monnaie à chaque rotation.
Le servomoteur reçoit les commandes directement de la carte Arduino Uno.
5. Afficheur LCD I2C

L’afficheur LCD I2C est utilisé pour afficher les informations du système. Il est utilisé pour afficher le montant sélectionné.
6. Mécanisme mécanique du distributeur

Le mécanisme mécanique est la partie physique qui contient les pièces de monnaie.
Il comprend généralement :
un réservoir pour stocker les pièces,
un guide pour les pièces,
un élément mobile poussé par le servomoteur qui libère une pièce à la fois.
7. Câbles de Connexion (Jumper Wires)

Les fils de connexion permettent de relier les différents composants entre eux.
8. Breadboard (Plaque d'essai) :

Une breadboard est utile pour créer un circuit temporaire et connecter facilement les composants entre eux.
9. Module d'alimentation :

Ce module se connecte généralement à une plaque d’essai (breadboard) et permet d’alimenter différents composants électroniques tels que les microcontrôleurs, capteurs, afficheurs LCD, modules RFID ou servomoteurs. Il reçoit l’alimentation à partir d’une source externe (adaptateur, batterie ou port USB) et régule la tension pour fournir du 5V ou du 3.3V selon les besoins du circuit.
10. Batterie de 9V

La batterie de 9V sert de source d’énergie pour le module d’alimentation. Elle fournit une tension de 9 volts qui est ensuite régulée par le module afin d’obtenir des tensions plus adaptées aux circuits électroniques, généralement 5V ou 3,3V.


1- Connexion du bouton 1 à la carte Arduino
| Bouton 1 | Carte Arduino |
|---|---|
| Patte | Pin D2 |
| Résistante de 10 kΩ | entre D2 et GND |
| Autre patte | 3V du module d'alimentation |
2- Connexion du bouton 2 à la carte Arduino
| Bouton 2 | Carte Arduino |
|---|---|
| Patte | Pin D3 |
| Résistante de 10 kΩ | entre D3 et GND |
| Autre patte | GND |
3- Connexion du servomoteur à la carte Arduino
| Servomoteur | Carte Arduino |
|---|---|
| Fil rouge | 5V du module d'alimentation |
| Fil marron | GND |
| Fil jaune | Pin 4 |
4- Connexion de l’afficheur LCD I2C à la carte Arduino
| Afficheur LCD I2C | Carte Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
Ce programme permet de contrôler un distributeur de pièces automatisé basé sur la carte Arduino UNO, utilisant :
- deux boutons poussoirs pour ajouter du crédit ou lancer la distribution.
- un servomoteur pour actionner le mécanisme de poussée des pièces.
- Un écran LCD I2C pour afficher le montant actuel ou les messages pour l’utilisateur.
Le programme suit une logique simple : ajouter du crédit → afficher le montant → distribuer les pièces → remettre le compteur à zéro.
On commence par l’importation de cette bibliothèques:
LiquidCrystal_I2C → pour afficher les informations sur l’écran LCD I2C
Voici le code qui implémente le fonctionnement du système :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
#include <LiquidCrystal_I2C.h> // Bibliothèque pour contrôler l'écran LCD I2C #include <Servo.h> // Bibliothèque pour contrôler le servomoteur // Création de l'objet LCD : adresse I2C 0x27, écran 20 colonnes x 4 lignes LiquidCrystal_I2C lcd(0x27, 20, 4); // Déclaration des broches des deux boutons poussoirs const int button1Pin = 2; // Bouton pour augmenter le montant const int button2Pin = 3; // Bouton pour lancer la distribution // Création de l'objet servomoteur Servo servo_motor; // Variables pour stocker l'état des boutons int button1State = 0; int button2State = 0; // Variable pour stocker le montant à distribuer int montant; void setup() { // Configuration des broches des boutons en entrée pinMode(button1Pin, INPUT); pinMode(button2Pin, INPUT); // Connexion du servomoteur à la broche 4 servo_motor.attach(4); // Initialisation du montant à 0 montant = 0; // Initialisation de l'écran LCD lcd.init(); lcd.backlight(); // Activation du rétroéclairage de l'écran lcd.clear(); // Effacer le contenu de l'écran // Affichage du message de démarrage lcd.setCursor(0, 0); lcd.print("Arduino ATM"); // Titre du projet lcd.setCursor(0, 1); lcd.print("Montant a retirer"); // Message indiquant le montant à retirer lcd.setCursor(0, 2); lcd.print("0"); // Affichage du montant initial } void loop() { // Lecture de l'état des deux boutons button1State = digitalRead(button1Pin); button2State = digitalRead(button2Pin); // Si le bouton 1 est appuyé if (button1State == HIGH) { // Augmenter le montant de 1000 (ex : 1000 millimes) montant = montant + 1000; // Afficher le nouveau montant sur l'écran LCD lcd.setCursor(0, 2); lcd.print(montant); } // Si le bouton 2 est appuyé if (button2State == HIGH) { // Boucle pour distribuer les pièces selon le montant choisi for (int i = 1; i <= (montant / 1000); i++) { // Rotation du servomoteur pour pousser une pièce servo_motor.write(150); delay(500); // Retour du servomoteur à la position initiale servo_motor.write(0); delay(500); } // Réinitialisation du montant après la distribution montant = 0; // Mise à jour de l'affichage lcd.setCursor(0, 2); lcd.print(montant); } // Petite pause pour éviter plusieurs lectures rapides du bouton delay(500); } |
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
Site robotique réalisé par Mohamed Ali Haj Salah - Prof Info