2个串口指令完成硬件设备的接入和数据上报到阿里云IoT--米芯信息阿里云IoT直连模块介绍-阿里云开发者社区

开发者社区> 阿里云物联网> 正文

2个串口指令完成硬件设备的接入和数据上报到阿里云IoT--米芯信息阿里云IoT直连模块介绍

简介: 米芯信息技术团队基于aliosthings开源RTOS基础上实现的阿里云IoT直连模块。电控板MCU通过TTL串口对接模块即可接入阿里云IoT云端。

上一篇我简要的介绍如何使用米芯智能模块(阿里云IoT直连模块)快速开发智能电风扇(原文点这里)。在社区发表后收到了不少热心的开发者前来切磋交流。讨论比较多的是电控板MCU与模块对接相关话题。为此我新开篇详细展开一下内容,老规矩仍旧以电风扇作为例子。

**注意:
因本文内容涉及技术细节,需读者要有一定的技术功底阅读内容。

读完本文内容可能需要您花费1-2个小时以上时间。**

1. 快速开始

请提前整备如下物料,后面需要用到。

1.1 物料清单

名称 数量 备注
带TTL串口的电风扇电控板 1 开发者自备
米芯智能模块样品小板 1 点击购买
串口协议文档 1 向作者索取
USB转TTL串口工具 1 开发者可以用自己熟悉的串口工具
配网二维码 1 向作者索取
APP控制面板二维码 1 向作者索取
安卓智能手机 1 开发者自备
天猫精灵APP 1 开发者自备

1.2 电脑串口与样品小板电缆连接

请注意,电缆连接前确认USB转TTL串口工具电平设置与样品小板上的标识的电压一致。目前小板有3.3V和5V两种电压。

USB转TTL串口工具实物参考:

566450304.jpg

请使用电缆将电风扇电控板的TX、RX、GND 与 USB转TTL串口工具上的 TX、RX、GND 接上。

1044221127.jpg

USB转TTL串口工具没有特殊要求,使用前先确保串口工具是正常可用的且串口电平插针所插位置的电压值与样品小板电压一致。

请使用外部稳压电源输出连接到小板电源插针上(电压值以小板上的电压标识为准),请勿使用串口工具上的电源输出。使用串口工具上的电源可能会导致模块无法启动。

1.3 安装串口调试软件

请在您开发使用的电脑上安装串口调试软件。

20200407154006.jpg

串口软件无特殊要求,能接收、发送十六进制内容即可。

1.4 使用串口调试软件调试样品小板

请参考如下步骤:

  1. 完成前3个步骤后,请在串口调试软件上“打开”串口端口号(譬如:COM9) 。
  2. 正常情况下串口调试软件上的“接收区域” 可以看到 十六进制的内容打印出来,每隔3秒打印一次。这是模块发送的心跳数据包。
  3. “接收区域”能看到心跳包说明模块已经正常运行。
  4. 请试着在 “发送区域” 输入“串口协议文档”里面的基础指令,点击发送。一般情况下模块会回应指令, 在 “接收区域”看到模块回复的十六进制值。
  5. 重复4这个过程,可以观察发送和接收的数据。

1.5 在电风扇控制板MCU上实现接口程序

请您在控制板MCU上根据 “串口协议文档” 里面的指令要求实现相应的程序接口。

实践建议:

  1. 指令的格式是固定的。因此建议使用包装函数来解析、格式化指令输出和接收;
  2. 控制板MCU发送指令的间隔建议大于100ms;过密集的指令发送会导致模块和网络不稳定;
  3. 指令码存在粘包的情况(即两条以上指令头尾连接),请循环解析指令码;
  4. 在控制板MCU接口程序开发过程中可以使用串口调试软件调试输入输出;
  5. 配网键建议使用已有的一个物理按键,譬如:长按设置键,进入配网

1.6 样品小板与电风扇控制板电缆连接

完成前5个步骤后,说明软件对接已经可以了。请使用电缆将样品小板和控制板两者的VCC、GND、TX、RX连接起来,加电开机观察。

实物参考:

945978797.jpg

请注意,电缆连接前确认TTL串口电平与模块上的标识的电压一致。目前小板有3.3V和5V两种电压。

1.7 天猫精灵APP配网、测试

加电开机情况下,请按“配网键”(一般有灯光和声音提示)模块进入配网状态。

请使用一个已经安装天猫精灵APP的手机。(请到各大手机应用市场下载:天猫精灵app)

打开天猫精灵APP,扫描“配网二维码”

点击 “我的" ->"连接设备":

417336062.jpg

右上角,点击 “扫描ICON" :

273112241.jpg

扫描 “配网二维码”,填入 WIFI的连接密码,点击“下一步”。

1227599502.jpg

选中 “确认以上操作”, 点击 “开始连接”

598851068.jpg

连接成功后,我的 -> 智能设备 这里看到设备

888339501.jpg

在开发模式下,点击 智能设备 图标,进去后不会显示 控制面板,请扫描 “控制面板二维码” 进行操作测试。

2 米芯通讯协议

