Skip to content
forked from amperka/URM37

πŸ”Š Easy-to-use Arduino library for URM37 ultrasonic sensors. Simple distance measurements, multi-version support, and reliable PWM communication.

Notifications You must be signed in to change notification settings

milesburton/URM37

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

URM37 Ultrasonic Sensor Library for Arduino πŸš€

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! πŸ¦‡

Features ✨

  • 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 πŸ“š

Hardware Requirements πŸ› οΈ

  • Arduino board (Any model) πŸŽ›οΈ
  • URM37 ultrasonic sensor (v3.2 or later) πŸ“‘
  • 3 jumper wires πŸ”‹
  • Power supply (3.3V or 5V, sensor-dependent) ⚑

Installation πŸ’»

Using Arduino Library Manager (Recommended) ⭐

  1. Open Arduino IDE
  2. Navigate to Tools β†’ Manage Libraries...
  3. Search for "URM37"
  4. Click "Install"

Manual Installation πŸ“₯

  1. Download this repository as a ZIP file
  2. In Arduino IDE: Sketch β†’ Include Library β†’ Add .ZIP Library...
  3. Select the downloaded ZIP file
  4. Restart Arduino IDE

Wiring πŸ”Œ

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

Quick Start 🚦

#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);
}

Advanced Usage 🎯

Temperature Compensation 🌑️

// Enable temperature compensation
sensor.enableTemperatureCompensation();

// Get temperature-compensated distance
float distance = sensor.getDistanceCompensated();

Change Measurement Units πŸ“

// Switch to inches
sensor.setUnit(URM37::INCHES);

// Switch back to centimeters
sensor.setUnit(URM37::CENTIMETERS);

Troubleshooting πŸ”§

No Readings or Incorrect Values ❌

  1. Check Wiring πŸ”Œ

    • Verify all connections are secure
    • Ensure correct voltage (5V or 3.3V)
    • Try different digital pins
  2. Environmental Factors 🌍

    • Clear any obstacles in sensor's path
    • Avoid soft/sound-absorbing surfaces
    • Keep sensor away from strong EMI sources
  3. Code Issues πŸ’»

    • Verify pin number matches wiring
    • Ensure proper delay between readings
    • Check Serial Monitor baud rate

Known Limitations πŸ“‹

  • Minimum distance: 2cm
  • Maximum distance: 500cm
  • Update rate: Maximum 20Hz
  • Surface angle: Best results at 90Β°
  • Surface texture: Works best with solid, flat surfaces

Contributing 🀝

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

Please include:

  • Clear commit messages
  • Documentation updates
  • Test cases for new features

License πŸ“œ

MIT License - See LICENSE file for details

About

πŸ”Š Easy-to-use Arduino library for URM37 ultrasonic sensors. Simple distance measurements, multi-version support, and reliable PWM communication.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 100.0%