ESP32 - Sensor de detección de obstáculos por infrarrojos

Este tutorial te enseña cómo usar el ESP32 con el sensor infrarrojo de detección de obstáculos para detectar la presencia de un obstáculo.

Acerca del sensor de evitación de obstáculos por infrarrojos

El sensor de obstáculos IR (infrarrojo) se utiliza para detectar si hay algún obstáculo delante del módulo del sensor mediante la señal IR. El rango de detección es de 2 cm a 30 cm y es ajustable mediante un potenciómetro incorporado.

Disposición de pines

Un sensor de evitación de obstáculos por infrarrojos tiene tres pines:

  • Pin GND: conecta este pin a GND (0V)
  • Pin VCC: conecta este pin a VCC (5V o 3.3V)
  • Pin OUT: es un pin de salida: BAJO si hay un obstáculo presente, ALTO si no hay obstáculo presente. Este pin debe conectarse al pin de entrada del ESP32.
Disposición de pines del sensor de detección de obstáculos por infrarrojos

Cómo funciona

Un módulo de sensor de obstáculos infrarrojos consta de un transmisor IR y un receptor IR. El transmisor IR emite la señal IR mientras que el receptor IR busca la señal IR reflejada para determinar si el objeto está presente o no. La presencia del obstáculo se refleja en la salida OUT:

  • Si hay un obstáculo, el pin de salida del sensor está en nivel bajo
  • Si no hay obstáculo, el pin de salida del sensor está en nivel alto

※ Nota:

Durante el envío, el sensor puede deformarse, lo que podría hacer que dejara de funcionar. Si el sensor no funciona correctamente, ajuste el transmisor y el receptor de infrarrojos para asegurar que estén paralelos.

Diagrama de Cableado

  • Cómo conectar ESP32 y un sensor de evitación de obstáculos usando breadboard
Diagrama de cableado del sensor de evitación de obstáculos por infrarrojos para ESP32

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

Cómo conectar el ESP32 y un sensor de evitación de obstáculos

Cómo programar para el sensor de evitación de obstáculos IR

  • Inicializa el pin del ESP32 en modo de entrada digital usando la función pinMode(). Por ejemplo, el pin GPIO18
pinMode(18, INPUT_PULLUP);
  • Lee el estado del pin del ESP32 utilizando la función digitalRead().
int state = digitalRead(18);

Código ESP32

Hay dos casos de uso para implementar una aplicación de evitación de obstáculos:

  • Tomar medidas mientras el obstáculo esté presente o no esté presente
  • Tomar medidas cuando se detecte el obstáculo o se despegue

Código ESP32 para verificar si el obstáculo está presente

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-infrared-obstacle-avoidance-sensor */ #define SENSOR_PIN 18 // ESP32 pin GPIO18 connected to OUT pin of IR obstacle avoidance sensor void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the Arduino's pin as aninput pinMode(SENSOR_PIN, INPUT); } void loop() { // read the state of the the input pin: int state = digitalRead(SENSOR_PIN); if (state == LOW) Serial.println("The obstacle is present"); else Serial.println("The obstacle is NOT present"); delay(100); }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Copia el código anterior y pégalo en Arduino IDE.
  • Compila y sube el código a la placa ESP32 haciendo clic en el botón Subir en Arduino IDE.
  • Coloca un obstáculo delante del sensor durante un tiempo, y luego retíralo.
  • Consulta el resultado en Monitor Serial. Se muestra a continuación:
COM6
Send
The obstacle is NOT present The obstacle is NOT present The obstacle is NOT present The obstacle is NOT present The obstacle is NOT present The obstacle is present The obstacle is present The obstacle is present The obstacle is present The obstacle is NOT present The obstacle is NOT present
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Código ESP32 para detectar obstáculos

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-infrared-obstacle-avoidance-sensor */ #define SENSOR_PIN 18 // ESP32 pin GPIO18 connected to OUT pin of IR obstacle avoidance sensor int lastState = HIGH; // the previous state from the input pin int currentState; // the current reading from the input pin void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the ESP32's pin as an input pinMode(SENSOR_PIN, INPUT); } void loop() { // read the state of the the input pin: currentState = digitalRead(SENSOR_PIN); if (lastState == HIGH && currentState == LOW) Serial.println("The obstacle is detected"); else if (lastState == LOW && currentState == HIGH) Serial.println("The obstacle is cleared"); delay(50); // save the the last state lastState = currentState; }

Pasos R\u00e1pidos

  • Copie el código anterior y péguelo en el IDE de Arduino.
  • Compila y carga el código a la placa ESP32 haciendo clic en el botón Subir en el IDE de Arduino.
  • Coloque un obstáculo delante del sensor por un rato y luego retírelo.
  • Vea el resultado en el Monitor Serial. Se muestra a continuación:
COM6
Send
The obstacle is detected The obstacle is cleared
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Tutoriales Relacionados

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!