Universite Libre Des Pays de Grands Lacs (Ulpgl)
Universite Libre Des Pays de Grands Lacs (Ulpgl)
Universite Libre Des Pays de Grands Lacs (Ulpgl)
(ULPGL)
EPIGRAPHE
DEDICACE
Que ce travail constitue pour vous une source de fierté, de confiance et surtout
un fruit de bonheur.
DANIELLA MUGHOLE
iii
REMERCIEMENTS
En premier lieu, nous rendons gloire à Dieu, Maitre de temps et des circonstances, pour
ses innombrables, inestimables et immérités dons et bienfaits en notre faveur.
Notre gratitude particulière à Ir Patrick VINGI, pour ses orientations, ses connaissances
et sa disponibilité inconditionnelle qui nous ont été d’une grande aide pour la
concrétisation effective de notre idée.
A nos amis et camarades d’auditoire : Elie LUBAMBA, Alvin BAUMA, Pascal KOKO,
Grevisse KALUMENDO, Jonas MALUMA, Rosette LUKONGE, Irène MASENGU et
Marie-Reine BAHARANYI pour leurs encouragements et leur soutien durant toute la
période passée ensemble à l’université.
Que ceux qui, de près ou de loin, nous ont apporté leur soutien, tant moral que matériel,
trouvent ici l’expression de notre profonde gratitude.
DANIELLA MUGHOLE
iv
RESUME
Ainsi, pour mieux cerner l’essentiel de cette étude, nous l’avons axé sur trois grandes parties :
dès les premiers contacts, nous avons présenté les généralités sur les automatismes et la
plateforme Arduino ; ensuite nous avons présenté la description des différentes fonctionnalités
du système proposé à travers la conception et la modélisation en utilisant les méthodes SART
et DARTS. En dernier lieu nous avons réalisé le prototype du système ici proposé.
Mots clés : distributeur de boisson, Arduino, module RFID, capteur à ultrason, capteur de
niveau d’eau, UML, SART, DARTS, mini pompe à air.
vii
ABSTRACT
The human being in his search for comfort and privacy seeks to eliminate tedious operations in
his daily life; the automation resulting from this process is fascinating. In order to meet the
appointment of advances in technology, we developed an automated drink/beverage dispensing
system built around Arduino Platform with its supplied range of sensors and actuators among
which we used RFID module, ultrasonic sensor, water level sensor, pump, …
Thus, to catch the essential of this study, we focused on three main parts: first, we presented
the general information on automation and Arduino platform; then we presented a description
of various features of the proposed system through the design and modelling, using SART and
DARTS methods. Finally, we implemented the prototype of the proposed system.
Key words: beverage distributor, Arduino, RFID module, ultrasonic sensor, water level sensor,
UML, SART, DART, mini air pump
viii
SIGLES ET ABREVIATIONS
INTRODUCTION GENERALE
La technologie de l’information et de la communication devient de plus en plus indispensable
et incontournable dans la vie de l’homme, pour un développement durable, et s’impose dans
plusieurs domaines d’activités.
Actuellement, le monde connaît une avancée technologique considérable dans plusieurs
secteurs et cela grâce à l’informatique et l’électronique diffuse ou ubiquitous computing
(ubiquitous hardware) en anglais. Ils comprennent des systèmes faits d’électronique plus ou
moins complexe et d’informatique plus évoluée.
C’est dans cette optique que s’inscrit notre projet de recherche intitulé : « Conception et
réalisation d’un système de distribution automatique de boissons ». Le cœur du système sera
conçu sur base de la plateforme Arduino, des technologies RFID, des pompes et des capteurs.
Une interface web, liée à une base de données permettra de configurer et de gérer les données
des utilisateurs.
1. Problématique
La demande des distributeurs automatiques est en constante évolution, surtout dans des lieux
tels que les centres commerciaux, les aéroports, les entreprises, les hôpitaux, les universités, les
écoles, etc.
Il suffit de travailler dans un bureau ou d’être dans des lieux très fréquentés pour comprendre
tout ce qu’un simple distributeur automatique peut signifier pour les êtres humains. Nos
journées sont de plus en plus remplies, les pauses deviennent plus fondamentales, non
seulement parce que ce sont des véritables moments de convivialité au cours desquels les
personnes travaillant dans une même société ou dans un même établissement se retrouvent,
mais de plus, elles permettent de restaurer notre énergie. Il est à noter que durant chaque journée
-2-
de travail, les employés quittent leurs lieux de travail pendant plusieurs minutes pour prendre
une boisson rafraichissante ou une tasse de boisson chaude. Les chefs d’entreprises disent
souvent : « le temps, c’est de l’argent ». Le temps que peut prendre un employé pour qu’il soit
servi, s’il s’est rendu dans une cafétéria, ou qu’il puisse préparer son thé ou son café, est non
négligeable pour l’entreprise.
Dans notre région, en particulier dans la ville de Goma, il est souvent difficile de trouver une
boutique, un magasin ou une cafétéria qui fonctionne 24h/24 ou 7j/7. L’indisponibilité
contingente du service peut être due par diverses raisons (jour férié, grève, congé, …) et cela
peut être pénalisant pour les clients. Par exemple, les cantines dans les universités ne
fonctionnent pas le Samedi, alors que les étudiants ont cours et auront peut-être besoin de
s’acheter une petite collation à la pause.
Dans ce travail, nous nous intéressons à la conception et réalisation d'un système de distribution
automatique de boisson. Pour mieux cerner cet énoncé, nous essayerons de trouver des réponses
aux questions suivantes :
2. Hypothèses
Étant donné que les hypothèses sont des réponses anticipées aux questions spécifiques d'une
recherche, il sied d'évoquer les hypothèses ci-dessous, considérant que celle relative à la
question principale est que le distributeur automatique influencerait de manière considérable la
vie de l’utilisateur dans le sens qu'elle lui ferait gagner en temps et lui permettrait d’augmenter
ainsi sa productivité :
L’utilisation des cartes RFID, permettrait de sécuriser le distributeur ainsi que les
données des utilisateurs tout en garantissant la rapidité de traitements des données.
Le recours à la plateforme Arduino nous permettrait d’optimiser notre système compte
tenu des fonctionnalités matérielles et logicielles qu’elle offre.
3. Objectif
Le présent travail se fixe comme objectif de répondre à la fois à un besoin de performance et
de rapidité (boissons prêtes à la consommation) ainsi qu’à un besoin de confort et de qualité
(choix de la boisson). Au regard des progrès réalisés dans le domaine des systèmes automatisés,
notre étude a pour but d’apporter, par notre conception et modélisation, une opinion optimiste
-3-
Méthodes
Techniques
Technique documentaire : qui consiste en une fouille systématique de tout ce qui est
écrit ayant une liaison avec notre domaine de recherche.
Technique d’observation : afin d’acquérir, par nos propres sens, des informations
pertinentes sur la façon dont notre sujet d’étude est perçu dans le milieu dans lequel
nous évoluons.
Technique expérimentale : pour appliquer et tester, sur une maquette, les résultats de
notre conception.
-4-
6. Délimitation du sujet
De par l’énoncé même du sujet, il nous est paru difficile, dans le cadre d’un travail de mémoire
et surtout dans les délais impartis, de traiter de tous les aspects de l’automatique. La présente
recherche ayant pour centre d'intérêt la mise en place d'un système de distribution automatique
de boissons, nous marquons nos frontières dans le contexte de la ville de Goma. La mise en
œuvre du présent travail couvre la période allant du mois de Mars 2018 au mois d’Octobre
2018. Notre but n'est pas de développer une application comparable aux systèmes de
distribution de boissons complexes existants mais avant tout de réaliser le prototype du système
pour en tirer le meilleur profit.
7. Subdivision du travail
Hormis l’introduction générale et la conclusion générale, notre travail comprend 3 principaux
chapitres organisés de la manière suivante :
Dans le présent chapitre, nous présentons brièvement les notions sur les automatismes, et en
particulier les distributeurs automatiques ainsi que d’autres concepts qui leur sont directement
associés.
I.2. Automatismes
Techniquement, un automatisme est un sous-ensemble ou un organe de machines destiné à
remplacer de façon automatisée une action ou une décision habituelle et prédéfinie, en général
simple et répétitive, où l'être humain intervient.
L'automatique est la discipline qui étudie mathématiquement et techniquement les méthodes de
conception ou d'utilisation des automatismes. [2]
- Une Partie Commande (P.C.) : c’est le cerveau du système qui pilote les actionneurs de la
partie opérative, et qui reçoit des informations venant des capteurs et de l’opérateur (consignes).
- Une Partie Opérative (P.O.) : c’est la partie du système qui exécute les ordres venant de la
partie commande grâce aux actionneurs. Elle recueille aussi des informations sur les états du
système grâce aux capteurs.
Définitions
partie commande. Par exemple, les photorésistances, les détecteurs de présence, les
capteurs de température, ...
Un actionneur : est un organe de la partie opérative capable de traduire le signal
électrique reçu de la partie commande en une action physique (mouvement, chaleur,
son, lumière etc.). Par exemple le servomoteur, le radiateur, une ampoule, …
Entre la partie commande et l’homme (l’opérateur) se trouve la partie dialogue qui permet à ce
dernier de transmettre des informations au moyen des dispositifs adaptés (boutons poussoirs,
commutateurs, etc.). Il s’établit un dialogue d’exploitation.
Les interfaces d’entrée qui transforment les informations issues des capteurs placés sur
la partie opérative ou dans la partie dialogue en informations de nature et d’amplitude
compatible avec les caractéristiques technologiques du système.
Les interfaces de sortie qui transforment les informations élaborées par l’unité de
traitement en informations de nature et d’amplitude compatibles avec les
caractéristiques technologiques des préactionneurs d’une part, des visualisations et des
avertisseurs d’autre part.
Les préactionneurs qui sont directement dépendants des actionneurs, sont nécessaires à
leur fonctionnement.
L’unité de traitement qui élabore les ordres destinés aux actionneurs en fonction des
informations reçues des différents capteurs et du fonctionnement à réaliser.
b. Analyse de la partie opérative :
Certaines tâches restent donc manuelles et l’automatisation devra ainsi prendre en compte la
spécificité du travail humain, c'est-à-dire en particulier :
Il est fondé sur les notions d’étapes, de transitions et de réceptivités qui simplifient la synthèse
d’un automatisme en tenant compte du fait que, parmi le grand nombre d’informations présentes
à un instant donné, peu sont significatives.
Le GRAFCET décrit les interactions entre la partie commande et la partie opérative à partir de
la frontière d’isolement. Il établit une relation entre :
Les banques ont aussi développé des automates permettant de retirer de l’argent avec une carte
bancaire, c’est le distributeur automatique des billets.
Le marché de la distribution automatique est très vaste et varié, qu’il s’agisse d’une simple
fontaine à eau, d’un distributeur de boisson froides ou chaudes, le choix est tellement grands
- 11 -
qu’il peut répondre à plusieurs besoins. C’est pourquoi ces types de distributeur sont adaptés à
beaucoup d’endroits : les lieux publics comme les gares, les aéroports, les écoles, les hôpitaux,
les centres commerciaux, les halls sportifs, … et les entreprises privées ou publics, quel que
soit le secteur d’activité et la taille.
I.3.1. Historique
On raconte que le premier distributeur automatique remonterait à 215 avant Jésus-Christ et
aurait été inventé par un mathématicien grec, Heron, pour vendre de l’eau dans les temples,
fonctionnant à l’aide d’une pièce de quatre drachmes… [7]
Les égyptiens auraient inventé un distributeur automatique pour vendre des balles de coton
imbibées de vin… Dès le début du XVIIème siècle, avec la généralisation de l’usage du tabac,
les Anglais fabriquèrent des machines en distribuant dans les auberges et les tavernes, une dose
de tabac à fumer et à priser, pour un demi-penny. Ensuite, nombreuses ont été les personnes à
souhaiter commercialiser leurs produits sous la forme de la distribution automatique. Ce fut le
- 12 -
cas vers 1820, du libraire Richard Carlile, qui inventa un distributeur automatique de livres afin
de vendre des ouvrages subversifs ; de Siméon Denham, pour distribuer des timbres contre une
pièce d’un penny. Puis, ce fut l’Allemand Carl Ade qui inventa des machines à vendre des
mouchoirs, des cigarettes et des confiseries.
En 1887, en Angleterre, fut lancée la « Sweet Meat Automatic Delivery by », première société
de gestion de distributeurs automatiques de confiserie. L’année suivante, des distributeurs de
chocolats à croquer et de confiseries se développèrent en France dans toutes les gares. C’est en
1891, que l’on vit des bars automatiques fleurirent en France, pour la vente de vin de Malaga,
de bière et durant l’Exposition Universelle, des distributeurs automatiques de boissons chaudes
et fraîches furent présentés. [8]
La mise à disposition des produits avec des mécanismes en spire ou avec des pompes.
Elle est aujourd'hui également renforcée par des solutions d'ascenseur qui viennent
collecter le produit libéré par les spires et le restituer en douceur au consommateur.
Il offre une très large variété de boissons fraiches, selon le modèle et le ravitaillement : l’eau
minérale, des jus de fruits, des boissons énergisantes… Les boissons sont sous forme de
canettes, de bouteilles en plastiques. Ce distributeur nécessite une prise électrique pour la
réfrigération et de l’espace pour permettre un ravitaillement.
Il met jusqu’à 4 types de boissons chaudes à disposition des consommateurs : le café, le thé, le
chocolat chaud, la soupe … qui peuvent être déclinés en grande variété (café au lait, café noir,
la soupe à la tomate …). Ce distributeur nécessite une prise électrique et une arrivée d’eau.
c. Fontaine à eau
Il existe deux types de fontaines à eau : la fontaine en bonbonnes et la fontaine sur réseau. Elles
peuvent fournir de l’eau fraiche, de l’eau tempérée, et pour certains modèles, de l’eau pétillante.
La fontaine à eau doit être raccordée à une prise électrique pour la réfrigération. Seules les
fontaines sur réseau nécessitent une arrivée d’eau.
a. Monnayeur
C’est le système le plus courant dans les lieux publics. Il consiste à accepter les pièces de
monnaies et parfois les billets. Ces pièces sont introduites par l’utilisateur dans un interstice
prévu à cet effet. Dès que les pièces sont acceptées par la machine, l’utilisateur reçoit le produit
souhaité.
Il existe 2 types de monnayeur : le monnayeur qui rend la monnaie et le monnayeur qui ne rend
pas la monnaie.
C’est le système de paiement qui consiste à créditer une somme d’argent sur une carte ou une
clé. Lorsqu’un utilisateur utilise le distributeur, le montant du produit choisi est débité de la
somme contenue sur sa carte.
Il existe différents types de systèmes prépayés : les cartes magnétiques ou à puce, les clés
prépayées, les systèmes électroniques par codes numériques, … Grace aux cartes prépayées,
les utilisateurs n’ont plus besoin d’avoir constamment de la monnaie sur eux.
La sécurité d’un distributeur de boissons est très importante. En effet, tout comme les autres
produits de consommation, ces distributeurs ne sont pas à l’abri des tentatives de vol ou de
dégradation. Même si les lieux publics présentent des risques beaucoup plus élevés, les
distributeurs de boissons au sein des entreprises ne sont pas épargnés. Tout d’abord, ils sont
généralement massifs et peuvent atteindre plus de 400kg, de cette manière, il est quasiment
impossible pour les utilisateurs de l’emporter. Ensuite, les parois du distributeur sont renforcées
pour limiter les dégradations en les composant d’une cage qui sert de barrière de protection, de
cette manière, les vandales ne peuvent atteindre les zones plus fragile de l’appareil (monnayeur,
vitre, …).
- 15 -
I.4. Arduino
La plateforme « Arduino » est l’œuvre d’une équipe de développeurs italiens passionnés
d’électronique et d’informatique qui ont eu l’ingénieuse idée d’allier, sur une carte électronique,
les performances de la programmation à celle de l’électronique. [10]
Il existe dans le commerce, une multitude de plateformes qui permettent de faire la même chose,
notamment les microcontrôleurs « PIC » du fabricant Microchip mais Arduino a su tirer son
épingle du jeu grâce à sa politique basée sur :
La liberté : logiciel gratuit et Open source, les schémas du matériel circulent librement
sur Internet.
Le prix : en vue des performances qu’elles offrent, les cartes Arduino sont relativement
peu couteuses.
La compatibilité : le logiciel et les matériels sont compatibles avec différentes
plateformes comme Windows, Linux, Mac.
La communauté Arduino est impressionnante et le nombre de ressources à son sujet est
en constante évolution sur internet. De plus, on trouve les références du langage
Arduino ainsi qu’une page complète de tutoriels sur le site www.arduino.cc
I.4.1. Historique
Arduino est un projet créé en 2005 par une équipe de développeurs, composée de 6 individus :
Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, David Melis et Nicholas
Zambetti, en Italie. Cette équipe a créé le " système Arduino", qui est un outil qui va permettre
aux débutants, amateurs ou professionnels de créer des systèmes électroniques plus ou moins
complexes. Le projet a débuté avec 3000 euros pour la production de 200 cartes dont seulement
50 furent achetées par l’IDII mais très vite, la petite carte est devenue le couteau suisse de
nombreux artistes, passionnés, étudiants et tous ceux qui rêvaient d’un tel gadget. [11]
Le succès d’Arduino fut tel que partant des 200 premières cartes vendues en 2005, 30000 cartes
ont été fabriquées partout sur la planète en 2007 et plus de 220000 en 2010. Massimo BANZI
indique, dans une interview accordée au magazine SHY ROBOTICS en 2015, que plus de 1,5
- 16 -
millions de cartes officielles, sans comptés ses copies chinoises, ont déjà été vendu. Il souligne
aussi que ce succès ira crescendo vu que Arduino est en train de s’implanter plus solidement
dans les milieux scolaires et éducatifs.
A ce jour, 17 versions des cartes Arduino fabriquées par les sociétés Smart Projects et SparkFun
Electronics s’écoulent comme de petits pains sur le marché. Notons aussi la présence de
nombreux articles (capteurs, shield, etc.) qui sont directement rattachés aux cartes Arduino.
Présentons brièvement les grandes parties d’une des cartes Arduino. [10]
La visualisation (en 4) : sont en fait des LED qui servent à tester le matériel (quand on
branche la carte au PC, elle clignote quelques secondes) et à visualiser l’activité sur la
voie série (une pour l’émission et l’autre pour la réception). Le téléchargement du
programme dans le microcontrôleur se faisant par cette voie, on peut les voir clignoter
lors du chargement.
La connectique (en 5a et 5b) : Pour connecter à la carte des composants qui peuvent
être utilisés par un programme. Par exemple, une LED, un servomoteur, des capteurs,
des Shields, etc.
- Les dites « officielles » qui sont fabriquées en Italie par le fabricant officiel : Smart
Projects.
- Les dites « compatibles » qui ne sont pas fabriqués par Smart Projects, mais qui sont
totalement compatibles avec les Arduino officielles.
- Les « autres » fabriquées par diverses entreprises et commercialisées sous un nom
différent (Freeduino, Seeduino, Femtoduino, ...)
c. Shields
Les Shield Arduino sont d’autres cartes que l’on branche sans soudure aux cartes Arduino ou à
d'autres Shield Arduino pour augmenter leur capacité ou pour rajouter d’autres fonctionnalités.
Les Shields Arduino conservent ainsi l’esprit original de Arduino, qui est de demeurer facile à
produire et à utiliser. Les Shields Arduino sont très nombreux et diversifiés. Dans la liste nous
- 18 -
retrouvons des Shields GPS, des Shields écran dont l’un est présentés sur la figure I.5, des
Shields GPRS/GSM, des Shields caméra, etc.
Si Arduino était un corps, les actionneurs seraient ses mains. En effet, ce sont eux qui sont
chargés d’agir sur l’environnement en exécutant les actions tel que prescrites par la carte. Citons
à titre d’exemple : les LED, les afficheurs, les servomoteurs, électropompes, etc.
La syntaxe d'un langage de programmation est l'ensemble des règles d'écritures liées à ce
langage. Celle du langage Arduino repose sur trois piliers que sont :
La structure : Nous retrouvons dans cette rubrique les deux méthodes citées
précédemment (setup et loop), les structures de contrôle, les opérateurs arithmétiques,
booléens, bit à bit, d’accès pointeurs, de comparaison et des opérateurs composés.
Les variables et les constantes : Nous avons ici les constantes, les types de données, la
conversion, la portée des variables et d’autres utilitaires.
Les fonctions : nombreuses et variées entre autres citons Digital I/O, Analog I/O, Time,
math, trigonométrie, etc.
b. Logiciel Arduino
Ces étapes peuvent être plus ou moins formelles selon les méthodes employées. A chaque étape,
il est primordial de vérifier la cohérence de la description ou de la traduction réalisée à partir
de l’étape précédente, cela concerne la validation.
Ces différentes étapes sont aussi utilisées dans le cycle de développement des applications de
contrôle-commande. Il existe de nombreuses méthodes appliquées au développement logiciel
des applications de contrôle-commande de procédé qui couvrent une ou plusieurs étapes du
cycle de développement selon les niveaux de raffinement où elles sont utilisées.
- 23 -
Le système sera constitué d’un kit électronique, en interaction avec une base de données
contenant les informations sur les clients, qui est composé :
- D’un lecteur RFID, qui permet de lire la carte présentée par le client afin de lui accorder
ou non l’accès aux options du distributeur
- D’un clavier, qui permet au client de saisir le mot de passe et de choisir la boisson
- Des LEDs, pour les effets lumineux : une led verte pour indiquer une bonne action du
client et une led rouge pour indiquer une mauvaise action ou une alerte
- D’un buzzer, pour un effet sonore
- D’un écran LCD, pour afficher les options au client
- D’un capteur ultrason, pour détecter la présence d’un verre
- D’un capteur de niveau d’eau, pour indiquer le niveau de la boisson dans le réservoir
- Des mini pompes et d’autres composants (les résistances, le potentiomètre, …)
SA-RT est une méthode d’analyse fonctionnelle et opérationnelle des applications de contrôle-
commande. Cette méthode permet de réaliser une description graphique et textuelle de
l’application en termes de besoins, c’est-à-dire de « ce que l’on a à faire » ou le « quoi ». En
revanche, elle ne permet pas d’effectuer une vérification de propriétés de l’application à partir
des seules descriptions SA-RT. [13]
sortie. Le Processus est représenté par un cercle avec une étiquette ou label explicite
formé de :
Aspect événementiel (piloté par les événements) : c’est la représentation des événements
qui conditionnent l’évolution d’un système et la spécification de la logique de contrôle qui
produit des actions et des événements en fonction d’événements en entrée et fait changer le
système d’état. On y trouve les éléments graphiques suivants :
- Le Processus de contrôle : représente la logique du pilotage des processus fonctionnels.
Il génère l’ensemble des événements qui vont activer ou désactiver les processus
fonctionnels. En retour, les processus fonctionnels fournissent au processus de contrôle
tous les événements nécessaires aux prises de décision. Le processus de contrôle ne peut
pas gérer les données. Le Processus de contrôle est représenté par un cercle en pointillé
avec une étiquette ou label explicite formé de :
Les événements, fournis par le processus de contrôle, sont généralement liés à l’activation ou à
la désactivation des processus fonctionnels. Le Flot de Contrôle transporte les événements ou
informations qui conditionnent directement ou indirectement l’exécution des processus de
transformations de données. Ces événements spécifiques ont été formalisés et prédéfinis :
– E pour Enable(activation) ;
– D pour Disable(désactivation) ;
- 26 -
– T pour Trigger(déclenchement).
Les deux premiers événements sont utilisés ensemble « E/D » pour piloter un processus
fonctionnel de type « boucle sans fin » ou périodique, c’est-à-dire que le processus de contrôle
doit lancer l’exécution de ce processus avec l’événement « E » et ensuite peut l’arrêter avec
l’événement « D ». L’événement « T » est utilisé pour activer un processus fonctionnel de type
début-fin, c’est-à-dire que le processus de contrôle doit lancer l’exécution de ce processus avec
l’événement « T » et ensuite le processus s’arrête à la fin de son exécution sans intervention du
processus de contrôle.
Aspect informationnel (données) : c’est la spécification des données sur les flots ou dans
les stockages.
Le diagramme de contexte de notre système est représenté sur la figure II.2, il intègre sept
bords de modèle correspondant aux quatre entrées : lecteur RFID, clavier, capteur à ultrasons,
capteur de niveau d’eau et aux trois sorties : écran, mini pompe, module d’alerte. Le diagramme
de contexte est enrichi d’un flot de contrôle qui émane d’un nouveau bord de modèle « Prise
électrique » qui fournit un flot de contrôle « Mise_en_marche » au processus fonctionnel 0. Le
processus fonctionnel initial 0 « Distribuer boisson » constitue l’application à réaliser. En plus
de l’événement « Mise_en_marche », nous avons sept flots de données : quatre entrants
(Carte_lue, Donnee_saisie, Mesure_distance, Niveau_eau) et trois sortants (Affichage,
Action_pompe, Alerte). L’ensemble de ces flots doit se retrouver dans le diagramme
préliminaire qui est le premier niveau d’analyse du processus fonctionnel 0.
- 27 -
2. Diagramme préliminaire
Le diagramme préliminaire est la première décomposition du processus fonctionnel 0 à réaliser,
présenté dans le diagramme de contexte. À ce niveau, le diagramme représente la liste
graphique des processus fonctionnels nécessaires à l’application sans tenir compte de
l’enchaînement (séquence d’exécution).
Le diagramme préliminaire, présenté sur la figure II.3, donne une analyse ou décomposition
fonctionnelle du processus fonctionnel initial 0 « Distribuer boisson ». Cette analyse fait
apparaître huit processus fonctionnels de base : Acquérir données carte, Analyser données
carte, Acquérir données clavier, Acquérir état capteur à ultrasons, Acquérir niveau eau,
Commander pompe, Alerter état système, Afficher état système, et un processus de contrôle
« Contrôler distributeur » permettant de séquencer l’ensemble. Nous pouvons vérifier la
- 28 -
cohérence des flots de données ou d’événements entrants ou sortants par rapport au diagramme
de contexte sur la figure II.2.
Le processus 3 (Acquérir donnees clavier) concerne les données (mot de passe, choix de la
boisson, …) que l’utilisateur tape sur le clavier.
- 29 -
Le processus 6 (Commander pompe) concernent le contrôle de l’action des pompes qui est
déclenchée lorsque la présence d’un verre est détectée.
Le processus 7 (Alerter état système) concerne les alertes (effets sonores, lumineux, …) liées à
l’état du système.
3. Diagramme d’état-transition
La compréhension du diagramme de flots de données, tracé à un certain niveau d’analyse,
nécessite une description ou spécification du processus de contrôle. Cette spécification,
représentant l’aspect comportemental ou temps réel de l’application, peut être faite de diverses
manières : diagramme état-transition, table état transition, matrice état-transition ou
éventuellement un GRAFCET.
La représentation la plus courante est le diagramme état-transition, qui décrit le fonctionnement
du processus de contrôle et explique le comportement du système. Il est composé de quatre
éléments :
- État courant : correspondant à un fonctionnement précis du système, en particulier à
un état des processus fonctionnels (exécution ou non) ;
- Événement : occurrence d’un événement émanant d’un processus fonctionnel vers
le processus de contrôle qui va provoquer le franchissement de la transition et donc
faire changer l’état du système ;
- 30 -
- Entraine :
Faire
Analyser données carte
Si Donnees_carte > 0 ET Consignes_donnees_carte > 0
Alors Emettre Donnees_correctes ou Donnees_incorretes vers
processus de contrôle 9 (Contrôler distributeur)
Fin Si
Fin Faire
Si Mesure_distance >0
Alors Emettre Verre_detecte vers processus de contrôle 9 (Contrôler
distributeur)
Fin Si
Fin Faire
Processus fonctionnel 5 : Acquérir niveau eau
- E/données : Niveau_eau, Consignes_niveau_eau
- E/évènements : E/D
- S/données : aucune
- S/évènements : Niveau_correct, Niveau_bas
- Nécessite : Niveau_eau = 0, Consignes_donnees_carte = 0
- Entraine :
Faire
Acquérir niveau eau
Si Niveau_eau > 0 ET Consignes_niveau_eau> 0
Alors Emettre Niveau_correct ou Niveau_bas vers processus de contrôle 9
(Contrôler distributeur)
Fin Si
Fin Faire
- E/évènements : E/D
- S/données : Alerte
- S/évènements : aucun
- Nécessite : aucune
- Entraine :
Faire
Alerter état système
Fin Faire
Processus fonctionnel 8 : Afficher état système
- E/données : aucune
- E/évènements : E/D
- S/données : Affichage
- S/évènements : aucun
- Nécessite : aucune
- Entraine :
Faire
Afficher état système
Fin Faire
- D’autre part, les relations entre les processus fonctionnels des diagrammes flots de
données sont décrites de manière très abstraite (zone mémoire, passage de données)
sans se préoccuper de leurs implémentations possibles avec ou sans synchronisation.
II.5.1. Introduction
La méthode DARTS (Design Approach for Real-Time Systems) trouve naturellement sa place
entre la méthode d’analyse SA-RT et une implémentation avec un langage de programmation
de haut niveau exécuté dans un environnement de type noyau temps réel, ou avec un langage
multitâche ou un langage flots de données. La méthode de conception DARTS est une méthode
de type flots de données. Ainsi, les diagrammes flots de données de la méthode SA-RT
(diagrammes préliminaires ou diagrammes de décomposition) sont traduits en diagramme flots
de données DARTS représentant l’architecture multitâche de l’application. [13]
Les tâches
Ce sont les paramètres ou données en entrées ou en sorties et le type d’activation. Il existe deux
grandes catégories de tâches : les tâches matérielles et les tâches logicielles. Les tâches sont
modélisées par un parallélogramme qui comporte une étiquette ou label explicite formé de :
Les tâches matérielles ou tâches immédiates sont associées à des évènements matériels externes
au programme. On trouve en particulier toutes les taches d’acquisitions de type régulier. Ces
tâches sont déclenchées par des signaux externes. On distingue trois type de signaux :
Signal « Horloge temps réel – HTR ». C’est un signal, qui provient d’une horloge
matérielle interne à l’ordinateur, et correspond à un signal rigoureusement périodique.
Signal « Interruption – IT ». C’est un signal qui provient du procédé externe. Il doit
toujours être considéré comme apériodique du fait de l’asynchronisme du monde
extérieur par rapport au cadencement de l’ordinateur.
Signal « Chien de garde – CG ». Ce signal provient d’une horloge interne utilisée
comme un réveil. En termes de signal, il est identique à l’horloge temps réel (signal
interne) ; mais il se produit de façon apériodique.
- 37 -
Les activations sont donc représentées par un symbole orienté (ligne brisée) avec une étiquette
ou label explicite formé de :
Les tâches logicielles sont celles dont l’activation est demandée par une autre tâche ou tâche
appelante qui peut être de type matériel ou logiciel, avec les mécanismes de synchronisation ou
de communication de type bloquant. Ainsi, le signal d’activation de ces tâches peut être l’action
des éléments suivants :
– boîtes aux lettres à écrasement ou non gérées selon une file FIFO ou FIFO à priorité ;
Le point le plus complexe est la traduction des différentes relations entre les tâches. En effet,
cette relation traduit un lien de dépendance entre les tâches, c’est-à-dire qu’une ou plusieurs
tâches ne commencent leur exécution uniquement que lorsqu’une autre tâche s’est exécutée en
partie ou en totalité. Cette synchronisation ou communication peut être unilatérale ou
asynchrone (seule la tâche en attente est bloquée), ou bilatérale ou synchrone (les deux tâches
ont un rendez-vous). Les synchronisations sont donc représentées par un symbole orienté avec
une étiquette ou label explicite formé de :
Le module de données permet une protection des accès à une unité de gestion de données en
exclusion mutuelle par deux ou plusieurs tâches. Les modules de données sont représentés par
un rectangle associé à des entrées permettant de réaliser une action sur les données : LIRE,
ÉCRIRE, etc. Ce symbole du module de données est représenté avec une étiquette ou label
explicite formé de :
Figure II.7: Représentation d’un module de données partagé par plusieurs tâches.
– Phase 1 : Création des tâches. Cela correspond à la traduction des processus fonctionnels ou
de contrôle en tâches.
– Phase 2 : Détermination du typage et de l’activation des tâches. Les tâches sont déclarées
matérielles ou logicielles. Dans le cas des tâches matérielles, le signal d’activation doit être
défini précisément (HTR, IT, CG). Pour les autres tâches logicielles, il est nécessaire
d’identifier les synchronisations permettant de les activer. Celles-ci sont souvent déjà déclarées
comme des événements traités par le processus de contrôle.
– Phase 3 : Mise en place des synchronisations et des transferts de données. Les relations par
communications sont traduites par des boîtes aux lettres ou par des modules de données.
Phase 1 : La première phase consiste à créer des tâches. Ainsi, nous allons créer neuf tâches :
une tâche correspondant au processus de contrôle et huit tâches correspondant aux huit
processus fonctionnels du diagramme préliminaire représenté sur la figure II.3. Nous obtenons
un diagramme multitâche DARTS comportant neuf tâches ayant les mêmes noms que les
processus fonctionnels SA-RT du diagramme préliminaire et comporte de plus pour chacune
des tâches les entrées/sorties des processus fonctionnels correspondant, avec des noms
identiques.
Phase 2 : La deuxième phase concerne la détermination du type des tâches et de leur activation.
Les tâches d’acquisition « Acquérir données carte », « Acquérir données clavier » et « Acquérir
état capteur à ultrasons » sont des tâches matérielles déclenchées respectivement par les
interruptions « lecture carte », « touche appuyée » et « présence verre ». La tâche d’acquisition
« Acquérir niveau eau » est une tâche matérielle déclenchée par l’horloge temps réel avec une
période de 1000 ms. Les cinq autres tâches sont des tâches logicielles.
Phase 3 : C’est la mise en place des communications entre les tâches. Nous avons une
traduction du flot de données direct entre les deux processus fonctionnels « Acquérir données
carte » et « Analyser données carte » par une synchronisation unique Donnees_carte. Pour
effectuer la vérification des données reçues, la tâche « Analyser données carte » puise les
informations dans le modules des données « Consigne_donnes_carte » et les évènements
donnees_correctes, donnees_incorrectes sont traduits par une synchronisation
Evt_donnees_verifiees. Nous pouvons identifier sur le diagramme préliminaire les évènements
Fins_saisie, Verre_detecte qui sont traduits, dans le diagramme DARTS, par les
synchronisations Evt_fin_saisie, Evt_verre_detecte, et les évènements Niveau_correct et
Niveau_bas du processus fonctionnel « Acquérir niveau eau » ont été remplacés par le module
de données « Niveau_eau_mesure » qui sauvegarde la comparaison par rapport aux consignes
de niveau et aussi le niveau mesuré. Les tâches « Commander pompe », « Alerter état système »
et « Afficher état système » sont activées respectivement par les synchronisations
Evt_commande_pompe, Evt_commande_alerte et Evt_commande_affichage.
Phase 4 : Cette phase consiste au regroupement des taches et relations du diagramme DARTS
obtenu après les trois premières phases.
- 40 -
UML est un langage de représentation destiné en particulier à la modélisation objet (utilisé plus
pour la programmation orientée objet). UML est devenu une norme OMG en 1997 (OMG-
Object Management Group est un organisme à but non lucratif créé en 1989 à l'initiative de
sociétés comme HP, Sun, Philips, etc..) [14]. UML permet de rester indépendant d’un langage
de programmation donné. A l'aide de ce langage nous pouvons créer un diagramme de classes
qui se base autour de 3 concepts principaux : les classes, les associations et les attributs. Une
classe est un type abstrait caractérisé par des propriétés (attributs et méthodes) communes à un
ensemble d'objets et permettant de créer des instances de ces objets, ayant ces propriétés.
La modélisation sous forme de diagramme de classes est une modélisation statique, qui met en
exergue la structure d'un modèle, mais ne rend pas compte de son évolution temporelle. UML
propose d'autres types de diagrammes : diagramme des cas d’utilisation, diagramme d’activité,
diagramme d’état, … [15]
Notre système aura à conserver un nombre important de données sur les utilisateurs, et sur les
paramètres de fonctionnement du système dans une base de données. Sa structure interne est
présentée par le modèle logique présenté sur la figure II.10.
La conception réalisée dans le chapitre précédent nous permet de passer à l’étape suivante qui
est la programmation ou la mise en œuvre effective du système de distribution automatique de
boisson. Dans ce chapitre nous ferons donc le point sur les éléments matériels qui vont
intervenir dans la confection dudit système.
Le diagramme présenté sur la figure III.1 représente la communication, l’interaction qui existe
entre le client et le système.
La carte Arduino Mega 2560 est basée sur un ATMega2560 cadencé à 16 MHz. Elle dispose
de 54 E/S dont 14 PWM, 16 analogiques et 4 UARTs. Elle est idéale pour des applications
exigeant des caractéristiques plus complètes que la carte Uno. Des connecteurs situés sur les
bords extérieurs du circuit imprimé permettent d'enficher une série de modules
complémentaires. [17]
Caractéristiques principales :
Version : Rev. 3
Microcontrôleur : ATMega2560
Tension de fonctionnement : 5 V
Tensions d’alimentation via port USB : 5 V
Tensions d’alimentation externe (recommandées) sur connecteur alim : 7-12 V
Tensions d’alimentation externe (limites) : 6 et 20V
- 47 -
Le RFID (Radio Frequency Identification) est un terme commun utilisé pour décrire un module
employé pour le transfert de données à l’aide des ondes radio sur des courtes distances
(typiquement <15.24cm). [1]
- Traçage du personnel
- Gestion des chaines d’approvisionnement
- Réalisation de badges d’identification
- Cartes de payement, d’étudiants, d’identité, passeports
- Etc.
Dans notre système, nous utilisons ce module pour permettre l’authentification des utilisateurs
en vue de leur donner ou non accès aux options du distributeur.
Le lecteur RFID possède 8 broches que nous avons branchées comme suit :
Ce clavier est composé de 16 boutons poussoirs sous forme d’une matrice 4x4. Il a 8 fils de
connections [1]:
Nous avons utilisé un clavier Arduino 4x4 pour permettre à l’utilisateur de saisir le mot de passe
et de faire le choix de la boisson, une fois sa carte vérifiée et acceptée. Ce mot de passe est
comparé à celui conservé dans la base des données.
LCD signifie "Liquid Crystal Display" ou " Écran à Cristaux Liquides " en français. C’est un
petit écran qui permet d’afficher certains caractères. Il existe plusieurs types d’écran LCD. Dans
notre système, nous avons utilisé un écran LCD de 16 colonnes et 2 lignes. Il permettra
d’afficher les résultats de certaines actions de l’utilisateur afin d’interagir avec le système. Cet
écran comprend 16 broches décrites comme suit [12] :
N° Nom Rôle
1 VSS Masse
2 Vdd 5V
- 50 -
3 V0 Réglage du contraste
4 RS Sélection du registre(commande ou donnée)
5 R/W Lecture ou écriture
6 E Entrée de validation
7 à 14 D0 à D7 Bits de données
15 A Anode du rétroéclairage
16 K Cathode du rétroéclairage
Une mini pompe est un instrument de petite dimension qui permet de créer le vide (baisse de
pression) dans un récipient [18]. Ces mini pompes, nous ont permis de pomper la boisson
choisie par l’utilisateur.
f. Capteur ultrason
Un capteur d’ultrason est un senseur qui peut mesurer la distance par rapport à un solide ou un
objet physique. Ce module contient un émetteur d’ondes ultrasoniques. Un récepteur de ces
ondes et un circuit de control. Ce capteur permet à notre système de détecter la présence d’un
verre ou d’un gobelet qui conditionne la distribution de la boisson.
C’est un transducteur électronique intégré. Il est beaucoup utilisé dans les ordinateurs,
imprimantes, copieuses, alarmes, jouets électroniques, … pour fournir une signalisation ou une
alerte sonore et peut être contrôlé par programme. Le buzzer émet un son avec différentes
tonalites selon les actions de l’utilisateur.
Caractéristiques [19]:
Le Shield Wifi permet à un Arduino d’établir une communication sans fil en utilisant un module
Wireless. Il est basé sur les modules Xbee. Le module sait communiquer sur une distance de
30m en extérieur et jusqu’à une distance de 90m en intérieur [20]. Ce Shield nous a permis de
connecter notre carte Arduino à notre réseau local afin qu’elle puisse communiquer avec notre
application web et lui transférer des informations telles que l’ID de la carte, le montant, ...
l. Fils de pontage
Ce sont des fils que nous utilisons pour réaliser les connexions de différents composants lors
de la réalisation du prototype de notre système. On en trouve généralement à des couleurs
différentes.
Notre système intègre une application qui permet à l’administrateur d’avoir, des informations
sur l’état du distributeur et d’effectuer certaines opérations comme : l’enregistrement des
abonnés, recharger leurs comptes, regarder l’historique des consommations …
Page d’accueil
La figure III.16 représente la page d’accueil qui est la première page qui se lance lorsque l’on
accède à l’application. Elle permet à l’administrateur d’accéder à son compte à partir de son
login et de son mot de passe.
- 55 -
Page de l’historique
Cette page donne la liste des consommations en indiquant le nom de l’abonné, la date, le nom
de la boisson commandée ainsi que son prix.
Page d’enregistrement
CONCLUSION GENERALE
Au terme de ce travail, rédigé dans le cadre de la fin de nos études, intitulé « Conception et
Réalisation d’un système de distribution automatique de boissons », nous avons implémenté
un système que nous avons nommé FastSoda, qui effectue une distribution automatique des
boissons selon le choix de l’utilisateur. Il est conçu sur base des technologies RFID, autour de
la plateforme Open Source Arduino. Une application Web est l'interface permettant de faire
l’enregistrement, la configuration et la gestion du système.
Le système proposé dans ce travail, n'étant pas un système de distribution automatique assurant
toutes les fonctionnalités possibles qu'offrent ces genres de plateformes, nous avons néanmoins
proposé, un prototype pouvant permettre d'enregistrer les abonnés, de gérer leurs comptes, et
de servir la boisson.
Pour arriver à cette fin nous avons commencé par une phase d’analyse, en fixant dans un cahier
des charges, certaines fonctionnalités que devrait nécessairement implémenter notre système,
et une phase de conception et de modélisation du système dans laquelle les méthodes SART,
DARTS et le langage UML ont été utilisés. Nous avons ensuite fait le choix des technologies à
utiliser et notre attention s’est tournée vers la plateforme Arduino comme socle matériel de
notre système à cause de sa gamme bien fournie en capteurs et actionneurs.
Enfin nous sommes passés par une étape d’implémentation de l’application Web qui tient lieu
d’interface de configuration, en donnant les détails sur les composants utilisés ainsi que le coût
estimatif du prototype.
Le prototype ici proposé n'étant pas en soi un système fini, nous restons ouverts à toute
observation, critique et suggestion susceptibles de faire avancer, d'éclairer et de stimuler
davantage notre approche et la créativité dans l'ingénierie système.
N’ayant aucunement la prétention d’avoir épuisé, toute la matière gravitant autour de ce sujet
ou d’avoir fait une œuvre idéale, il est évident que ce type de travail peut être élargi dans les
jours à venir. Les passionnés de ce domaine pourront améliorer ce système en y apportant autant
des fonctionnalités que possible pour le rendre plus attrayant et confortable et encore plus
répondant aux normes de standardisation. Toutefois, nous proposons aux chercheurs, qui auront
à cœur de continuer sur notre lancée de prendre en compte un module de notification de l’état
du système, une gestion de la température, un système de reconnaissance de forme, etc.
- 61 -
BIBLIOGRAPHIE
a. Références
[1] O. BARAKA, Cours des systèmes embarqués, ULPGL Goma: Inédit, 2017.
[3] B. JRAD, Systèmes automatisés, Institut Supérieur de Etudes Technologiques de Djerba: Inédit,
2012.
[12] Eskimon et Olyte, Arduino: premier pas en informatique embarquée, Paris: Zeste de savoir,
2015.
b. Liens
[7] «Distributeur automatique de boisson, une longue histoire,» [En ligne]. Available:
https://www.distributeur-de-boisson.fr. [Accès le 15 Juin 2018].
[8] «La distribution automatique, une histoire qui remonte à loin…,» [En ligne]. Available:
http://influence-ce.fr. [Accès le 13 Juillet 2018].
- 62 -
[16] Fritzing, «fritzing electronics made easy,» Fritzing, [En ligne]. Available:
http://fritzing.org/home/. [Accès le 21 Septembre 2018].
[17] Solution e-commerce Arobase, «Arduino Mega 2560,» [En ligne]. Available:
https://www.gotronic.fr. [Accès le 26 Septembre 2018].
ANNEXES
I. Image du système réalisé
void lireCarte() {
lcd.clear();
lcd.print("Scanner");
lcd.setCursor(0, 1);
lcd.print("votre carte,SVP!");
- 64 -
if ( ! moduleRfid.PICC_IsNewCardPresent()) {
return;
if ( ! moduleRfid.PICC_ReadCardSerial()) {
return;
UID.concat(String(moduleRfid.uid.uidByte[i], HEX));
UID.toUpperCase();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Accces autorise....");
lcd.setCursor(0, 1);
lcd.print("Bonjour Raph");
delay(125);
delay(3000);
lcd.clear();
lcd.setCursor(0, 0);
//test du code
do {
int compte;
if (touche != NO_KEY) {
lcd.setCursor(5, 1);
lcd.print("*");
presscounter ++;
pr += touche;
if (presscounter == 4) {
msg = "";
msg += pr;
pr = "";
delay(10);
digitalWrite(ledRouge, HIGH);
lcd.clear();
lcd.print("Code incorrect");
lcd.setCursor(0, 1);
lcd.print("Recommencez!!!");
presscounter = 0;
delay(3000);
digitalWrite(ledRouge, LOW);
lcd.clear();
lcd.setCursor(0, 0);
//test du code
do {
int compte;
if (touche != NO_KEY) {
lcd.setCursor(5, 1);
lcd.print("*");
presscounter ++;
- 67 -
pr += touche;
if (presscounter == 4) {
msg = "";
msg += pr;
pr = "";
delay(10);
if (msg == secret) {
digitalWrite(ledVerte, HIGH);
presscounter = 0;
delay(125);
lcd.clear();
lcd.setCursor(0, 0);
delay(1500);
digitalWrite(ledVerte, LOW);
//choix de la boisson
lcd.clear();
lcd.setCursor(0, 0);
- 68 -
lcd.print("Choisissez votre");
lcd.setCursor(0, 1);
lcd.print("boisson :");
delay(4000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("A:Orange");
lcd.setCursor(9, 0);
lcd.print("B:Coca");
lcd.setCursor(0, 1);
lcd.print("C:Citron");
lcd.setCursor(9, 1);
lcd.print("D:Eau");
char bouton;
do {
bouton = clavier.getKey();
if (bouton != NO_KEY) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Boisson : ");
lcd.print(bouton);
if (bouton != 'A' && bouton != 'B' && bouton != 'C' && bouton != 'D') {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Choix incorrect");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("A:Orange");
lcd.setCursor(9, 0);
lcd.print("B:Coca");
lcd.setCursor(0, 1);
lcd.print("C:Citron");
lcd.setCursor(9, 1);
lcd.print("D:Eau");
} while (bouton != 'A' && bouton != 'B' && bouton != 'C' && bouton != 'D');
switch (bouton) {
case 'A':
- 70 -
digitalWrite(ledJaune, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Boisson:Orange");
lcd.setCursor(1, 1);
lcd.print("Prix:300Fc");
delay(3000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.setCursor(1, 1);
lcd.print("valider");
char cle;
do {
cle = clavier.getKey();
if (cle != NO_KEY) {
digitalWrite(ledJaune, LOW);
if (cle != 'A') {
lcd.clear();
lcd.setCursor(0, 0);
lcd.setCursor(1, 1);
lcd.print("valider");
delay(1500);
- 71 -
do {
digitalWrite(trigPin, HIGH);
digitalWrite(trigPin, LOW);
lcd.clear();
lcd.print("......................");
Serial.print(distance);
Serial.println(" cm");
delay(1000);
digitalWrite(ledVerte, HIGH);
delay(2000);
digitalWrite(ledVerte, LOW);
state = !state;
digitalWrite(relais, state);
Serial.println(state);
digitalWrite(ledJaune, HIGH);
lcd.clear();
lcd.print("Servir Orange");
delay(10000);
state = !state;
digitalWrite(ledJaune, LOW);
lcd.clear();
delay(2000);
lcd.setCursor(5, 0);
lcd.print("MERCI!!");
lcd.setCursor(4, 1);
lcd.print("bye bye");
delay(2000);
break;
case 'B':
digitalWrite(ledJaune, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
- 73 -
lcd.print("Boisson:Coca");
lcd.setCursor(1, 1);
lcd.print("Prix:500Fc");
delay(3000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.setCursor(1, 1);
lcd.print("valider");
char key;
do {
key = clavier.getKey();
if (key != NO_KEY) {
digitalWrite(ledJaune, LOW);
if (key != 'B') {
lcd.clear();
lcd.setCursor(0, 0);
lcd.setCursor(1, 1);
lcd.print("valider");
delay(1500);
}
- 74 -
do {
digitalWrite(trigPin, HIGH);
digitalWrite(trigPin, LOW);
lcd.clear();
lcd.print("......................");
Serial.print(distances);
Serial.println(" cm");
delay(1000);
digitalWrite(ledVerte, HIGH);
delay(2000);
digitalWrite(ledVerte, LOW);
state = !state;
digitalWrite(relais, state);
- 75 -
Serial.println(state);
digitalWrite(ledJaune, HIGH);
lcd.clear();
lcd.print("Servir Coca");
digitalWrite(ledBleu, HIGH);
delay(10000);
state = !state;
digitalWrite(relais, state);
digitalWrite(ledJaune, LOW);
lcd.clear();
delay(2000);
lcd.setCursor(5, 0);
lcd.print("MERCI!!");
lcd.setCursor(4, 1);
lcd.print("bye bye");
delay(2000);
break;
case 'C':
digitalWrite(ledJaune, HIGH);
delay(3000);
digitalWrite(ledJaune, LOW);
break;
case 'D':
- 76 -
digitalWrite(ledJaune, HIGH);
delay(3000);
digitalWrite(ledJaune, LOW);
break;
default:
digitalWrite(ledJaune, HIGH);
delay(3000);
digitalWrite(ledJaune, LOW);
break;
else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Accces refuse");
digitalWrite(ledRouge, HIGH);
delay(3000);
digitalWrite(ledRouge, LOW);
lcd.clear();
}
- 77 -
EPIGRAPHE ........................................................................................................................................... i
DEDICACE .............................................................................................................................................ii
REMERCIEMENTS ...............................................................................................................................iii
LISTE DES FIGURES.......................................................................................................................... iv
LISTE DES TABLEAUX ......................................................................................................................v
RESUME ................................................................................................................................................ vi
ABSTRACT .......................................................................................................................................... vii
SIGLES ET ABREVIATIONS .......................................................................................................... viii
INTRODUCTION GENERALE...................................................................................................... - 1 -
1. Problématique........................................................................................................................ - 1 -
2. Hypothèses ............................................................................................................................. - 2 -
3. Objectif ................................................................................................................................... - 2 -
4. Choix et intérêt du sujet ........................................................................................................ - 3 -
5. Méthodologie et technique de recherche ............................................................................. - 3 -
6. Délimitation du sujet ............................................................................................................. - 4 -
7. Subdivision du travail ........................................................................................................... - 4 -
CHAP I : NOTIONS THEORIQUES DE BASE............................................................................ - 5 -
I.1. Introduction............................................................................................................................. - 5 -
I.2. Automatismes .......................................................................................................................... - 5 -
I.2.1. Objectifs de l’automatisation .......................................................................................... - 5 -
I.2.2. Structure d’un système automatisé ................................................................................ - 6 -
I.2.3. Conduite et surveillance d’un système automatisé ....................................................... - 8 -
I.2.4. Exemples d’automatismes ............................................................................................... - 8 -
I.2.5. Représentation des automatismes .................................................................................. - 8 -
I.3. Distributeur automatique..................................................................................................... - 10 -
I.3.1. Historique ....................................................................................................................... - 11 -
I.3.2. Techniques d’automatisation ........................................................................................ - 12 -
I.3.3. Types de distributeurs de boissons ............................................................................... - 13 -
I.3.4. Système de paiement ...................................................................................................... - 13 -
I.3.5. Durée de vie et Sécurité ................................................................................................. - 14 -
I.4. Arduino .................................................................................................................................. - 15 -
I.4.1. Historique ...................................................................................................................... - 15 -
I.4.2. Matériel Arduino .......................................................................................................... - 16 -
- 78 -