Conceptos básicos de ESP32: pines táctiles capacitivos

Si estás interesado en adentrarte en el fascinante mundo de la tecnología ESP32, es fundamental comprender los conceptos básicos que la rodean. En este artículo, exploraremos todo lo que necesitas saber sobre los pines táctiles capacitivos de este dispositivo. ¡Sigue leyendo para descubrir todo lo que necesitas saber para sacar el máximo provecho de tu ESP32!

ESP32 es una excelente placa de desarrollo para crear proyectos inteligentes de IoT y agregar funcionalidad táctil los hace aún más inteligentes.

ESP32 ofrece 10 GPIO capacitivos sensibles al tacto. Estos GPIO le permiten actualizar proyectos existentes con simples botones o crear interruptores de luz, instrumentos musicales o superficies interactivas personalizadas.

Aprendamos a manejar estos bolígrafos sensibles al tacto y a utilizarlos en proyectos.

La detección táctil en ESP32 es gestionada por el coprocesador ULP. Por lo tanto, estos pines táctiles también se pueden usar para despertar al ESP32 del sueño profundo.

¿Cómo detecta ESP32 el tacto?

ESP32 utiliza las propiedades eléctricas del cuerpo humano como entrada. Cuando se toca el lápiz con sensor táctil con un dedo, se atrae una pequeña carga eléctrica hasta el punto de contacto.

Esto desencadena una fluctuación de capacitancia que da como resultado una señal analógica. Luego, dos ADC de aproximación sucesivos (SAR ADC) convierten esta señal analógica en un número digital.

Pines táctiles ESP32

ESP32 tiene 10 GPIO capacitivos sensibles al tacto. Cuando una carga capacitiva (por ejemplo, piel humana) está muy cerca del GPIO, ESP32 detecta un cambio en la capacitancia.

Aunque el ESP32 tiene un total de 10 pines GPIO capacitivos sensibles al tacto, sólo 9 de ellos están divididos en los cabezales de pines a ambos lados de la placa de desarrollo ESP32 de 30 pines.

Conceptos básicos de ESP32: pines táctiles capacitivos

Lectura del sensor táctil

Leer el sensor táctil es sencillo. En el IDE de Arduino se utiliza el touchRead() Función que toma como argumento el número de pin GPIO que desea leer.

touchRead(GPIOPin);

Conexión de hardware

¡Basta de teoría! Veamos un ejemplo práctico.

Conectemos un cable al Touch #0 (GPIO #4). Puede colocar cualquier objeto conductor como papel de aluminio, tela conductora, pintura conductora, etc. a este lápiz y convertirlo en un panel táctil.

Conceptos básicos de ESP32: pines táctiles capacitivos

Código de ejemplo

Veamos cómo funciona con un ejemplo de la biblioteca. Abra su IDE de Arduino y navegue hasta Archivo > Ejemplos > ESP32 > Tocary ábrelo TocarLeer bosquejo.

Este ejemplo simplemente lee el pin táctil 0 y muestra el resultado en el monitor serie.

// ESP32 Touch Test
// Just test touch pin - Touch0 is T0 which is on GPIO 4.

void setup() {
  Serial.begin(115200);
  delay(1000); // give me time to bring up serial monitor
  Serial.println("ESP32 Touch Test");
}

void loop() {
  Serial.print("Touch: ");
  Serial.println(touchRead(4));  // get touch value on GPIO 4
  delay(1000);
}

Después de cargar el boceto, abra el monitor serie con velocidad de baudios 115200 y presione el botón EN en ESP32.

Ahora intenta tocar la parte metálica del cable y observa cómo reacciona al tacto.

Conceptos básicos de ESP32: pines táctiles capacitivos

Explicación del código:

El código es bastante simple. En setup() primero inicializamos la comunicación serial con la PC.


Serial.begin(115200);

En loop() usamos touchRead() Función y pasa el pin que queremos leer como argumento. En este caso el GPIO #4. También puedes pasar el número del sensor táctil. T0.

Serial.println(touchRead(4));

Proyecto ESP32 – LED activado al tacto

Creemos rápidamente un proyecto para demostrar cómo se pueden usar los pines táctiles del ESP32 para controlar dispositivos. En este ejemplo, crearemos un LED simple activado al tacto que se ilumina cuando tocas el pin GPIO.

