Département de Physique
LST-IETEL
A ma chère mère,
Qui n’ont jamais cessé, de me soutenir et de m’épauler pour que je puisse atteindre mes
objectifs et d’être tout le temps à la hauteur.
A mon frère pour ses soutiens et à ma petite sœur qui sait toujours comment procurer
la joie pour toute la famille.
A toute ma famille,
2
Remerciement
Avant tout développement de mon projet de fin d’étude.
Je rends mes profondes gratitudes à Dieu tout puissant qui nous a aidé à réaliser ce
modeste travail.
J’exprime mes profondes gratitudes à mes parents pour leurs encouragements, leurs
soutiens et pour les sacrifices qu’ils ont enduré.
Je remercie, Mon encadrant Mr. SALHI ABDERRAHIM pour les efforts qu’il déployé
pour nous aider, conseiller, corriger et encourager.
Je remercie aussi tout le corps enseignant dans la filière I.E.TEL qui ont donné une grande
formation durant cette année scolaire.
Que tous ceux qui ont contribué de près ou de loin à la réalisation de ce travail, trouvent
ici mon sincère reconnaissance.
3
Table des matières
Dédicace.................................................................................................................................2
Remerciement ........................................................................................................................3
GENERALITES ................................................................................................................... 14
4
I.3.5. Thermostat intelligent à base d’une Carte Arduino ................................................ 18
II.4.4. Fonctions de gestion des Entrés et des Sorties numériques et Analogiques. ..........28
5
II.5. Simulation en Proteus ................................................................................................ 30
II.8. Conclusion................................................................................................................. 37
6
III.5.4. Quatrième fonction : L’écriture. ......................................................................... 44
7
IV.5.3. Organigramme OuvrirDirectionBD .................................................................... 53
Annexe ................................................................................................................................. 59
BIBLIOGRAPHIE ............................................................................................................... 63
Webographie ........................................................................................................................ 63
8
Liste des figures
Figure 1 : les différentes interfaces de l’ordinateur. ............................................................... 14
9
Figure 20 : Fenêtre principale d’ISIS. ................................................................................... 30
10
Figure 41 : Test n°1. .............................................................................................................45
11
Liste des tableaux
Tableau 1 : Type de systèmes et leurs fonctions .................................................................... 17
12
Introduction générale
Généralement, quand on parle de périphériques permettant à un ordinateur de
communiquer avec le mode extérieur, on pense tout de suite à un clavier, un écran, une souris,
une imprimante
En réalité dans la majeure partie des applications ou il est nécessaire de contrôler des
systèmes électroniques de tels organes ne sont évidemment pas suffisants, mais il faut utiliser
des cartes spécifiques constituant des interfaces vers l’extérieur.
Les cartes d’interface désignent le plus souvent des cartes pour ordinateur qui se logent
en interne sur l’un des bus de la carte mère tel que le bus PCI (Peripheral Component
Interconnect) ou ISA (Industry Standard Architecture), ou bien en externe sur l’un des ports
périphériques, par exemple un port USB. Ces cartes permettent d’ajouter de nouvelles fonctions
ou d’étendre les fonctions existantes.
D’une manière plus générale, les cartes d’interface sont utilisées pour associer
fonctionnellement deux entités distinctes. Pour bien détailler à quoi sert ces cartes d’interfaces
on peut dire que : Ces interfaces doivent relier les circuits électroniques au PC et permettre
l’échange des informations entre les deux entités. Dans la plupart des cas, les cartes sont
constituées d’un certain nombre de ressources d’I/O (Input/Output- Entrées/Sorties numériques
et analogiques). Les Inputs sont dument codes et transmis à un logiciel de gestion présent dans
l’ordinateur. Par contre, dans le cas des Outputs c’est en revanche le programme qui peut
modifier les valeurs précises par chaque ressource particulière.
Dans ce projet on va réaliser une Carte d’interface Matlab à base d’Arduino cette carte
qui va nous servir à faire n’importe quelle application.
Dans un premier temps ; nous abordons l’étude du code Arduino avec le code Matlab
et après on va exploiter ces résultats pour réaliser une application à base de cette carte.
13
GENERALITES
I.1. Comment Choisir une carte d’interface
Lors du choix d'une carte d'interface, le type d'interface qui s’ajoute à l’ordinateur est un
point important. Il faut également vérifier la méthode de connexion entre l’ordinateur et la carte
d'interface par méthode de connexion PC et carte d'interface
14
I.1.3. Interface utilisateur
L'interface utilisateur désigne le point de contact entre l’utilisateur et l’appareil. Elle
s’appelle aussi l’interface humaine.
Le choix du type de liaison utilisée pour relier notre carte avec le PC est assuré par un
programme spécifique. Le schéma de la (figure 2) explique le fonctionnement de l’interface qui
se développe autour d’un bloc de contrôle constitué essentiellement du PIC et assure 5 fonctions
majeures :
15
Varient en se basant sur le type d’automate. Les cartes d'E/S ont une modularité de 8.16
ou 32 voies.
Cartes d'entrées :
Exemple de cartes :
Après avoir expliqué le rôle des cartes d’interface au niveau de travail et la réalisation des
projets, nous dévoilons dans cette section une brève sélection des domaines d’application
possibles d’une carte d’interface.
16
I.3.1. Surveillance du monde physique
Station de météo automatisée : composants qui mesurent, enregistrent et transmettent
souvent des paramètres météorologiques tels que la température, la vitesse et la direction du
vent, le rayonnement solaire et les précipitations. La figure (4) donne une image concerne une
station de météo automatisée.
Suivi du soleil pour des panneaux solaires : l'héliostat est un dispositif qui
permet de suivre la course du soleil. Il oriente les rayons du soleil, grâce à des miroirs mobiles,
vers une surface fixe enfermant un liquide caloporteur chauffé par la concentration des rayons.
Une image sur la (figure 5) représente Un suivi du soleil.
17
• Avions radiocommandés.
• Drones et quadricoptères.
• Contrôle de machines-outils à commande numérique.
Compte tenu de ce qui précède, les cartes d’interfaces disposent d’un rôle important dans
tous les domaines avec différentes manières de réalisation.
18
Ce thermostat va être capable d’exploiter la température intérieure et son humidité pour
régler si nécessaire le temps de cycle. En option, il y’a la possibilité d’ajouter un capteur de
température et d’humidité extérieures. Le thermostat utilise des relais pour piloter en 24 V la
plupart des modèles de climatiseurs domestiques. Il n’y a donc pas de risque d’électrocution,
sauf celui de programmer un cycle trop rapide qui brutaliserait le compresseur ou le système de
chauffage. Le montage du thermostat est très simple. Il n’y aura que très peu de soudure à
prévoir. Le schéma ci-dessus de la (figure 6) explique le mode de fonctionnement de ce
thermostat.
Arduino : Arduino est devenu le couteau suisse de l’électronicien amateur et de tous ceux
qui veulent créer un objet utile, remarquable, interactif, électrique et bien d’autres
caractéristiques.
19
ARDUINO ET SIMULATION SOUS
ISIS
II.1. Définition Arduino
Arduino est une plate-forme de prototypage d'objets interactifs à usage créatif constituée
d'une carte électronique et d'un environnement de programmation. Cet environnement matériel
et logiciel qui est accessible même pour les non spécialistes de l’électronique permet à
l'utilisateur de formuler ses projets par l'expérimentation directe avec l'aide de nombreuses
ressources disponibles en ligne. Pont tendu entre le monde réel et le monde numérique, Arduino
permet d'étendre les capacités de la relation humain/machine ou environnement/machine. En
plus, il est un projet en source ouverte avec une communauté importante d'utilisateurs et de
concepteurs qui permet à chacun de trouver les réponses à ses questions.
La carte Arduino repose sur un circuit intégré (un mini-ordinateur appelé également
microcontrôleur) associé à des entrées et des sorties qui permettent à l'utilisateur de brancher
différents types d'éléments externes :
• Côtés entrés : des capteurs qui collectent des informations sur leur environnement
comme la variation de température via une sonde thermique, le mouvement via un
détecteur de présence ou un accéléromètre, le contact via un bouton-poussoir, etc.
• Côtés sortis : des actionneurs qui agissent sur le monde physique tel qu’une petite lampe
qui produit la lumière, un moteur qui actionne un bras articulé, etc. Comme le logiciel
Arduino, le circuit électronique de cette plaquette est libre et ses plans sont disponibles
sur internet. On peut donc les étudier et créer des dérivés. Plusieurs constructeurs
proposent ainsi différents modèles de circuits électroniques programmables et
utilisables avec le logiciel Arduino.
Il y’a plusieurs types de cartes Arduino dans le marché qui ont presque le même rôle, sauf
un petit développement entre eux à cause de la révolution dans le domaine. Dans ce qui suit
nous allons citer quelques exemples :
20
II.2.1. La carte Arduino UNO
C’est la carte idéale pour découvrir l’environnement ARDUINO. Elle permet à tout
débutant de se lancer dans tous ses premiers petits projets. Comme c’est la carte la plus utilisée,
il est très facile de se référer aux nombreux tutoriels sur internet et de découvrir les expériences
de la communauté pour une exploration optimal. Sa simplicité devient par contre un obstacle
lorsqu’il s’agit d’une multiplier des périphériques, de manipuler des algorithmes lourds ou
d’interagie avec les OS Android pour lesquels d’autres cartes Arduino sont plus adaptées.
L’image de la carte est indiquée dans la figure (7).
21
II.2.4. La carte Arduino Mega ADK
La carte Arduino Mega ADK comme indique dans la figure (9), offre les mêmes
caractéristiques techniques que la carte Arduino Mega, mais sont port USB permet de la
connecter avec un environnement Android ouvrant de nouvelles perspectives d’interaction avec
le monde des smartphones et des capteurs dont ils sont dotés. Sa mise en œuvre nécessite par
contre, de solides connaissances en Java et la capacité à développer ses propres applications.
22
II.3. Partie matérielle
Nous expliquons les principaux composants du carte Arduino Uno à travers la (figure 7).
Il faut noter ici, que les différentes versions des Arduino fonctionnent sous le même principe
général. La (figure 17) est pour expliquer le rôle de chaque composant.
• A : sont les broches dites numériques 1 ou 0 (HIGH ou LOW en anglais) et (tout ou rien
en français) ; elles offrent en sortie du 5V et acceptent en entrée du 5V sur le même
principe.
o Fonctions digitalWrite et digitalRead.
Et pour les ports Analogiques on distingue entre trois types :
La (figure 13) explique en détails le rôle de chaque composant dans la carte Arduino.
23
II.3.1. La constitution de la carte Arduino UNO
Un module Arduino est généralement construit autour d’un microcontrôleur ATMEL
AVR, et de composants complémentaires qui facilitent la programmation et l’interfaçage avec
d’autres circuits. Chaque module possède au moins un régulateur linéaire 5V et un oscillateur
à quartz 16 MHz (ou un résonateur céramique dans certains modèles). Le microcontrôleur est
préprogrammé avec un boot loader de façon à ce qu’un programmateur dédié ne soit pas
nécessaire.
24
cette mémoire ne s'efface pas lors de l’arrêt le microcontrôleur ou lorsqu'on le
reprogramme.
II.4. Logiciel
Dans les parties précédentes, nous avons présenté la partie matérielle de l’Arduino. Dans
cette section nous allons projeter la partie logicielle de la carte. Le logiciel de programmation
de la carte Arduino sert d'éditeur de code (langage proche du C). Une fois le programme tapé
ou modifié au clavier, il sera transféré et mémorisé dans la carte à travers la liaison USB. Le
câble USB alimente à la fois en énergie la carte et transporte l'information du programme appelé
IDE Arduino. Dans notre cas nous allons travailler avec Arduino depuis Isis, sans aucune
utilisation du câble USB
Pour écrire, modifier ou injecter les programmes dans le microcontrôleur nous utiliserons
une interface graphique appelée IDE (Integrated Développent Environnent). Cette interface
souple est exécutable sur n’importe quel système d’exploitation. Arduino est basé sur la
programmation en C et C++ à l’aide des règles spéciales de structuration du code.
25
Après l’ouverture du logiciel, une fenêtre composée de plusieurs sections s’affiche dans
la (figure 16).
26
et 1 (TX). La carte Arduino Mega dispose de trois ports série supplémentaires). Ses ports sont
montres dans la (figure 18).
La voie série est une des possibilités de communication entre un Arduino et un autre
périphérique, que ce soit un autre Arduino, un microcontrôleur ou un ordinateur.
27
L'interface de programmation affiche certains mots en différentes couleurs, cela revient
au statut des différents éléments :
La couleur orange désigne les mots-clés reconnus par le langage Arduino comme
des fonctions prédéfinie. La sélection d’un mot coloré en orange avec un clic droit de la souris,
offre la possibilité de choisir « Find in reference » : cette commande ouvre directement la
documentation de la fonction sélectionnée.
La couleur bleue, indique les mots-clés reconnus par le langage Arduino comme
des constantes.
La couleur grise, signale les commentaires qui ne seront pas exécutés dans le
programme. Il est utile de bien commenter son code pour s'y retrouver facilement ou pour le
transmettre à d'autres personnes. Un commentaire est déclaré en deux manières différentes :
1. Pour commenter une seule ligne, il faut utiliser « // », cela transforme le reste de la ligne
en commentaire.
2. Pour commenter un bloc de lignes, il faut insérer au début du bloc « /* » et terminer le
commentaire par « */ ».
28
Fonction digitalWrite : Cette fonction permet d’imposer un niveau logique haut et bas
sur la sortie numérique sélectionnée. digitalWrite (Numéro broche, Niveau logique) ;
Fonction digitalRead : Cette fonction permet de lire le niveau logique sur l’entrée
numérique sélectionnée. Cette fonction ne retourne que deux valeur HIGH ou LOW. Valeur =
digitalRead (Numéro broche) ;
Le port série asynchrone des microcontrôleurs qui équipent les cartes Arduino disposent
d’une mémoire tampon capable de mémoriser jusqu’à 128 caractères reçus.
Fonction Serial.read : cette fonction peut lire le premier caractère disponible dans la
mémoire de réception. Caractère = Serial.read() ;
Fonction Serial.print : Cette fonction permet d’émettre une ou plusieurs données sur la
liaison série en précisant le codage utilisé.
29
II.4.6. Bibliothèque.
La bibliothèque est un ensemble de fonctions utilitaires mise au service des utilisateurs
de l’environnement Arduino. L’IDE Arduino comporte plusieurs bibliothèques du milieu
extérieur. Pour les ajouter aux programmes, il faut utiliser le menu « Add Library ». Nous avons
utilisé le logiciel Arduino pour programmer les différents circuits nécessaires pour cette
application dans l’environnement virtuel Proteus.
En pratique, chaque système dans le domaine électronique avant sa réalisation est exécuté
dans un logiciel. Dans notre cas nous avons eu recours à un logiciel sous le nom Proteus montré
dans la (figure 20) qui est un très bon logiciel de la simulation en électronique. Ce logiciel
permet de simuler toutes différentes parties du système.
ISIS est un éditeur de schémas qui intègre un simulateur analogique, logique ou mixte.
Toutes les opérations se fassent dans cet environnement, aussi bien la configuration des
différentes sources que le placement des sondes et le tracé des courbes.
30
II.5.1. La fenêtre du logiciel
Dans cette étape, nous allons commencer par la présentation de la fenêtre du logiciel ISIS
les éléments de cette fenêtre sont indiqués dans la (figure 21), la méthode de son utilisation et
l’emplacement de chaque icone et son utilité.
Le cadre en bleu indique les extrémités de l'espace de travail tel qu'il a été défini par la
commande 'Définir taille des feuilles' du menu 'système'. Le cadre en vert délimite La zone de
travail, c'est à dire la partie du schéma visible dans la fenêtre principale.
• Nous pouvons déplacer cette zone de travail en pointant la souris sur la zone désirée de la
fenêtre d'ensemble et en effectuant un clic gauche.
2. Fenêtre d’édition
3. La boite à outils
Elle est composée d'un ensemble d'icônes dont les fonctions seront détaillées
ultérieurement et d'un sélecteur d'objet utilisé pour choisir les boîtiers, le style des pastilles, des
traces et des traversées.
31
II.5.2. Placement et câblage des composants
Commençons par un clic gauche sur l’icône d’un composant, Nous avons ainsi accès aux
bibliothèques de composants. Un clic sur "P", du "sélecteur d’objets" ouvre une nouvelle
fenêtre.
Nous pouvons maintenant choisir un composant dans les différentes bibliothèques comme
indiques dans la (figure 22). Un double clic place le composant sélectionné dans le sélecteur
d’objet et le rend éditable.
Ce logiciel a la possibilité d’emporter même des codes hexadécimaux pour les réalisations
qui contiennent des composants programmables ou des cartes programmables « Arduino »
comme dans notre réalisation.
Notre objectif est de réaliser une application à base d’Arduino commandé par Matlab.
Dans un premier temps nous allons effectuer et tester un petit exemple sous Isis. Cette étape est
nécessaire pour la confirmation du teste. Apres validation, nous allons faire le test sous Matlab.
32
II.5.3. Schéma de l’exemple sur Isis
• Arduino.
• LED branche sur le pin 7 par protection d’une résistance d’1 ohm.
• Résistance variable branche sur le pin analogique A0.
• Interrupteur.
Le but de ce code Arduino est de configurer les ports d’Arduino comme entrés ou sorties
et de faire la lecture et l’écriture au niveau des ports soit les ports numériques ou les ports
analogiques. Ce processus est programmé avec des instructions très clair et souple. (Voir
l’annexe pour le code source).
33
Figure 24 : Organigramme du code Arduino.
34
II.6.4. Les erreurs
Avant de discuter l’aspect des erreurs. Il faut noter d’une part, que pour chaque
commande juste, une réponse « ok » est affecté. D'autre part, une liste des erreurs est conçue
pour une identification précise de l’erreur. Le C00, R00, W00, ANO sont des erreurs de
paramétrage lors de la configuration, de la lecture analogique et de l’écriture. Au niveau du
switcher dans le cas d’erreur il retourne S00 une commande non reconnue et le S01 une taille
de commande invalide.
Pour bien comprendre nous allons appliquer les commandes dans le tableau 2, sur
l’exemple que nous avons fait sur Isis. Le tableau explique la signification de chaque
commande :
Nous pouvons tester ces commandes dans Isis à l’aide du VIRTUEL TERMINAL pour
voir la manière de déroulement de communication.
35
La (figure 26) montre le résultat de lancement de la simulation sur Proteus et d’exécution
des commandes sur Virtual Terminal.
Les commandes affichent les réponses comme suit : le premier « ok » signifie que la
configuration C071 est correcte. Ensuite, un tapage incorrect dans Virtual terminal se voit par
l’affichage de l’erreur W00. Après, nous entrons W071 pour allumer la LED et un R07 pour
lire que la LED est dans l’état haut ‘1’. Par la suite, nous avons configuré le pin 8 et lié la
valeur 1 de switch L’étape final est la configuration du pin analogique et la lecture de la valeur.
En conséquence, à l’aide du Virtual terminal nous avons eu les réponses codées dans le
programme Arduino ainsi de contrôler avec succès les composants liés avec l’Arduino. Au
niveau de S01, S00 sont des erreurs au niveau de l’écriture des commandes comme nous avons
indiqué précédemment dans le paragraphe des erreurs.
36
II.8. Conclusion
Dans le chapitre suivant, nous allons refaire le même travail et la même simulation avec
un milieu extérieur qui s’appelle Matlab.
37
SIMULATION SOUS MATLAB
III.1. Définition de Matlab
• Analyse de données ;
• Mathématiques symboliques (accès au noyau Maple V) ;
• Analyse numérique (accès aux routines NAG) ;
• Traitement de signaux (et du son en particulier) ;
• Acquisition de données et contrôle de processus (gestion ports série/parallèle, cartes
d'acquisition, réseau TCP ou UDP.
38
Une interface de programmation applicative (API) rend finalement possible l'interaction
entre MATLAB et les environnements de développement classiques (exécution de routines C
ou Fortran depuis MATLAB, ou accès aux fonctions MATLAB depuis des programmes C ou
Fortran). Ces caractéristiques et d'autres encore font aujourd'hui de MATLAB un standard
incontournable en milieu académique, dans les différents domaines de l'ingénieur et la
recherche scientifique.
Nous allons refaire le même travaille précèdent commander à partir de Virtual Terminal
avec Matlab. Nous garderons donc le même code Arduino.
39
• COMPIM : Modélise un port série physique. Il tamponne les communications série reçues
et les présente sous forme de signaux numériques au circuit. Toutes les données série
transmises à partir du Modèle UART ou de la CPU transitent également par le port série
de l’ordinateur.
Figure 29 : COMPIM.
Idéalement, un port série virtuel serait créé dans Proteus pour simuler l’interaction avec
une interface physique. Ensuite, On peut simplement exécuter la simulation de périphérique et
utiliser VSPE en tant que programme hôte pour tester la connexion. Ce logiciel VSPE a été créé
pour aider les ingénieurs à créer, tester et déboguer les applications qu’utilise les ports en série.
Par conséquent, nous allons l’utiliser pour créer deux ports imaginaires pour faciliter la
communication entre Arduino et Isis.
La (figure 31) montre le circuit complet électronique de notre système que nous avons
simulé avec Proteus. Le circuit contient un appareil de « COMPIM », cet appareil représente le
port sérial de PROTEUS, avec sa configuration avec VSPE et Matlab.
40
Figure 31 : Simulation dans ISIS avec COPMIM.
Pour voir les résultats voici quelques étapes représentées dans la (figure 32) que nous avons
suivies en Proteus et en VSPE.
Partir de Matlab. Puisque on a choisi les ports 13,14 et le COMPIM s’occupe du port 13
donc, nous allons indiquer le port 14 pour assurer une communication correcte.
Nous allons reprendre le travail fait au niveau du Terminal Virtuel précédemment sous
Matlab à l’aide d’un code diffèrent mais avec le même objectif :
41
• Configuration des ports « entres, sortis ».
• La lecture et l’écriture des composants qui sont liés aux ports « Analogiques,
Numériques ».
Dans cette étape nous allons connecter Matlab et Arduino avec Le VSPE et donner les
commandes de Matlab. Les résultats seront affichés sous ISIS. La capture de cette simulation
est projetée ci-dessous dans la (figure 33).
La (Figure 34) montre que la configuration du port avec Matlab est faite correctement
avec l’indication du numéro du port ‘14’, la vitesse du transfert utilisée ‘9600’ et l’état initial
de la communication. Par exemple il n’y a aucun message reçu ou bien transmis entre Matlab
et Arduino.
Les figures montrent que les commandes sont effectuées de Matlab vers Isis à l’aide de
VSPE, après l’écriture d’une commande et avec l’instruction suivante :
char(fread(s,s.BytesAvailable)’), Nous obtenons la réponse du Arduino si la commande est
correcte nous aurons un ‘OK’, avec ces commandes nous avons configuré le port 7 comme
sortie, allumé la LED, et configuré le port 8 comme entré avec la lecture de l’état de
l’interrupteur.
42
Dans le cas d’une fausse commande et d’une lecture de la réponse d’Arduino on doit
trouver à un des erreurs suivant C00, R00, W00, AN0, S00, S01.
43
III.5.2. Deuxième fonction : Configuration des pins.
44
Sur les figures 36 ,37,38,39 et 40 on a représenté les codes écrit sur Matlab qui gère la
communication Arduino Matlab et la configuration des pins numériques ainsi la lecture et
l’écriture dans ses pins et puis de lire les pins Analogiques respectivement.
Après l’écriture des fonctions nous pouvons les tester avec un test de notre choix.
Maintenant il suffit d’indiquer le port utilisé et d’écrire le mot test dans command
Window pour voir la communication entre Matlab et Arduino. A partir de la (figure 42), nous
pouvons conclure l’utilité des fonctions programmé sous l’éditeur, parce qu’ils permettent de
minimiser l’écriture dans cette fenêtre.
45
Le test est bien fait sans erreurs. Lors de lancement de la simulation, Matlab communique
avec Arduino pour configurer les pins après la validation qu’il est exempt de problèmes.
L’objectif de test est : si l’interrupteur égal à 1 il va allumer et éteindre la LED 10 fois.
III.7. Conclusion
Dans ce chapitre nous avons parlé du rôle du logiciel Matlab, et l’utilisé pour commander
Arduino avec plusieurs essaies. Ainsi, nous avons introduit un code depuis Matlab pour faire
fonctionner le petit exemple. Nous avons réussi donc de rendre Matlab une interface d’Arduino.
46
APPLICATION FEU DE
CIRCULATION INTELLIGENT
IV.1. Feu de circulation routière
Les feux de circulation sont à base de 3 couleurs est représenté sur la figure 44 : le rouge
pour fermer, le vert pour ouvrir et le l'orange est utilisé afin de signaler le passage du feu vert
vers le feu rouge.
47
IV.1.3. Principe du feu de la circulation.
Dans les intersections ou les carrefours, les feux de circulation ont trois principales
séquences qui se répètent durant toutes la journée.
• Quand le feu rouge s'allume, tout conducteur doit marquer l'arrêt total devant ce feu fixe
ou clignotant.
• Quand le feu vert s'allume, il indique l'autorisation du passage du véhicules sous la
condition du respect des piétons.
• Le dernier cas est le feu orange, qui informe tout conducteur de marquer l'arrêt devant un
feu de signalisation orange ou plutôt la préparation pour l’arrêt.
Chaque invention peut être développé à cause des nouvelles situations à gérer ou bien des
nouveaux problèmes. Il faut donc définir et résoudre ces problèmes puisque le feu de circulation
fait partie de ces inventions.
IV.2. Le problème
• Comment gérer un croisement dans le cas d'embouteillage dans une seule direction ?
• En cas de nuit comment gérer la gestion du feu de la circulation dans la présence d’un
véhicule.
• Est-ce que le rôle d’un policier de circulation peut être joué, au cas d’embouteillage dans
les deux directions
Pour répondre à ces questions, nous avons pensé à faire un feu tricolore intelligent, qui
est basé sur des capteurs de présences de véhicule et des capteurs placés à une petite distance
de feu de circulation pour détecter l’embouteillage.
Pour réaliser ce projet il faut un environnement de travail pour placer les composants et
des programmes pour faire fonctionner le feu rouge. Pour ce faire, nous allons utiliser Proteus
comme environnement, et développer des codes sous forme de fonctions sous Matlab avec un
test qui regroupe tous ces fonctions.
48
• Arduino UNO R3
• 4 Traffic lights 1 pour chaque voie.
• 4 capteurs (LOGIC STATE) pour présence de la voiture.
• 4 capteurs (LOGIC STATE) pour l’indication du l’embouteillage.
• COMPIM.
• 4 Afficheurs 7 SEGMENT.
• Un décodeur
49
Pour bien comprendre ce schéma et le fonctionnement de ce travail, il faut faire un tableau
de vérité et les tableaux de Karnaugh pour établir les équations des 3 états possibles, en utilisant
seulement les capteurs de présences de la voiture.
Dans un premier temps, nous allons établir les 3 équations concernant la circulation
routière seulement avec les capteurs de présences sans intervenir la notion d’embouteillage.
50
IV.4.2. Tableaux de Karnaugh
Pour établir les équations il faut faire les tableaux de Karnaugh
Après l’établissement des équations nous pouvons faire un organigramme qui explique la
démarche du feu rouge en se basant sur les capteurs de présences et en ajoutant 4 capteurs (e,
f, g, h) qui contrôlent l’embouteillage.
51
IV.5.1. Organigramme du programme principale (carrefour)
52
Cet organigramme de la (figure 47) explique comment on va procéder pour allumer les
feux de circulation de la Route AC qui se situent dans la même direction. Nous citons 3 cas qui
gèrent l’allumage du feu de cette direction comme suit :
53
IV.6. Les codes sous Matlab
54
IV.6.3. Code principal (carrefour)
Ce programme va tester tous les cas possibles dans la circulation à partir des capteurs de
présences de la voiture et les capteurs d’embouteillage, le code va distinguer entre trois états du
feu tricolores : l’ouverture de la direction A, C ou bien l’ouverture de la direction B, D ou bien
faire la permutation entre les deux directions, nous avons nommé cette dernière par feu
croisement. La (figure 50) représente le programme écrit
55
IV.6.5. Feucroisement
IV.6.6. OuvrirDirectionBD
Après l’identification de tous les éléments du programme il ne reste qu’écrire le code du
test. Qui est représenté sur la (figure 53).
56
IV.6.7. Test
A la fin de chaque fonction nous écrivons le mot carrefour qui contient le code des
différents cas possibles, pour une seule raison qui est de jouer avec les capteurs au cours de
simulation et voir le nouveau résultat sans éteindre la simulation. Le code du test est représenté
sur la Figure 54.
IV.7. Conclusion
Dans ce chapitre on a exploité toutes les connaissances qu’nous avons vue dans les deux
derniers chapitres afin de réaliser une application sou) le nom feu rouge intelligent qui gère le
lancement du feu lors du présence des voitures à l’aide des capteurs et l’embouteillage dans un
carrefour, toutes ces opérations sont réalisées sous l’environnement virtuel Proteus. Ce qui nous
a ramener à réaliser une carte d’interface Matlab à base d’Arduino.
57
Conclusion générale
Ce travail d’étude et de recherche concernant la carte d’interface Matlab à base d’Arduino
a été une excellente occasion pour augmenter mes connaissances dans le domaine
d’électronique et de programmation. J’ai découvert l’importance de ce type de ces cartes
d’interfaces sous diverses applications dans le monde réel comme mentionné dans le premier
chapitre.
En effet, dans le deuxième chapitre, j’ai fait une étude sur la carte d’Arduino pour
accumuler assez d’information afin d’écrire un programme qui va gérer toute la carte Arduino,
soit au niveau des pins soit au niveau de communication avec cette carte Arduino et un milieu
extérieur.
A la fin de ce travail, au niveau du dernier chapitre, nous avons exploité les résultats
obtenus pour réaliser une application du feu de circulation intelligent.
58
Annexe
Annexe 1 : Programme général
59
/*** PROGRAMME DE SELECTION DE COMMANDE ***/
void cmd_switcher(){
switch(cmd[0]){
case 'C':{
C(); //faire la commande Configuration quand on tape C
break;
}
case 'R':{
R(); //la lecture des pins lorsque on tape R
break;
}
case 'W':{
W(); //l'écriture lorsque on tape W
break;
}
case 'A':{
AN(); // permet la configuration des pins analogique
break;
}
default:{
Serial.print("S00\r"); // Erreur
}
}
60
}else{
return false;
}
}
61
/************* W() ******************/
void W(){
if (test_digital_params()){
digitalWrite(X, Y);
Serial.print("OK\r"); // Information
}else{
Serial.print("W00\r"); // Erreur
}
}
62
BIBLIOGRAPHIE
- Cours d’électronique numérique S5 IETEL.
Webographie
- https://www.cours-gratuit.com/cours-arduino/cours-d-introduction-a-arduino-matlab-
et- Simulink.
- https://www.arduino.cc/reference/en/.
- https://fr.scribd.com/document/441592464/Arduino-le-guide-complet-Une-re-fe-
rence-pdf.
- https://fr.scribd.com/document/408483362/AHMED-pdf.
- https://fr.wikipedia.org/wiki/Arduino.
- https://fr.wikipedia.org/wiki/Feu_de_circulation.
63