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 .
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.
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.
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 !
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);
}
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’est tout pour la programmation ! On peut aussi rajouter une feuille en aluminium au bout du fil pour une meilleure sensibilité.