合宙模块物理连接与简单调试

1.固件确认

YED-D724W模块
tb_image_share_1662382054186.jpg
图一 模块介绍

由于模组有AT固件和DTu固件区分,所以在使用之前,需要确认固件版本。

1 有LED的设备确认方法:

去掉设备的SIM卡,然后上电设备。观察NET LED和RDY LED。如果2个LED同时亮5秒灭5秒,表示是DTU固件,否者不是。如果只有一个NET LED,NET LED亮5秒灭5秒,表示是DTU固件。

2 没有LED的设备确认方法:

通过串口发送config,get,imei\r\n,读取固件版本。如果固件版本格式为YED_DTU_XXX表示是DTU固件,否则不是

2.串口连接

IMG_20220906_083818.jpg
image.png
图二 RS232 接口定义
image.png
图三 接口引脚

      ![image.png](https://img-blog.csdnimg.cn/img_convert/fa0aa2e208829cb31924f6c35df60cee.png#clientId=u21b43f2e-37c4-4&from=paste&height=458&id=uc8fb9986&name=image.png&originHeight=636&originWidth=865&originalType=binary&ratio=1&rotation=0&showTitle=false&size=148825&status=done&style=none&taskId=u78eed310-70f5-4ed5-8b60-4aadd4d4e4e&title=&width=623.4234019984546)
                                                       图四  LED 状态说明

                ![IMG_20220906_084559.jpg](https://img-blog.csdnimg.cn/img_convert/67fec35e9427124972c3bf0a6cb2eab1.jpeg#clientId=u0691179e-446e-4&from=drop&height=483&id=u2ff9e794&name=IMG_20220906_084559.jpg&originHeight=3472&originWidth=4624&originalType=binary&ratio=1&rotation=0&showTitle=false&size=4081330&status=done&style=none&taskId=uc47b167b-7287-4c40-8fce-c3b7743e54f&title=&width=643.0134887695312)
                                                                               图五   实物连接图

连接接完引脚根据具官方说明查看指示灯状态。确认链接。

3.创建产品话题,物理模型等

1.创建产品和设备

                                     ![image.png](https://cdn.nlark.com/yuque/0/2022/png/22823788/1662425472441-b9503d50-5d8f-4ce6-a583-59c387e86ff5.png#clientId=u0691179e-446e-4&from=paste&height=353&id=u8988b787&name=image.png&originHeight=692&originWidth=743&originalType=binary&ratio=1&rotation=0&showTitle=false&size=51846&status=done&style=none&taskId=ua500cce8-0d78-4055-b328-517c1e841c3&title=&width=378.4954833984375)

将进行注册的设备命名为实际设备的IMEI号
image.png

2.添加物模型

image.png
添加完成之后会自动给出
image.png
image.png

3.编写解析脚本

var COMMAND_REPORT = 0x00;
var COMMAND_SET = 0x01;
var COMMAND_REPORT_REPLY = 0x02; //上报数据返回结果。
var COMMAND_SET_REPLY = 0x03;
var COMMAD_UNKOWN = 0xff;    //未知的命令。
var ALINK_PROP_REPORT_METHOD = 'thing.event.property.post'; //标准ALink JSON格式topic, 设备 上传属性数据到 云端
var ALINK_PROP_SET_METHOD = 'thing.service.property.set'; //标准ALink JSON格式topic, 云端 下发属性控制指令 到设备端

function rawDataToProtocol(bytes) {
        var uint8Array = new Uint8Array(bytes.length);
        for (var i = 0; i < bytes.length; i++) {
            uint8Array[i] = bytes[i] & 0xff;
        }
        var dataView = new DataView(uint8Array.buffer, 0);
		var jsonMap = new Object();
        var fHead = uint8Array[0];
        if (fHead == COMMAND_REPORT) {
            jsonMap['method'] = ALINK_PROP_REPORT_METHOD;
            jsonMap['version'] = '1.0';
            jsonMap['id'] = '' + dataView.getInt32(1);
            var params = {};
            params['LightVolt'] = dataView.getInt32(5);
            params['PowerSwitch'] = uint8Array[9];
            jsonMap['params'] = params;
        }else if(fHead == COMMAND_SET_REPLY) {
        jsonMap['version'] = '1.0'; //ALink JSON格式,协议版本号固定字段。
        jsonMap['id'] = '' + dataView.getInt32(1); //ALink JSON格式,标示该次请求id值。
        jsonMap['code'] = ''+ dataView.getUint8(5);
        jsonMap['data'] = {};
    }
        return jsonMap;
    }

function protocolToRawData(json) {
        var method = json['method'];
        var id = json['id'];
        var version = json['version'];
        var payloadArray = [];
        if (method == ALINK_PROP_SET_METHOD)
        {
            var params = json['params'];
            var prop_int32 = params['LightVolt'];
            var prop_bool = params['PowerSwitch'];
            //按照自定义协议格式拼接 rawdata
            payloadArray = payloadArray.concat(buffer_uint8(COMMAND_SET));
            payloadArray = payloadArray.concat(buffer_int32(parseInt(id)));
            payloadArray = payloadArray.concat(buffer_int32(parseInt(prop_int32)));
            payloadArray = payloadArray.concat(buffer_uint8(prop_bool));
        }else if (method ==  ALINK_PROP_REPORT_METHOD) { //设备上报数据返回结果。
        var code = json['code'];
        payloadArray = payloadArray.concat(buffer_uint8(COMMAND_REPORT_REPLY)); //command字段。
        payloadArray = payloadArray.concat(buffer_int32(parseInt(id))); //ALink JSON格式'id'。
        payloadArray = payloadArray.concat(buffer_uint8(code));
          } else { //未知命令,对于这些命令不做处理。
      
        var code = json['code'];
        payloadArray = payloadArray.concat(buffer_uint8(COMMAD_UNKOWN)); //command字段。
        payloadArray = payloadArray.concat(buffer_int32(parseInt(id))); //ALink JSON格式'id'。
        payloadArray = payloadArray.concat(buffer_uint8(code));
    }
    return payloadArray;
}
        
  
function transformPayload() {}

//以下是部分辅助函数
function buffer_uint8(value) {
    var uint8Array = new Uint8Array(1);
    var dv = new DataView(uint8Array.buffer, 0);
    dv.setUint8(0, value);
    return [].slice.call(uint8Array);
}
function buffer_int16(value) {
    var uint8Array = new Uint8Array(2);
    var dv = new DataView(uint8Array.buffer, 0);
    dv.setInt16(0, value);
    return [].slice.call(uint8Array);
}
function buffer_int32(value) {
    var uint8Array = new Uint8Array(4);
    var dv = new DataView(uint8Array.buffer, 0);
    dv.setInt32(0, value);
    return [].slice.call(uint8Array);
}
function buffer_float32(value) {
    var uint8Array = new Uint8Array(4);
    var dv = new DataView(uint8Array.buffer, 0);
    dv.setFloat32(0, value);
    return [].slice.call(uint8Array);
}

image.png
rawdata 一块就是拼接的物模型属性。

4.配置dtu

image.png

用串口助手进行配置

1.读取imei

config,get,imei\r\n
image.png

2.查询链接状态

config,get,netstatus,1\r\n
image.png

3.配置链接串口,订阅,发布话题

config,set,ali,1,rs232,yxym,120,cn-shanghai,hhyy31pDELD,yvQUbxW82d6nJ4yU,1,1,/sys/hhyy31pDELD/ I M E I / t h i n g / m o d e l / d o w n r a w ; / s y s / h h y y 31 p D E L D / {IMEI}/thing/model/down_raw;/sys/hhyy31pDELD/ IMEI/thing/model/downraw;/sys/hhyy31pDELD/{IMEI}/thing/model/up_raw_reply,/sys/hhyy31pDELD/${IMEI}/thing/model/up_raw,0,\r\n
image.png

4.测试上传

先发一个初始数据000320f2e30000000001(注意使用十六进制发送)
image.png
工作状态变更
image.png
image.png
数据更新
image.png

4.使用文档说明进行配置

1.命名格式约定

约定
1)系统以 config 开头, 并且以\r\n(回车换行)结尾的数据都会被认为是配置命令, 不参与透传数据
发送和接收, 在使用的时候, 尽量避免这种格式的数据。
2)命令所有关键词和执行命令都是小写, 字段以英文的“,” 分割。
3)无特殊说明的命令, 建议命令响应超时时间为 3 秒。
4)获取基站定位, 建议命令超时时间为 30 秒。
5)GPS 定位命令, 只有支持 GPS 模块的设备支持
应答命令格式
image.png

