Algo.tn

Carte ESP32-Composants électroniques

Composants électroniques avec ESP32

Plaque d'essai (Breadboard)

La plaque d'essai contient plusieurs trous, permettant de relier des composants facilement, pour tester un montage.

breadboard esp32
×

Les trous encerclés en vert sont liés.

breadboard esp32
×

Le cas de la plaque à essai 840 points:

breadboard esp32

×

Diode LED

Une diode électroluminescente, ou LED pour "Light-Emitting Diode", est polarisée, elle ne s’allume que lorsque les pattes sont connectées dans un sens bien déterminé.

breadboard esp32
×

Remarque : Il faut utiliser une résistance (par exemple de 220 Ω), pour ne pas risquer de griller la LED.

Exemple de montage:

breadboard esp32

×

Exemple de montage utilisant une carte ESP32 NodeMCU, une diode LED et une résistance (220 Ω):

breadboard esp32

×

Code MicroPython :

from time import sleep
from machine import Pin

led=Pin(23,Pin.OUT)

while True:
    led.value(not led.value())
    sleep(1)

PWM:Pulse width modulation

On peut aussi utiliser PWM pour allumer une LED.
Pulse width modulation (PWM) est un moyen d’obtenir une sortie analogique artificielle sur une broche numérique.
Deux paramètres y sont associés : la fréquence du basculement et le rapport cyclique(duty cycle).

Rapport cyclique (duty): est le rapport entre la durée de l'état actif et la période (inverse de la fréquence).

duty esp32
×
pwm duty cycle esp32

Exemple de code utilisant le PWM:

Code MicroPython :

from machine import Pin, PWM
from time import sleep

led = PWM(Pin(23), 5000) #fréquence =5000Hz

while True:
  for duty_cycle in range(0, 1024):#duty entre 0 et 1023
    led.duty(duty_cycle)
    sleep(0.005)

Bouton poussoir :

Pour un bouton poussoir, on appuie pour allumer ou éteindre et le bouton revient tout seul à sa position initiale. En effet, le poussoir ne sert qu’à envoyer une impulsion.
Exemple de bouton poussoir touche :

breadboard esp32
×

Exemple de montage utilisant un bouton poussoir, une carte ESP32 NodeMCU, une diode LED et une résistance (220 Ω):

breadboard esp32

×

Code MicroPython :

from machine import Pin

p=Pin(23,Pin.OUT)
p13=Pin(13,Pin.IN)
while True:
    if p13.value()==1:
        p.on()
    else :
        p.off()

Remarque: On peut aussi utiliser un module bouton poussoir:

breadboard esp32
×

Deux exemples d'utilisation de ce module:

breadboard esp32
×

Le circuit interne du module bouton poussoir pour les deux cas d'utilisation:

breadboard esp32
×

Buzzer :

Il y a deux types :
– Buzzer actif: Il peut générer du son quand il reçoit une tension continue.
– Buzzer passif: On doit utiliser le PWM de la carte esp32 pour générer un son.

breadboard esp32
×

Dans notre cas on va utiliser un buzzer actif.

breadboard esp32
×

Exemple de montage utilisant un bouton poussoir, une carte ESP32 NodeMCU et un buzzer:

breadboard esp32

×

On va reprendre le même code de bouton poussoir.

Code MicroPython :

from machine import Pin

p=Pin(23,Pin.OUT)
p13=Pin(13,Pin.IN)
while True:
    if p13.value()==1:
        p.on()
    else :
        p.off()

Capteur DHT11:(température et humidité)

Capteur de température et d’humidité DHT11.Permettant de mesurer des températures entre 0° et 50°.

breadboard esp32
×

Exemple de montage utilisant une carte ESP32 NodeMCU, et un capteur DHT11:

breadboard esp32

×

Code MicroPython :

from machine import Pin
import time
import dht 

sensor = dht.DHT11(Pin(23)) 

while True:
    sensor.measure()
    t = sensor.temperature()
    h = sensor.humidity()
    print("Température=",t," °C")
    print("Humidité=",h," %")
    time.sleep(5)

Servomoteur:

Un servomoteur est un système motorisé capable d'atteindre des positions prédéterminées, puis de les maintenir. La position est définie avec une limite de débattement d’angle de 180 degrés, mais également disponible en rotation continue.

breadboard esp32
×

Exemple de montage utilisant une carte ESP32 NodeMCU, et un servomoteur:

breadboard esp32

×

Le branchement de servomoteur:

Remarque :
Si l'alimentation de la carte ESP32 ne suffit pas pour faire fonctionner le servomoteur correctement, il faut ajouter une alimentation externe dédiée au servomoteur. breadboard esp32

×

