|
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 à :
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 :
|
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 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