Note
Bonjour, bienvenue dans la communauté des passionnés SunFounder Raspberry Pi, Arduino & ESP32 sur Facebook ! Explorez plus en profondeur le Raspberry Pi, l’Arduino et l’ESP32 avec d’autres passionnés.
Pourquoi nous 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 & 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 exclusifs.
Réductions spéciales : Profitez de réductions exclusives sur nos nouveaux produits.
Promotions festives et concours : Participez à des concours et des promotions spéciales.
👉 Prêt à explorer et créer avec nous ? Cliquez sur [ici] et rejoignez-nous dès aujourd’hui !
7.10 Assistance au Recul
Ce projet utilise une LED, un buzzer et un module ultrasonique pour créer un système d’assistance au recul. Nous pouvons l’installer sur une voiture télécommandée pour simuler le processus réel de recul d’une voiture dans un garage.
Composants Requis
Dans ce projet, nous aurons besoin des composants suivants.
Il est plus pratique d’acheter un kit complet, voici le lien :
Nom |
ÉLÉMENTS DANS CE KIT |
LIEN |
|---|---|---|
Kit Kepler |
450+ |
Vous pouvez également les acheter séparément via les liens ci-dessous.
SN |
COMPOSANT |
QUANTITÉ |
LIEN |
|---|---|---|---|
1 |
1 |
||
2 |
Câble Micro USB |
1 |
|
3 |
1 |
||
4 |
Plusieurs |
||
5 |
1 (S8050) |
||
6 |
2 (1KΩ, 220Ω) |
||
7 |
Buzzer Actif Buzzer |
1 |
|
8 |
1 |
||
9 |
1 |
Schéma

Câblage

Code
Note
Ouvrez le fichier
7.10_reversing_aid.pysous le cheminkepler-kit-main/micropythonou copiez ce code dans Thonny, puis cliquez sur « Run Current Script » ou appuyez simplement sur F5 pour l’exécuter.N’oubliez pas de sélectionner l’interpréteur « MicroPython (Raspberry Pi Pico) » en bas à droite.
Pour des tutoriels détaillés, veuillez vous référer à Ouvrir et Exécuter du Code Directement.
import machine
import time
# Initialiser les broches pour le buzzer et la LED
buzzer = machine.Pin(15, machine.Pin.OUT) # Buzzer sur la broche 15
led = machine.Pin(14, machine.Pin.OUT) # LED sur la broche 14
# Initialiser les broches pour le capteur ultrasonique (HC-SR04)
TRIG = machine.Pin(17, machine.Pin.OUT) # Broche Trigger pour le capteur ultrasonique
ECHO = machine.Pin(16, machine.Pin.IN) # Broche Echo pour le capteur ultrasonique
dis = 100 # Variable globale pour stocker la distance
# Fonction pour mesurer la distance avec le capteur ultrasonique
def distance():
TRIG.low()
time.sleep_us(2)
TRIG.high()
time.sleep_us(10)
TRIG.low()
timeout_start = time.ticks_us() # Utiliser les microsecondes pour plus de précision
# Attendre que la broche ECHO passe à haut (début de l'impulsion echo)
while not ECHO.value():
if time.ticks_diff(time.ticks_us(), timeout_start) > 30000: # Timeout 30ms
return -1 # Timeout, retourner -1 si aucune impulsion n'est détectée
time1 = time.ticks_us() # Temps de départ pour le calcul de la largeur de l'impulsion
# Attendre que la broche ECHO passe à bas (fin de l'impulsion echo)
while ECHO.value():
if time.ticks_diff(time.ticks_us(), time1) > 30000: # Timeout 30ms
return -1 # Timeout, retourner -1 si l'impulsion est trop longue
time2 = time.ticks_us() # Temps de fin pour le calcul de la largeur de l'impulsion
# Calculer la distance en fonction de la durée de l'impulsion echo
during = time.ticks_diff(time2, time1)
distance_cm = during * 340 / 2 / 10000 # Convertir le temps en distance en cm
return distance_cm
# Fonction pour faire bipper le buzzer et allumer la LED
def beep():
buzzer.value(1) # Allumer le buzzer
led.value(1) # Allumer la LED
time.sleep(0.1) # Durée du bip
buzzer.value(0) # Éteindre le buzzer
led.value(0) # Éteindre la LED
time.sleep(0.1) # Petite pause entre les bips
# Initialiser les variables pour contrôler les intervalles de bips
intervals = 2000 # Long intervalle initial par défaut
previousMillis = time.ticks_ms() # Stocker le temps précédent pour suivre les intervalles de bips
# Boucle principale pour gérer les intervalles de bips basés sur la distance
while True:
dis = distance() # Mesurer la distance directement dans la boucle principale
# Ajuster les intervalles de bips en fonction de la distance
if dis > 0: # S'assurer que la distance mesurée est valide
if dis <= 10:
intervals = 300 # Distance proche, bips plus rapides
elif dis <= 20:
intervals = 500 # Distance moyenne-proche, bips modérés
elif dis <= 50:
intervals = 1000 # Distance moyenne, bips plus lents
else:
intervals = 2000 # Grande distance, bips très lents
# Afficher la distance mesurée
print(f'Distance : {dis:.2f} cm')
# Vérifier s'il est temps de bipper à nouveau en fonction de l'intervalle
currentMillis = time.ticks_ms() # Obtenir l'heure actuelle
if time.ticks_diff(currentMillis, previousMillis) >= intervals:
beep() # Faire bipper le buzzer et clignoter la LED
previousMillis = currentMillis # Mettre à jour le temps du dernier bip
time.sleep_ms(100) # Petit délai pour éviter les lectures trop fréquentes
Dès que le programme démarre, le capteur ultrasonique lira en continu la distance jusqu’à l’obstacle devant vous, et vous pourrez voir la valeur exacte de la distance sur le shell.
La LED et le buzzer changeront la fréquence de clignotement et de bip en fonction de la distance mesurée, indiquant ainsi la proximité de l’obstacle.
L’article 6.1 Mesure de la distance mentionne que lorsque le capteur ultrasonique fonctionne, le programme sera en pause.
Pour éviter de perturber le timing de la LED ou du buzzer, nous avons créé un thread séparé pour la mesure de distance dans cet exemple.