Oggi impareremo come configurare il nostro Pico per utilizzare un sensore di prossimità ad uòtrasuoni HC-SR04 con il linguaggio MicroPython.
Il sensore di prossimità ad ultrasuoni è uno dei primi sensori utilizzabili sotto Arduino. Il suo utilizzo è reso abbastanza semplice grazie ad una serie di apposite librerie che eseguono il lavoro di riconoscimento ddella distanza in background. Purtroppo per utilizzare al meglio tale sensore con il Raspberry PI occorre un minimo di perizia di programmazione, districarsi nella programmazione del GPIO e magari persino qualche riga di codice Assembly. A meno che…
A meno che si scelga di lavorare con MicroPython sul Pico, nel qal caso il codice di interfaccia al sensore conta circa 24 righe.
Vediamo come.
Il progetto
Come vediamo dalle immagini, se utilizziamo il protocollo I2C bastano quattro connettori per pilotare il sensore.
Il sensore di distanza a ultrasuoni HC-SR04 funziona come un sonar. Rimandiamo chi non conoscesse l’HC-SR04 all’ottimo articolo di Simone, su questo stesso Blog.
Attenzione:- Se hai un modulo HC-SR04 da 5V, collegalo tramite un LOGIC LEVEL SHIFTER: si tratta di un piccolo dispositivo che abbassa in modo sicuro i segnali da 5 V a 3,3 V e aumenta quelli da 3,3 V fino a 5 V contemporaneamente. Senza tale convertitore il codice non funzionerà correttamente (i PIN del Pico funzionano infatti a 3.3V).
Parleremo approfonditamente del logic level shifter, con tanto di esempi,
Il software
Di seguito il software utilizzato per pilotare il sensore:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
from machine import Pin import utime trigger = Pin(14, Pin.OUT) echo = Pin(15, Pin.IN) def ultra(): trigger.low() utime.sleep_us(2) trigger.high() utime.sleep_us(5) trigger.low() while echo.value() == 0: signaloff = utime.ticks_us() while echo.value() == 1: signalon = utime.ticks_us() timepassed = signalon - signaloff distance = (timepassed * 0.0343) / 2 print("The distance from object is ",distance,"cm") while True: ultra() utime.sleep(1) |
Tutto il lavoro viene svolto all’interno della funzione ultra(). Viene calcolato il tempo di risposta, e il risulato è stampato di conseguenza.
Il funzionamento
Un sensore a ultrasuoni è un dispositivo elettronico che misura la distanza di un oggetto bersaglio emettendo onde sonore ultrasoniche e converte il suono riflesso in un segnale elettrico. I sensori a ultrasuoni hanno due componenti principali: il trasmettitore (che emette il suono utilizzando cristalli piezoelettrici) e il ricevitore (che incontra il suono dopo che è viaggiato da e verso il bersaglio).
Per calcolare la distanza tra il sensore e l’oggetto, il sensore misura il tempo che intercorre tra l’emissione del suono da parte del trasmettitore e il suo contatto con il ricevitore. La formula per questo calcolo è D = ½ T x C (dove D è la distanza, T è il tempo e C è la velocità del suono ~ 343 metri/secondo). Ad esempio, se un ricercatore impostasse un sensore a ultrasuoni puntato su una scatola e ci volessero 0,025 secondi perché il suono rimbalzasse indietro, la distanza tra il sensore a ultrasuoni e la scatola sarebbe:
1 |
D = 0.5 x 0.025 x 343 o circa 4.2875 metri. |
Link utili:
Iscriviti ai nostri gruppi Telegram
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano