Touch Sensors
#include <>
Intro What Is It Use on ESP32 Code With Threshold



The capacitive sensors of the ESP32
The ESP32 has capacitive sensors that can be used as a touch button. These are the famous “TOUCH” pins found on the pinouts. Ten are available on the uPesy ESP32 boards. complete ESP32 pin diagram Pinout of the uPesy ESP32 Wroom Devkit board
What is it?
Capacitive sensors are widely used to detect the pressure of our fingers, especially on touch screens. We can use them on the ESP32 to replace push buttons. Operation of the ESP32 capacitive sensor Capacitive touch sensors Capacitive sensors are based on the variation of the capacitance (of a capacitor) when the sensor is touched. The ADC (Analog to Digital Converter) reads and converts this variation. Note It is essential to remember that these capacitive sensors will not be as reliable as push buttons, especially for the use we will make of them. Indeed, many parasitic capacitances come into play and more or less disturb the measured values. Parasitic capacitances of the ESP32 capacitive sensor Parasitic capacitors It is necessary to consider all these parameters and make a much more rigorous and complex electrical circuit to have good measures. We can resume the circuit to a copper wire to show how it works! ESP32 wiring diagram of the capacitive sensor It’s hard to make a simpler circuit 🙂
Use on the ESP32
The code to use the capacitive sensors is straightforward. Only one function is needed touchRead() . The code to read the capacitive measurement of pin 4 is : touchRead(4); //or touchRead(T0); Note The function parameter is either the pin number (here GPIO4) or the number of the capacitive sensor associated with the pin (here T0). The usage is very similar to the analogRead() . With a short code, the measured values are displayed in the serial monitor: /*F******************************************************************** * **********************************************************************/ void setup() { Serial.begin( BAUD ); delay( 1000 ); // DELAY TO LAUNCH THE SERIAL MONITOR Serial.println( "ESP32 Touch Demo" ); } /*F******************************************************************** * **********************************************************************/ void loop() { Serial.println( touchRead( 4 ) ); delay( 500 ); } Graph of the ESP32 capacitive sensor response Waveform displayed in the serial plotter The hollows correspond to the moment when the wire is touched. A threshold value must be defined to determine if the cable has been touched. If we are below this threshold value, we have touched the button. Note The threshold value depends on the material used (wire, length, breadboard) and should be adjusted.
The code with the threshold is
int capacitiveValue = 100; int threshold = 20; //Threshold to adjust /*F******************************************************************** * **********************************************************************/ void setup() { Serial.begin(115200); delay(1000); // Delay to launch the serial monitor Serial.println("ESP32 Touch Demo"); } /*F******************************************************************** * **********************************************************************/ void loop() { capacitiveValue = touchRead( 4 ); if( capacitiveValue < threshold ) Serial.println( "Wire touched" ); delay( 500 ); } Wiring on esp32 capacitive sensor prototyping plate That’s it for the programming! You can also add aluminum foil at the end of the wire for better sensitivity.