Raspberry Pi Pico - capteur ultrasonique

Ce guide vous montre comment utiliser le capteur à ultrasons et le Raspberry Pi Pico pour déterminer la distance d'un objet. Nous apprendrons sur :

Capteur à ultrasons Raspberry Pi Pico

Préparation du matériel

1×Raspberry Pi Pico W
1×Raspberry Pi Pico Alternativement:
1×Câble Micro USB
1×Capteur à ultrasons
1×Fils de connexion
1×Recommandé: Carte d'extension à bornier à vis pour Raspberry Pi Pico

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (30 capteurs/écrans)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du capteur ultrasonique

Le capteur ultrasonique HC-SR04 calcule la distance des objets en utilisant des ondes sonores. Il émet une onde sonore inaudible par l’oreille humaine et attend d’entendre l’écho qui revient après avoir rebondi sur un objet. En mesurant le temps nécessaire au retour de l’écho, le capteur détermine la distance à l’objet.

Plan de brochage

Le capteur ultrasonique HC-SR04 possède quatre broches.

  • Broche VCC : Connectez cette broche à VCC (5 volts).
  • Broche GND : Connectez cette broche à GND (0 volts).
  • Broche TRIG : Connectez-la au Raspberry Pi Pico pour envoyer des signaux de contrôle.
  • Broche ECHO : Cette broche renvoie des signaux au Raspberry Pi Pico, qui mesure ces signaux pour déterminer la distance.
Schéma de brochage du capteur à ultrasons
image source: diyables.io

Diagramme de câblage

Schéma de câblage du capteur ultrasonique du Raspberry Pi Pico

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Code du Raspberry Pi Pico

Avant d'utiliser la bibliothèque du capteur à ultrasons, nous allons essayer de programmer le Raspberry Pi Pico sans utiliser de bibliothèque pour comprendre comment cela fonctionne.

from machine import Pin, Timer import time # Define the pins for the trigger and echo trig = Pin(1, Pin.OUT) # The Raspberry Pi Pico pin (GP1) connected to TRIG pin of the ultrasonic sensor echo = Pin(0, Pin.IN) # The Raspberry Pi Pico pin (GP0) connected to ECHO pin of the ultrasonic sensor def read_distance(): # Ensure the trigger pin is low for a clean pulse trig.value(0) time.sleep_us(2) # Send a 10 microsecond pulse to start the measurement trig.value(1) time.sleep_us(10) trig.value(0) # Measure the duration of the echo pulse while echo.value() == 0: signal_off = time.ticks_us() while echo.value() == 1: signal_on = time.ticks_us() # Calculate the duration of the echo pulse time_passed = signal_on - signal_off # Calculate the distance in centimeters distance = (time_passed * 0.0343) / 2 return distance # Check the sensor every 1 seconds while True: distance = read_distance() print('Distance:', distance, 'cm') time.sleep(1)

Étapes rapides

