Ignorer et passer au contenu

Livraison offerte à partir de 50€ d'achats, livrée sous 48h !

Livraison à partir de seulement 2.50€ !

Contents Menu Expand Light mode Dark mode Auto light/dark mode

Utiliser les capteurs capacitifs de l’ESP32 en MicroPython

(Mis à jour le 04/01/2023)

L’ESP32 est doté de capteurs capacitifs qui peuvent être utilisés pour remplacer les boutons-poussoirs traditionnels. Appelés parfois “TOUCH” sur les pinouts des ESP32 disponibles sur Internet, on en trouve 10 sur les cartes ESP32 d’uPesy que l’on pourra contrôler avec MicroPython.

schéma des broches de l’ESP32 complet

Pinout de la carte uPesy ESP32 Wroom Devkit

Comment fonctionne un capteur capacitif ?

Ces capteurs capacitifs sont très populaires pour détecter la pression de nos doigts sur les appareils du quotidien. Ils font office de boutons-poussoirs.

Fonctionnement capteur capacitif ESP32

Capteurs capacitifs tactiles

Ils se basent sur la variation de capacité d’un condensateur quand on touche le capteur. En fait, un condensateur est composé de deux plaques métalliques qui se font face, séparées par un substrat non conducteur. Sur le capteur, il n’y en a qu’une seule, la deuxième étant votre doigt. Cette variation est convertie ensuite en valeur analogique par l’ADC de l’ESP32.

Note

Il est important de noter que les capteurs capacitifs ne sont pas aussi fiables que les boutons-poussoirs mécaniques. Ces derniers sont plus susceptibles d’être affectés par les parasites provenant de l’environnement.

En effet, il y a des facteurs qui peuvent interférer et affecter les valeurs obtenues. Voici un schéma qui vous donne une meilleure compréhension des sources de perturbations :

Capacités parasites du capteur capacitif ESP32

Capacités parasites

Pour obtenir de bons résultats, il est nécessaire de prendre en compte tous ces paramètres et de concevoir un circuit électrique plus rigoureux et complexe que celui présenté plus tard. Détecter la pression d’un doigt peut se faire très simplement avec uniquement un fil de cuivre.

Schéma de câblage ESP32 du capteur capacitif

Circuit constitué d’un fil (jumer)

Utiliser les capteurs capacitifs de l’ESP32 avec MicroPython

Avec Micro-Python, le procédé est très comparable aux mesures analogiques. Contrairement aux boutons-poussoirs, la valeur récupérée n’est pas binaire (LOW ou HIGH ), mais une valeur analogique comprise entre 0 et 4095.

Note

Dans le script Python, on indique le numéro de la broche qui possède une fonctionnalité TOUCH . Par exemple, ici nous utilisons le TOUCH0 , qui est hébergé sur le pin GPIO4 .

from machine import TouchPad, Pin
import time

touch_pin = TouchPad(Pin(4, mode=Pin.IN))
while True:
    touch_value = touch_pin.read()
    print(touch_value)
    time.sleep_ms(500)

Pour ce qui est du code, il est identique à celui de l’ADC, à l’exception du changement de ADC(Pin(36, mode=Pin.IN)) à TouchPad(Pin(4, mode=Pin.IN)) .

La valeur étant analogique, il est nécessaire de définir un seuil à partir duquel nous pourrons détecter une pression. Quand il n’y a rien, la valeur est considérée comme étant élevée. Par contre, lorsque le fil est touché, celle-ci chute significativement.

Graphique de la réponse du capteur capacitif ESP32

Courbe affichée dans le traceur série

Note

Il n’y a pas de valeur de seuil universelle. Cela varie selon le matériel utilisé (fil, longueur, breadboard…) et vous devrez le régler de votre côté.

Voici un exemple avec un seuil de 150 :

from machine import TouchPad, Pin
import time

capacitiveValue = 500
threshold = 150 # Seuil à ajuster
touch_pin = TouchPad(Pin(4))

print("\nESP32 Touch Demo")
while True: # Boucle infinie
  capacitiveValue = touch_pin.read()
  if capacitiveValue < threshold:
    print("Fil touché")
    time.sleep_ms(500)

Voyez par vous-même le résultat !

Câblage sur plaque de prototypage capteur capacitif esp32

Etonnant non 😎 ?

C’est tout ! Il y a des modules de capteurs capacitifs déjà prêts qui incluent un circuit qui convertit le niveau de capacité en une valeur binaire.

touch sensor module top

De ce côté, il y a uniquement le circuit de conversion, pas de plaque

touch sensor module bottom

Sur l’autre face, une plaque métallique

Si vous souhaitez en obtenir, préférez les modules ne contenant pas ce circuit de conversion, ce qui vous donnera un signal brut qui pourra ensuite être converti par l’ESP32 en utilisant son circuit interne. En soi, une PCB avec juste un endroit pour mettre son doigt.