.. note::
Hola, bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook! Sumérgete más en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
**¿Por qué unirse?**
- **Soporte de expertos**: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
- **Aprende y comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Previsualizaciones exclusivas**: Obtén acceso temprano a anuncios de nuevos productos y avances.
- **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más nuevos.
- **Promociones y sorteos festivos**: Participa en sorteos y promociones de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo!
.. _2.2.5_py:
2.2.5 Sensor de evitación de obstáculos por infrarrojos
===========================================================
Introducción
-------------------
En este proyecto, aprenderemos sobre el módulo de evitación de obstáculos por infrarrojos, que es un módulo sensor que puede usarse para detectar obstáculos a cortas distancias, con poca interferencia, fácil de montar y usar, etc. Puede utilizarse ampliamente en robots de evitación de obstáculos, carritos de evitación de obstáculos, conteo en líneas de montaje, etc.
.. image:: ../img/2.2.5IR_Obstacle.png
:width: 300
:align: center
Componentes necesarios
--------------------------------
En este proyecto, necesitamos los siguientes componentes.
.. image:: ../img/2.2.5component.png
:width: 700
:align: center
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nombre
- ARTÍCULOS EN ESTE KIT
- ENLACE
* - Kit Raphael
- 337
- |link_Raphael_kit|
También puedes comprarlos por separado en los enlaces a continuación.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUCCIÓN DE COMPONENTES
- ENLACE DE COMPRA
* - :ref:`cpn_gpio_board`
- |link_gpio_board_buy|
* - :ref:`cpn_breadboard`
- |link_breadboard_buy|
* - :ref:`cpn_wires`
- |link_wires_buy|
* - :ref:`cpn_avoid_module`
- |link_obstacle_avoidance_buy|
Diagrama esquemático
-------------------------
.. image:: ../img/IR_schematic.png
:width: 500
:align: center
Procedimientos experimentales
----------------------------------------
**Paso 1:** Monta el circuito.
.. image:: ../img/2.2.5fritzing.png
:width: 700
:align: center
**Paso 2:** Cambia el directorio.
.. raw:: html
.. code-block::
cd ~/raphael-kit/python
**Paso 3:** Ejecuta.
.. raw:: html
.. code-block::
sudo python3 2.2.5_IrObstacle.py
Después de ejecutar el código, cuando pongas tu mano frente a la sonda del módulo,
el indicador de salida en el módulo se iluminará y "¡Barrera detectada!" se imprimirá
repetidamente en la pantalla hasta que retires la mano.
**Código**
.. note::
Puedes **Modificar/Restablecer/Copiar/Ejecutar/Detener** el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como ``raphael-kit/python``. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.
.. raw:: html
.. code-block:: python
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
ObstaclePin = 17
def setup():
GPIO.setmode(GPIO.BCM) # Numeración de GPIOs por ubicación física
GPIO.setup(ObstaclePin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def loop():
while True:
if (0 == GPIO.input(ObstaclePin)):
print ("Detected Barrier!")
time.sleep(1)
def destroy():
GPIO.cleanup() # Liberar recursos
if __name__ == '__main__': # El programa comienza aquí
setup()
try:
loop()
except KeyboardInterrupt: # Cuando se presiona 'Ctrl+C', se ejecuta el programa destroy().
destroy()
**Explicación del Código**
.. code-block:: python
def setup():
GPIO.setmode(GPIO.BCM) # Numeración de GPIOs por ubicación física
GPIO.setup(ObstaclePin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
Configura el modo GPIO en Numeración BCM. Configura ``ObstaclePin`` en modo de entrada e inicialízalo a nivel alto (3.3v).
.. code-block:: python
def loop():
while True:
if (0 == GPIO.input(ObstaclePin)):
print ("Detected Barrier!")
Cuando ``ObstaclePin`` está en nivel bajo, imprime "¡Obstáculo Detectado!". Esto significa que se ha detectado un obstáculo.
Foto del Fenómeno
-----------------------
.. image:: ../img/2.2.5IR.JPG
:width: 500
:align: center