Vous êtes sur la page 1sur 41

Institut supérieur du Génie Appliqué

4ÈME ANNÉE INGÉNIERIE DES TÉLÉCOMS, RÉSEAUX ET SYSTÈMES EMBARQUÉS


(ITRSE)

RAPPORT DE PROJET

RÉALISATION D’UN SYSTÈME INTELLIGENT POUR LA


GESTION D’UN PARKING.

Réalisé par : Encadrer par:


KOUAME Konan
Jean-J
MBADINGA Dany Mr NABIL Arsalane

ANNÉE UNIVERSITAIRE 2021-2022


Résumé

Récemment, le nombre de propriétaires de véhicules a augmenté, par conséquent, il faut


plus d’espace de stationnement. Le problème est de savoir comment rechercher l'espace de
stationnement vide dans la grande aire de stationnement.
Dans ce projet de fin d’étude, nous avons proposé le système de stationnement
intelligent qui regroupe les technologies de l'électronique, de l'automatique, de
l'informatique et des télécommunications permettant d'améliorer le mouvement dans la
ville pour circuler plus librement, en utilisant l'Internet des objets (IdO) et un système de
guidage qui peut faire partie d'une solution pour le problème de stationnement .
Ce système va aider dans l'organisation du stationnement et aider les conducteurs à
atteindre leurs places de stationnement facilement en connaissant l'espace qui est vacant.
On peut détecter un espace de stationnement au moyen d'un capteur ultrason qui se
connecte à une carte Arduino et au module Wifi et un Arduino ethernet shield qui a été
programmé par Arduino IDE. Les utilisateurs peuvent accéder à des informations de l'espace
de stationnement en utilisant un afficheur LCD.
Dédicace
Nous dédions ce travail :

A nos très chères mères


Quoi que nous fassions ou que nous disons, nous ne saurons les remercier comme il se doit. Leurs
affections, bienveillance et présence à nos côtés a toujours été une source de force pour
affronter les différents obstacles.
Que ce travail traduit notre gratitude et notre affection

A nos très chers pères


Vous avez toujours été à nos côtés pour nous soutenir et nous encourager.

A nos très chers frères et sœurs


Puisse Dieu vous donner santé, bonheur, courage et plus de réussite.
Remerciement

Avant tout propos nous tenons à remercier Dieu tout puissant qui nous a donné la patience,
la volonté, le courage   d’aller jusqu’au bout de notre travail.

Nous adressons également nos remerciements à Mr Noureddine El Mezouari Directeur des


études à l’Institut du Génie appliqué (IGA) Maarif. Nous remercions également Mr
Mohammed GHOMARI .

Nous tenons évidemment à remercier, Mr NABIL Arsalane, qui est notre Professeur actuel à
l’(IGA) Maarif, pour son accueil, sa patience et le partage de son expertise au quotidien. Il fut
d'une aide précieuse tout au long de ce projet.

Nous remercions également l’ensemble du personnel de l’IGA Maarif pour leurs accueils
chaleureux.

Enfin, nous tenons à remercier toutes les personnes qui nous ont conseillés et relus lors de la
rédaction de ce rapport de projet.
Aujourd’hui, beaucoup d’états comme la Chine et les États-Unis investissent des milliards de
dollars pour le convoi du développement exponentiel des machines intelligents. Arrivé à ce
stade de développement, beaucoup de gens commencent de nos jours à s’inquiéter de ces
robots performants, rapides et infatigables et se demandent : Sommes-nous donc tous
voués à être remplacés et finir sur la paille ? Et pour demain, quelle sera la place de l’humain
?

Des questions qui nous mènent à revoir les enjeux et les risques qui accompagnent ces
machines intelligentes et savoir si ces robots vont constituer vraiment l’avenir de l’être
humain ou sa fin dans cette planète. Le but de ce projet est l’initiation et la mise en œuvre
d'un module ARDUINO. Les cartes Arduino sont conçues pour réaliser des prototypes et des
maquettes de carte électronique pour l'informatique embarquée. Elles peuvent être utilisées
dans des applications comme par exemple une alarme détectrice de la chaleur, ou une porte
automatique.

D’après l’arrivant de la technologie est aidé dans le développement des parkings et


transférer tous qui manuelles vers l’automatique, tout ça est vérifier grâce à des
composantes électroniques de fabrication bien organise contacter avec l’élément principale
qui s’appelle Arduino.

Les cartes Arduino font partie de la famille des microcontrôleurs. Ce dernier est une unité
de calcul accompagnée de mémoire, de ports d’entrée/ sortie et de périphériques
permettant d’interagir avec son environnement. L’Arduino permet d’exploiter le
microcontrôleur, pour le rendre plus facile à programmer par des ingénieurs, des chercheurs
et les développeurs.

Notre projet consiste à concevoir d’un parking intelligent, constitué d’une porte d’entrée et
une autre de sortie gérée automatiquement par une carte ARDUINO.
CHAPITRE I : NORME WIFI ET BASE DE DONNÉE

INTRODUCTION
Une base de données est un ensemble d'informations qui est organisé de manière à être
facilement accessible, géré et mis à jour. Elle est utilisée par les organisations comme
méthode de stockage, de gestion et de récupération de l’information.
Les données sont organisées en lignes, colonnes et tableaux et sont indexées pour faciliter la
recherche d'informations. Les données sont mises à jour, complétées ou encore supprimées
au fur et à mesure que de nouvelles informations sont ajoutées. Elles contiennent
généralement des agrégations d'enregistrements ou de fichiers de données, tels que les
transactions de vente, les catalogues et inventaires de produits et les profils de clients. Le
Wi-Fi, ou Wifi, est un réseau local lancé en 1999 qui utilise des ondes radioélectriques pour
relier entre eux, sans fil, plusieurs appareils informatiques dans le but de faciliter la
transmission de données. Dans la réalisation de notre projet nous allons faire usage d’une
base de données afin d’enregistrer les informations des personnes et le WIFI afin de pouvoir
faire un affichage en temps réel.

I. LA NORME WIFI

Définition du Wifi (802.11)