米芯通讯协议 是一种简化的串口通讯协议。旨在设备控制板(MCU)可以方便的接入阿里云AIoT。

设备开发者请参考米芯通讯协议完成设备端MCU程序的对接开发。

  1. 请确保模块已正确的烧录了 米芯固件 ;
  2. 模块 加电能正常运行。 用户串口收到心跳包 55 AA 00 00 00 00 FF
  3. 初次对接协议,建议安装米芯工具方便调试。

2.1 串口参数约定

波特率: 9600

数据位: 8

奇偶校验: 无

停止位: 1

数据流控: 无

2.2 数据类型

hex 类型 长度(byte) 说明
0x00 bool 1 0或1
0x01 int8 1 -128~127
0x02 enum 1 最多定义100个
0x02 uint8 1 0-255
0x05 int 4 32位整型
0x09 float 4
0x0a double 8
0x0b text N 字符串
0x0c date 8 String类型的UTC时间戳,单位:毫秒

2.3 帧格式说明

Head Ver Cmd Payload_len Payload Checksum
2 byte 1 byte 1 byte 2 byte N byte 1 byte
字段 名称 长度(byte) 说明
Head 帧头 2 固定为0x55 0xAA
Ver 版本 1
Cmd 命令字 1 具体帧类型
Payload_len 数据长度 2 大端
Payload 数据 xxxx 详见指令收发表
Checksum 校验和 1 从帧头开始按字节求和得出的结果,取低字节

数据传输统一使用大端(即高字节在前,低字节在后)字节序。

计算校验和参考代码:

uint8_t check_sum(uint8_t *pack, uint16_t pack_len)
{
    uint16_t i;
    uint8_t csum = 0;

    for (i = 0; i < pack_len; i++)
    {
        csum += *pack++;
    }

    return csum;
}

2.4 基础指令一览

功能名称 帧头 版本 命令字 数据长度 数据 校验和
*心跳检测 模块发送 0x55aa 0x00 0x00 0x0000 - 0xff
MCU上报 0x55aa 0x01 0x00 0x0001 0x00(mcu加电第一次)
0x01(其它)
xx
关闭心跳 MCU上报 0x55aa 0x01 0x25 0x0000 - xx
模块发送 0x55aa 0x00 0x25 0x0000 - xx
获取模块mac地址 MCU上报 0x55aa 0x01 0x2d 0x0000 - xx
模块发送 0x55aa 0x00 0x2d 0x0006 如: 0xA4CF12BFA186 xx
剩余内存(heep) MCU上报 0x55aa 0x01 0x0f 0x0000 - xx
模块发送 0x55aa 0x00 0x0f 0x0004 如: 0x00003E00 xx
当前WiFi信号强度(RSSI) MCU上报 0x55aa 0x01 0x24 0x0000 - xx
模块发送 0x55aa 0x00 0x24 0x0004 如: 0xFFFFFFB7 xx
获取时间戳(秒) MCU上报 0x55aa 0x01 0x0c 0x0000 - xx
模块发送 0x55aa 0x00 0x0c 0x0004 如: 0x5E4A6366 xx
*WiFi工作状态 模块发送 0x55aa 0x00 0x03 0x0001 参考 4.2 xx
MCU上报 0x55aa 0x01 0x03 0x0000 - xx
*重置配网 MCU发送 0x55aa 0x01 0x04 0x0000 - xx
模块上报 0x55aa 0x00 0x04 0x0000 - xx
WiFi 配网方式 MCU上报 0x55aa 0x01 0x05 0x0001 0x00 (smartconfig模式)
0x01 (Ap模式)
xx
模块发送 0x55aa 0x00 0x05 0x0000 - xx
*MCU状态查询 模块发送 0x55aa 0x00 0x08 0x0000 - xx
MCU上报 0x55aa 0x01 0x07 N 上报所有的功能状态 xx
WiFi功能产测 MCU上报 0x55aa 0x01 0x0e 0x0000 - xx
模块发送 0x55aa 0x00 0x0e 0x0002 参考4.7 xx
*产品功能 模块发送 0x55aa 0x00 0x06 N 参考 "产品功能定义" xx
MCU上报 0x55aa 0x01 0x07 N 参考 "产品功能定义" xx
*产品事件 MCU上报 0x55aa 0x01 0xA7 N 参考 "产品事件定义" xx

2.5 心跳检测

  • 模块 上电后,串口不间断发送心跳。若未收到回复,则保持3S心跳发送,若收到回复,心跳间隔变为15s;
  • 外部MCU也可依据心跳定期检测 模块 是否正常工作。

2.6 关闭心跳

调试时可以临时关闭心跳检测

  • 退出本指令,请上电重启模块。

2.7获取模块mac地址

获取模块mac地址值。如: A4-CF-12-BF-A1-86

2.8 剩余内存(heep)

heep值的大小关系到 模块 的正常运行。heep不足是会导致 模块 reboot 。

  • heep 值单位为字节。
  • 值为int类型,如:0x00003E30 即 ‭15920‬ 字节