Por supuesto, este proyecto se puede ampliar para abrir puertas, cambiar relés, encender LED o cualquier otra cosa que se le ocurra.

Encuentra el umbral

Antes de continuar, deberías ver qué lecturas obtienes realmente del ESP32. Tenga en cuenta el resultado que obtiene cuando toca el lápiz y cuando no lo hace.


Si ejecuta el boceto anterior, el monitor serie mostrará aproximadamente las siguientes lecturas:

  • cuando tocas el pin (~3)
  • si no tocas el pin (~71)

Según los valores, podemos establecer un umbral para alternar el LED cuando la lectura caiga por debajo del umbral. 30 podría ser un buen umbral en este caso.

Código de ejemplo

A continuación se muestra un código simple que enciende el LED incorporado cuando toca el lápiz una vez y lo apaga cuando lo vuelve a tocar.

// set pin numbers
const int touchPin = 4;
const int ledPin = 2;

const int threshold = 30;  // set the threshold

int ledState = LOW;         // the current state of the output pin
int touchState;             // the current reading from the input pin
int lastTouchState = LOW;   // the previous reading from the input pin

unsigned long lastDebounceTime = 0;  // the last time the output pin was toggled
unsigned long debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {
  pinMode(ledPin, OUTPUT);

  // set initial LED state
  digitalWrite(ledPin, ledState);
}

void loop() {
  // read the state of the pin
  int reading = touchRead(touchPin);

  // binarize touch reading for easy operation
  if (reading < threshold) {
    reading = HIGH;
  } else{
    reading = LOW;
  }
  
  // If the pin is touched:
  if (reading != lastTouchState) {
    // reset the debouncing timer
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    // whatever the reading is at, it's been there for longer than the debounce
    // delay, so take it as the actual current state:

    // if the touch state has changed:
    if (reading != touchState) {
      touchState = reading;

      // only toggle the LED if the new touch state is HIGH
      if (touchState == HIGH) {
        ledState = !ledState;
      }
    }
  }

  // set the LED:
  digitalWrite(ledPin, ledState);

  // save the reading. Next time through the loop, it'll be the lastTouchState:
  lastTouchState = reading;
}

Sube el boceto a tu ESP32. Deberías ver el interruptor LED cada vez que toques el cable.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded




Conceptos básicos de ESP32: pines táctiles capacitivos

Introducción

El ESP32 es una gran placa de desarrollo para crear proyectos inteligentes de IoT y agregar funcionalidad táctil los hará aún más inteligentes.

Qué es un ESP32

El ESP32 es una placa de desarrollo con capacidades de IoT que ofrece 10 GPIOs de detección táctil capacitiva. Estos GPIOs pueden utilizarse para actualizar proyectos de botones simples o para crear interruptores de luz, instrumentos musicales o superficies interactivas personalizadas.

Cómo detecta el toque el ESP32

El ESP32 utiliza las propiedades eléctricas del cuerpo humano como entrada. Cuando se toca el pin de detección táctil con un dedo, se produce una pequeña carga eléctrica que se dirige al punto de contacto, lo que desencadena una variación de la capacitancia que resulta en una señal analógica.

Pines táctiles del ESP32

El ESP32 tiene 10 GPIOs de detección táctil capacitiva. Cuando una carga capacitiva (como la piel humana) está en proximidad a un GPIO, el ESP32 detecta un cambio en la capacitancia.

Lectura del sensor táctil

La lectura del sensor táctil es directa. En el IDE de Arduino, se utiliza la función touchRead(), que acepta como argumento el número de pin GPIO que se desea leer.

Ejemplo de código

Para ver cómo funciona, utiliza el sketch TouchRead en el IDE de Arduino. Este ejemplo simplemente lee el pin táctil 0 y muestra el resultado en el monitor serie. Puedes ver el código aquí.

Proyecto ESP32 – LED activado por toque

Para demostrar cómo se pueden utilizar los pines táctiles del ESP32 para controlar dispositivos, puedes crear un proyecto sencillo de LED activado por toque. Abre este sketch en tu IDE de Arduino y subelo a tu ESP32 aquí


1 comentario en «Conceptos básicos de ESP32: pines táctiles capacitivos»

Deja un comentario