La norme IEEE 802.11 (ISO/IEC 8802-11) est un standard international décrivant les
caractéristiques d'un réseau local sans fil (WLAN). Le nom Wi-Fi (contraction de Wireless
Fidelity, parfois notée à tort Wifi) correspond initialement au nom donnée à la certification
délivrée par la Wi-Fi Alliance, anciennement WECA (Wireless Ethernet Compatibility
Alliance), l'organisme chargé de maintenir l'interopérabilité entre les matériels répondant à
la norme 802.11. Par abus de langage (et pour des raisons de marketing) le nom de la norme
se confond aujourd'hui avec le nom de la certification. Ainsi un réseau Wifi est en réalité un
réseau répondant à la norme 802.11. Les matériels certifiés par la Wi-Fi Alliance bénéficient
de la possibilité d'utiliser le logo suivant :
Grâce au Wi-Fi, il est possible de créer des réseaux locaux sans fils à haut débit pour peu que
l'ordinateur à connecter ne soit pas trop distante par rapport au point d'accès. Dans la
pratique, le Wifi permet de relier des ordinateurs portables, des ordinateurs de bureau, des
assistants personnels (PDA) ou tout type de périphérique à une liaison haut débit (11 Mbps
ou supérieur) sur un rayon de plusieurs dizaines de mètres en intérieur (généralement entre
une vingtaine et une cinquantaine de mètres) à plusieurs centaines de mètres en
environnement ouvert.
Ainsi, des opérateurs commencent à irriguer des zones à fortes concentration d'utilisateurs
(gares, aéroports, hôtels, trains, ...) avec des réseaux sans fils. Ces zones d'accès sont
appelées « hot spots ».

Présentation du Wifi (802.11)

La norme 802.11 s'attache à définir les couches basses du modèle OSI pour une liaison sans
fil utilisant des ondes électromagnétiques, c'est-à-dire :

● la couche physique (notée parfois couche PHY), proposant trois types de codages de
l'information.
● la couche liaison de données, constitué de deux sous-couches : le contrôle de la
liaison logique (Logical Link Control, ou LLC) et le contrôle d'accès au support (Media
Access Control, ou MAC)
La couche physique définit la modulation des ondes radio-électriques et les caractéristiques
de la signalisation pour la transmission de données, tandis que la couche liaison de données
définit l'interface entre le bus de la machine et la couche physique, notamment une
méthode d'accès proche de celle utilisée dans le standard ethernet et les règles de
communication entre les différentes stations. La norme 802.11 propose en réalité trois
couches physiques, définissant des modes de transmission alternatifs :

Il est possible d'utiliser n'importe quel protocole de haut niveau sur un réseau sans fil Wifi au
même titre que sur un réseau ethernet.

Les différentes normes Wifi

La norme IEEE 802.11 est en réalité la norme initiale offrant des débits de 1 ou 2 Mbps. Des
révisions ont été apportées à la norme originale afin d'optimiser le débit (c'est le cas des
normes 802.11a, 802.11b et 802.11g, appelées normes 802.11 physiques) ou bien préciser
des éléments afin d'assurer une meilleure sécurité ou une meilleure interopérabilité. Voici
un tableau présentant les différentes révisions de la norme 802.11 et leur signification :

Il est intéressant de noter l'existence d'une norme baptisée «802.11b+». Il s'agit d'une
norme propriétaire proposant des améliorations en terme de débits. En contrepartie cette
norme souffre de lacunes en termes de garantie d'interopérabilité dans la mesure où il ne
s'agit pas d'un standard IEEE.

Portées et débits

Les normes 802.11a, 802.11b et 802.11g, appelées «normes physiques» correspondent à des
révisions du standard 802.11 et proposent des modes de fonctionnement, permettant
d'obtenir différents débits en fonction de la portée.

802.11a
La norme 802.11a permet d'obtenir un débit théorique de 54 Mbps, soit cinq fois plus que le
802.11b, pour une portée d'environ une trentaine de mètres seulement. La norme 802.11a
s'appuie sur un codage du type Orthogonal Frequency Division Multiplexing (OFDM) sur la
bande de fréquence 5 GHz et utilise 8 canaux qui ne se recouvrent pas.
Ainsi, les équipements 802.11a ne sont donc pas compatibles avec les équipements 802.11b.
Il existe toutefois des matériels intégrant des puces 802.11a et 802.11b, on parle alors de
matériels «dual band».

802.11b

La norme 802.11b permet d'obtenir un débit théorique de 11 Mbps, pour une portée
d'environ une cinquantaine de mètres en intérieur et jusqu'à 200 mètres en extérieur (et
même au-delà avec des antennes directionnelles).

802.11g

La norme 802.11g permet d'obtenir un débit théorique de 54 Mbps pour des portées
équivalentes à celles de la norme 802.11b. D'autre part, dans la mesure où la norme 802.11g
utilise la bande de fréquence 2,4GHZ avec un codage OFDM, cette norme est compatible
avec les matériels 802.11b, à l'exception de certains anciens matériels.
II. BASE DE DONNÉE

❑ Les trois logiciels en bref


