.. note::
Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l'univers des Raspberry Pi, Arduino et ESP32 avec d'autres passionnés.
**Pourquoi rejoindre ?**
- **Support d'experts** : Résolvez les problèmes après-vente et les défis techniques avec l'aide de notre communauté et de notre équipe.
- **Apprendre et partager** : Échangez des astuces et des tutoriels pour améliorer vos compétences.
- **Aperçus exclusifs** : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.
- **Réductions spéciales** : Profitez de réductions exclusives sur nos produits les plus récents.
- **Promotions festives et cadeaux** : Participez à des cadeaux et des promotions de vacances.
👉 Prêt à explorer et à créer avec nous ? Cliquez [|link_sf_facebook|] et rejoignez-nous aujourd'hui !
.. _2.2.5_py:
2.2.5 Capteur d'Évitement d'Obstacles IR
============================================
Introduction
---------------
Dans ce projet, nous allons découvrir le module d'évitement d'obstacles IR, qui est un module capteur pouvant être utilisé pour détecter des obstacles à courte distance, avec une petite interférence, facile à assembler, facile à utiliser, etc. Il peut être largement utilisé dans l'évitement d'obstacles pour robots, les chariots d'évitement d'obstacles, le comptage sur les chaînes de montage, etc.
.. image:: ../img/2.2.5IR_Obstacle.png
:width: 300
:align: center
Composants Nécessaires
-------------------------
Pour ce projet, nous avons besoin des composants suivants :
.. image:: ../img/2.2.5component.png
:width: 700
:align: center
Il est très pratique d'acheter un kit complet, voici le lien :
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nom
- ÉLÉMENTS DANS CE KIT
- LIEN
* - Kit Raphael
- 337
- |link_Raphael_kit|
Vous pouvez également les acheter séparément via les liens ci-dessous.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUCTION DES COMPOSANTS
- LIEN D'ACHAT
* - :ref:`cpn_gpio_extension_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|
Schéma Électrique
--------------------
.. image:: ../img/IR_schematic.png
:width: 500
:align: center
Procédures Expérimentales
----------------------------
**Étape 1 :** Construire le circuit
.. image:: ../img/2.2.5fritzing.png
:width: 700
:align: center
**Étape 2 :** Changer de répertoire.
.. raw:: html
.. code-block::
cd ~/raphael-kit/python
**Étape 3 :** Exécuter.
.. raw:: html
.. code-block::
sudo python3 2.2.5_IrObstacle.py
Après l'exécution du code, lorsque vous mettez votre main devant la sonde du module, l'indicateur
de sortie sur le module s'allume et "Detected Barrier!" sera imprimé à l'écran de manière répétée
jusqu'à ce que vous retiriez votre main.
**Code**
.. note::
Vous pouvez **Modifier/Réinitialiser/Copier/Exécuter/Arrêter** le code ci-dessous. Mais avant cela, vous devez accéder au chemin du code source comme ``raphael-kit/python``. Après avoir modifié le code, vous pouvez l'exécuter directement pour voir l'effet.
.. raw:: html
.. code-block:: python
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
ObstaclePin = 17
def setup():
GPIO.setmode(GPIO.BCM) # Numbers GPIOs by physical location
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() # Release resource
if __name__ == '__main__': # Program start from here
setup()
try:
loop()
except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the child program destroy() will be executed.
destroy()
**Explication du Code**
.. code-block:: python
def setup():
GPIO.setmode(GPIO.BCM) # Numbers GPIOs by physical location
GPIO.setup(ObstaclePin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
Configurer le mode GPIO en numérotation BCM. Configurer ``ObstaclePin`` en mode entrée et l'initialiser à un niveau haut (3,3V).
.. code-block:: python
def loop():
while True:
if (0 == GPIO.input(ObstaclePin)):
print ("Detected Barrier!")
Lorsque ``ObstaclePin`` est à un niveau bas, afficher "Detected Barrier!". Cela signifie qu'un obstacle est détecté.
Image du Phénomène
----------------------
.. image:: ../img/2.2.5IR.JPG
:width: 500
:align: center