Académique Documents
Professionnel Documents
Culture Documents
À ma maman, qui m’a soutenu et encouragé durant ces années d’études. Qu’elle trouve ici le
témoignage de ma profonde reconnaissance .
À ma famille, qui a été mon roc et ma source de motivation. Leur amour et leur encouragement
ont été essentiels pour que je puisse mener à bien ce travail.
Omar El Asri
Remerciement
S’il est coutume en de telles circonstances d’adresser un remerciement au-delà d’une simple
tradition, nous tenons à remercier toutes les personnes qui ont contribué de près ou de loin à la
réalisation de ce travail.
Nos remerciements vont également à notre encadrant Mr. El Hanafi Ahmad , dont les conseils
avisés et l'expertise ont grandement contribué à la réussite de notre projet.
Nous souhaitons également adresser nos sincères remerciements à notre chef de filière, Mr. Fri,
pour son soutien constant tout au long de notre parcours académique. Sa présence
encourageante a été une source d'inspiration pour nous.
Nous désirons également exprimer nos reconnaissances à notre chef de département, Mr.
Derouiche pour son leadership éclairé et son engagement envers l'excellence académique. Ses
orientations stratégiques ont créé un environnement propice à notre développement profession
nel.
Nous souhaitons également exprimer notre sincère gratitude envers nos parents. Chaque
accomplissement a été motivé par leurs amour inconditionnel, leurs soutien inébranlable et
leurs encouragements. Notre plus grande source d'inspiration a été leur présence et leur soutien
inebranlable.
Résumé
La robotique est un domaine fascinant qui englobe l’ensemble des techniques permettant la conception et la
réalisation de machines automatiques ou de robots. Elle s’appuie sur des éléments essentiels tels que
les capteurs, les systèmes logiques basés sur des microprocesseurs et les actionneurs. Ces composants
interagissent pour permettre aux robots d’exécuter des tâches spécifiques, qu’il s’agisse d’assembler des
voitures dans une usine, de nettoyer nos maisons ou d’aider les chirurgiens lors d’opérations délicates. La
robotique est un domaine en constante évolution, où la créativité et l’intelligence artificielle se rejoignent pour
façonner notre avenir technologique.
Le concept de parking intelligent représente une avancée significative dans la gestion automatisée du
stationnement urbain. Ces systèmes, ancrés dans la technologie moderne, utilisent une gamme de dispositifs
tels que des capteurs, des applications mobiles, et des systèmes de guidage pour optimiser l’utilisation de
l’espace de stationnement. Le smart parking, aussi appelé parking connecté, tire parti de la technologie
pour optimiser la disponibilité des places et simplifier le processus de stationnement.
Ses origines remontent au début des années 2010. Grâce à des systèmes intelligents, le smart parking permet
notamment de localiser plus facilement des emplacements libres. Il améliore ainsi l’expérience des conducteurs
et la fluidité au sein du parking. Cette solution innovante renforce l’efficacité de la gestion des parkings et
s’adapte parfaitement aux besoins des villes modernes. En somme, le parking intelligent révolutionne la mobilité
urbaine en rendant le stationnement plus efficace et pratique.
Mots clés : la robotique , Eviteur d’obstacles, Arduino, Capteur, Robot, Electronique. Parking connecte, smart
parking
Table des matières
Table des matières
Introduction....................................................................................................................... 4
1 Description du système.............................................................................................8
2 Analyse fonctionnelle................................................................................................ 9
2.1 Graphe des interacteurs................................................................................................................ 9
2.2 Caractérisation des Fonctions de Service.................................................................................10
2.3 Diagramme FAST du robot..........................................................................................................11
2.4 Grafcet fonctionnel du robot......................................................................................................12
3 Conception du robot............................................................................................... 12
3.1 Choix de robot.............................................................................................................................. 12
3.2 Cahier de charge.............................................................................................................................. 15
Conclusion................................................................................................................................................ 17
Deuxième partie............................................................................................................... 18
3
4.2.4 Marquages au Sol :................................................................................................................. 19
4.3 Assemblage et Finition...................................................................................................................... 19
4.3.1 Construction :......................................................................................................................... 19
4.3.2 Finition :..................................................................................................................................20
4.4 Système de Parking Intelligent :......................................................................................................... 20
4.5 Communication et Interaction :..........................................................................................................20
Chapitre 3 :......................................................................................................................... 21
Chapitre 4 :......................................................................................................................... 35
6 Réalisation....................................................................................................................... 35
Introduction :............................................................................................................................................ 36
Définition du programme Arduino IDE :...................................................................................................36
D2FINITION DU ESP NOW :.......................................................................................................................38
Le code ESP32 utilisé:............................................................................................................................... 39
ESP32 Master :......................................................................................................................................... 40
Organigramme du nœud maitre (Parking) :....................................................................................40
CODE ESP32 master :.......................................................................................................................41
4
ESP32 Slave :............................................................................................................................................ 53
Organigramme du nœud esclave (Voiture) :...................................................................................53
CODE ESP SLAVE :............................................................................................................................ 53
Conclusion........................................................................................................................ 65
5
Table des figures
6
Introduction
Notre objectif est de créer un robot éviteur d’obstacles capable de naviguer dans un
parking, d’identifier les places libres et de guider les utilisateurs vers ces emplacements.
Pour ce faire, nous allons exploiter les capacités des cartes ESP32, des capteurs de distance
et des algorithmes de recherche, nous allons intéresser à un type bien précis des robots mo-
biles : le robot intelligent évitant les obstacles, un robot autonome qui évite les collisions
avec des obstacles inattendus, en ajoutant un parking intelligent connecter avec le robot par
le protocole ESPNOW pour le stationner tout en focalisant notre intérêt sur la question
suivante : comment serait-il possible de façonner un robot mobile évitant les obstacles qui
combine à la fois efficacité et rapidité avec un parking intelligent ?
Dans le but de répondre à cette problématique, nous allons dans un premier temps opter
à une étude fonctionnelle portant sur notre robot mobile, en commençant par une analyse
détaillée sur les différentes fonctions que doit satisfaire notre robot pour arriver enfin à
obtenir une conception claire et nette de notre robot puis on passe vers le parking
intelligent.
Ensuite, ayant déterminé les critères à satisfaire pour assurer un bon choix de
matériaux et composants utilisés pour sa confection, on va présenter les différents outils
technologiques en précisant leurs rôles puis leurs modes de fonctionnement.
7
Première partie
Analyse fonctionnelle
7
Introduction.
Le robot éviteur d’obstacle, dans n’importe quel domaine où il est utilisé, doit nécessairement être
accompagné d’une fiche technique qui décrira la totalité de ses fonctions et qui reflètera une image sur la
qualité et la prestation de ses services. Ceci dit, une analyse fonctionnelle devait être mise en place pour
exprimer le besoin de la construction du robot, définir les liens entre ses composants et rappeler les
principales fonctions qu’il doit satisfaire. Les outils utilisés pour cette analyse fonctionnelle sont le
diagramme pieuvre, le diagramme FAST et le GRAFCET.
8
Description du système
Notre robot éviteur d’obstacles utilise un capteur qui mesure la distance qui le sépare avec les déférents
objets qui l’entoure. L’information est traitée par un microcontrôleur. Le robot avance et lorsqu’il
rencontre un obstacle frontal, il s’arrête quelques instants, et il fait tourner le capteur respectivement
vers la droite puis vers la gauche puis se tourne vers la direction la plus sûr et il continue en mouvement
rectiligne.
Analyse fonctionnelle
1.1 Graphe des interacteurs
—
—
— FP : Fonctions Principales.FC :
— Fonctions Complémentaires ou Contraintes.
9
Fonction Description
FP1 Eviter les obstacles pour servir l’utilisateur
FP2 Capter l’existence d’un obstacle
FP3 Analyser les données fournies par le capteur
FC1 Utiliser une source d’énergie pour alimenter les composants de robot
FC2 Contrôler le déplacement du robot
FC3 Indiquer l’existence d’un obstacle
10
Figure 2 – Diagramme FAST du robot
11
1.4 Grafcet fonctionnel du robot
En s’appuyant sur les informations fournies charge ci-dessus, On a réalisé le grafcet de niveau 1 suivant :
d : la probabilité de trouver un obstacle à droite plus sûr que le trouver à gauche g : la probabilité de
trouver un obstacle à gauche plus sûr que le trouver à droite.
Donc :
2 Conception du robot
2.1 Choix de robot
Afin de bien assimiler la conception de notre robot, on va présenter les différentes configurations
possibles, on cite entre autres
12
Robot à 4 roues motrices et directionnelles
Avec 4 roues motrices jumelées 2 à 2 (côté gauche ensemble et droite ensemble), 2 moteurs de propulsions
(vitesse différentielles), 2 moteurs de direction un pour les roues avant et un pour les roues arrière. Le centre
de masse se trouve le plus près possible du centre du robot.
Choix de robot
Après la comparaison des différentes configurations possible on choisit le modèle Robot a 4 roues en se
basant sur ces caractéristiques :
Les robots à 4 roues offrent plusieurs avantages en matière de mobilité et de conception. Voici
quelques-uns d'entre eux :
Stabilité et équilibre : Les robots à 4 roues sont généralement plus stables que ceux à pattes
ou à chenilles. Ils peuvent se déplacer sans basculer facilement, ce qui est essentiel pour de
nombreuses applications.
Simplicité de conception : La configuration à 4 roues est relativement simple à concevoir et à
construire. Elle ne nécessite pas autant de mécanismes complexes que les robots à pattes.
13
Direction précise : Les roues permettent un contrôle précis de la direction. Les robots à 4
roues peuvent avancer, reculer et tourner avec une grande précision.
Vitesse et efficacité : Les roues offrent une bonne vitesse de déplacement, ce qui est
important pour les tâches qui nécessitent une couverture rapide d'une zone.
Adaptabilité : Les robots à 4 roues peuvent fonctionner sur divers types de surfaces, qu'il
s'agisse de sols lisses, de terrains accidentés ou de surfaces inégales.
Capacité de charge : Ils peuvent transporter des charges plus importantes que certains autres
types de robots, ce qui les rend utiles pour le transport de matériel ou d'équipements.
En résumé, les robots à 4 roues sont polyvalents, stables et relativement simples à concevoir,
ce qui en fait un choix populaire pour de nombreuses applications.
14
Figure 6 - robot
Notre robot éviteur d’obstacles est composée de 4 moteurs de propulsion et de direction couplés
à4
roues motrices . Les roues motrices sont disposées à l’arrière et en avant En résumé, les robots à 4
roues sont polyvalents, stables et relativement simples à concevoir, ce qui en fait un choix populaire
pour nombreuses applications, Le centre de masse se retrouve le plus près possible de l’axe des
roues motrices pour faciliter les différents mouvements. La base du robot tient généralement tous
les composants qui font fonctionner le robot. Par exemple, la base comporte des roues motrices,
ainsi que les batteries (qui peut être assez lourdes) et le système de contrôle.
15
Conclusion.
En plus de la fonction principale de ce robot qui est bien évidemment l’évitement d’obstacles, les
différentes études qu’on a menées nous ont aidés à conclure que ce qui fera différence entre un
robot et un autre est le temps que mettra chacun d’eux face à un obstacle. Dans cette première
partie, une large discussion s’est entretenue entre nous à propos de nombres de roues motrices
qu’on peut utiliser, leurs emplacements et aussi même le châssis qui devait les raccompagnés. En
effet, il devait être choisi de telles sortes de ne pas ralentir le robot lors de son déplacement sans
oublier de tenir compte à sa rigidité et sa ténacité.
Jusqu’à maintenant, on est tous convaincus que les choix que nous avons effectués sont les plus
convenables en mesure de rapidité et de maintenance. Arrivés à ce stade, il ne nous reste que
d’espérer que le choix des matériaux soit aussi décisif qu’on pourra de plus agir sur le temps de
réponse de notre robot .
16
Deuxiè me partie
4 É tudes de conception d’un parking
17
4.1 Introduction.
Dans le cadre de notre projet de fin d’études, nous avons entrepris la conception d’un parking en
bois. Notre objectif était de créer un espace de stationnement fonctionnel et esthétique, adapté aux
dimensions spécifiques de 170 cm x 160 cm. Voici comment nous avons abordé ce projet.
4.2.2 Dimensions :
o Notre parking en bois mesure 170 cm de longueur sur 160 cm de largeur.
o Ces dimensions ont été soigneusement choisies pour s’adapter à l’espace disponible et aux nos besoins.
18
4.3 Assemblage et Finition
4.3.1 Construction :
o Nous avons découpé les planches de bois aux dimensions requises.
o L’assemblage a été réalisé à l’aide de vis et de colle à bois.
4.3.2 Finition :
o Nous avons poncé les surfaces pour éliminer les échardes et obtenir une surface lisse.
o Une couche de vernis protecteur a été appliquée pour protéger le bois
des intempéries.
19
Chapitre 3 :
20
5.1 Introduction
Le choix des matériaux est une tâche fondamentale et très complexe, et pour cela
nous avons parlé dans ce chapitre à propos des matériaux utilisés dans la voiture
électrique,
Un moteur 4.5V est un type de moteur électrique qui fonctionne avec une tension
nominale de 4,5volts, Le chiffre 200 rpm indique la vitesse de rotation du moteur, mesurée en
tours par minute. Dans ce cas, le moteur tourne à 200 tours par minute, ce qui peut être ajusté
en fonction des besoins spécifiques de l’application.
21
Figure 9 - Moteur DC
2-Capteurs ultra-son :
22
Dans notre projet, nous avons utilisé le capteur ultrason pour permettre à notre robot de
détecter les obs- tacles environnants et d'ajuster son mouvement en conséquence. Le capteur
ultrason émet des ondes sonores à haute fréquence et mesure le temps nécessaire à leur
retour après avoir été réfléchies par un objet. Cette information nous permet de calculer la
distance entre le 40 robot et l'obstacle le plus proche. En intégrant cette fonctionnalité, notre
robot . Bien sûr, voici une version plus détaillée :
Grâce à ses capteurs sophistiqués, le système est capable de détecter les barrières présentes
dans le parking. Cette fonctionnalité permet au robot de réagir de manière autonome et
sécurisée en s'arrêtant automatique- ment dès qu'il détecte la présence d'une barrière,
contribuant ainsi à prévenir les collisions et assurant un fonctionnement efficace et
sécurisé dans l'environnement du parking.
23
24
3- Carte de puissance l298n
La carte de puissance L298N est un module électronique utilisé pour contrôler les moteurs
à courant continu dans divers appareils, tels que les robots, les voitures télécommandées et les
imprimantes 3D. Il dispose de deux ponts-H intégrés, ce qui permet de contrôler 4 moteurs
indépendamment. La vitesse des moteurs peut être ajustée grâce à des signaux de commande
PWM. La carte offre également une protection contre la surchauffe et les surintensités pour
éviter les dommages. Elle est compatible avec une gamme de tensions d'alimentation et peut
être utilisée avec des circuits logiques TTL et CMOS. En bref, la carte de puissance L298N est un
composant polyvalent pour le contrôle précis des moteurs à courant continu.
25
4-La carte ESP 32 :
La carte ESP32 est conçue pour offrir une plateforme de développement complète et
conviviale pour une variété d'applications, allant des projets amateurs aux produits
commerciaux. Voici quelques points clés à prendre en compte lors de l'introduction à cette
carte :
26
5 - La batterie 18650 :
Les batteries rechargeables 3,7V offrent une capacité énergétique de 18650 mWh, ce qui
les rend idéales pour alimenter une variété d'appareils électroniques. Avec leur tension 37
nominale de 3,7 volts, ces batteries fournissent une puissance stable et fiable pour une
utilisation prolongée. Grâce à leur conception rechargeable, elles peuvent être rechargées et
réutilisées à plusieurs reprises, ce qui les rend économiques et écologiques. Leur capacité
élevée de 18650 mWh leur permet de maintenir une autonomie prolongée, ce qui en fait un
choix idéal pour notre véhicule.
Figure 11 - La batterie.
Dans le contexte de notre robot, les batteries rechargeables 3,7V sont comme source d'alimentation
principale. Leur tension nominale de 3,7 volts les rend compatibles avec nos composants, y compris la
carte ESP32 et les capteurs utilisés dans ce robot. Avec leur capacité élevée de 18650 mWh, ces
batteries offrent une autonomie prolongée, ce qui est crucial pour assurer le fonctionnement continu
du robot
27
5.2 Les composants de parking :
5.2.1 Le cadre de parking :
Dans cette partie , nous allons détailler le cadre physique de ce parking, qui est essentiel pour
comprendre son fonctionnement.
Le parking autonome est divisé en trois sections égales, chaque section ayant une largeur de 30
cm. La largeur totale du parking est de 1,60 mètres (160 cm)ainsi que sa longueur est de 1,70
28
mètres. Cette division en trois parties permet une optimisation de l'espace et facilite la gestion
du flux de véhicules.
La première entrée du parking a une largeur de 30 cm, ce qui est suffisant pour permettre à un
véhicule de taille standard de s'engager en toute sécurité dans le parking. Cette entrée est
conçue pour faciliter l'accès des véhicules au système autonome de stationnement.
En résumé, le cadre de ce parking autonome robotisé est caractérisé par sa division en trois
parties égales, chaque partie ayant une largeur de 30 cm, et par une entrée initiale de 30 cm de
large.
Ce parking est aussi entouré par un entourage jaune qui mesure 7cm de sa largeur .
Ces dimensions ont été soigneusement conçues pour assurer un fonctionnement efficace et
sécurisé du système de stationnement autonome.
29
5.2.2 Capteur Infrarouge :
Le capteur d’évitement d’obstacles à capteur infrarouge IR est une solution peu coûteuse pour
la détection d’évitement pour la robotique, la voiture intelligente et d’autres utilisations
électroniques. Dans certains cas, ce capteur est utilisé en paire, avec un capteur placé avant et
un autre placé après une barrière ou un obstacle. Lorsque le robot ou la voiture approche de la
barrière, le premier capteur détecte sa présence et déclenche l'ouverture de la barrière. Une
fois que le véhicule a franchi la barrière, le second capteur détecte sa présence et déclenche
l'arrêt du véhicule, assurant ainsi un contrôle précis du mouvement et de la sécurité dans les
applications de stationnement ou de déplacement automatisé.
30
Principe de fonctionnement :
L'émetteur infrarouge envoie un signal infrarouge qui, en cas de surface réfléchissante (par
exemple de couleur blanche), rebondit dans certaines directions, y compris celle du récepteur
infrarouge qui capte le signal détectant l'objet.
Lorsque la surface est absorbante (par exemple de couleur noire), le signal IR n'est pas
réfléchi et l'objet ne peut pas être détecté par le capteur. Ce résultat se produirait
mêmesi l'objet est absent.
Caractéristiques Techniques :
31
Poids: 5g
Outre sa capacité à mesurer la distance, le capteur HW-511 est également utilisé pour
détecter la disponibilité des places de stationnement dans les parkings. En analysant les
zones où le faisceau infrarouge est intercepté, il peut déterminer si une place est
occupée ou libre, facilitant ainsi la gestion du stationnement et l'orientation des
conducteurs vers les places disponibles.
32
Figure 14 - Capteur HW-511
33
Chapitre 4 :
6 Réalisation
34
6.1 Introduction :
Dans le cadre de notre projet, le programme Arduino IDE a joué un rôle central. Cet outil de
développement intégré a été essentiel pour établir une connexion vitale entre la carte ESP32 du
robot et celle du parking. Grâce à la flexibilité et à la puissance de l'Arduino IDE, nous avons pu
concevoir et mettre en œuvre des programmes sur mesure, parfaitement adaptés aux
exigences spécifiques de notre projet.
Ce chapitre offre une plongée en profondeur dans les multiples programmes que nous avons
développés et déployés pour atteindre nos objectifs. Chaque aspect de ces programmes sera
minutieusement examiné, avec des explications détaillées sur leur fonctionnement et leur
contribution à la réalisation globale du projet. En mettant en évidence les choix de conception
et les défis rencontrés, nous fournirons une vue d'ensemble complète du processus de
développement logiciel qui a guidé notre démarche. Ensuite, nous procéderons à une analyse
des enseignements tirés de cette expérience, tout en envisageant les perspectives
d'amélioration et les pistes d'exploration futures.
Facilité d'utilisation : L'IDE Arduino offre une interface utilisateur intuitive, adaptée aux
débutants comme aux utilisateurs expérimentés. Cela facilite la prise en main et
l'apprentissage pour les étudiants qui travaillent sur leur projet de fin d'études.
Large compatibilité matérielle : Avec la prise en charge de nombreuses cartes Arduino et
microcontrôleurs compatibles, l'IDE Arduino offre aux étudiants une flexibilité pour
choisir le matériel le mieux adapté à leurs besoins de projet.
Bibliothèques et exemples intégrés : Parmi ces bibliothèques , on trouve : <esp_now.h>
35
<Wifi. H> <ESP32Servo.h>
L'IDE Arduino est livrée avec une collection de bibliothèques et d'exemples prédéfinis
qui couvrent un large éventail de fonctionnalités. Cela permet aux étudiants de gagner
du temps en utilisant des codes préexistants et en les adaptant à leurs besoins
spécifiques. Débogage simplifié : L'IDE Arduino offre des outils de débogage intégrés,
tels que la console série, qui permettent aux étudiants de surveiller les données en
temps réel et de diagnostiquer les problèmes éventuels dans leur code.
36
6.3 DEFINITION DU ESP NOW :
ESP32 NOW est un protocole de communication sans fil propriétaire développé par Espressif
System, conçu spécifiquement pour les microcontrôleurs de la famille ESP32. Il permet la
communication directe entre les modules ESP32 sans passer par un routeur Wifi ou une
connexion Bluetooth.
Contrairement au Wifi classique, ESP32 NOW fonctionne en utilisant une topologie de réseau
en étoile simple, où un nœud maître communique avec plusieurs nœuds esclaves. Cela le rend
particulièrement adapté aux applications où plusieurs dispositifs ESP32 doivent échanger des
données de manière simple et efficace, comme dans les systèmes domotiques , les
capteurs distribués ou les réseaux de capteurs IoT.
Les avantages clés d'ESP32 NOW incluent une latence réduite, une consommation d'énergie
plus faible par rapport aux connexions WiFi traditionnelles et une configuration simplifiée.
Cependant, comme il s'agit d'un protocole propriétaire, son utilisation limite l'interopérabilité
avec d'autres dispositifs et technologies de communication.
37
6.4 Le code ESP32 utilisé:
Nous avons utilisé ce code ESP32Now pour établir une connexion entre les deux cartes
ESP32. Plus précisément, la carte ESP32 du robot a été configurée en tant que “Slave”,
tandis que celle du parking a été désignée comme “Master” Ce choix de configuration a
permis une communication efficace et bidirectionnelle entre les deux dispositifs.
Nous allons diviser le code en deux parties distinctes : l'une dédiée à la carte ESP32
maître, que nous nommerons ESP code Master, et l'autre dédiée à la carte ESP32 Slave.
Cette segmentation nous permettra de mieux organiser notre développement et de nous
concentrer sur les fonctionnalités spécifiques de chaque carte.
38
Figure 17 - ESP32 NOW
39
6.5 ESP32 Master :
6.5.1 Organigramme du nœud maître (Parking) :
Debut
Inclure bibliothèques :
esp_now.h - WiFi.h - ESP32Servo.h
Initialisation :
Initialisation ESPNow
ScanForSlave()
Parking plein ?
manageSlave()
Non
Fermer Barrière
sendData()
Ouvrir Barrière
Oui
40
6.5.2 CODE ESP32 master :
Mais le rôle de la carte ESP32 Master ne s'arrête pas là. Elle établit également une connexion
avec la carte ESP32 esclave pour échanger des informations cruciales sur la
disponibilité des emplacements de stationnement. Cette connexion permet de déterminer
précisément quelles places sont libres parmi les trois capteurs de stationnement.
En cas de saturation, où les trois positions sont occupées, la barrière reste fermée, empêchant
tout autre véhicule d'entrer. Cette stratégie garantit un contrôle efficace de l'accès au
stationnement, optimisant ainsi son utilisation et minimisant les risques de congestion.
41
/**
Purpose: ESPNow Communication between a Master ESP32 and multiple ESP32 Slaves
Description: This sketch consists of the code for the Master module.
Flow: Master
Step 2 : Start scanning for Slave ESP32 (we have added a prefix of `slave` to the SSID of slave
for an easy setup)
Flow: Slave
Step 2 : Update the SSID of Slave with a prefix of `slave` Step 3 : Set
Slave in AP mode
Step 4 : Register for receive callback and wait for data Step 5 : Once
data arrives, print it in the serial monitor
42
Note: Master and Slave have been defined to easily understand the setup. Based on
the ESPNOW API, there is no concept of Master and Slave. Any devices can act
as master or salve.
*/
#include <esp_now.h>
#include <WiFi.h> #include
<ESP32Servo.h>
43
// Global copy of slave
#define NUMSLAVES 20
#define CHANNEL 1
#define PRINTSCANRESULTS 0
int Etat;
} struct_message;
WiFi.disconnect();
if (esp_now_init() == ESP_OK) {
Serial.println("ESPNow Init Success");
}
else {
// InitESPNow();
44
// or Simply Restart
ESP.restart();
}
//reset slaves
memset(slaves, 0, sizeof(slaves));
SlaveCnt = 0;
Serial.println("");
if (scanResults == 0) {
} else {
// Print SSID and RSSI for each device found String SSID =
WiFi.SSID(i);
int32_t RSSI = WiFi.RSSI(i);
String BSSIDstr = WiFi.BSSIDstr(i);
if (PRINTSCANRESULTS) {
delay(10);
45
// SSID of interest
Serial.print(")"); Serial.println("");
if (SlaveCnt > 0) {
} else {
// clean up ram
WiFi.scanDelete();
}
46
// Check if the slave is already paired with the master.
} else {
47
} else {
Serial.println("Not sure what happened");
}
delay(100);
} else {
//uint8_t data = 0;
// send data
void sendData() {
//data++;
48
Serial.print("Sending: ");
Serial.println(myData.Etat);
}
delay(100);
}
49
Serial.print("Last Packet Sent to: "); Serial.println(macStr); Serial.print("Last Packet Send
Status: "); Serial.println(status ==
pinMode(Entree_P, INPUT);
pinMode(P1, INPUT);
pinMode(P2, INPUT);
pinMode(P3, INPUT);
//pinMode(P4, INPUT);
Serial.println("ESPNow/Multi-Slave/Master Example");
void loop() {
50
myData.a[1] = digitalRead(P2);
myData.a[2] = digitalRead(P3);
myData.Etat = 1;
}
else
{
myData.Etat = 0;
}
ScanForSlave();
// `slave` is defined
sendData();
} else {
51
if ((P_Entree == 0) && (P_Presence == 1) && (myData.Etat==0) )
{
else if (P_Presence == 0)
{
//delay(500);
}
52
6.6 ESP32 Slave :
6.6.1 Organigramme du nœud esclave (Voiture) :
Debut
Inclure bibliothèques :
esp_now.h - WiFi.h
Initialisation :
Mode Wifi AP
Non
Distance < 28
delay (200)
Non
Connexion avec parking ?
OnDataRecv()
Parking plein ?
Non
P1 vide
P2 vide
MoveP1()
Oui
MoveP3()
MoveP2()
53
6.6.2 CODE ESP32 SLAVE:
Dans le code ESP32 SLAVE, nous avons intégré un programme dédié au contrôle des
mouvements des roues du robot. À l'intérieur de l'unité robotique, un capteur à ultrasons est
déployé pour détecter les obstacles, notamment la barrière. Dès qu'un obstacle est détecté, le
robot interrompt ses déplacements de manière automatique.
Une fois que la barrière est opérationnelle et ouverte, le robot reprend son avancée pour
atteindre la zone de stationnement. Lorsqu'il se trouve à proximité de la barrière ouverte, le
robot initie une connexion avec les cartes esclaves et la carte ESP32 Master.
54
#include <esp_now.h>
#include <WiFi.h>
#define CHANNEL 1
int a[4];
int Etat;
int Com;
} struct_message;
// Motor A
// Motor A
55
// Setting PWM properties const
int freq = 30000; const int
pwmChannel1 = 0;
int Ultrasonic_Ranging() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
int distance = pulseIn(echoPin, HIGH); // reading the duration of high level
else {
// InitESPNow();
// or Simply Restart
ESP.restart();
}
56
}
// config AP SSID
} else {
char macStr[18];
mac_addr[5]);
57
Serial.println(myData.a[3]);
Serial.print("Etat_Parking: ");
Serial.println(myData.Etat);
Serial.println(); Serial.println("");
}
void setup() {
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
//pinMode(enable2Pin, OUTPUT);
//ledcAttachPin(enable2Pin, pwmChannel2);
myData.Com = 0;
Serial.begin(115200);
// testing
Serial.print("Testing DC Motor...");
WiFi.mode(WIFI_AP);
58
// configure device AP mode configDeviceAP();
// This is the mac address of the Slave in AP Mode Serial.print("AP MAC: ");
Serial.println(WiFi.softAPmacAddress());
Stop(); dutyCycle =
210;
ledcWrite(pwmChannel1, dutyCycle);
}
void loop()
{
Serial.print("distance=");
Serial.println(distance);
59
//dutyCycle = 150;
//ledcWrite(pwmChannel1, dutyCycle);
//ledcWrite(pwmChannel2, dutyCycle);
m = 1;
esp_now_register_recv_cb(OnDataRecv);
}
moveP1();
m == 0;
myData.Com = 0;
Serial.println("Position 1");
}
moveP2();
m == 0;
myData.Com = 0;
Serial.println("Position 2");
}
60
else if ((myData.a[3] == 1) && (myData.Com == 1))
{
moveP3();
m == 0;
myData.Com = 0;
Serial.println("Position 3");
}
else if (m==0)
{
Avant_N(); delay(100);
}
digitalWrite(motor1Pin1, motor1State);
digitalWrite(motor1Pin2, !motor1State);
digitalWrite(motor2Pin1, motor1State);
digitalWrite(motor2Pin2, !motor1State);
delay(duration);
Stop();
}
61
void Avant(int duration) { move(HIGH,
HIGH, duration);
}
void Stop()
{
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
}
void Avant_N()
{
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
}
62
void moveP1()
{
Avant(1500); delay(12000);
Avant(2400);
}
void moveP2()
{
Avant(1300); delay(9000);
Right(1700); delay(300);
Avant(1000); delay(300);
Left(1400);
delay(300); Avant(2100);
}
void moveP3()
{
Avant(1300); delay(9000);
Right(1700); delay(300);
Avant(1800); delay(300);
Left(1400);
delay(300); Avant(2100);
63
En conclusion, ce chapitre a présenté la mise en œuvre réussie de notre projet grâce à l'utilisation des cartes
ESP32 Master et esclave, ainsi que du protocole ESP-NOW. Nous avons démontré comment ces composants
ont permis une coordination efficace de l'ouverture de la barrière en fonction de la détection du robot et de la
disponibilité des places de stationnement. Cette approche a abouti à la création d'un système de
stationnement intelligent et automatisé, améliorant l'efficacité et la sécurité de l'accès au stationnement. En
envisageant des pistes d'amélioration futures, nous sommes prêts à poursuivre le développement de notre
solution pour répondre aux besoins évolutifs de notre projet.
Conclusion
Le robot éviteur d'obstacles, par exemple, peut naviguer de manière autonome dans un
environnement, évitant les obstacles sur son chemin. Cela a des applications potentielles dans de
nombreux domaines, de la robotique domestique à l'exploration spatiale.
D'autre part, le parking intelligent utilise des capteurs de présence et une carte ESP32 pour gérer
efficacement l'espace de stationnement. Cela peut améliorer l'expérience utilisateur en réduisant le
temps passé à chercher une place de parking, et peut également contribuer à réduire l'empreinte
carbone en minimisant la conduite inutile.
Ces deux projets démontrent le potentiel de l'intelligence artificielle et de l'Internet des objets pour
résoudre des problèmes complexes. Ils soulignent également l'importance de l'innovation et de la
créativité dans le domaine de la technologie. En continuant à explorer et à développer ces
technologies, nous pouvons espérer réaliser des avancées significatives qui auront un impact positif
sur notre société.