Ces trois noms désignent des logiciels, installés sur le site web (machine serveur), ayant
chacun des rôles différents. Examinons le rôle de chacun d'entre eux.
❖ Apache est le serveur web. Son rôle est d'écouter les requêtes émises par les
navigateurs (qui demandent des pages web), de chercher la page demandée et de la
renvoyer.
❖ PHP est un langage de script. Il permet, de décrire dans une page web, un affichage
dynamique d'information, c'est-à-dire que le texte affiché peut dépendre de
variables. Nous avons par exemple la possibilité d'afficher dans une page renvoyée au
navigateur, la date du jour. Les instructions PHP sont généralement contenues dans
des fichiers d'extension PHP. Ces fichiers peuvent contenir du HTML, entremêlé avec
le code PHP. Quand un navigateur demande un tel fichier, le serveur Apache exécute
les instructions PHP, qui produisent une page HTML. Une fois la page HTML générée,
le serveur la renvoie au navigateur, qui ne voit qu'une page HTML.
❖ MySQL est un système de gestion de base de données. Son rôle est de stocker les
données, sous forme de tables, et de permettre la manipulation de ces données à
travers le langage de requête SQL. Un exemple de requête peut être par exemple :
“Lister les adresses des clients (à partir de la table client) qui ont acheté cette année
pour plus de 1000 euros (à partir de la table facturation)”. En SQL, cette requête
s'écrirait par exemple de la manière suivante : select (nom, adresse) from (client,
facturation) where (client numéro = facturation numéro and facturation total>1000)
où le champ numéro est la clé primaire de chacune des tables, et représente le
numéro de client.
PHP est capable de passer à MySQL de telles requêtes à travers les fonctions de préfixe
MySQL_ (PHP possède également des fonctions pour dialoguer avec d'autres systèmes de
gestion de base de données). C'est une raison du succès du couple PHP+MySQL dans la mise
en place de sites web.
L'utilisation des trois logiciels n'est nécessaire que lorsqu'on veut afficher au visiteur des
informations provenant de la base de données. Cependant, cette configuration est
fréquemment utilisée car elle correspond à beaucoup de besoins. Un magasin voulant
afficher à ses clients la liste de ses produits en stock, un forum de discussions permettant à
des internautes de lire, et rechercher des messages, sont autant d'exemples d'application
nécessitant la manipulation (enregistrement, manipulation, affichage) de données à travers
le réseau.

