Académique Documents
Professionnel Documents
Culture Documents
RAPPORT DE PROJET
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 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.
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
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 ».
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.
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
❑ 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. 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.
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 :
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.
Broches analogiques
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.
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 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
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 .
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
1. schéma synoptique
Capteur d’entré 30
Capteur de Sorti 31
Servo Moteur D2
#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];
/*********************************/
int count=0;
//int valin=0;
//int valout=0;
int pos=180;
int nbPlace= 4;
int y=0,i=0;
bool value_Sensor_Sortie;
bool value_Sensor_Entree;
void setup() {
// Init RS232
Serial.begin(9600);
// 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);
/***********************************************************************************/
delay(100);
delay(100);
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
/*********************************************************/
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 ?
CONCLUSION