Arduino Nano ESP32 - Sensor de Obstáculos

Este tutorial le enseña cómo usar Arduino Nano ESP32 con el sensor de evitación de obstáculos por infrarrojos para detectar la presencia del obstáculo.

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

El sensor de obstáculos por infrarrojos (IR) 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.

Esquema 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.
Esquema de pines del sensor de evitación de obstáculos por infrarrojos

Cómo funciona

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

  • Si hay un obstáculo, el pin de salida del sensor está en BAJO
  • Si no hay obstáculo, el pin de salida del sensor está en ALTO

※ Nota:

Durante el envío, el sensor puede deformarse, lo que puede hacer que funcione mal. Si el sensor no funciona correctamente, ajuste el transmisor IR y el receptor para asegurarse de que estén paralelos.

Diagrama de Cableado

Diagrama de cableado del sensor IR de evitación de obstáculos para Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

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

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

Código de Arduino Nano ESP32

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

  • Tomar acciones mientras el obstáculo esté presente o ausente
  • Tomar acciones cuando se detecte el obstáculo o cuando se haya despejado

Código Arduino Nano ESP32 para comprobar si el obstáculo está presente

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-obstacle-sensor */ #define SENSOR_PIN D2 // The Arduino Nano ESP32 pin connected to OUT pin of IR obstacle avoidance sensor void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); // initialize the Arduino Nano ESP32 pin as an input 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 esta es la primera vez que usa Arduino Nano ESP32, consulte cómo configurar el entorno para Arduino Nano ESP32 en Arduino IDE.
  • Copie el código anterior y péguelo en el IDE de Arduino.
  • Compilar y subir el código a la placa Arduino Nano ESP32 haciendo clic en el botón Subir en el IDE de Arduino.
  • Coloque un obstáculo frente al sensor durante un rato, y luego retírelo.
  • Verifique el resultado en el Monitor Serial. A continuación se muestra:
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 de Arduino Nano ESP32 para detectar obstáculos

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-obstacle-sensor */ #define SENSOR_PIN D2 // The Arduino Nano ESP32 pin connected to OUT pin of IR obstacle avoidance sensor int prev_state = HIGH; // The previous state from the input pin int obstacle_state; // The current reading from the input pin void setup() { // Initialize the Serial to communicate with the Serial Monitor. 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: obstacle_state = digitalRead(SENSOR_PIN); if (prev_state == HIGH && obstacle_state == LOW) Serial.println("The obstacle is detected"); else if (prev_state == LOW && obstacle_state == HIGH) Serial.println("The obstacle is cleared"); delay(50); // save the the last state prev_state = obstacle_state; }

Pasos R\u00e1pidos

  • Copia el código anterior y pégalo en el IDE de Arduino.
  • Compila y sube el código a la placa Arduino Nano ESP32 haciendo clic en el botón Subir en el IDE de Arduino.
  • Coloca un obstáculo frente al sensor durante un rato y luego retíralo.
  • Revisa el Monitor serie. Se ve como 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!