❑ Architecture 3-tiers
La configuration que l'on met ici en place est souvent nommée "3-tiers" (3-tier en anglais)
car on peut décomposer fonctionnellement notre application en 3 couches distinctes.
Couche présentation : c'est la partie de l'application visible par les utilisateurs (on parle
d'interface utilisateur). Dans notre cas, elle se présentera sous la forme de pages HTML,
composée de formulaires, buttons, etc. Un exemple concret peut être l'interface de
recherche de vols sur un site de réservation d'une compagnie aérienne : la couche de
présentation définit le formulaire de recherche et la présentation des résultats de la
recherche.
Couche métier : c'est la logique de l'application elle-même, c'est-à-dire les algorithmes
implémentés pour remplir les fonctions spécifiées. Dans l'exemple de la fonction de
recherche de vols, l'application prendra les données saisies par l'utilisateur dans le
formulaire, pourra vérifier la cohérence des informations demandées, mettre cette requête
dans un format adéquat, et transmettre la requête au gestionnaire des données (couche
accès aux données). Si l'utilisateur attend des données en résultat, l'application procède en
général à un traitement avant de les passer à la couche présentation.
Couche accès aux données : c'est la partie qui gère les données. La façon dont elle organise,
manipule, stocke, etc., les données est transparente aux applications ou utilisateurs
externes, toutes ces opérations étant internes à la couche d'accès aux données. Cette
couche est souvent implantée avec un système de gestion de base de données. L'interface
proposée est souvent SQL.
Remarquons bien que le choix de Apache+PHP+MySQL n'en est que partie une multitude
d'autres possibles. (Par exemple Java/RMI+Base de données).
❑ Installation Linux
L'installation sur un système Linux de ces trois composants est plutôt simple, étant donné
que ces logiciels sont généralement disponibles d'office dans les distributions. De plus, on
vérifiera que la configuration de PHP permet bien d'accéder aux fonctions MySQL : visualiser
le fichier /etc./php.ini et vérifier que la ligne :
Extension = mysql.so
Est dé commentée (il ne doit pas y avoir de points virgule en début de ligne).
Bien sûr, il faut aussi vérifier que les services Apache et MySQL sont actifs. Dans le doute
démarrez-les (en tant que root ou en sudo). On peut utiliser la commande apachectl,
souvent placée dans /usr/sbin/. Cette commande propose comme option start, restart,
graceful, graceful-stop, ou stop, et est toujours disponible avec Apache. Pour lancer :
Bash # apachectl start

Alternativement, on peut utiliser les scripts de démarrage enrobant cette commande. Ils
varient en fonction de la distribution. Sur Mandriva/Redhat/Fedora, on peut utiliser :
Bash # service httpd start
Starting httpd: [OK]
Bash # service mysql start
Starting mysqld daemon with databases from /var/lib/mysql
bash #
❑ Installation Windows
L'installation sur les systèmes Windows de ces trois logiciels est aussi très populaire. A tel
point que les trois logiciels sont parfois proposés en un seul paquet. Deux projets : EasyPHP
et WAMP livrent une installation "clés-en-mains" d'Apache, PHP, MySQL et de phpMyAdmin
en prime. La procédure d'installation de ce paquet est très simple. Reportez-vous à la section
téléchargement et installation de ce site ; vous devriez pouvoir avoir un environnement
fonctionnel très rapidement.
CONCLUSION
CHAPITRE I : MATÉRIAUX ET COMPOSANTS
INTRODUCTION
I. LA CARTE ARDUINO

1. Les types de cartes


Le système Arduino est une plateforme open source basée sur une carte programmée par
microcontrôleur et un environnement de développement permettant d’écrire, compiler et
tester un programme.
Les cartes et modules Arduino sont pourvus d’entrées-sorties qui peuvent recevoir des
signaux de capteurs ou interrupteurs et peuvent commander des moteurs, éclairages, etc.
« Arduino n'est pas en soi un type de carte ou un microcontrôleur spécifique. Arduino
désigne plutôt toute une famille. Choisir celle qui convient à un projet n’est pas une mince
affaire et il convient de réfléchir à celle qu’on utilisera. Dans cette partie, nous allons en
apprendre davantage sur les différents types de cartes Arduino et sur leurs utilisations.
● Arduino UNO
● Arduino Nano
● Arduino Due
● Arduino Méga
● Arduino Leonardo

1. 1. Arduino UNO

L’UNO est sans doute l’Arduino le plus populaire. Il est alimenté par un processeur
Atmega328 fonctionnant à 16 MHz, comprend 32 Ko de mémoire programme, 1 Ko
d’EEPROM, 2 Ko de RAM, 14 E / S numériques, 6 entrées analogiques et un rail
d’alimentation de 5V et 3,3V. 

1. 2. Arduino Nano
L’Arduino Nano est essentiellement un Arduino UNO réduit, ce qui le rend très pratique pour
les espaces restreints et les projets pouvant nécessiter une réduction de poids chaque fois
que cela est possible, comme le modélisme ou des projets DIY portable.

Comme l'ONU, le Nano est alimenté par un processeur Atmega328 fonctionnant à 16 MHz,
comprend 32 Ko de mémoire programme, 1 Ko d’EEPROM, 2 Ko de RAM, 14 entrées-sorties
numériques, 6 entrées analogiques et des rails d’alimentation 5V et 3,3V.
Contrairement au système UNO, le Nano ne peut pas se connecter aux platines de
prototypages. Les cartes Arduino Nano sont souvent l’option de carte Arduino la moins
chère, ce qui les rend rentables pour les grands projets.

1. 3. Arduino Due

L’Arduino Due est l’une des cartes les plus grandes et la première carte Arduino à être
alimentée par un processeur ARM.
Alors que l’UNO et Nano fonctionnent à 5V, la DUO fonctionne en 3,3V - il est important de
le noter, car une surtension endommagerait irrémédiablement la carte. Alimenté par un
Cortex-M3 ATSAM3X8E cadencé à 84 MHz, le Due dispose de 512 Ko de ROM et de 96 Ko de
RAM, de 54 broches d’E / S numériques, de 12 canaux PWM, de 12 entrées analogiques et
de 2 sorties analogiques.

La DUE n’a pas de mémoire EEPROM intégrée et est l’une des cartes Arduino les plus chères.
Bien que le Due dispose d’un grand nombre d’en-têtes de broches pour la connexion aux
nombreuses E / S numériques, il est également compatible avec les broches Arduino
standard.
1. 4. Arduino Méga 2560

L’Arduino Méga est un peu similaire au Due en ce sens qu’il dispose également de 54 E / S.
Cependant, au lieu d’être alimenté par un cœur ARM, il utilise plutôt un ATmega2560.

Le processeur est cadencé à 16 MHz et comprend 256 Ko de ROM, 8 Ko de RAM, 4 Ko


d’EEPROM et fonctionne à 5 V, ce qui facilite son utilisation avec la plupart des appareils
électroniques conviviaux. 
L’Arduino Méga dispose de 16 entrées analogiques, de 15 canaux PWM, d’un brochage
similaire à Due et d’un matériel compatible avec les shields Arduino. Comme pour Due, la
compatibilité logicielle avec Méga ne peut pas toujours être garantie.

1. 5. Arduino Leonardo

La carte Arduino LEONARDO est basée sur un ATMega32u4 cadencé à 16 MHz permettant la
gestion du port USB par un seul processeur. Des connecteurs situés sur les bords extérieurs
du circuit imprimé permettent d’enficher une série de modules complémentaires. Elle peut
se programmer avec le logiciel Arduino. Le contrôleur ATMega32u4 permet la gestion du
port, ce qui permet d’augmenter la flexibilité dans la communication avec l’ordinateur.
I. 2. Les composants de la carte Arduino

Vue d'ensemble
La carte Arduino Uno est une carte à microcontrôleur basée sur l’ATmega328.

Elle dispose :

● de 14 broches numériques d'entrées/sorties (dont 6 peuvent être utilisées en sorties


PWM (largeur d'impulsion modulée)),
● de 6 entrées analogiques (qui peuvent également être utilisées en broches
entrées/sorties numériques),
● d'un quartz 16Mhz,
● d'une connexion USB,
● d'un connecteur d'alimentation jack,
● d'un connecteur ICSP (programmation "in-circuit"),
● et d'un bouton de réinitialisation (reset).
Elle contient tout ce qui est nécessaire pour le fonctionnement du microcontrôleur; Pour
pouvoir l'utiliser et se lancer, il suffit simplement de la connecter à un ordinateur à l'aide
d'un câble USB (ou de l'alimenter avec un adaptateur secteur ou une pile, mais ceci n'est pas
indispensable, l'alimentation étant fournie par le port USB).
La carte Arduino Uno diffère de toutes les cartes précédentes car elle n'utilise par le circuit
intégré FTDI USB-vers-série. A la place, elle utilise un Atmega8U2 programmé en
convertisseur USB-vers-série.
"Uno" signifie un en Italien et ce nom marque la venue prochaine de la version 1.0 du logiciel
Arduino. La carte UNO et la version 1.0 du logiciel seront la référence des versions Arduino à
venir. La carte Uno est la dernière d'une série de carte USB Arduino, et le modèle de
référence des plateformes Arduino; pour une comparaison avec les versions précédentes,
voir l'index des cartes Arduino.

Synthèse des caractéristiques


● Microcontrôleur : ATmega328.
● Tension de fonctionnement : 5V.
● Tension d'alimentation (recommandée) : 7-12V.
● Tension d'alimentation (limites) :6-20V.
● Broches E/S numériques : 14 (dont 6 sorties PWM).
● Broches d'entrées analogiques : 6 (utilisables en broches E/S numériques).
● Intensité maxi disponible par broche E/S (5V) : 40 mA (ATTENTION : 200mA cumulé
pour l'ensemble des broches E/S).
● Intensité maxi disponible pour la sortie 3.3V : 50 mA.
● Intensité maxi disponible pour la sortie 5V : Fonction de l'alimentation utilisée - 500
mA max si port USB utilisé seul.
● Mémoire Programme Flash : 32 KB (ATmega328) dont 0.5 KB sont utilisés par le
bootloader.
● Mémoire SRAM (mémoire volatile) :2 KB (ATmega328).
● Mémoire EEPROM (mémoire non volatile) :1 KB (ATmega328).
● Vitesse d'horloge : 16 MHz.

Brochage de la carte Uno


Alimentation

L'alimentation externe (non-USB) peut être soit un adapteur secteur (pouvant fournir
typiquement de 3V à 12V sous 500mA) ou des piles (ou des accus). L'adaptateur secteur
peut être connecté en branchant une prise 2.1mm positif au centre dans le connecteur jack
de la carte. Les fils en provenance d'un bloc de piles ou d'accus peuvent être insérés dans les
connecteurs des broches de la carte appelées Gnd (masse ou 0V) et Vin (Tension positive en
entrée) du connecteur d'alimentation.
La carte peut fonctionner avec une alimentation externe de 6 à 20 volts. Cependant, si la
carte est alimentée avec moins de 7V, la broche 5V pourrait fournir moins de 5V et la carte
pourrait être instable. Si on utilise plus de 12V, le régulateur de tension de la carte pourrait
chauffer et endommager la carte. Aussi, la plage idéale recommandée pour alimenter la
carte Uno est entre 7V et 12V.
Les broches d'alimentation sont les suivantes :
● VIN. La tension d'entrée positive lorsque la carte Arduino est utilisée avec une source
de tension externe (à distinguer du 5V de la connexion USB ou autre source 5V
régulée). Vous pouvez alimenter la carte à l'aide de cette broche, ou, si l'alimentation
est fournie par le jack d'alimentation, accéder à la tension d'alimentation sur cette
broche.
● 5V. La tension régulée utilisée pour faire fonctionner le microcontrôleur et les autres
composants de la carte (pour info : les circuits électroniques numériques nécessitent
une tension d'alimentation parfaitement stable dite "tension régulée" obtenue à
l'aide d'un composant appelé un régulateur et qui est intégré à la carte Arduino). Le
5V régulé fourni par cette broche peut donc provenir soit de la tension
d'alimentation VIN via le régulateur de la carte, ou bien de la connexion USB (qui
fournit du 5V régulé) ou de tout autre source d'alimentation régulée.
● 3V3. Une alimentation de 3.3V fournie par le circuit intégré FTDI (circuit intégré
faisant l'adaptation du signal entre le port USB de votre ordinateur et le port série de
l'ATmega) de la carte est disponible : ceci est intéressant pour certains circuits
externes nécessitant cette tension au lieu du 5V). L'intensité maximale disponible sur
cette broche est de 50mA.
● GND. Broche de masse (ou 0V).

Mémoire
L'ATmega 328 a 32Ko de mémoire FLASH pour stocker le programme (dont 0.5Ko également
utilisés par le bootloader). L'ATmega 328 a également 2ko de mémoire SRAM (volatile) et
1Ko d'EEPROM (non volatile - mémoire qui peut être lue à l'aide de la librairie EEPROM).
Pour info : Le bootloader est un programme préprogrammé une fois pour toute dans
l'ATméga et qui permet la communication entre l'ATmega et le logiciel Arduino via le port
USB, notamment lors de chaque programmation de la carte.