Veuillez suivre ces instructions étape par étape :

  • Assurez-vous que l'IDE Thonny est installé sur votre ordinateur.
  • Assurez-vous que le firmware MicroPython est installé sur votre Raspberry Pico.
  • Si c'est la première fois que vous utilisez un Raspberry Pico, reportez-vous au tutoriel Raspberry Pi Pico - Premiers pas. pour obtenir des instructions détaillées.
  • Reliez le Raspberry Pi Pico au capteur ultrasonique selon le schéma fourni.
  • Connectez le Raspberry Pi Pico à votre ordinateur à l'aide d'un câble USB.
  • Lancez l'IDE Thonny sur votre ordinateur.
  • Dans l'IDE Thonny, sélectionnez l'interpréteur MicroPython (Raspberry Pi Pico) en allant dans Outils Options.
  • Dans l'onglet Interpréteur, sélectionnez MicroPython (Raspberry Pi Pico) dans le menu déroulant.
  • Assurez-vous que le bon port est sélectionné. L'IDE Thonny devrait détecter automatiquement le port, mais vous devrez peut-être le sélectionner manuellement (par exemple COM3 sur Windows ou /dev/ttyACM0 sur Linux).
  • Copiez le code ci-dessus et collez-le dans l'éditeur de l'IDE Thonny.
  • Enregistrez le script sur votre Raspberry Pi Pico en:
    • Cliquez sur le bouton Enregistrer, ou utilisez les touches Ctrl+S.
    • Dans la boîte de dialogue d'enregistrement, vous verrez deux sections: Cet ordinateur et Raspberry Pi Pico. Sélectionnez Raspberry Pi Pico
    • Enregistrez le fichier sous main.py
  • Cliquez sur le bouton vert Run (ou appuyez sur F5) pour exécuter le script. Le script s'exécutera.
  • Déplacez votre main devant le capteur ultrasonique.
  • Consultez le message dans le Shell en bas de Thonny.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Distance: 29.4 cm Distance: 27.6 cm Distance: 26.9 cm Distance: 17.4 cm Distance: 16.9 cm Distance: 14.3 cm Distance: 15.6 cm Distance: 13.1 cm
MicroPython (Raspberry Pi Pico) • Board CDC @ COM29 ≡

Si vous nommez votre script main.py et que vous le sauvegardez dans le répertoire racine du Raspberry Pi Pico, il s'exécutera automatiquement à chaque fois que le Pico sera alimenté ou réinitialisé. Cela est utile pour les applications autonomes qui doivent démarrer immédiatement après la mise sous tension. Si vous nommez votre script sous un autre nom que main.py, vous devrez l'exécuter manuellement depuis le Shell de Thonnys.

Explication du code

L'explication se trouve dans les commentaires du code Raspberry Pi Pico ci-dessus.

Comment filtrer le bruit des mesures de distance d'un capteur ultrasonique

Les données du capteur à ultrasons contiennent des signaux supplémentaires et inutiles, que nous appelons du bruit. Parfois, ce bruit peut provoquer un mauvais fonctionnement du capteur. Nous pouvons éliminer ce bruit en utilisant la méthode suivante:

  • Mesurer plusieurs fois et stocker ces mesures dans une liste.
  • Trier la liste du plus petit au plus grand.
    • Ignorez les valeurs les plus petites car elles sont considérées comme du bruit.
    • Ignorez les valeurs les plus grandes car elles sont également considérées comme du bruit.
    • Calculer la moyenne des valeurs restantes au milieu.

    Le code d'exemple ci-dessous effectue 20 mesures.

    • Ignorez les cinq échantillons les plus petits et les cinq échantillons les plus grands, car ils sont considérés comme du bruit. Calculez la moyenne des dix échantillons du milieu, allant du 5e au 14e.

    Le code MicroPython ci-dessous implémente l'algorithme ci-dessus :

    /* * Ce code Raspberry Pi Pico a été développé par newbiely.fr * Ce code Raspberry Pi Pico est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/raspberry-pico/raspberry-pi-pico-ultrasonic-sensor */ from machine import Pin, Timer import time # Define the pins for the trigger and echo trig = Pin(1, Pin.OUT) echo = Pin(0, Pin.IN) # Define an array to store measurements filter_array = [] def read_distance(): # Ensure the trigger pin is low for a clean pulse trig.value(0) time.sleep_us(2) # Send a 10 microsecond pulse to start the measurement trig.value(1) time.sleep_us(10) trig.value(0) # Measure the duration of the echo pulse while echo.value() == 0: signal_off = time.ticks_us() while echo.value() == 1: signal_on = time.ticks_us() # Calculate the duration of the echo pulse time_passed = signal_on - signal_off # Calculate the distance in centimeters distance = (time_passed * 0.0343) / 2 return distance def take_measurements(): global filter_array filter_array = [read_distance() for _ in range(20)] time.sleep_ms(30) # delay to avoid ultrasonic interference def filter_measurements(): global filter_array filter_array.sort() # Consider only the middle 10 samples middle_samples = filter_array[5:15] return sum(middle_samples) / len(middle_samples) while True: take_measurements() filtered_distance = filter_measurements() if filtered_distance > 140: print('No object detected within the set distance') else: # Print the distance formatted to two decimal places using format() print('Filtered distance: {:.2f} cm'.format(filtered_distance)) time.sleep(1)
    • Copiez le code ci-dessus et collez-le dans le fichier main.py dans l'éditeur de l'IDE Thonny.
    • Enregistrez le script sur votre Raspberry Pi Pico.
    • Cliquez sur le bouton vert Exécuter (ou appuyez sur F5) pour exécuter le script. Le script s'exécutera.
    • Placez votre main devant le capteur ultrasonique.
    • Vérifiez le message dans le Shell en bas de Thonny.
    Shell x
    >>> %Run -c $EDITOR_CONTENT
    MPY: soft reboot MPY: soft reboot No object detected within the set distance No object detected within the set distance No object detected within the set distance Filtered distance: 5.46 cm Filtered distance: 9.21 cm Filtered distance: 10.12 cm Filtered distance: 12.33 cm Filtered distance: 9.89 cm Filtered distance: 6.56 cm No object detected within the set distance No object detected within the set distance No object detected within the set distance No object detected within the set distance No object detected within the set distance
    MicroPython (Raspberry Pi Pico) • Board CDC @ COM29 ≡

