Skip to content

Sensor Features

Model catalog

Search for these models in ThinkLink by name or ID.

Model typeNameid_namePlatform model ID
RPC[DYP A02 GET] paradyp_a02_get85858625238601733
RPC[DYP A02 SET] paradyp_a02_set85856730826674181
TemplateDYP-A02-2.085852682421538821
Thing Model[DYP-A02-2.0]dyp_a02_2130585851937521537029
Thing Model[DYP-21305-DYP-A02资产] 区域聚合dyp_a02_asset_21305119677174411063298

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 value
  • 0x0102: Temperature value
AccessRegister AddressFunctionData TypeDescription
R0x0100Processed DistanceUnsigned 16-bit integer (Uint16BE)Distance after algorithmic processing; unit: mm; response time ≈ 520 ms
R0x0101Real-time DistanceUnsigned 16-bit integer (Uint16BE)Raw real-time distance; unit: mm; response time ≈ 120 ms
R0x0102TemperatureSigned 16-bit integer (Int16BE)Unit: 0.1 °C; resolution: 0.5 °C; response time ≈ 120 ms
R/W0x0200Slave AddressUnsigned 16-bit integerRange: 0x010xFE; default: 0x01; 0xFF = broadcast address
R/W0x0201Baud RateUnsigned 16-bit integerTakes 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 ItemValue
bzType21305
Batterytrue
Upload IntervalApp address 70
Acquisition IntervalApp address 74
Distance COV ThresholdApp address 110
Uplink Protocolport=22, version=0x83, dataType=0x37
Application Layer PayloadRead 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).

typescript
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)

  • Port Number: 22
  • Frame Format: Standard EBHelper frame structure
Field NameOffset (Byte)Length (Bytes)Description
version01Protocol version; fixed value 0x85
dataType11Fixed value 0x02
covStatus21Reserved (for internal COV handling)
status31Query event status
battery41Battery level (e.g., voltage in V × 100)
addr51Sub-device address (Modbus slave ID)
distance62Big-endian unsigned 16-bit (Uint16BE); unit: mm
temperature82Big-endian signed 16-bit (Int16BE); unit: 0.1 °C

Third-Party Platform Data Subscription (MQTT)

MQTT Topic

/v32/{Organization Account}/tkl/up/telemetry/{eui}

json
{
  "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 NameApp AddressUnitDescription
period_up70sUplink reporting interval
period_read74sData acquisition interval
cov_distance110mmDistance Change-of-Value (COV) threshold
javascript
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.

javascript
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