Entrées et sorties numériques


Chacune des 14 broches numériques de la carte UNO (numérotées des 0 à 13) peut être
utilisée soit comme une entrée numérique, soit comme une sortie numérique, en utilisant
les instructions pinMode(), digitalWrite() et digitalRead() du langage Arduino. Ces broches
fonctionnent en 5V. Chaque broche peut fournir ou recevoir un maximum de 40mA
d'intensité et dispose d'une résistance interne de "rappel au plus" (pull-up) (déconnectée
par défaut) de 20-50 KOhms. Cette résistance interne s'active sur une broche en entrée à
l'aide de l'instruction digitalWrite(broche, HIGH).
De plus, certaines broches ont des fonctions spécialisées :

● Communication Série: Broches 0 (RX) et 1 (TX). Utilisées pour recevoir (RX) et


transmettre (TX) les données séries de niveau TTL. Ces broches sont connectées aux
broches correspondantes du circuit intégré ATmega8U2 programmé en convertisseur
USB-vers-série de la carte, composant qui assure l'interface entre les niveaux TTL et
le port USB de l'ordinateur.
● Interruptions Externes: Broches 2 et 3. Ces broches peuvent être configurées pour
déclencher une interruption sur une valeur basse, sur un front montant ou
descendant, ou sur un changement de valeur. Voir l'instruction attachInterrupt() pour
plus de détails.
● Impulsion PWM (largeur d'impulsion modulée): Broches 3, 5, 6, 9, 10, et 11.
Fournissent une impulsion PWM 8-bits à l'aide de l'instruction analogWrite().
● SPI (Interface Série Périphérique): Broches 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK).
Ces broches supportent la communication SPI (Interface Série Périphérique)
disponible avec la librairie pour communication SPI. Les broches SPI sont également
connectées sur le connecteur ICSP qui est mécaniquement compatible avec les cartes
Méga.
● I2C: Broches 4 (SDA) et 5 (SCL). Supportent les communications de protocole I2C (ou
interface TWI (Two Wire Interface - Interface "2 fils"), disponible en utilisant la
librairie Wire/I2C (ou TWI - Two-Wire interface - interface "2 fils") .
● LED: Broche 13. Il y a une LED incluse dans la carte connectée à la broche 13. Lorsque
la broche est au niveau HAUT, la LED est allumée, lorsque la broche est au niveau
BAS, la LED est éteinte.

Broches analogiques

La carte Uno dispose de 6 entrées analogiques (numérotées de 0 à 5), chacune pouvant


fournir une mesure d'une résolution de 10 bits (c’est à dire sur 1024 niveaux soit de 0 à
1023) à l'aide de la très utile fonction analogRead() du langage Arduino. Par défaut, ces
broches mesurent entre le 0V (valeur 0) et le 5V (valeur 1023), mais il est possible de
modifier la référence supérieure de la plage de mesure en utilisant la broche AREF et
l'instruction analogReference() du langage Arduino.

Communication

