A robust, easy-to-use Arduino library for the URM37 ultrasonic distance sensor series. This library enables precise distance measurements using sound waves through a simple PWM interface. Think of it like a bat using echolocation! π¦
- Simple PWM-based distance measurements π
- Compatible with multiple URM37 versions (v3.2, v4.0, v4.1, v5.0) π
- Configurable measurement units (centimeters/inches) π
- Error handling and diagnostics π
- Minimal pin requirements (single digital pin) π
- Comprehensive documentation and examples π
- Arduino board (Any model) ποΈ
- URM37 ultrasonic sensor (v3.2 or later) π‘
- 3 jumper wires π
- Power supply (3.3V or 5V, sensor-dependent) β‘
- Open Arduino IDE
- Navigate to
Tools
βManage Libraries...
- Search for "URM37"
- Click "Install"
- Download this repository as a ZIP file
- In Arduino IDE:
Sketch
βInclude Library
βAdd .ZIP Library...
- Select the downloaded ZIP file
- Restart Arduino IDE
Connect your URM37 sensor to Arduino using these pins:
URM37 Pin | Arduino Pin | Notes |
---|---|---|
VCC | 5V/3.3V | Check sensor specifications |
GND | GND | |
PWM/TRIG | Any Digital Pin | Specified in code |
COMP/TX | Not Connected | Used for UART mode only |
ECHO/RX | Not Connected | Used for UART mode only |
#include <URM37.h>
const int SENSOR_PIN = 9;
URM37 sensor(SENSOR_PIN);
void setup() {
Serial.begin(9600);
}
void loop() {
float distance = sensor.getDistance();
if (sensor.isValidReading()) {
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
} else {
Serial.println("Error: Invalid reading");
}
delay(100);
}
// Enable temperature compensation
sensor.enableTemperatureCompensation();
// Get temperature-compensated distance
float distance = sensor.getDistanceCompensated();
// Switch to inches
sensor.setUnit(URM37::INCHES);
// Switch back to centimeters
sensor.setUnit(URM37::CENTIMETERS);
-
Check Wiring π
- Verify all connections are secure
- Ensure correct voltage (5V or 3.3V)
- Try different digital pins
-
Environmental Factors π
- Clear any obstacles in sensor's path
- Avoid soft/sound-absorbing surfaces
- Keep sensor away from strong EMI sources
-
Code Issues π»
- Verify pin number matches wiring
- Ensure proper delay between readings
- Check Serial Monitor baud rate
- Minimum distance: 2cm
- Maximum distance: 500cm
- Update rate: Maximum 20Hz
- Surface angle: Best results at 90Β°
- Surface texture: Works best with solid, flat surfaces
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
Please include:
- Clear commit messages
- Documentation updates
- Test cases for new features
MIT License - See LICENSE file for details