2.9 联网状态

  • 模块 联网WiFi指示状态参考:

    • 0x00:smartconfig配网方式 (灯快闪);
    • 0x01:AP配网方式 (灯慢闪);
    • 0x02:WiFi配置成功但未连上路由 (灯熄灭);
    • 0x04:已连上路由 器且连接到云端 (灯长亮);
  • 当 模块 检测到 MCU 重启或 MCU 断线再上线的过程,则主动下发 WiFi 状态至 MCU。
  • 当 模块 的 WiFi 状态发生变化,则主动下发 WiFi 状态至 MCU。
联网状态 描述 状态值
状态1 smartconfig 配置状态 0x00
状态2 AP 配置状态 0x01
状态3 WiFi 已配置但未连上路由器 0x02
状态4 WiFi 已配置且连上路由器 0x03
状态5 已连上路由器且连接到云端 0x04
状态6 WiFi 设备处于低功耗模式 0x05

2.10 重置配网

模块 进入配网使能状态。一般在设备上设置一个配网按钮,譬如:长按设置键进入配网。

  • 本指令执行后 模块 中的WiFi配置会被清除;
  • 执行本指令会软重启模块;

2.11 切换 WiFi 配网方式

smartconfig配网方式和AP配置方式可以相互切换。通过对应协议指令,切换进入该配置状态。

  • 模块 已成功联网的情况下,本指令无效;
  • 模块 启动默认是smartconfig配网方式;
  • 阿里云飞燕平台部分品类zeroconfig(零配)有效(即支持天猫精灵找队友配网)。

2.12 WiFi 联网状态

模块已成功联网的情况下,返回 0x01 ,反之返回 0x00 。

  • 联网状态只反应与无线Ap连接状态,不是云端的连接状态;
  • 设备联网状态变化会自动发送到设备端。

2.13 当前WiFi信号强度(RSSI)

返回 模块接收WiFi信号强度。

  • 模块 已成功联网的情况下,本指令有效;
  • 信号强度单位 dBm ,一个负数值。
  • 值为int类型,如:0xFFFFFFB3 即 -77 dBm

2.14 获取Unix时间戳

可实现设备端上时间功能有自动校时等需求。设备端开发者可通过本指令获取Unix时间戳转换为本地时间即可。

  • 模块 已成功联网的情况下,本指令有效;
  • 时间戳相关知识 点击这里
  • 时间戳单位是秒(s);
  • web版的时间戳工具 点击这里

2.15 命令下发和状态上报

针对该产品功能的命令下发和状态上报协议详见下方"产品功能部分"指令收发表。

2.16 MCU工作状态上报条件

  • 08命令字查询:MCU接收到查询MCU工作状态指令后,需要上报所有功能的状态(开 关,模式等功能);
  • 主动上报:MCU状态发生变化(非app控制,比如本地控制板按键)时,mcu需要主动上报;
  • 定时上报:如有定时功能,MCU需要每分钟上报倒计时剩余时间,以分钟为单位。

2.17 WiFi功能产测

切记,在样机开发阶段务必调试模块在设备中物理摆放位的信号接收强度。

不合理的摆放位置,会影响WiFi联网稳定性。

请启用一个AP作为产测使用,设置AP的SSID: michip_dev_test 密码:123456789 ,连接成功后,每隔5秒返回信号强度百分比。主要用于产品量产时的WiFi模块测试。本指令,请等待上电初始化完成,5S以后调用。退出本指令,请上电重启;

  • 数据长度为2字节:
Data[0] Data[1] Data[1]说明
0x01 0x00-0x64 信号强度: 0x00信号最差,0x64信号最强
0x00 0x00 未扫描到指定的ssid
0x00 0x01 模块未烧录秘钥key

3.0 产品功能指令

功能名称 功能ID 指令类型 指令长度 指令值 备注
摇头开关 0x00 0x00 - 0:关闭 1:开启
风速 0x01 0x02 - 1:低档 2:中档 3:高档
工作模式 0x02 0x02 - 1:正常风 2:自然风 3:睡眠风 4:静音风
电源开关 0x03 0x00 - 0:关闭 1:开启

3.1 产品事件指令

3.1.1 故障上报

  • 事件ID:0x00
  • 事件类型:info
参数名称 参数类型 参数长度 参数值 备注
故障代码 enum - 0:恢复正常

4.0 结尾总结

直连阿里云IoT固件模块及串口协议在不断的迭代更新中。希望通过本文的介绍能给您带来更多的启发,也欢迎各位同仁相互抛砖引玉共同学习进步。

因篇幅及文笔水平有限,本文的文字和图片可能存在错误之处还请读者多包涵。
欢迎一起探讨学习;

481682353 (2).jpg

版权声明:如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developerteam@list.alibaba-inc.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云物联网
使用钉钉扫一扫加入圈子
+ 订阅

致力于实现万物互联的美好世界,为生态合作伙伴提供基于云计算、大数据、人工智能、云端一体化、安全的物联网基础平台和内容服务平台。

官方博客
物联网相关产品售前咨询
开发者交流群