La carte Arduino Uno dispose de toute une série de facilités pour communiquer avec un
ordinateur, une autre carte Arduino, ou avec d'autres microcontrôleurs. L'ATmega 328
dispose d'une UART (Universal Asynchronous Receiver Transmitter ou émetteur-récepteur
asynchrone universel en français) pour communication série de niveau TTL (5V) et qui est
disponible sur les broches 0 (RX) et 1 (TX). Un circuit intégré ATmega8U2 sur la carte assure
la connexion entre cette communication série vers le port USB de l'ordinateur et apparaît
comme un port COM virtuel pour les logiciels de l'ordinateur. Le code utilisé pour
programmer l'ATmega8U2 utilise le driver standard USB COM, et aucun autre driver externe
n'est nécessaire. Cependant, sous Windows, un fichier .inf est requis.

2. LiquidCrystal afficheur (LCD)

2. 1. Description de l’écran LCD


Les afficheurs à cristaux liquides, autrement appelés afficheurs LCD (Liquid Crystal
Display), sont des modules compacts intelligents et nécessitent peu de composants externes
pour un bon fonctionnement. Ils consomment relativement peu (de 1 à 5 mA), sont
relativement bons marchés et s'utilisent avec beaucoup de facilité.
Plusieurs afficheurs sont disponibles sur le marché et diffèrent les uns des autres, non
seulement par leurs dimensions, (de 1 à 4 lignes de 6 à 80 caractères), mais aussi par leurs
caractéristiques techniques et leur tension de service. Certains sont dotés d'un
rétroéclairage de l'affichage. Cette fonction fait appel à des LED montées derrière l'écran du
module, cependant, cet éclairage est gourmand en intensité (de 80 à 250 mA).
Ils sont très utilisés dans les montages à microcontrôleur, et permettent une grande
convivialité. Ils peuvent aussi être utilisés lors de la phase de développement d'un
programme, car on peut facilement y afficher les valeurs de différentes variables.

L'afficheur possède deux types de mémoire, la DD RAM et la CG RAM. La DD RAM est la


mémoire d'affichage et la CG RAM est la mémoire du générateur de caractères.

Écran à cristaux liquides 16 * 2 avec système de


connexion I2C
Il est caractérisé par l'utilisation du système I2C opération et contrôle à travers deux fils
seulement, ce qui est une énorme provision pour les prises du panneau de contrôle utilisé
dans notre projet et facilite le processus de connexion et de fonctionnement.
2. Le module WIFI
L'aventure ESP8266 a démarré en 2014 et le module a gagné rapidement en popularité.
Leurs caractéristiques diffèrent notamment en termes de nombres de ports d'entrées-sorties
ou de taille de la mémoire flash.

3. 1. Description du module WIFI ESP8266


L'ESP8266 :
Supporte les protocoles 802.11 b/g/n ; Se connecte à votre routeur et fonctionne comme
client ou comme point d'accès ou même les deux en même temps Peuvent fonctionner
comme serveur web avec sa propre adresse IP ; le module ESP-01 comprend deux broches
numériques qui peuvent être configurées en entrée ou en sortie (pour piloter des LED, des
relais, etc.). Ces broches peuvent être utilisées pour générer un signal modulé en largeur
d'impulsion (PWM). D'autres versions du module comportent davantage de broches
d'entrées-sorties (l'ESP-12 par exemple), mais ils se programment tous de façon similaire ;
Possède une entrée analogique (ADC/TOUT), mais qui n'est pas câblée sur l'ESP-01 ; Peut
fonctionner en communiquant avec une carte Arduino ou être programmé pour fonctionner
en toute autonomie.
3.2. Brochages

Quelques remarques sur le câblage :


● la broche GPIO 0 doit être maintenue à la masse (GND) pendant le téléversement du
code. Elle doit être déconnectée si vous retirez le FTDI et que l'ESP est en mode
d'exécution normal ;
● la broche CH_PD doit toujours être maintenue à l'état haut ;
● la broche RESET est tirée à l'état haut avec une résistance de pull-up 10 kΩ, et est
reliée à la masse GND sur appui du bouton RESET lorsqu'il faut redémarrer l'ESP.
Pressez le bouton RESET à chaque fois avant de téléverser le code, et à chaque fois
que vous connectez ou déconnectez la broche GPIO 0. Ce bouton RESET vous évitera
bien des tracas.
Quand vous alimentez le circuit, la LED rouge de l'ESP-01 doit s'allumer, et la LED bleue doit
s'allumer brièvement. Plus tard, quand vous téléverserez le code dans l'ESP, la LED bleue
devrait clignoter pendant le processus. Toute autre combinaison dans l'éclairage des LED
suggère un dysfonctionnement.

4. Les capteurs

4. 1. La carte RFID
Le système RFID repose sur deux éléments essentiels : l'étiquette RFID et le lecteur RFID. Les
lecteurs RFID ont tous le même mode global de fonctionnement, mais le choix approprié du
lecteur peut s'avérer difficile du fait de la diversité de l'offre.
4. 1. 1. Principe du lecteur RFID

Le lecteur RFID, élément essentiel à l'utilisation de la RFID, fonctionne de la manière suivante


: il transmet à travers des ondes-radio l'énergie au tag RFID, il transmet alors une requête
d'informations aux étiquettes RFID situées dans son champ magnétique, il réceptionne les
réponses et les transmet aux applications concernées. La communication entre le lecteur
RFID et l'étiquette est possible grâce à chaque antenne RFID intégrée dans chacun des 2
composants.

4. 1. 2. Lecteurs RFID fixes ou portables


Les lecteurs RFID peuvent prendre des formes variées selon l'utilisation à laquelle il sera
destiné. Du fait qu'il n'a pas besoin d'être en contact direct avec la puce, le lecteur le plus
utilisé est le lecteur fixe, mais il peut également prendre la forme d'un lecteur portable :le
lecteur RFID fixe : comme son nom l'indique il est installé de manière fixe et ne peut donc
pas être transporté pour la lecture des puces à distance, il prend la forme de portique ou de
bornes; le lecteur RFID portable : le lecteur portable prend la forme d'un flasher portatif qui
permet de lire les étiquettes manuellement, les objets n'ont plus besoin d'être transportés à
proximité du lecteur, c'est le lecteur qui se déplace.
4. 1. 3. Comment choisir son lecteur RFID 