Pour une frequence de 50Hz, et une largeur d'impulsion, comprise entre 1 et 2 millisecondes, la valeur de duty est théoriquement entre 50 et 100, mais pratiquement il faut tester le servo moteur pour deduire l'intervalle .On peut trouver par exemple entre 40 et 115, entre 25 et 125, ... breadboard esp32

×

Code MicroPython :

from machine import Pin,PWM 
from time import sleep
servo=PWM(Pin(23),freq=50)
while True:
    # duty entre 25 et 125(change suivant le servomoteur)
    x=int(input('donner une valeur(entre 25 et 125)='))
    servo.duty(x)
    sleep(1)

Capteur ultrason :HC-SR04

Le détecteur HC-SR04 utilise les ultrasons pour déterminer la distance à laquelle se trouve un objet. Son champ de vision est de 90° environ selon l'environnement.

breadboard esp32
×

Si une impulsion de plus de 10µS est détectée (sur l'entrée TRIGGER), alors le capteur envoie une série de 8 impulsions à ultrason de 40kHZ et attends le réfléchissement du signal. Lorsque celui-ci est détecté, une impulsion de durée proportionnelle à la distance mesurée (Plage de mesure : 2 cm à 400 cm) est envoyée sur la sortie "Echo". breadboard esp32

×

Exemple de montage utilisant une carte ESP32 NodeMCU, et un capteur ultrason HC-SR04:

breadboard esp32

×

Remarque: Si l'alimentation de la carte ESP32 ne suffit pas pour faire fonctionner le capteur ultrason HC-SR04 correctement, il faut ajouter une alimentation externe dédiée au capteur ultrason HC-SR04.

Code MicroPython :

main.py
from hcsr04 import HCSR04
from time import sleep

sensor = HCSR04(trigger_pin=5, echo_pin=4, echo_timeout_us=10000)

while True:
    distance = sensor.distance_cm()
    print('Distance=', distance, 'cm')
    sleep(2)

Remarque:On doit aussi téléverser la bibliothèque hcsr04.py téléchargée à partir de : https://github.com/rsc1975/micropython-hcsr04
Lien direct:hcsr04.py (clic droit sur le lien puis enregistrer le lien sous)
Dans le cas de Thonny:
Pour téléverser des fichiers sur la carte, il faut commencer par arrêter l'exécution du programme dans Thonny IDE.
Ouvrir le fichier téléchargé hcsr04.py dans Thonny puis Fichier > Enregistrer sous.. > appareil MicroPython

breadboard esp32

×

Capteur de lumière :LDR

Une cellule photoélectrique ou photorésistance ou LDR( lightdependent resistor) résistance variable avec la lumière. La résistance d’un LDR diminue avec l’augmentation de l’intensité lumineuse incidente, et augmente dans le cas contraire.

Dans l’obscurité, une photorésistance peut avoir une résistance aussi élevée que plusieurs mégohms (MΩ), tandis qu’à la lumière, une photorésistance peut avoir une résistance aussi faible que quelques centaines d’ohms. breadboard esp32
×

Exemple de montage utilisant une carte ESP32 NodeMCU, et une LDR:
Une photorésistance est connectée à la broche p34 avec une resistance pull-down (1kΩ) et à 3v3. Nous allons mesurer la tension sur le pin34 qui va changer lorsque l’intensité lumineuse change. Pour ce faire, la broche doit prendre en charge la lecture analogique. En d’autres termes, il doit s’agir d’une broche ADC (Analog to Digital Converter). Le pin34 est exactement ce genre de broche, selon les fiches techniques.(on peut utiliser les pins ADC1 32-39).

ldr esp32

×

Code MicroPython :

main.py
from machine import Pin, ADC
from time import sleep

p34 = ADC(Pin(34))  # initialiser ADC (analog to digital conversion)
p34.atten(ADC.ATTN_11DB)   #permet d'avoir des valeurs entre 0-4095 pour (0-3.3v)

while True:
  p34_value = p34.read()
  print(p34_value)
  sleep(0.1)

Module capteur de lumière :LDR

Le module possède une sortie numérique et une sortie analogique, par conséquent, se raccorde sur la carte ESP32 sur une entrée numérique ou sur une entrée permettant la lecture analogique ( avec (ADC)convertisseur analogique-numérique ).

breadboard esp32
×

Fonctionnement:
Sortie numérique: la sortie passe à l’état bas (0) lorsque le module reçoit suffisamment de lumière (seuil réglable via le potentiomètre).
Sortie analogique: la sortie est inversement proportionnelle à la quantité de lumière reçue.

breadboard esp32
×

Le comparateur LM393 permet de comparer la tension aux bornes de la LDR avec une tension de référence réglable.
Le potentiomètre permet d’ajuster le seuil de déclenchement en fonction du niveau de lumière:
-Tourné dans le sens horaire, il augmente la sensibilité.
-Tourné dans le sens anti-horaire la sensibilité diminue.
La LED PWR-LED, s’allume quand le module est alimenté. La LED D0-LED indique le niveau de sortie sur la broche D0. Elle s’allume quand l’intensité lumineuse dépasse le seuil fixé grâce au potentiomètre.
Les broches sont :

Utilisation de la sortie analogique (A0) du module:

Exemple de montage utilisant une carte ESP32 NodeMCU, et un module LDR:

ldr esp32

×

On peut reprendre le même code que l'LDR:

Code MicroPython :

main.py
from machine import Pin, ADC
from time import sleep

p34 = ADC(Pin(34))  # initialiser ADC (analog to digital conversion)
p34.atten(ADC.ATTN_11DB)   #permet d'avoir des valeurs entre 0-4095 pour (0-3.3v)

while True:
  p34_value = p34.read()
  print(p34_value)
  sleep(0.1)

Remarque:
Les valeurs sur la sortie (entre 0 et 4095), selon l'intensité de la lumière.

Exemple d'exécution (Sortie analogique):

console a0 esp32

Utilisation de la sortie numérique (D0) du module:

Exemple de montage utilisant une carte ESP32 NodeMCU, et un module LDR:

ldr esp32

×

Remarque:
-Dans le cas de l'obscurité : D0-LED éteinte et D0 à 1
-Dans le cas où il y a de la lumière : D0-LED allumée et D0 à 0

Code MicroPython :

main.py
from machine import Pin
from time import sleep

p4=Pin(4,Pin.IN)

while True:
  print(p4.value())
  sleep(0.1)

Exemple d'exécution(Sortie numérique):

console d0 esp32

Dernière mise à jour de la page :Le 30 avril 2022
sources: https://www.robot-maker.com/forum/tutorials/article/39-utiliser-une-plaque-dessai-ou-breadboard/?msclkid=fc5a2eaca60b11ecab59fe1c7a7ba146
http://www.robotsforfun.com/webpages/breadboard.html
https://trouverunereponse.com/quelle-est-la-difference-entre-un-bouton-poussoir-et-un-interrupteur/
https://fr.wikipedia.org/wiki/Servomoteur
https://esp32io.com/tutorials/esp32-servo-motor
https://icircuit.net/micropython-controlling-servo-esp32-nodemcu/2385
https://components101.com/motors/servo-motor-basics-pinout-datasheet
https://docs.micropython.org/en/latest/esp8266/tutorial/pwm.html
https://components101.com/sites/default/files/component_datasheet/SG90%20Servo%20Motor%20Datasheet.pdf
https://www.youtube.com/watch?v=XovIHYo7s1A&t=1s&ab_channel=AlbrechtSchmidt
https://www.micropython.fr/port_pi_pico/04.micropython/03.les_bases/04.sorties_pwm/
https://gcworks.fr/tutoriel/esp/Servomoteur.html
https://www.youtube.com/watch?v=wWnDKsClpwQ&ab_channel=TechToTinker
https://github.com/rsc1975/micropython-hcsr04
https://randomnerdtutorials.com/micropython-hc-sr04-ultrasonic-esp32-esp8266/
http://www.microsann.com/images/Atelier_Robotique/Documentation/Fiche_capteur_HC.pdf
https://blog.gypsyengineer.com/en/diy-electronics/reading-photoresistor-on-esp32-with-micropython.html
https://dictionnaire.reverso.net/francais-definition/LDR
https://fr.wikipedia.org/wiki/Photor%C3%A9sistance
http://www.esp32learning.com/code/esp32-and-ldr-example.php
https://www.upesy.fr/blogs/tutorials/esp32-pinout-reference-gpio-pins-ultimate-guide
https://randomnerdtutorials.com/esp32-esp8266-analog-readings-micropython/
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/adc.html
https://idixshop.ma/boutique/developpement/modules-capteurs/module-capteur-de-lumiere-a-photoresistance-ldr/
https://docplayer.fr/212253695-Memoire-de-fin-d-etudes.html
https://www.framboise314.fr/scratch-raspberry-pi-composants/module-detecteur-de-lumiere-a-ldr/
https://www.youtube.com/watch?v=27lxJY0xJ7o&t=77s
https://randomnerdtutorials.com/esp32-esp8266-pwm-micropython/
https://docs.micropython.org/en/latest/esp32/tutorial/pwm.html
https://fr.wikipedia.org/wiki/Rapport_cyclique
https://commons.wikimedia.org/w/index.php?curid=3674466 , Par Eighthave, modified by Teslaton — Modification of Image:Pwm duty cycle.gif, Domaine public, https://www.gotronic.fr/pj2-35210-2263.pdf



Algo.tn ©