2.配置相关代码

image.png
image.png

3.设置实例

image.png

config,set,ali,1,ttluart,xym,60,cn-shanghai,pk,ps,0,1,/bbb,/aaa,0,0\r\n

image.png

config,set,ali,1,ttluart,yxym,60,cn-shanghai,pk,ps,0,1/bbb/ I M E I / x x x , a a a / {IMEI}/xxx,aaa/ IMEI/xxx,aaa/{IMEI}/x
xx,0,0\r\n

config,set,ali,1,ttluart,yxym,60,cn-shanghai,pk,ps,0,1/bbb1;/bbb2,headingcode:111/aa
a1,headingcode:222/aaa2,0,0\r\n
实例把IMEI设置为设备号之后在串口配置可以省去一些麻烦
config,set,ali,1,rs232,yxym,120,cn-shanghai,hhyy31pDELD,yvQUbxW82d6nJ4yU,1,1,/sys/hhyy31pDELD/ I M E I / t h i n g / m o d e l / d o w n r a w ; / s y s / h h y y 31 p D E L D / {IMEI}/thing/model/down_raw;/sys/hhyy31pDELD/ IMEI/thing/model/downraw;/sys/hhyy31pDELD/{IMEI}/thing/model/up_raw_reply,/sys/hhyy31pDELD/${IMEI}/thing/model/up_raw,0,\r\n

5.code

var COMMAND_REPORT = 0x00;//上报
var COMMAND_SET = 0x01;
var COMMAND_REPORT_REPLY = 0x02; //上报数据返回结果。
var COMMAND_SET_REPLY = 0x03;
var COMMAD_UNKOWN = 0xff;    //未知的命令。
var ALINK_PROP_REPORT_METHOD = 'thing.event.property.post'; //标准ALink JSON格式topic, 设备 上传属性数据到 云端
var ALINK_PROP_SET_METHOD = 'thing.service.property.set'; //标准ALink JSON格式topic, 云端 下发属性控制指令

image.png
设备上报数据定义
image.png
帧类型 0x00 上报
请求ID 4字节 00 00 00 00 id 可以自己编写 属性上报返回时会返回相同Id
image.png
属性 1: float 单精度 4 字节 233v 工作电压 00 00 00 E9
属性2:bool 1字节 0-关闭 1-开启 01
最后组合
00 00 00 00 00 00 00 00 e9 01
0000000000000000e901
image.png

image.png
响应
image.png
02 //上报数据返回结果。 00 00 00 00 请求id code 200 为正常 0xC8 刚好为200

posted @ 2023-02-07 19:04  Yang-blackSun  阅读(46)  评论(0编辑  收藏  举报  来源
1 3