Le choix du lecteur RFID s'avère primordial, ce choix doit se faire selon la fréquence des
étiquettes RFID et la distance de lecture souhaitée.
Comme pour les étiquettes RFID, 3 types de fréquence sont possibles :
● les lecteurs RFID basses fréquences BF 125KHz,
● les lecteurs hautes fréquences HF 13,56 MHz,
● les lecteurs RFID UHF 868 MHz.
La puissance du lecteur RFID est à combiner avec l'antenne appropriée, ainsi plusieurs
portées optimales de lecture peuvent être définies :
● les lecteurs RFID de proximité: jusqu'à 25 cm,
● les lecteurs RFID de voisinage : jusqu'à 1 m,
● les lecteurs moyenne distance : jusqu'à 9 m,
● les lecteurs longue portée : plusieurs centaines de mètres.

5. Le capteur TCR5000

Description

Le module suivant utilise des capteurs de proximité infrarouges TCRT5000 (émetteur et


récepteur) et peut être facilement implémenté dans l'un de vos projets Arduino. Il existe un
maximum de 4 broches, dont deux sont les broches VCC et GND, les deux autres étant une
sortie analogique et une sortie numérique. Une fois que vous avez le module alimenté, soyez
invité à le placer afin que les DEL infrarouges soient tournées vers la direction que vous
souhaitez détecter. Il existe même un trou de montage sur le PCB si nécessaire. En ce qui
concerne les sorties, ce module vous offre des options analogiques et numériques. La broche
numérique aura une valeur de 0 ou 1 indiquant si un objet est ou non détecté (ou si la
lumière est réfléchie ou non, cela est utile lors de la détection de lignes en noir et blanc). La
sortie analogique fournira des données relatives à la distance de l'objet détecté. Il existe
même un potentiomètre pour permettre des ajustements de sensibilité (Notez que ceci est
un capteur de proximité, dans ce cas, ce qui signifie qu'une portée maximale n'excède pas
25mm).

Caractéristiques :
● Tension de service : 3.3VDC à 5VDC
● IC : LM393
● Capteur : TCRT5000
● Plage de fonctionnement : 1mm à 25mm
● Dimensions : 31mm x 14mm / 1.22 po x 0.55 po
Servo-moteur .

Un servo-moteur est un type de moteur électrique. C’est un dispositif typiquement


utilisé en modélisme pour, par exemple, contrôler la direction d’une voiture
télécommandée. Sur un servo-moteur, l‘angle de l’axe reste fixé dans une position et peu
varier entre 0 et 180° en fonction du signal envoyé

2.1 Les types de servo-moteur

Il existe divers types de servomoteur, de taille, poids et couple (force) différents.la


photographie ci-dessous présente un servomoteur très classique en modélisme : le
futuba S3003. Un peu plus bas l’article, on utilisera un autre servomoteur,
communément appelé "servomoteur 9 grammes", par souci de consommation électrique

Servomoteur "9 grammes" Servomoteur Futuba S3003

2.2 Composition d’un servo-moteur

Le servomoteur est composé de plusieurs éléments visibles et invisible :


Un moteur à courant continu
Des engrenages pour former un réducteur (en plastique on en métal)
Un capteur de position de l’angle d’orientation de l’axe (un potentiomètre)
Une carte électronique pour le contrôle de la position de l’axe et le pilotage du moteur à
courant continu
Les fils, qui sont au nombre de trois
L’axe de rotation sur lequel est monté un accessoire en plastique ou en métal
Le boitier que le protège
Vue interne d’un servomoteur

2.3 Principe de fonctionnement d’un servo-moteur

La plupart des servomoteurs sont commandés par l’intermédiaire d’un câble électrique à
trois fils qui permet d’alimenter le moteur et de lui transmettre des consignes de
position sous forme d’un signal codé en largeur d’impulsion plus communément appelé
PWM. Cela signifie que c’est la durée des impulsions qui détermine l’angle absolu de l’axe de
sortie et donc la position du bras de commande du servomoteur. Le signal est répété
périodiquement, en général toutes les 20 millisecondes, ce qui permet à l’électronique
de contrôler et de corriger continuellement la position angulaire de l’axe de sortie, cette
dernière étant mesurée par le potentiomètre.
CHAPITRE III : SiMULATION
INTRODUCTION

Pour comprendre le fonctionnement d’un parking, il était indispensable pour nous de


connaître de quoi il est fait. Pour se faire nous nous sommes intéressés à comprendre et
expliquer le rôle de chacun des compartiments qui composent notre projet afin de réaliser
notre système intelligent pour la gestion d’un parking. Il est principalement fait en trois
parties : le hardware et le software.

1. schéma synoptique

2. Principe de Fonctionnement du système

Lorsqu’un véhicule se présente à l’entrée du parking un capteur TCRT5000 détecte sa


présence et un afficheur LCD lui affichera si il y à oui ou non de la place dans le parking.
Lorsque l’utilisateur aura présenté son badge RFID il lui sera affiché à l’écran la position et le
niveau auquel se trouve la place. Le portail du parking s’ouvre immédiatement, et lorsque le
véhicule ne sera plus à l’entrée du parking le portail se ferme après un petit temps de
sécurité grâce à un servomoteur. Un compteur permet d’incrémenter la place. Lorsque le
véhicule sera garé à l'intérieur.
Si le véhicule souhaite cette fois sortir, il se présente devant le portail, il sera détecté par le
capteur TCRT5000, et s’identifie grâce à sa carte RFID. Le compteur du parking sera alors
décrémenté. Le portail s’ouvrira et se refermera après la sortie du véhicule, l’afficheur
affiche la capacité actuelle.
Lorsqu’un véhicule se présente et que le parking est plein, l’afficheur affiche ‘FULL’ et l’accès
au stationnement lui est restreint.

3. Réalisation de parking intelligent

3.1. Tableau de Branchement

Composant PIN sur Arduino

Capteur d’entré 30

Capteur de Sorti 31

Servo Moteur D2

Place [1,2,3,4] [40,41,42,43]

RFID(...,SS_PIN, RST_PIN,...) (9,8)

LCD_I2C (SDA,SDL) 20,21

