0% ont trouvé ce document utile (0 vote)
213 vues52 pages

Programmation ESP32 pour Projets Robotique

Ce document présente une initiation à la robotique avec la carte NodeMCU ESP32, incluant des projets pratiques tels que des systèmes d'éclairage public, intelligent, d'alarme et de passage à niveau. Chaque projet est accompagné d'activités de programmation en MicroPython pour contrôler divers capteurs et modules. Le document fournit également des instructions détaillées sur l'installation, le câblage et la programmation des composants associés.

Transféré par

Abdelkader Barraj
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
213 vues52 pages

Programmation ESP32 pour Projets Robotique

Ce document présente une initiation à la robotique avec la carte NodeMCU ESP32, incluant des projets pratiques tels que des systèmes d'éclairage public, intelligent, d'alarme et de passage à niveau. Chaque projet est accompagné d'activités de programmation en MicroPython pour contrôler divers capteurs et modules. Le document fournit également des instructions détaillées sur l'installation, le câblage et la programmation des composants associés.

Transféré par

Abdelkader Barraj
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

Initiation à la

Robotique
ESP32
Plan:
Architecture de la carte NodeMCU ESP32
1 et Presentation Kit Robotique
Projet 1 : Système d’éclairage public
2 Projet 2 : Système d’éclairage intelligent
3
4 Projet 3 : Système d’alarme
Animée par : Mr

5 Projet 4 : passage a niveau Boudaya Wafi


Plan de la formation
Architecture de la carte PROJET 1 : Système

1 NodeMCU ESP32 et
Presentation Kit 3 d’éclairage intelligent

Robotique

2 Système d’éclairage
public 4 PROJET 2 : Système
d’alarme
1
Présentation Kit
Robotique
PROJET 1 : Système
d’éclairage intelligent
Tache 1
Caractéristiques ESP WROOM-32
Tension non Régulée (5-
12V) GND LED POWER LED intégrée GPIO
(5v) in/out 02

Bouton Tension Régulée


Réinitialisation (3,3v) in/out

Connecteur
Micro-USB Régulateur
de tension 3.3V

Bouton
Flashage
Convertisseur USB-Série
UART CP2102 GND GND
GUIDE DE BROCHAGE ESP32

E/S disponibles:
- 18 E/S Numériques
- 6 analogiques/Numériques
(ADC 12 bits):
*4 :entrée uniquement
*2 : E/S
-3 GND
-2 POWER
-1 EN
-8 INTERNE (TX-RX,
COMMUNICATION FLASH)
Présentation Kit
NodeMcu Esp32 WROOM-32 Plaque d’essai 830 points Fils de connexion Jumpers
Wires F-F M-F M-M
Présentation Kit
Module Interrupteur à Module Bouton poussoir Module Led RGB 5mm
bascule on/off

LED Résistances LDR : Module capteur de


lumière à Photorésistance
Présentation Kit
Module capteur infrarouge Capteur ultrasons HC-SR04 DHT11 (Température et
récepteur 1838 humidité)

Module détecteur de présence Module Buzzer Ventilateur 12


infrarouge PIR HC-SR501 DC BRUSHLESS
Présentation Kit
Servo-moteur SG92R 5V Moteur Pas à Pas 28BYJ- Carte contrôleur pour moteur
48 5-câbles 4-phases Stepper Pas à pas ULN2003 Stepper
Motor Motor Driver Board

Module Relais 5V – 220V SUPPORT 2 PILES 1.5V CABLE USB – MICRO USB
Présentation Kit
Un potentiomètre PN Diode Transistor
2222A 901
Coller l’annotation des broches sur la plaque d’essai
Utilisation de la plaque d’essai(Breadbord)
Activité N°1: J’installe ma carte Esp32 sur mon ordinateur
Brancher la carte Esp32 dans le port USB de votre ordinateur puis utiliser le gestionnaire de
périphériques afin de vérifier que la carte Esp32 est déjà installer parmi la liste des
périphériques. Si elle n’est pas prise en charger par le système installer son driver en
utilisant le fichier « CP210xVCPInstaller_x.exe » qui existe dans le dossier « Esp32 » du
lecteur C.
Boîtes à outils :
 Un ordinateur
 Carte Esp32.
 Le programme de driver « CP210xVCPInstaller_x64.exe ou
CP210xVCPInstaller_x86.exe »
Module machine
Activité N°4: Je découvre l’interface de programmation de ma carte
Pour programmer la carte Esp32, on va utiliser « Thonny » comme interface
de programmation de cette carte, lancer « Thonny » taper le code ci-
dessous, l’enregistrer dans votre dossier de travail puis l’exécuter sur la
carte Esp32.

