Skip to main content

Dragino LDDS75 Distance Sensor

The LDDS75 is a LoRaWAN ultrasonic distance/level detection sensor. It provides decent non-contact measurement of distance or liquid levels up to 7.5 meters (about 24', aka freedom units), with precision to a few inches. Confusingly for a new deployer, there is an optional temperature sensor you can add. If you don't add it, part of your payload will be "temperature = 0" or something similar. These work well for tank level monitoring, bin fill measurement, or any application requiring generally accurate distance sensing.

It's not precisely accurate; if you're fine with a few inches of variance this is a great solution. I've used 'em in the Vernal Pools Project.

Features

  • Distance measurement range: 0-75cm
  • Temperature monitoring (optional)
  • Battery voltage monitoring
  • Interrupt and sensor status reporting
  • Class A LoRaWAN device

Codec Implementation

// Codec by MeteoScientific
// Feel free to share and modify as needed
// meteoscientific.com

function decodeUplink(input) {
var decoded = {};

try {
var bytes = input.bytes;

// Battery Voltage (naturally a float)
var batValue = (bytes[0] << 8 | bytes[1]) & 0x3FFF;
decoded.battery_voltage = parseFloat((batValue / 1000).toFixed(3)); // in V

// Distance (naturally an integer in mm)
decoded.distance = bytes[2] << 8 | bytes[3]; // in mm

// Temperature if present (naturally an integer in °C)
if (bytes.length > 6) {
var tempValue = (bytes[5] << 8 | bytes[6]);
decoded.temperature = (tempValue & 0x8000) ? tempValue - 0x10000 : tempValue; // in °C
}

// Status flags as booleans
if (bytes.length > 4) {
decoded.interrupt_status = bytes[4] === 1;
}

if (bytes.length > 7) {
decoded.sensor_status = bytes[7] === 1;
}

return {
data: decoded
};
} catch (err) {
return {
errors: [`Decoder error: ${err.message}`]
};
}
}

Output Fields

FieldTypeUnitDescription
battery_voltageFloatVBattery voltage level
distanceIntegermmMeasured distance in millimeters
temperatureInteger°CTemperature (if enabled)
interrupt_statusBoolean-Interrupt flag status
sensor_statusBoolean-Sensor operation status

Sample Output

{
"battery_voltage": 3.395,
"distance": 1248,
"temperature": 0,
"interrupt_status": false,
"sensor_status": true
}

Device Configuration

The LDDS75 can be configured using a USB-TTL adapter. Key configuration options include:

  • Measurement interval
  • Temperature monitoring enable/disable
  • Interrupt thresholds
  • LoRaWAN parameters

For detailed configuration instructions, see our device configuration guide.

Additional Resources