3.2. Le code Arduino utilisé

#include <Servo.h>
#include <Wire.h>
#include <SPI.h> // SPI
#include <MFRC522.h> // RFID

#define SS_PIN 9
#define RST_PIN 8
Servo myservo;

/*
PINOUT:
RC522 MODULE MEGA
SDA D9
SCK D52
MOSI D51
MISO D50
IRQ N/A
GND GND
RST D8
3.3V 3.3V
*/

// Déclaration
MFRC522 rfid(SS_PIN, RST_PIN);
/********************************/

/***************************************/
char Nom_Badge1="Dany";
int Id_Badge1[4] ={121,207,141,157};

char Nom_Badge2="Jean";
int Id_Badge2[4]= {138,221,214,129};

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

/********************************/
// Tableau contentent l'ID
int nuidPICC[4];
/*********************************/

const int InEntree = 30; // capteur d'entrée


const int InSortie = 31; // capteur de sortir

const char PWM_SERVO = 2; // servo moteur


int positionDuServo = 0;
int positionDuServo_Ouvert =44;

const int place[]={40,41,42,43};


byte val[4];

int count=0;
//int valin=0;
//int valout=0;
int pos=180;
int nbPlace= 4;
int y=0,i=0;

int badge_1[4]= {121,207,141,157};


int badge_2[4]= {138,221,214,129};

bool value_Sensor_Sortie;
bool value_Sensor_Entree;

void setup() {

// Init RS232
Serial.begin(9600);

// Init SPI bus


SPI.begin();

// Init MFRC522
rfid.PCD_Init();
/************************/

Serial.begin(9600);
pinMode (InEntree, INPUT);
pinMode (InSortie, INPUT);

for(int i=0;i<nbPlace;i++){
pinMode(place[i],INPUT);
}
myservo.attach(2);

myservo.write(0);
delay(15);

void loop() {

// count=0;
// for(y=0;y<nbPlace;y++){
// val[y]=digitalRead(place[y]);
// if(val[y]==1)
// {
// delay(10);
// Serial.println(y+1);
// Serial.println(" libre");
// }else if(val[y]==0)
// {
// delay(10);
// Serial.println(y+1);
// Serial.println(" occupé");
// count++;
// }
// }
// Serial.print("il y a ");
// Serial.print(count);
// Serial.print(" vehicule /3");
// delay(2000);
/***********************************************************************************/

value_Sensor_Entree = digitalRead(InEntree); // lis la presence a l'entrée


value_Sensor_Sortie = digitalRead(InSortie);// lis la presence a la sortie

// Initialisé la boucle si aucun badge n'est présent


if ( !rfid.PICC_IsNewCardPresent() || (value_Sensor_Entree == LOW && value_Sensor_Sortie == LOW))
return;

delay(100);

// Vérifier la présence d'un nouveau badge


if ( !rfid.PICC_ReadCardSerial())
return;

delay(100);

// Enregistrer l'ID du badge (4 octets)


for (byte i = 0; i < 4; i++)
{
nuidPICC[i] = rfid.uid.uidByte[i];
}
// Affichage de l'ID
Serial.println("Un badge est détecté");
Serial.println(" L'UID du tag est:");
for (byte i = 0; i < 4; i++)
{
Serial.print(nuidPICC[i],DEC);
Serial.print(" ");
}
Serial.println();

// compareer le bagde lu au badge 1

if (nuidPICC[0] == badge_1[0]
&& nuidPICC[1] == badge_1[1]
&& nuidPICC[2] == badge_1[2]
&& nuidPICC[3] == badge_1[3])
{
Serial.println("badge 1");

}
else if(nuidPICC[0] == badge_2[0]
&& nuidPICC[1] == badge_2[1]
&& nuidPICC[2] == badge_2[2]
&& nuidPICC[3] == badge_2[3])
{
Serial.println("badge 2");
}else{
Serial.println("badge no connu");
}

// Re-Init RFID
rfid.PICC_HaltA(); // Halt PICC
rfid.PCD_StopCrypto1(); // Stop encryption on PCD
/*********************************************************/

value_Sensor_Entree = digitalRead(InEntree); // lis la presence a l'entrée


value_Sensor_Sortie = digitalRead(InSortie);// lis la presence a la sortie

while(value_Sensor_Entree == HIGH )
{
myservo.write(90);
delay(2000);
value_Sensor_Entree = digitalRead(InEntree);
}

while(value_Sensor_Sortie == HIGH )
{
myservo.write(90);
delay(2000);
value_Sensor_Sortie = digitalRead(InSortie);
}
if (value_Sensor_Entree == LOW && value_Sensor_Sortie == LOW)
{
myservo.write(0);
delay(15);
}
/**********************************************************************************************/
}
Comment peut-on améliorer le système ?

l’ajout de plusieurs étages et plusieurs places de stationnement.


possibilité d’addition d’un système de sécurité incendie.
l’ajout d’un capteur LDR entre les allées qui a pour rôle de détecter la voiture mal
stationnée. l’ajout d’un contrôle GPS pour les directions sur rue.
Pour améliorer la sécurité de parking utilisé un capteur de flamme qui a pour rôle de
détecter le feu.

CONCLUSION

Dans ce chapitre, nous avons cité en détail les différentes étapes du


fonctionnement de notre Maquette d'un parking avec barrière automatique.
Notre objectif dans cette partie de ce travail était de détailler le
fonctionnement de notre maquette. Ensuite, la connexion et programmation
les composants principaux avec le microcontrôleur Arduino ; dans laquelle
nous avons testé l'entrée et sortie des véhicules compter et décompter les
nombres des véhicules avec affichage de toutes les séquences dans l'écran.
CONCLUSION GÉNÉRALE

Pour répondre aux problèmes de stationnement, le parking intelligent


représente une alternative au garage classique, il tire un grand profit de
l’espace disponible.
Le système de parking constitue la solution idéale pour automatiser le
processus d’entrée et de sortie.
La réalisation d'un parking intelligent est présentée dans notre travail.

Vous aimerez peut-être aussi