from machine import Pin


led = Pin(2, [Link])
[Link](1)
Lua est un langage de script libre écrit en C
Flasher le Firmware MicroPython dans la carte ESP32
Led ?
Comment fonctionne une Led ?
Les jumpers
Activité N°2 : je comprends le rôle de chaque instruction et
je réalise mon premier montage
Effectuer le montage ci-dessous puis dégager les
constatations adéquates.
Activité N°3 : j’améliore mon code et j’anime la Led
Modifier votre code et l’enregistrer dans la carte sous le nom « [Link] » afin que la
LED de la broche N° 15 clignote avec un intervalle de 1 seconde.
N.B : pour gérer le temps de clignotement on utilise la méthode « sleep» (temps en
secondes) qui existe dans la bibliothèque «time ».

Code :
from machine import Pin
from time import sleep
led = Pin(15, [Link])
while True:
[Link](1)
sleep (1)
[Link](0)
sleep (1)
Activité N°4:

En se basant sur le montage indiqué ci-dessous, ajouter d’autres Leds dans les
Pins de la carte Esp32 puis modifier votre programme et l’enregistrer sous le
nom « [Link] » afin résoudre le problème du projet
Code :

from machine import Pin


from time import sleep
led1 = Pin(15, [Link])
led2 = Pin(2, [Link])
led3 = Pin(0, [Link])
while True:
[Link](1)
[Link](1)
[Link](1)
sleep (12)
[Link](0)
[Link](0)
[Link](0)
sleep (12)
PROJET 2 : Système d’éclairage
intelligent
from machine import Pin , ADC
from utime import sleep_ms
lum=ADC(Pin(36))
while True:
x=[Link]()
print(x)
sleep (0.5)

Constatation
Valeur d’un milieu lumineux = Valeur d’un
milieu sombre =
Activité N°3 : Je programme mon système d’éclairage en fonction du capteur
du luminosité
Modifier le code de l’activité précédente et l’enregistrer sous le nom
« eclairage_capteur.py » afin d’allumer les LEDs de l’éclairage public en
fonction des valeurs fournies par le capteur de luminosité (Jour : LEDs sont
éteints, Nuit : les LEDs sont allumées)
from machine import Pin , ADC
from utime import sleep_ms
lum=ADC(Pin(36))
led1 = Pin(15, [Link])
led2 = Pin(2, [Link])
while True:
Nblum=[Link]()
if (Nblum >4000 ) :
[Link](1)
[Link](1)
else :
[Link](0)
[Link](0)
Activité N°5 : Je lis la valeur du potentiomètre
Créer un nouveau programme en Micropython et l’enregistrer sous le nom
« [Link] » qui permet la lecture et d’affichage de la valeur
analogique fournie par le potentiomètre branché dans la proche N° 39.

from machine import Pin , ADC


from time import sleep
pot=ADC(Pin(39))
while True:
x=[Link]()
print(x)
sleep(0.5)

Constatation
Valeur du potentiomètre varie entre [0 et 4095]
PWM
from machine import Pin , ADC ,PWM
from time import *
pot=ADC(Pin(39))
led1=PWM(Pin(13))
led2=PWM(Pin(12))
led3=PWM(Pin(14))
while True:
x=[Link]()
n=int(x*1023/4095)
[Link](n)
[Link](n)
[Link](n)
Activité N°7 : Je varie la valeur de la lumière des Leds en fonction du temps
Utiliser la correction de l’activité N° 3 et l’activité N° 6 fin de résoudre le
problème du projet N° 2.
N.B : pour connaitre l’heure système de la carte on peut utiliser les
instructions suivantes :
T=time() #Permet de fournir la temps système y compris la date et l’heure
tmp=gmtime(T) #permet d'extraire la date système
h=tmp[3] #permet d'extraire l'heure du système
from machine import Pin , ADC ,PWM
from time import *
led1=PWM(Pin(13))
led2=PWM(Pin(12))
led3=PWM(Pin(14))
lum=ADC(Pin(36))
while True:
sleep(1)
T=time() #Permet de founir la temps système
tmp=gmtime(T) #permet d'extraire la date système
# h=tmp[3] #permet d'extraire l'heure du système
H=22
nb=[Link]()
if (nb>4000 ) & (h in range(0,7)) :
n=120
elif (nb>4000 ) & (h in range(17,23)) :
n=1023
else :
n=0
[Link](n)
[Link](n)
[Link](n)
PROJET 3 : Système d’alarme
from machine import Pin
from utime import *
R=Pin(15, [Link])
V=Pin(2, [Link])
B=Pin(0, [Link])
def etatleds (x,y,z ):
[Link](x)
[Link](y)
[Link](z)
while True :
etatleds (1,0,0 )
sleep(0.5)
etatleds (0,1,0 )
sleep(0.5)
etatleds (0,0,1 )
sleep(0.5)
from machine import Pin
from utime import *
mvt=Pin(4, [Link])
while True :
x=[Link]()
print(x)