Raspberry Pi Pico - Bibliothèque de capteurs ultrasoniques

Ce qui précède semble compliqué, mais heureusement, DIYables a développé la bibliothèque pour vous faciliter la tâche. Vous pouvez suivre les étapes ci-dessous pour utiliser la bibliothèque du capteur à ultrasons :

  • Dans l’IDE Thonny, accédez à Outils Gérer les paquets sur l’IDE Thonny.
  • Recherchez “DIYables-MicroPython-Ultrasonic-Sensor”, puis trouvez la bibliothèque Ultrasonic Sensor créée par DIYables.
  • Cliquez sur DIYables-MicroPython-Ultrasonic-Sensor, puis cliquez sur le bouton Install pour installer la bibliothèque Ultrasonic Sensor.
Bibliothèque du capteur ultrasonique pour Raspberry Pi Pico
  • Copiez le code ci-dessous et collez-le dans l'éditeur de l'IDE Thonny.
/* * Ce code Raspberry Pi Pico a été développé par newbiely.fr * Ce code Raspberry Pi Pico est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/raspberry-pico/raspberry-pi-pico-ultrasonic-sensor */ # example_usage.py from DIYables_MicroPython_Ultrasonic_Sensor import UltrasonicSensor import time sensor = UltrasonicSensor(trig_pin=1, echo_pin=0) sensor.set_detection_threshold(140) # Set detection threshold to 140 cm sensor.enable_filter(num_samples=20) # Enable filtering and set number of samples to 20 while True: sensor.loop() # Perform measurement cycle distance = sensor.get_distance() if not distance: print('No object detected within the set distance') else: # Print the distance formatted to two decimal places using format() print('Filtered distance: {:.2f} cm'.format(distance)) time.sleep(1) # Reduced sleep time to enhance measurement responsiveness
  • Enregistrez le script dans main.py sur votre Raspberry Pi Pico
  • Cliquez sur le bouton vert Exécuter (ou appuyez sur F5) pour exécuter le script. Le script s'exécutera.
  • Déplacez votre main devant le capteur à ultrasons.
  • Consultez le message dans le Shell en bas de Thonny.

Vidéo

Applications des capteurs à ultrasons

  • Prévenir les plantages
  • Vérifier si c'est plein
  • Vérifier la hauteur
  • Détecter la proximité

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !