Académique Documents
Professionnel Documents
Culture Documents
PFE_Controle-a-Distance_mourchidFouad&ibourkOuthman
PFE_Controle-a-Distance_mourchidFouad&ibourkOuthman
FACULTÉ POLYDISCIPLINAIRE
DÉPARTEMENT DE PHYSIQUE
- BÉNI MELLAL -
Option : Electronique
Introduction générale…………………………………………….………………………….................5
Dédicace……………………………………………………………….………………..........................6
Remerciement………………………………………………………….……………………..................7
Chapitre I : Les principes de base..………………………………….…………………….................8
I. Introduction.....................................................................................................................8
II. INTERNET des choses (IoT)………… ……………………….…………………..................8
1. définition………………………………………………….…………………................8
2. Marché et applications…………………………………………………..…...............9
III. Transmission des données sur les réseaux………………………….……….…..................9
1. Couches TCP/IP………………………………………………………...…...............10
1. Couche physique………………………………….……..…............10
2. Couche de liaison de données………………………..…..............10
3. Couche réseau…………………………………………..….............10
4. Couche transport…………………………………………..............11
5. Couche application………………………………………..............11
2. Les protocoles de communication…………………….…………………..............11
1. Protocoles d'accès…………………………………... .……..........11
2. Protocoles Applicatifs……………….….……..…….……............12
IV. Le protocole HTTP…………………………………………………….………….................12
1. Définition…………………………………………………………….…..…..............12
2. Communication entre navigateur et serveur…..…….……….…..….................12
3. Requête http………………………………………………………….…..….............13
4. Réponse http………………………………………………..……………….............13
V. Le protocole ETHERNET……………………………………………….….….…..............14
1. Définition…………………………………………….……………….….….............14
2. La façon de travailler……………………………………….……….…..…...........14
VI. Les différentes cartes utilise pour commande par INTERNET……….…..…..............14
1. Arduino ……………………………………………………………………..............14
2. La carte Ethernet……………………………………………………………..........15
VII. Les applications de contrôle à distance via Internet………………............................15
1. Application desktop ou mobile………………………………….…….................15
2. Site WEB……………………………………………………………………............15
3. Les concepts de base communs entre les applications et les sites WEB.........15
1. La page WEB………………………………………………………............16
2. HTML……………………………………………………………….............16
3. CSS………………………………………………………………….............17
4. JAVASCRIPT………………………………………………………............17
5. PHP…………………………………………………………….……...........17
6. MYSQL………………………………………………………….........…..…18
7. Base de données…………………………...…………….……............…18
8. CLIENT………………………………………………………….............…19
2
9. SERVER…………………………………………………………...............…19
10. Adresse IP…………………………………………………….……..............19
11. Adresse MAC……………………………………………………..............…19
12. Localhost………………………………………………….…………............19
VIII. Conclusion.....................................................................................................................19
I. Introduction...................................................................................................................29
II. La base de donnees.......................................................................................................29
III. Le site WEB comme plateforme de contrôle………………...….…….............…….....29
1. La page de contrôle…………………………………………...….…...…................30
1. Le code HTML, PHP et JavaScript…………........………......…30
2. Les fichiers externes………………….………………......….........31
Fichier : fonctions.php………….……………...….…..............…31
Fichier : connexion.php………………………..….…..............…32
3
Fichier : style.css et bootstrap.css………..…………...............…33
IV. Le programme pour l’Arduino…………………………………….……….........................33
1. Les fichiers PHP pour l’Arduino………………………………..…...................…33
1. Fichier : mettreAJourValeur.php…………….…...……..............33
2. Fichier : ApporterValeur.php…………..……….…......….......... 34
2. Le programme de l’Arduino IDE…………………………….….....……..............35
V. Conclusion....................................................................................................................38
Chapitre IV : Réalisation du projet…………………………………………..……........................39
I. Introduction...................................................................................................................39
II. Réalisation du montage ……………………............…………………………….…...……39
1. Circuit H-Bridge……………………...........…………………………….....……….39
2. Circuit pour le capteur DHT11………..............……………………....…..………39
3. Circuit de la lampe………………………………..............………………...………40
4. Circuit final………………………………………………............……….....……….41
III. Configurer le serveur dans localhost…………………………………................………...42
1. Démarrer le serveur avec l’application XAMPP………………….................…42
2. L’adresse de serveur…………………………………………………...............…...42
3. Création de la base de données……………………………………….…...............43
4. Mettre des fichiers sur le serveur……………………………………..…..............46
IV. Transmission et réception des données partielle dans localhost………....…...............47
1. Transmission et réception des données entre la page WEB et la base de
données dans localhost…………………………………………….........................47
2. Transmission et réception des données entre l’Arduino et la base de données
dans localhost ……………………………………….............................................49
V. Transmission et réception des données entre la page WEB et l’Arduino dans
localhost……………………………………………………………………….................……49
VI. Transmission et réception des données entre la page WEB et l’Arduino dans
host……………………………………………………………………………….….................50
VII. Conclusion………………………………………………………………………………..........53
Conclusion générale ………………………………........................…………………………………54
Bibliographie…...........................................………………….....………………………………….55
4
Introduction Générale
Le contrôle à distance réduit les efforts et le temps, ce qui est la meilleur solution
pour travailler dans des conditions pandémies qui paralysent le travail humain.
Nos recherches s’inscrivent dans cette croissance rapide de cet important secteur,
nous mentionnons les objectifs que nous aspirons à atteindre grâce à cette recherche.
5
Dédicace
Je dédie ce modeste travail et ma profonde gratitude à ma mère et mon père pour l’éducation
qu’ils m’ont prodigué ; avec tous les moyens et au prix de toutes les sacrifices qu’ils ont
consentis à mon égard, pour le sens du devoir qu’ils m’ont enseigné depuis mon enfance.
A la famille toute entière
A mon binôme
Ma gratitude la plus profonde à mes amis et frères présents, ou absents.
A tout le corps enseignant, administratif, et le personnel de la FPBM.
6
Remerciements
7
Chapitre I : Les principes de base
I. Introduction
Dans ce chapitre, nous en apprendrons davantage sur l’Internet des objets, les
protocoles responsables de l’envoi et de la réception des données, les différentes
applications de telecommande via Internet et la définition des langues communes à ces
applications
Selon une équipe de l'ETH de Zurich avec les smartphones puis un nombre croissant
d'objets connectés, en dix ans (2015-2025) 150 milliards d'objets devraient se
connecter entre eux, avec l'internet et avec plusieurs milliards de personnes.
8
2. Marché et applications
Le nombre de connexions entre des personnes et de choses et la quantité de données
générées étaient précédemment inimaginables. Une explosion du nombre de
périphériques avec un accès à la puissance de l'Internet (du nuage) permet de nouvelles
interactions intelligentes entre ces choses. On considère que l'ère de l'IoT a commencé à
partir du moment où le nombre d'objets connectés a dépassé le nombre d'êtres humains
sur le globe.
L'impact de l'IoT sur l'économie couvre aussi bien les industries que les marchés
verticaux. Il s'agit d'économiser des coûts d'exploitation grâce aux avantages de l'IoT
comme par exemple dans l'industrie des énergies fossiles.
Mais on retrouve l'IoT au quotidien dans la gestion des bâtiments (facility), dans la
surveillance physique, dans les loisirs, dans le secteur de la santé, dans la gestion des
modes de transport.
9
Principe de transmission des donnees sur le reseau
1. Couches TCP/IP
Couche physique
La couche physique décrit les caractéristiques physiques de la communication, comme
les conventions à propos de la nature du média utilisé pour les communications (les
câbles, les liens par fibre optique ou par radio), et tous les détails associés comme les
connecteurs, les types de codage ou de modulation, le niveau des signaux, les longueurs
d'onde, la synchronisation et les distances maximales.
Couche réseau
Dans sa définition d'origine, la couche de réseau résout le problème de l'acheminement
de paquets à travers un seul réseau. Exemples de protocoles de ce type : X.25, et le Initial
Connection Protocol d'ARPANET.
Lorsque deux terminaux communiquent entre eux via ce protocole, aucun chemin pour
le transfert des données n'est établi à l'avance : il est dit que le protocole est « non
orienté connexion ». Par opposition, pour un système comme le réseau téléphonique
commuté, le chemin par lequel va passer la voix (ou les données) est établi au
commencement de la connexion : le protocole est « orienté connexion ».
10
Couche transport
Les protocoles de la couche de transport peuvent résoudre des problèmes comme la
fiabilité des échanges (« est-ce que les données sont arrivées à destination ? ») et assurer
que les données arrivent dans l'ordre correct. Dans la suite de protocoles TCP/IP, les
protocoles de transport déterminent aussi à quelle application chaque paquet de
données doit être délivré.
TCP (protocole IP numéro 6) est un protocole de transport « fiable », orienté
connexion, qui fournit un flux d'octets fiable assurant l'arrivée des données sans
altérations et dans l'ordre, avec retransmission en cas de perte, et élimination des
données dupliquées. Il gère aussi les données « urgentes » qui doivent être traitées dans
le désordre (même si techniquement, elles ne sont pas émises hors bande).
TCP essaie de délivrer toutes les données correctement et en séquence — c'est son but
et son principal avantage sur UDP, même si ça peut être un désavantage pour des
applications de transfert ou de routage de flux en temps-réel, avec des taux de perte
élevées au niveau de la couche réseau.
Couche application
C'est dans la couche application que se situent la plupart des programmes réseau.
Ces programmes et les protocoles qu'ils utilisent incluent HTTP (World Wide Web),
FTP (transfert de fichiers), SMTP (messagerie), SSH (connexion à distance sécurisée),
DNS (recherche de correspondance entre noms et adresses IP) et beaucoup d'autres.
Les applications fonctionnent généralement au-dessus de TCP ou d'UDP, et sont
souvent associées à un port bien connu. Exemples : HTTP port TCP 80 ; …
11
Protocoles Applicatifs
12
3. Requête http
Une requête HTTP est un ensemble de lignes envoyé au serveur par le navigateur. Elle
comprend :
Une ligne de requête: c'est une ligne précisant le type de document demandé, la
méthode qui doit être appliquée, et la version du protocole utilisée. La ligne
comprend trois éléments devant être séparés par un espace :
La méthode
L'URL
La version du protocole utilisé par le client (généralement HTTP/1.0)
Les champs d'en-tête de la requête: il s'agit d'un ensemble de lignes facultatives
permettant de donner des informations supplémentaires sur la requête et/ou le
client (Navigateur, système d'exploitation, ...). Chacune de ces lignes est composée
d'un nom qualifiant le type d'en-tête, suivi de deux points (:) et de la valeur de l'en-
tête
Le corps de la requête: c'est un ensemble de lignes optionnelles devant être
séparées des lignes précédentes par une ligne vide et permettant par exemple un
envoi de données par une commande POST lors de l'envoi de données au serveur par
un formulaire
4. Réponse http
Une réponse HTTP est un ensemble de lignes envoyées au navigateur par le serveur.
Elle comprend :
gne précisant la version du protocole utilisé et l'état du traitement de la requête à
l'aide d'un code et d'un texte explicatif. La ligne comprend trois éléments devant être
séparés par un espace :
La version du protocole utilisé
Le code de statut
La signification du code
Les champs d'en-tête de la réponse: il s'agit d'un ensemble de lignes facultatives
permettant de donner des informations supplémentaires sur la réponse et/ou le
serveur. Chacune de ces lignes est composée d'un nom qualifiant le type d'en-tête,
suivi de deux points (:) et de la valeur de l'en-tête
Le corps de la réponse: il contient le document demandé
13
HTTP/1.0 200 OK
Date : Sat, 15 Jan 2000 14:37:12 GMT Server : Microsoft-IIS/2.0
Content-Type : text/HTML
Content-Length : 1245
Last-Modified : Fri, 14 Jan 2020 08:25: 13 GMT
V. Le protocole ETHERNET
1. Définition
Ethernet est un protocole de réseau local à commutation de paquets. C'est dans la couche
de liaison, et C'est une norme internationale : ISO/IEC 802-3.
2. Comment ça marche
Le protocole Ethernet spécifie un ensemble de règles pour permettre la
communication dans un réseau local.
Voici les grandes étapes d’une connexion Ethernet dans un réseau LAN :
Le périphérique doit comporter une carte réseau Ethernet avec une prise
Ethernet
on branche un câble RJ45 vers un routeur ou commutateur réseau (switch)
On fait de même avec les autres équipements que l’on souhaite connecter au
réseau LAN ou WAN
Ensuite on configure le protocole IP (adresse IP, passerelle, masque de sous-
réseau).
Les paquets IP sont encapsulés dans la trame Ethernet qui est diffusée sur le réseau.
Elle stocke la source et le destinataire à l’aide de l’adresse MAC.
1. Arduino
Arduino est une société de matériel et de logiciels open sources, un projet et une
communauté d’utilisateurs qui conçoit et fabrique des microcontrôleurs à carte unique
et des kits de microcontrôleurs pour la construction d’appareils numériques.
La carte Arduino est utilisée pour la programmer afin d’effectuer un ou plusieurs
services de routine récurrents au fil du temps, par exemple, contrôler la lampe externe
pour l’allumer pendant la nuit et éteignez automatiquement la lampe pendant la journée.
Arduino UNO
La carte Arduino Uno est une carte de microcontrôleur open sources basée sur le
microcontrôleur Microchip ATmega328P et développée par Arduino.cc.
14
2. La carte Ethernet
Utilisé pour active la connexion réseau (locale et Internet) à l’aide de la carte Ethernet
Arduino ou du Shield
Application Mobile
Une application mobile est un logiciel qui peut être exécute sur un appareil mobile ou
une tablette autonome pour effectuer une tache spécifique par un utilisateur final.
2. Le site WEB
Un site web, site Web ou simplement site, est un ensemble de pages web et de
ressources reliées par des hyperliens, défini et accessible par une adresse web, par
exemple le site web suivante :
15
1. La page WEB
La page web1, ou page Web2,1, est l'unité de consultation du World Wide Web. Ce
terme a une signification pratique ; il n'a pas de définition technique formelle. Les pages
web sont conçues pour être consultées avec un navigateur web3. Elles sont identifiées
par une adresse web.
Techniquement, une page web est généralement constituée d'un document rédigé en
Hypertext Markup Language (HTML) pour la structure de base, d'images numériques,
de feuilles de style en cascade (CSS) pour la mise en page, et de JavaScript pour la
programmation informatique des fonctionnalités plus avancées.
2. HTML
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>titre de la page web</title>
</head>
<body>
<h1>titre de la paragraphe</h1>
<p>Le HyperText Markup Language,
généralement abrégé HTML ou,
dans sa dernière version, HTML5,
est le langage de balisage conçu pour représenter les pages web.</p>
</body>
</html>
16
3. CSS
Les feuilles de style en cascade1, généralement appelées CSS de
l'anglais Cascading Style Sheets, forment un langage
informatique qui décrit la présentation des documents HTML et
XML. Les standards définissant CSS sont publiés par le World
Wide Web Consortium (W3C). Introduit au milieu des années
1990, CSS devient couramment utilisé dans la conception de sites
web et bien pris en charge par les navigateurs web dans les
années 2000.
Exemple :
1. <!DOCTYPE html>
2. <html lang="fr">
3. <head>
4. <meta charset="UTF-8">
5. <title>titre de la page web</title>
6. <style>
7. body {background-color: #9e9e9e70;}
8. h1 {
9. background-color: aliceblue;
10. padding: 0px 0px 0px 28px;
11. margin: 23px -12px 0px -12px;
12. }
13. </style>
14.
15. </head>
16. <body>
17. <h1>titre de la paragraphe</h1>
18. <p>Le HyperText Markup Language,
19. généralement abrégé HTML ou,
20. dans sa dernière version, HTML5,
21. est le langage de balisage conçu pour représenter les pages web.</p>
22. </body>
23. </html>
4. JAVASCRIPT
JavaScript est un langage de programmation de scripts
principalement employé dans les pages web interactives et à ce
titre est une partie essentielle des applications web. Avec les
langages HTML et CSS, JavaScript est au cœur des langages utilisés
par les développeurs web3. Une grande majorité des sites web
l'utilisent4, et la majorité des navigateurs web disposent d'un
moteur JavaScript5 pour l'interpréter.
5. PHP
17
impératif orienté objet.
PHP a permis de créer un grand nombre de sites web célèbres, comme Facebook et
Wikipédia. Il est considéré comme une des bases de la création de sites web dits
dynamiques mais également des applications web.
6. MYSQL
MySQL est un système de gestion de bases de
données relationnelles (SGBDR). Il est distribué sous
une double licence GPL et propriétaire. Il fait partie
des logiciels de gestion de base de données les plus
utilisés au monde3, autant par le grand public
(applications web principalement) que par des
professionnels, en concurrence avec Oracle,
PostgreSQL et Microsoft SQL Server.
Son nom vient du prénom de la fille du cocréateur
Michael Widenius, My (sv) (prononcer [my]). SQL
fait référence au Structured Query Language, le langage de requête utilisé.
MySQL AB a été acheté le 16 janvier 2008 par Sun Microsystems pour un milliard de
dollars américains4. En 2009, Sun Microsystems a été acquis par Oracle Corporation,
mettant entre les mains d'une même société les deux produits concurrents que sont
Oracle Database et MySQL. Ce rachat a été autorisé par la Commission européenne le 21
janvier 20105,6.
Depuis mai 2009, son créateur Michael Widenius a créé MariaDB (Maria est le prénom
de sa deuxième fille) pour continuer son développement en tant que projet Open Source.
7. Base de données
18
également des logiciels applicatifs, et un ensemble de règles relatives à l'accès et
l'utilisation des informations1.
Lorsque plusieurs objets nommés « bases de données » sont constitués sous forme de
collection, on parle alors d'une banque de données.
8. Client
En informatique, un client est un matériel informatique ou unlogiciel qui accède à un
service mis à disposition par un serveur dans le cadre du modèle client-serveur des
réseaux informatiques. Le serveur se trouve souvent (mais pas toujours) sur un autre
système informatique, auquel cas le client accède au service par le biais d’un réseau.
9. Serveur
En informatique, un serveur est un élément de matériel ou de logiciel informatique
(programme informatique) qui fournit des fonctionnalités pour d’autres programmes ou
dispositifs, appelés "clients".cette architecture est appeléé le modèle client-serveur. Les
serveurs peuvent fournir diverses fonctionnalités, souvent appelees "services", telles
que le partage de donnees ou de ressources entre plusieurs clients.
10.Adresse IP
Une adresse de protocole Internet (adresse IP) est une étiquette numérique telle que
192.168.1.1 qui est connectée à un réseau informatique qui utilise le protocole Internet
pour la communication. Une adresse IP remplit deux fonctions principales :
l’identification de l’interface réseau et l’adressage de localisation.
11.Adresse MAC
Une adresse de contrôle d’accès aux medias ("Media Access Control address (address
MAC)") est un identifiant unique attribué à un contrôler d’interface réseau (NIC) pour
être utilise comme adresse réseau dans les communications au sein d’un segment de
réseau. Cette utilisation est courante dans la plupart des technologies réseau IEEE 802, y
compris Ethernet, Wi-Fi et Bluetooth, les adresses MAC sont utilisées dans la sous-
couche de protocole de contrôle d’accès moyen de la couche de liaison de données.
12.Localhost
Localhost (hôte local), c’est un service fourni par un ordinateur connecte à un réseau
(Wi-Fi) liée avec l’internet. Ce service est permettre à divers périphériques (Ordinateurs,
Smartphones, Tablettes …) d’accéder à des fichiers sur le réseau (Wi-Fi), mais il n’est pas
accessible depuis l’extérieur du réseau (Wi-Fi). Contrairement à un host (hôte),
accessible de n’importe où dans le monde via internet.
VIII. Conclusion
Utilisant la page WEB pour contrôler a distance via Internet, cette page se caractérise
par le fait qu’elle fonctionne sur l’ordinateur et au smartphones. Au contraire, vous
devez dévleopper deux applications, une application pour le smartphone et une
application pour l’ordinateur.
19
Chapitre II : La partie matérielle
I. Introduction
On va parlé dans ce chapitre sur les matérielles utilise dans ce projets, et les
bibliothèques, les classes et les fonctions dont nous aurons besoin.
1. Introduction
Le mot "UNO" signifie "un" en italien et a été choisi pour marquer la sortie initiale
d’Arduino Software.
La carte Arduino Uno est une carte de microcontrôleur open sources basée sur le
microcontrôleur Microchip ATmega328P, est une carte programmable, et développée
par Arduino.cc.
Parmi les langues de programmation de cette carte : Langage C
Pour programme cette carte, tu as besoin l’application ARDUINO IDE, un fichier des
codes dans cette application est constitué par trois partie, première partie est la partie
des définitions (bibliothèques, variables ….), deuxième partie est la fonction setup(),
cette fonction est appelée au démarrage d'une esquisse. Utilisez-le pour initialiser des
variables, épingler des modes, commencer à utiliser des bibliothèques, etc. La fonction
setup() ne s'exécutera qu'une seule fois, après chaque mise sous tension ou
20
réinitialisation de la carte Arduino., troisième partie est Après avoir créé une fonction
setup(), qui initialise et définit les valeurs initiales, la fonction loop() fait exactement ce
que son nom suggère, et boucle consécutivement, permettant à votre programme de
changer et de répondre. Utilisez-le pour contrôler activement la carte Arduino.
2. Spécifications techniques
3. Les fonctions
Il y a plusieurs bibliothèques et beaucoup des fonctions, on définit seulement les
fonctions qui utilisée dans ce projet.
21
Si la branche ( the pin) a été configurée en OUTPUT (sortie) avec pinMode(pin, mode),
sa tension sera définie sur la valeur correspondante : 5v (ou 3.3V) pour HIGH, 0V (mise a
la terre) pour LOW.
delay(ms)
Met le programme en pause pendant la durée (en millisecondes) spécifiée comme
paramètre.
analogWrite(pin, value)
PMW signifie Pulse Width Modulation et c’est une technique utilisée pour contrôler la
luminosité de la LED, contrôler la vitesse du moteur à courant continu, contrôler un
servomoteur ou où vous devez obtenir une sortie analogique avec des moyens
numériques.
L'IDE Arduino a une fonction intégrée "analogWrite (pin, value)" qui peut être utilisée
pour générer un signal PWM. La fréquence de ce signal généré pour la plupart des
broches sera d'environ 490 Hz et nous pouvons donner la valeur de 0 à 255 en utilisant
cette fonction.
analogWrite(pin, 0) signifie un signal de rapport cyclique de 0 %.
Le période T
Le période T
Le période T
Le période T
Le période T
22
Sur Arduino Uno, les broches PWM sont 3, 5, 6, 9, 10 et 11. La fréquence du signal
PWM sur les broches 5 et 6 sera d'environ 980Hz et sur les autres broches sera de
490Hz. Les broches PWM sont étiquetées avec le signe ~.
1. Introduction
Le module Arduino Ethernet Shield permet à une carte Arduino UNO de se connecter à
internet. Basé sur le composant Wiznet 5100, il est équipé d'un support pour carte
mémoire SD, d'un connecteur RJ45, d'un bouton reset et de LEDs d'indication de statut,
et communique via le bus SPI.
2. Les bibliothèques
Permet la connexion réseau (locale et Internet) à l'aide de la carte ou du bouclier
Ethernet Arduino.
Avec cette bibliothèque, vous pouvez utiliser l'Ethernet Arduino (shield ou board) pour
vous connecter à Internet. La bibliothèque fournit à la fois des fonctionnalités client et
serveur. La bibliothèque vous permet de vous connecter à un réseau local également
avec DHCP et de résoudre DNS.
Pour utiliser cette bibliothèque
#include <SPI.h> #include <Ethernet.h>
23
1. Usage
Cette bibliothèque est conçue pour fonctionner avec Arduino Ethernet Shield, Arduino
Ethernet Shield 2, Leonardo Ethernet et tout autre appareil basé sur
W5100/W5200/W5500. La bibliothèque permet à une carte Arduino de se connecter à
Internet. La carte peut servir soit de serveur acceptant les connexions entrantes, soit de
client effectuant les connexions sortantes. La bibliothèque prend en charge jusqu'à huit
(W5100 et les cartes avec <= 2 Ko de SRAM sont limitées à quatre) connexions
simultanées (entrantes, sortantes ou une combinaison).
La carte Arduino communique avec le shield via le bus SPI. C'est sur les broches
numériques 11, 12 et 13 sur l'Uno et les broches 50, 51 et 52 sur le Mega. Sur les deux
cartes, la broche 10 est utilisée comme SS. Sur le Mega, la broche matérielle SS, 53, n'est
pas utilisée pour sélectionner la puce du contrôleur Ethernet, mais elle doit être
conservée comme sortie ou l'interface SPI ne fonctionnera pas.
2. Client Class
a. EthernetClient()
Crée un client qui peut se connecter à une adresse IP et un port Internet spécifiés
(définis dans la fonction client.connect()).
b. Ethernet.begin()
initialise la bibliothèque Ethernet et les paramètres réseau.
c. client.connect()
Se connecte à une adresse IP et un port spécifiés. La valeur de retour indique le succès
ou l'échec. Prend également en charge les recherches DNS lors de l'utilisation d'un nom
de domaine.
Syntaxe : client.connect(ip, port) ou client.connect(URL, port)
d. client.available()
Renvoie le nombre d'octets disponibles pour la lecture (c'est-à-dire la quantité de
données écrites sur le client par le serveur auquel il est connecté).
e. client.read()
Lit le prochain octet reçu du serveur auquel le client est connecté (après le dernier
appel à read()).
24
f. client.stop()
Déconnectez-vous du serveur.
g. client.print()
Imprimer des données sur le serveur auquel un client est connecté. Imprime les
nombres sous la forme d'une séquence de chiffres, chacun étant un caractère ASCII (par
exemple, le nombre 123 est envoyé sous la forme des trois caractères " 1 ", " 2 ", " 3 ").
Syntaxe : client.print(données)
h. IPAddress()
Définit une adresse IP. Il peut être utilisé pour déclarer des adresses locales et
distantes.
2. Relais
3. Le capteur DHT11
1. Introduction
Ce capteur de température et d'humidité fournit une sortie numérique pré-calibrée. Un
élément de capteur capacitif unique mesure l'humidité relative et la température est
25
mesurée par une thermistance à coefficient de température négatif (NTC). Il a une
excellente fiabilité et une stabilité à long terme. Veuillez noter que ce capteur ne
fonctionnera pas pour des températures inférieures à 0 degré.
VCC
OUT NCGND
Capteur DHT11
2. La bibliothèque
La bibliothèque : "DHT.h"
Bibliothèque Arduino pour DHT11, DHT22, etc. Capteur de température et d'humidité
DHT dht(pin, DHT11) :
dht : Définition de la branche pour lire les données, et DHT11 est le type de senseur
DHT.
dht.readTemperature() : qui renvoient la valeur de la température
dht.readHumidity() : qui renvoient la valeur d’humidité
4. Le Moteur
26
Voltage : 3–6V Vitesse : 5000 RPM ( 3 V ) et 10000 RPM ( 6 V )
Courant : 0,3 A Poids : 14 g
V. Conclusion
Grâce à ce chapitre, nous avons appris les matérielles que nous utiliserons dans ce
projet, et nous avons appris les outils de ces matérielles.
28
Chapitre III : La partie logicielle
I. Introduction
Dans ce chapitre, nous parlerons sur des fichiers que nous avons utilisés pour la page
de contrôl, et le code pour l’Arduino IDE, et les fichiers extérieur.
On utilisée l’application XAMPP pour obtenue un serveur, pour crée une base de
données sur localhost.
On crée une base de données de nom ethernet, et on crée un tableau de nom element
dans la base de données ethernet.
Le tableau element initialement est sous la forme suivante.
Id nom Valeur
1 lampe 0
2 vitesse 0
3 temperature 0
4 humidite 0
30
39. class="slider" id="myRange">
40. <span id="demo"></span><br>
41. <input class="btn" type="submit">
42. <script>
43. var slider = document.getElementById("myRange");
44. var output = document.getElementById("demo");
45. output.innerHTML = slider.value;
46. slider.oninput = function() {
47. if(slider.value > 0){
48. output.innerHTML = this.value + " RPM sens direct";
49. }else{
50. output.innerHTML = this.value*(-1) + " RPM sens inverse";
51. }
52. }
53. </script>
54. </form>
55. <div class="table">
56. <table>
57. <tr>
58. <td>La température</td>
59. <td>L'humidité</td>
60. </tr>
61. <tr>
62. <td><?php echo apporterValeur("temperature"); ?> <sup>°C</sup></td>
63. <td><?php echo apporterValeur("humidite"); ?> <sup>%</sup></</td>
64. </tr>
65. </table>
66. </div><br><br><br><br><br><footer>Copy right © MOURCHID FOUAD</footer>
67. </div>
68. <?php
69. if(isset($_POST['led'])){
70. mettreAJour("led", $_POST['led']);
71. header("Refresh:0");}
72. if(isset($_POST['vitesse'])){
73. mettreAJour("vitesse", $_POST['vitesse']);
74. header("Refresh:0");}?>
75. </body></html>
Fichier : fonctions.php
Ce fichier contient la définition de deux fonctions PHP, l’une pour mettre à jour les
données de la base de données, et l’autre pour apporter les données de la base de
données.
31
La fonction de mise à jour les données est appelé miseAjour(nom, valeur) ; allez dans
la base de données, et changez la valeur du nom en nouvelle valeur, et la fonction pour
apporter les données est appelé apporterValeur(nom) ; apporter la valeur du nom
dans la base de données.
1. <?php
2. function aporterValeur($nom){
3.
4. include 'connexion.php';
5.
6. $sql = "SELECT valeur FROM element WHERE nom='$nom'";
7. $result = mysqli_query($conn, $sql);
8. if (mysqli_num_rows($result) > 0) {
9. // écrire la valeur
10. while($row = mysqli_fetch_assoc($result)) {
11. return $row["valeur"];
12. }
13. } else {
14. return 0 ;
15. }
16. $conn->close();
17.}
18.// mise à jour les données
19.function miseAJour($nom, $valeur){
20.
21. include 'connexion.php';
22.
23. $sql2 = "UPDATE element SET valeur='$valeur' WHERE nom='$nom'";
24. if ($conn->query($sql2) === TRUE) {
25. return 1;
26. } else {
27. return 0;
28. }
29. // close connection
30. $conn->close();
31.} ?>
Fichier : connexion.php
On utilisée ce fichier pour crée une liaison entre le serveur et la base de données, pour
apporter ou mise a jour les données dans la base de donnes
2. <?php
3. $servername = "localhost";
4. $username = "root";
5. $password = "";
6. $dbname = "ethernet";
7. // Create connection
8. $conn = new mysqli($servername, $username, $password, $dbname);
32
9. // Check connection
10. if ($conn->connect_error) {
11. die("Connection failed: " . $conn->connect_error);
12. }
13. ?>
Le fichier bootstrap.css :
1. .slider { -webkit-appearance: none; width: 50%; height: 15px;
2. border-radius: 5px; background: #d3d3d3; outline: none; opacity: 0.7;
3. -webkit-transition: .2s; transition: opacity .2s;}
4. .slider:hover {opacity: 1;}
5. .slider::-webkit-slider-thumb {-webkit-appearance: none;
6. appearance: none;width: 25px;height: 25px;border-radius: 50%;
7. background: #04AA6D;cursor: pointer;}
8. .slider::-moz-range-thumb {width: 25px;height: 25px;border-radius: 50%;
9. background: #04AA6D; cursor: pointer;}
33
2. <?php
3. function mettreAJour($nom, $valeur){
4.
5. include 'connexion.php';
6.
7. $sql2 = "UPDATE element SET valeur='$valeur' WHERE nom='$nom'";
8. if ($conn->query($sql2) === TRUE) {
9. //echo "Record updated successfully";
10. return "Enregistrement mis à jour avec succès";
11. } else {
12. echo "Error updating record: ". $conn->error;
13. return 0;
14. }
15. // close connection
16. $conn->close();
17. }
18. mettreAJour("temperature", $_GET['temperature']);
19. mettreAJour("humidite", $_GET['humidite']);
20. ?>
Fichier : apporterValeur.php
L’ARDUINO est utilisé ce fichier pour apporte les valeurs de la lampe et de la vitesse du
tableau de nom element.
1. <?php
2.
3. include 'connexion.php';
4.
5. $sql = "SELECT valeur FROM element WHERE id=$id";
6. $result = $conn->query($sql);
7.
8. if ($result->num_rows > 0) {
9. // output data of each row
10. while($row = $result->fetch_assoc()) {
11. $nbr = $row["valeur"] ;
12. }
13. } else {
14. echo "0 results";
15. }
16. echo "valeur=" . $nbr.";";
17. $conn->close();
18. ?>
34
2. Le programme de l’ARDUINO IDE
Dans le programme de l’ARDUINO IDE, on utilise plusieurs fonctions, pour faciliter la
lire du programme.
Premièrement, on définies les bibliothèques qui déjà on a vue dans la chapitre derniers.
#include "DHT.h"
#include <SPI.h>
#include <Ethernet.h>
EthernetClient client;
float temperature;
float humidite;
String valeur;
String chaineDeCaract;
boolean fin = false;
void setup() {
Serial.begin(9600);
Serial.println("Serial connect.");
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet");
for(;;)
;
}
Serial.print("Adresse IP : ");
Serial.println(Ethernet.localIP());
dht.begin();
delay(1000);
pinMode(7, OUTPUT);
35
pinMode(4, OUTPUT);
pinMode(2, OUTPUT);
void loop() {
temperature = dht.readTemperature();
humidite = dht.readHumidity();
Serial.print("temperature : ");
Serial.print(temperature);
Serial.print(" Humidite : ");
Serial.println(humidite);
envoyerDonnee(temperature, humidite);
delay(300);
lampeStat(apporterDonnee("lampe"));
vitesseValeur(apporterDonnee("vitesse"));
} else {
Serial.println("Echec de la connexion au serveur");
client.stop();
}
delay(300);
}
36
id = 2;
}
if (client.connect(server, 80)) {
client.print("GET /pfe/arduinoFichiers/ApporterValeur.php?id=");
client.print(id);
client.println(" HTTP/1.1");
client.println("Host: 192.168.8.100");
client.println("User-Agent: arduino-ethernet");
client.println("Connection: close");
client.println();
}
else {
Serial.println("Echec de la connexion au serveur");
client.stop();
}
delay(300);
while (client.available()) {
char c = client.read();
chaineDeCaract += c;
fin = true;
}
if (fin) {
int longitud = chaineDeCaract.length();
int posicion = chaineDeCaract.indexOf("valeur=");
valeur = "";
for (int i = posicion + 7; i < longitud; i ++) {
if (chaineDeCaract[i] == ';') i = longitud;
else valeur += chaineDeCaract[i];
}
fin = false;
client.stop();
}
chaineDeCaract = "";
return valeur;
}
37
}
}
analogWrite(5, 0);
analogWrite(6, 0);
digitalWrite(2, LOW);
digitalWrite(4, HIGH);
Serial.println("vitesse : NULLE");
RPMInt *= -1 ;
double voltage = (5 * RPMInt) / (10000);
int analog = (255 * voltage) / 5;
analogWrite(6, analog);
Serial.print("vitesse : ");
Serial.print(RPMInt);
Serial.println(" RPM dans le sens inverse");
} else {
analogWrite(6, 0);
digitalWrite(4, LOW);
delay(1000);
digitalWrite(2, HIGH);
analogWrite(5, analog);
Serial.print("vitesse : ");
Serial.print(RPMInt);
Serial.println(" RPM dans le sens direct");
}
}
V. Conclusion
Ces fichiers peuvent être programmés pour ajouter d’autres éléments pour le contrôle
à distance via Internet.
38
Chapitre IV : Réalisation du projet
I. Introduction
Dans ce chapitre, nous parlerons de la façon de créer la base de données pour ce projet, et sur
la façon de télécharger des fichiers sur localhost, et sur la façon d’accéder à la page de contrôle
dans localhost, et nous parlerons de la façon d’obtenir un host pour les fichiers dans localhost.
6V 6V
GND GND
39
Le circuit de capteur DHT11 avec les lignes communes Le circuit de capteur DHT11
En rouge : 5V, en bleu : GND, en vert sortie de données et en orange, il n’est pas utilisé.
3. Circuit de la lampe.
La lampe est liée avec l’intercepteur électromécanique ou bien relais.
Coupez un fil et reliée à relais 1 Channel, le circuit de relais a une tête qui peut être reliée
à une source de 220V, et a trois branches, deux branches de l’alimentation de relais, et
l’autre pour le contrôle.
4. Le circuit final.
Selon schéma "Schéma circuit d’Arduino liee avec la carte Ethernet Shield W5100" et
les circuits qu’on déja vu, nous otenons le circuit suivant.
41
III. Configurer le serveur dans localhost
2. L’adresse de serveur
L’adresse de serveur est l’adresse de l’ordinateur, pour connaitre
l’adresse de l’ordinateur, nous suivons les étapes suivantes.
Configuration IP de Windows 42
3. Création de la base de données
Ouvrez le navigateur et entrez le lien suivant : localhost/phpmyadmin/
43
D’après, entrez les titres des colonnes, avec les caractéristiques de chaque titre.
Titre "id" de type INT (entier) et crochez sur PRIMARY.
Titre "nom" de type VARCHAR (chaine de caractères) et écrivez le nombre maximal de
caractères des lignes de cette colonne.
Titre "valeur" de type VARCHAR (chaine de caractères) et écrivez le nombre maximal
de caractères des lignes de cette colonne.
Ensuite, appuyez sur "Enregistrer".
D’après, appuyez sur "SQL", et ajoutez les codes suivants pour remplir le tableau du nom
"element".
44
Ensuite, appuyez sur "Exécuter", d’après la fenêtre suivante.
45
4. Mettre les fichiers sur le serveur
Ensuite ajoutez dans le dossier de nom " arduinoFichiers " les fichiers
(apporterValeur.php, mettreAJourValeur.php et connexion.php) que nous avons créés
précédemment.
46
Mettre les fichiers dans le dossier arduinoFichiers
D’après, ouvrez le navigateur et entrez l’adresse du serveur sous forme
http://192.168.1.108/pfe/ pageDeControle /index.php pour ouvrir la page de contrôle.
La page de contrôle
47
Deuxièmement, ouvrez la page de contrôle, et la page du tableau "element" qui est
dans la base de données "ethernet", et d’après varier la valeur de la température et de
l’humidité dans le tableau "element", par exemple modifier la valeur de la température,
c.-à-d. appuyez sur "Editer".
Et la même pour varier la valeur d’humidité vers 29, ensuite allez à la page de contrôle
et actualisez cette page, et remarquez le changement des valeurs de température et
d’humidité dans la page de contrôle, et dans le tableau "element" qui est dans la base de
données "ethernet".
48
2. Transmission et réception des données entre l’Arduino et la base
de données dans localhost.
Premièrement, ajoutez le code de l’arduino dont nous avons parlé à la page 38 à
l’application Arduino IDE, et après avoir connecté arduino à l’ordinateur, et choisis le
port, et appuyez sur Vérifier et ensuite, appuyez sur Téléverser, et après liée
ETHERNET SHIELD W5100 avec ARDUINO UNO en parallèle, et branchez les circuits
partielles à l’ETHERNET SHIELD W5100.
Deuxièmement, remarquez dans le tableau "element", qui est dans la base de données
"ethernet", la variation de la valeur de la température et de l’humidite. Ensuite, modifiez
la valeur de la lampe vers 1, et la valeur de la vitesse de vers 10000, et remarquez dans
le montage l’allumage de la lampe et le travail du moteur.
Ajoutez le code de l’arduino dont nous avons parlé à la page 38 à l’application Arduino
IDE, et après avoir connecté Arduino à l’ordinateur, et choisis le port, et appuyez sur
Vérifier et ensuite, appuyez sur Téléverser, et après liée ETHERNET SHIELD W5100
avec ARDUINO UNO en parallèle, et branchez les circuits partielles à l’ETHERNET
SHIELD W5100.
D’après, contrôlez dans la même réseau (Wi-Fi), l’état de la lampe et la valeur de la
vitesse par la page WEB via Internet, mais avec localhost.
49
VI. Transmission et réception des données entre la page WEB et l’Arduino
dans host.
D’après, copiez le lien (host) qui existe avant de "Forwarding", coloré en blanc dans
l’image suivante.
51
Le lien host de localhost
D’après, allez dans le navigateur et collez le lien, et ajoutez à ce lien la partie "/
pfe/pageDeControle/index.php", comme sur la photo suivante.
D’après, appuyez sur "Visit Site", et puis la page de contrôle appairait comme suit.
52
La page de contrôle dans host
Cette page de contrôle est fonctionné tant que l’ordinateur exécutant le localhost
(l’hôte local) est connecté à Internet.
VII. Conclusion
Et il se caractérise par une réponse rapide, par exemple dans cette réalisation,
l’Arduino est envoyé la valeur de la température et d’humidité, et il est apporté la valeur
de la lampe et de la vitesse, dans une répétition de la fonction loop(), avec décalage
horaire de 3s entre l’envoi de la valeur de la température et de la valeur d’humidité et
l’envoi suivant, et avec un décalage de 1s entre l’envoi et la réception des données, ou
bien entre la réception et la réception suivant des données.
53
Conclusion générale
Cette recherche peut être développée et son temps de réponse peut être
réduit, et peut être utilisé pour contrôler les drones, les grandes pompes,
les gros véhicules et divers appareils électriques et systèmes mécaniques... .
54
Bibliographie
55