Sensor Features
Model catalog
Search for these models in ThinkLink by name or ID.
| Model type | Name | id_name | Platform model ID |
|---|---|---|---|
| RPC | [DYP A02 GET] para | dyp_a02_get | 85858625238601733 |
| RPC | [DYP A02 SET] para | dyp_a02_set | 85856730826674181 |
| Template | DYP-A02-2.0 | 85852682421538821 | |
| Thing Model | [DYP-A02-2.0] | dyp_a02_21305 | 85851937521537029 |
| Thing Model | [DYP-21305-DYP-A02资产] 区域聚合 | dyp_a02_asset_21305 | 119677174411063298 |
The DYP-A02-V2.0 Series is a high-performance distance measurement module built with a sealed, split-type waterproof probe. It features dust- and water-resistance (IP-rated), making it suitable for humid or harsh operating environments. With a minimal blind zone of just 3 cm, it adapts flexibly to diverse detection conditions—offering simple operation, high performance, and industrial-grade reliability.
Product Features
- 3 cm minimal blind zone
- Power supply: 3.3–5 V (RS-485 output version: 5–24 V)
- Five selectable output modes
- Sealed, split-type waterproof probe
- Operating temperature: −15 °C to +60 °C
- Storage temperature: −25 °C to +80 °C
- Ultra-low power design: Standby current < 5 µA
- ESD protection: Integrated ESD protection components on signal lines; compliant with IEC 61000-4-2
Product Advantages
- Minimal blind zone
- Strong anti-interference capability
- Stable and reliable data output
- Low power consumption
- Fast response time
- High ESD immunity
- Wide operating temperature range
- High measurement accuracy
Applications
- Horizontal distance measurement
- Parking management systems
- Robot obstacle avoidance & automatic control
- Object proximity and presence detection
Integration Information
Hardware Specifications
- Product Documentation:
DYP-RD-Product_Specification(DYP-A02-V2.0)-220912-A0.pdf - Model Number: DYP-A02-V2.0 (RS-485 interface version)
- Communication Protocol: Modbus-RTU
- Default RS-485 Address:
0x01(configurable via command) - Baud Rate: Default
9600, 8N1 (configurable via command) - Power Supply: 5–24 V DC
- Power Consumption:
- Standby current: ≤ 5 µA
- Average operating current: ≤ 15 mA
- Peak operating current: < 75 mA
- Warm-up Time: 5 ms
- Wiring: 4-wire interface —
VCC,GND,RS-485A(white),RS-485B(yellow) - Test DTU: KC21 (A1 version), providing 15 V power and RS-485 connectivity to DYP-A02-V2.0
Data Acquisition
Required registers to read:
0x0100: Distance value0x0102: Temperature value
| Access | Register Address | Function | Data Type | Description |
|---|---|---|---|---|
| R | 0x0100 | Processed Distance | Unsigned 16-bit integer (Uint16BE) | Distance after algorithmic processing; unit: mm; response time ≈ 520 ms |
| R | 0x0101 | Real-time Distance | Unsigned 16-bit integer (Uint16BE) | Raw real-time distance; unit: mm; response time ≈ 120 ms |
| R | 0x0102 | Temperature | Signed 16-bit integer (Int16BE) | Unit: 0.1 °C; resolution: 0.5 °C; response time ≈ 120 ms |
| R/W | 0x0200 | Slave Address | Unsigned 16-bit integer | Range: 0x01–0xFE; default: 0x01; 0xFF = broadcast address |
| R/W | 0x0201 | Baud Rate | Unsigned 16-bit integer | Takes effect immediately. Mapping: 0x0001 → 2400 bps 0x0002 → 4800 bps 0x0003 → 9600 bps 0x0004 → 14400 bps 0x0005 → 19200 bps 0x0006 → 38400 bps 0x0007 → 57600 bps 0x0008 → 76800 bps 0x0009 → 115200 bps |
EdgeBus (EB) Configuration
EB Code (via EB Helper)
| Configuration Item | Value |
|---|---|
bzType | 21305 |
Battery | true |
| Upload Interval | App address 70 |
| Acquisition Interval | App address 74 |
| Distance COV Threshold | App address 110 |
| Uplink Protocol | port=22, version=0x83, dataType=0x37 |
| Application Layer Payload | Read 0x0100 (distance) and 0x0102 (temperature); total payload size = 10 bytes |
✅ Compile and deploy the generated firmware to EdgeBus-compatible hardware (e.g., KC21 or KC11).
import { Buffer } from "buffer";
import { buildOtaFile } from "@EBSDK/run";
import {
ActionAfertExpr, CalcData,
CrcMode,
CvtRule,
EBBuffer,
EBModel,
ExprCondition,
LoraUpEvent,
QueryEvent, SetUpCovDataType,
UserConfUPItem,EventInfoItem
} from "@EBSDK/EBCompiler/all_variable";
import { CheckbitEnum, getOtaConfig, HwTypeEnum, UpgrdTypeEnum } from "@EBSDK/otaConfig";
////////////////////////////////////////////////////////////////////////////////////////
const eventInfo:UserConfUPItem[]=[
{
name:"dyp-A02",port:21,version:"0x85",dataType:"0x02",upPeriodIndex:70,
quInfo:[
{
protocol:"modbus",addr:"0x01",code:"0x03",periodIndex:74,isLast:false,
listVal:[
{ start: "0x0100", end: "0x0100",covType:"Uint16BE",covAppIndex:110},
{ start: "0x0102", end: "0x0102"}
]
}
]
}
]
let otaConfig = getOtaConfig({
UpgrdType: UpgrdTypeEnum.GW,
SwVersion:31,
HwType: HwTypeEnum.OM822, // 假设使用400MHz频段,请根据实际情况修改
BaudRate: 9600,
StopBits: 1,
DataBits: 8,
Checkbit: CheckbitEnum.NONE,
Battery: false, // 非电池供电,Class C模式
ConfirmDuty: 60,
BzType: 21305,
BzVersion: 11
})
const MODBUS_TT = (ebModel: EBModel) => {
for (let i=0; i<eventInfo.length; i++){
let event=new EventInfoItem(eventInfo[i]);
event.upEventSetup()
event.eventInstall()
}
return JSON.stringify(ebModel, null, 2)
}
buildOtaFile(import.meta.url, otaConfig, MODBUS_TT)Thing Model (Uplink Frame Structure)
- Port Number:
22 - Frame Format: Standard EBHelper frame structure
| Field Name | Offset (Byte) | Length (Bytes) | Description |
|---|---|---|---|
version | 0 | 1 | Protocol version; fixed value 0x85 |
dataType | 1 | 1 | Fixed value 0x02 |
covStatus | 2 | 1 | Reserved (for internal COV handling) |
status | 3 | 1 | Query event status |
battery | 4 | 1 | Battery level (e.g., voltage in V × 100) |
addr | 5 | 1 | Sub-device address (Modbus slave ID) |
distance | 6 | 2 | Big-endian unsigned 16-bit (Uint16BE); unit: mm |
temperature | 8 | 2 | Big-endian signed 16-bit (Int16BE); unit: 0.1 °C |
Third-Party Platform Data Subscription (MQTT)
MQTT Topic
/v32/{Organization Account}/tkl/up/telemetry/{eui}
Sample Uplink Payload
{
"eui": "6353012af10a9331",
"active_time": "2026-02-05T08:35:48.000Z",
"thingModelId": "71719731542888453",
"thingModelIdName": "zenner_21121",
"telemetry_data": {
"snr": 13.5,
"rssi": -51,
"battery": 3.37,
"distance": 1,
"temperature": 23.3
}
}Protocol Documentation
- ThinkLink Protocol Specification Document
RPC Interface
Set Parameters
RPC Name: dyp_a02_set
| Parameter Name | App Address | Unit | Description |
|---|---|---|---|
period_up | 70 | s | Uplink reporting interval |
period_read | 74 | s | Data acquisition interval |
cov_distance | 110 | mm | Distance Change-of-Value (COV) threshold |
let classMode = (device && device.shared_attrs && device.shared_attrs.class_mode) || "ClassA";
let sleepMs = classMode === "ClassA" ? 500 : 5000;
let paraDef = {
app_70: {
name: "period_up",
field_name: "period_up",
unit: "S",
type: "uint32le",
coefficient: 1,
decimal: 0,
optionList: {}
},
app_74: {
name: "period_read",
field_name: "period_read",
unit: "S",
type: "uint32le",
coefficient: 1,
decimal: 0,
optionList: {}
},
app_110: {
name: "cov_distance",
field_name: "cov_value",
unit: "mm",
type: "int16BE",
coefficient: 1,
decimal: 0,
optionList: {}
}
};
let frames = RPCHelper.buildFrame({ paraDef, params });
let redoBuffer = RPCHelper.redo();
let dnBuffer = Buffer.alloc(frames.writeBuffer.length + frames.readBuffer.length + redoBuffer.length);
frames.writeBuffer.copy(dnBuffer, 0);
frames.readBuffer.copy(dnBuffer, frames.writeBuffer.length);
redoBuffer.copy(dnBuffer, frames.writeBuffer.length + frames.readBuffer.length);
logger.info("set dyp-a02 para");
console.log(dnBuffer.toString("hex"));
let msg = RPCHelper.makeMSG({
msgType: Utils.msgType.paras,
device: device,
dnBuffer: dnBuffer,
sleepTime: sleepMs
});
return [msg];Get Parameters
Retrieved parameters are available in the device’s shared attributes.
let classMode = (device && device.shared_attrs && device.shared_attrs.class_mode) || "ClassA";
let sleepMs = classMode === "ClassA" ? 500 : 5000;
let paraDef = {
app_70: {
name: "period_up",
field_name: "period_up",
unit: "S",
type: "uint32le",
coefficient: 1,
decimal: 0,
optionList: {}
},
app_74: {
name: "period_read",
field_name: "period_read",
unit: "S",
type: "uint32le",
coefficient: 1,
decimal: 0,
optionList: {}
},
app_110: {
name: "cov_distance",
field_name: "cov_value",
unit: "mm",
type: "int16BE",
coefficient: 1,
decimal: 0,
optionList: {}
}
};
let frames = RPCHelper.buildFrame({ paraDef, params });
let msg = RPCHelper.makeMSG({
msgType: Utils.msgType.paras,
device: device,
dnBuffer: frames.readBuffer,
sleepTime: sleepMs
});
return [msg];Template Selection
On the ThinkLink Platform, search for the template named:DYP-A02