Constatation
Valeur en cas de mouvement = Valeur en cas il n’y a
pas de mouvement =
from machine import Pin, PWM
from utime import *
buzzer=PWM(Pin(23, [Link]))
[Link](1047)
while True :
[Link](512)
sleep(0.5)
[Link](0)
sleep(0.5)
Activité N°4 Je construis mon système d’alarme
En se basant sur la correction des activité N° 1, N° 2 et N° 3
programmer la carte Esp32 afin de construire un système
d’alarme et de résoudre le problème posé dans le projet N° 3
Code

from machine import Pin, PWM


from utime import *
R=Pin(15, [Link])
V=Pin(2, [Link])
B=Pin(0, [Link])
mvt=Pin(4, [Link])
buzzer=PWM(Pin(23, [Link]))
[Link](1047)
def etatleds (x,y,z ):
[Link](x)
[Link](y)
[Link](z)
while True :
x=[Link]()
if (x==1) :
sleep(0.5)
etatleds (1,0,0 )
sleep(0.5)
etatleds (0,1,0 )
sleep(0.5)
etatleds (0,0,1 )
sleep(0.5)
[Link](512)
else :
etatleds (0,0,0 )
[Link](0)
PROJET 4 :passage a niveau
capteur ultrason
Activité 1: A chaque fois,
Si le capteur détecte le train :
la Led s’allume et le buzzer sonne pendant 2s seulement
from machine import Pin
from HCSR04 import *
cp = HCSR04(trigger_pin = 17, echo_pin = 16,
echo_timeout_us=1000000)
led = Pin(4, [Link])
buzzer=Pin(21,[Link])
while True :
if cp.distance_cm() < 10 :
[Link]()
[Link]()
else :
[Link]()
[Link]()
[Link]

from machine import Pin, time_pulse_us


[Link]
from utime import sleep_us
class HCSR04:
def __init__(self, trigger_pin, echo_pin, echo_timeout_us=500*2*30):
self.echo_timeout_us = echo_timeout_us
[Link] = Pin(trigger_pin, mode=[Link], pull=None)
[Link](0)
[Link] = Pin(echo_pin, mode=[Link], pull=None)
from machine import Pin
from HCSR04 import *
def _send_pulse_and_wait(self):
[Link](0)
sleep_us(5)
[Link](1)
cp = HCSR04(trigger_pin = 17, echo_pin = 16,
sleep_us(10)
[Link](0)
echo_timeout_us=1000000)
try: led = Pin(2, [Link])
pulse_time = time_pulse_us([Link], 1, self.echo_timeout_us)
if pulse_time < 0: while True :
MAX_RANGE_IN_CM = const(500)
pulse_time = int(MAX_RANGE_IN_CM * 29.1)
if cp.distance_cm() < 10 :
return pulse_time
except OSError as ex:
[Link]()
if [Link][0] == 110: # 110 = ETIMEDOUT else :
raise OSError('Out of range')
raise ex [Link]()
def distance_mm(self):
pulse_time = self._send_pulse_and_wait()
mm = pulse_time * 100 // 582
return mm

def distance_cm(self):
pulse_time = self._send_pulse_and_wait()
cms = (pulse_time / 2) / 29.1
return cms
Activité 2:
A c h a q u e fois,
S i le train s ’a p p r o c h e ( c a p te u r d é t e c t e u n o b s t a c l e < 5 c m ) :
la b ar r i ère d e s c e n d
le b u z z e r s o n n e l e s d e u x L e d s c l i g n o t e n t 2 fois i n v e r s e m e n t
( p e n d a n t 2 s) p u i s la b ar r i ère s e lève, le b u z z e r s’arrête
d e s o n n e r e t l e s d e u x L e d s s'éteint
Câblage

Pin 22
GND
Pin 21
Pin 23

Pin 32 Pin 33 Pin 25 GND 5V


from machine import Pin,PWM
from HCSR04 import *
cp = HCSR04(trigger_pin = 17, echo_pin = 16, echo_timeout_us=1000000)
led = Pin(4, [Link])
buzzer=Pin(21,[Link])
servo = PWM(Pin(25),freq=50)
[Link](70)
while True :
if cp.distance_cm() < 10 :
[Link](20)
[Link]()
[Link]()
else :
[Link]()
[Link]()
[Link](70)

Vous aimerez peut-être aussi