import ultrasonic
The ultrasonic module reads HC-SR04-style trigger/echo distance sensors. Create one sensor object with the trigger and echo pins, then ask for distance in the unit you need. The firmware enforces timeouts and a minimum measurement gap so a missing echo cannot lock up the device forever. Most HC-SR04 boards drive ECHO at 5V. Use a voltage divider or level shifter before connecting ECHO to an ESP32 GPIO.
Quick example
import ultrasonic
import system
sensor = ultrasonic.Ultrasonic(trigger=5, echo=18)
print(sensor.distance_cm())
def watch():
reading = sensor.read()
if reading["ok"] and reading["distance_cm"] < 30:
print("object near", reading["distance_cm"])
system.schedule("distance", 1000, 1000, -1, watch)
stable = sensor.sample(count=5, interval_ms=60)
print(stable)
importultrasonic
Ultrasonic distance sensor module.
The ultrasonic module reads HC-SR04-style trigger/echo distance sensors. Create one sensor object with the trigger and echo pins, then ask for distance in the unit you need. The firmware enforces timeouts and a minimum measurement gap so a missing echo cannot lock up the device forever. Most HC-SR04 boards drive ECHO at 5V. Use a voltage divider or level shifter before connecting ECHO to an ESP32 GPIO.
ultrasonic.Ultrasonic(trigger: int, echo: int, max_distance_cm: float = None, temperature_c: float = None) -> ultrasonic_sensor
ultrasonic.Ultrasonic(trigger: int, echo: int, max_distance_cm: float = None, temperature_c: float = None) -> ultrasonic_sensorCreate an ultrasonic distance sensor.
| Name | Type | Pass as | Required | Description |
|---|---|---|---|---|
trigger |
int |
positional or keyword | Yes | GPIO output pin connected to the sensor TRIG input. |
echo |
int |
positional or keyword | Yes | GPIO input pin connected to the sensor ECHO output. |
max_distance_cm |
float |
positional or keyword | No | Optional maximum expected distance in centimeters. Defaults to 400. Used to derive the echo timeout. |
temperature_c |
float |
positional or keyword | No | Optional ambient temperature in degrees Celsius. Defaults to 20. Used to adjust speed-of-sound conversion. |
ultrasonic_sensor ultrasonic_sensor object.
ultrasonic.Ultrasonic().distance_cm() -> float
ultrasonic.Ultrasonic().distance_cm() -> floatTrigger one measurement and return distance in centimeters, or nil if no valid echo is received.
ultrasonic.Ultrasonic().distance_mm() -> int
ultrasonic.Ultrasonic().distance_mm() -> intTrigger one measurement and return distance in millimeters, or nil if no valid echo is received.
ultrasonic.Ultrasonic().distance_m() -> float
ultrasonic.Ultrasonic().distance_m() -> floatTrigger one measurement and return distance in meters, or nil if no valid echo is received.
ultrasonic.Ultrasonic().duration_us() -> int
ultrasonic.Ultrasonic().duration_us() -> intTrigger one measurement and return echo pulse width in microseconds, or nil if no valid echo is received.
ultrasonic.Ultrasonic().read() -> dict
ultrasonic.Ultrasonic().read() -> dictTrigger one measurement and return ok, valid, error, distance_cm, distance_mm, distance_m, duration_us, timestamp_ms, pins, and configuration.
ultrasonic.Ultrasonic().sample(count=5, interval_ms=60) -> float
ultrasonic.Ultrasonic().sample(count=5, interval_ms=60) -> floatTake several readings, ignore invalid samples, and return the median distance in centimeters, or nil if none are valid.
| Name | Type | Pass as | Required | Description |
|---|---|---|---|---|
count |
int |
positional or keyword | No | Optional value. Defaults to 5. |
interval_ms |
int |
positional or keyword | No | Optional value. Defaults to 60. |
ultrasonic.Ultrasonic().is_near(distance_cm, samples=1) -> bool
ultrasonic.Ultrasonic().is_near(distance_cm, samples=1) -> boolReturn True when the measured distance is less than or equal to distance_cm. Measurement failure returns False.
| Name | Type | Pass as | Required | Description |
|---|---|---|---|---|
distance_cm |
float |
positional or keyword | Yes | Required value. |
samples |
int |
positional or keyword | No | Optional value. Defaults to 1. |
ultrasonic.Ultrasonic().set_temperature(value_c) -> bool
ultrasonic.Ultrasonic().set_temperature(value_c) -> boolUpdate ambient temperature compensation.
| Name | Type | Pass as | Required | Description |
|---|---|---|---|---|
value_c |
any |
positional or keyword | Yes | Required value. |
ultrasonic.Ultrasonic().set_max_distance(distance_cm) -> bool
ultrasonic.Ultrasonic().set_max_distance(distance_cm) -> boolUpdate maximum expected distance and derived timeout.
| Name | Type | Pass as | Required | Description |
|---|---|---|---|---|
distance_cm |
float |
positional or keyword | Yes | Required value. |
ultrasonic.Ultrasonic().configure(max_distance_cm=300, temperature_c=25, trigger_pulse_us=10, minimum_interval_ms=60) -> bool
ultrasonic.Ultrasonic().configure(max_distance_cm=300, temperature_c=25, trigger_pulse_us=10, minimum_interval_ms=60) -> boolUpdate measurement limits and timing.
| Name | Type | Pass as | Required | Description |
|---|---|---|---|---|
max_distance_cm |
float |
positional or keyword | No | Optional value. Defaults to 300. |
temperature_c |
float |
positional or keyword | No | Optional value. Defaults to 25. |
trigger_pulse_us |
int |
positional or keyword | No | Optional value. Defaults to 10. |
minimum_interval_ms |
int |
positional or keyword | No | Optional value. Defaults to 60. |
ultrasonic.Ultrasonic().last() -> dict
ultrasonic.Ultrasonic().last() -> dictReturn the latest reading without triggering another measurement.
ultrasonic.Ultrasonic().reset() -> bool
ultrasonic.Ultrasonic().reset() -> boolClear the latest reading and leave the sensor configured.
ultrasonic.Ultrasonic().info() -> dict
ultrasonic.Ultrasonic().info() -> dictReturn pins, timing, timeout, temperature compensation, and latest status.
ultrasonic.Ultrasonic().close() -> bool
ultrasonic.Ultrasonic().close() -> boolClose the native sensor object.