Capteurs capacitifs

Les capteurs capacitifs sur l’ESP32

L’ESP32 possède 10 capteurs capacitifs (9 si le pin GPIO0 n’est pas disponible). Ils peuvent être utilisés comme des boutons tactiles. Ce sont les fameux TOUCH que l’on trouve sur les schémas des broches. On peut également les utiliser lorsque l’ESP32 est en mode DeepSleep (mode d’économie d’énergie) pour le réveiller. Je vous invite à lire la suite pour avoir plus de détails.



Les capteurs capacitifs internes sont connectés aux pins GPIO suivants :

TOUCH0

TOUCH1

TOUCH2

TOUCH3

TOUCH4

GPIO 4

GPIO 0

GPIO 2

GPIO 15

GPIO 13

TOUCH5

TOUCH6

TOUCH7

TOUCH8

TOUCH9

GPIO 12

GPIO 14

GPIO 27

GPIO 33

GPIO 32



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.

Capteurs capacitifs tactiles

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

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 !

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); // Délai pour lancer le moniteur série

    Serial.println("ESP32 Touch Demo");

}

void loop() {

    Serial.println(touchRead(4));

    delay(500);

}


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é");

        }


Créé avec HelpNDoc Personal Edition: Faites de la révision de la documentation un jeu d'enfant avec l'analyseur de projet avancé de HelpNDoc