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

Les capteurs capacitifs de l’ESP32

(Mis à jour le 20/10/2022)

L’ESP32 possède des capteurs capacitifs qui peuvent être utilisés comme un bouton tactile. Ce sont les fameux « TOUCH » que l’on trouve sur les pinouts. Il y en a 10 disponibles sur les cartes ESP32 uPesy .

schéma des broches de l’ESP32 complet

Pinout de la carte uPesy ESP32 Wroom Devkit

Qu’est ce que c’est ?

Les capteurs capacitifs sont énormément utilisés pour détecter la pression de nos doigts notamment sur les écrans tactiles. On peut les utiliser sur l’ESP32 pour remplacer les boutons-poussoirs.

Fonctionnement capteur capacitif ESP32

Capteurs capacitifs tactiles

Les capteurs capacitifs sont basés sur la variation de la capacité (d’un condensateur) lorsque l’on touche le capteur. Cette variation est lue et convertie par l’ADC (Convertisseur analogique à numérique).

Note

Il faut garder à l’esprit que ces capteurs capacitifs ne seront pas aussi fiables que des boutons-poussoirs surtout pour l’usage que l’on va en faire .

En effet, beaucoup de capacités parasites rentrent en jeu et perturbent plus ou moins les valeurs mesurées.

Capacités parasites du capteur capacitif ESP32

Capacités parasites

Pour avoir de bonnes mesures, il faudra donc prendre en compte tous ces paramètres et faire un circuit électrique beaucoup plus rigoureux et complexe. Pour montrer le fonctionnement, le circuit se résumera à un fil de cuivre !

Schéma de câblage ESP32 du capteur capacitif

Difficile de faire plus simple comme circuit

Utilisation sur l’ESP32

Le code pour utiliser les capteurs capacitifs est très simple, une seule fonction est nécessaire touchRead() . Le code pour lire la mesure capacitive du pin 4 se résume à :

touchRead(4);
//ou
touchRead(T0);

Note

Le paramètre de la fonction est soit le numéro du pin (ici GPIO4), soit le numéro du capteur capacitif associé au pin (ici T0).

L’utilisation est très similaire à la fonction analogRead() .

Avec un code très simple, on affiche dans le moniteur série les valeurs mesurées :

void setup() {
    Serial.begin(115200);
    delay(1000); // Delai pour lancer le moniteur série
    Serial.println("ESP32 Touch Demo");
}

void loop() {
    Serial.println(touchRead(4));
    delay(500);
}
Graphique de la réponse du capteur capacitif ESP32

Courbe affichée dans le traceur série

Les creux correspondent au moment ou l’on touche le fil. Pour déterminer si l’on a touché le fil, il faut définir une valeur seuil. Si on est en dessous de cette valeur seuil, on a touché sur le bouton.

Note

La valeur seuil dépend du matériel utilisé (fil, longueur, breadbord …) et devra être ajustée.

Le code avec le seuil est :

int capacitiveValue = 100;
int threshold = 20; //Seuil à ajuster

void setup() {
    Serial.begin(115200);
    delay(1000); // Delai pour lancer le moniteur série
    Serial.println("ESP32 Touch Demo");
}

void loop() {
    capacitiveValue = touchRead(4);
    if(capacitiveValue < threshold ){
        Serial.println("Fil touché");
        }
    delay(500);
}
Câblage sur plaque de prototypage capteur capacitif esp32

C’est tout pour la programmation ! On peut aussi rajouter une feuille en aluminium au bout du fil pour une meilleure sensibilité.