1、2017-9-1 M0M1 模组 SDK 开发指南 1 M0M1 模组 阿里云物联网套件例程指南 版本 V1.0.0 浙江劢领智能科技有限公司 2017-9-1 M0M1 模组 SDK 开发指南 2 版本信息 日期 版本 撰写人 修改说明 2017.09.01 V1.0.0 HuiHongmei 初稿,文档排版 2017-9-1 M0M1 模组 SDK 开发指南 3 目 录 第八章 阿里云物联网套件例程 . 4 8.1. 阿里云 4 8.2. 阿里云物联网套件 4 8.3. M0M1 模组在阿里云上的应用 5 8.3.1. 账号申请 . 5 8.3.2. 创建产品 . 7 8.3.3. 添加设
2、备 . 7 8.3.4. 获取设备的 Topic . 8 8.4. 设备接入 9 8.4.1. 工程代码 . 9 8.4.2. 代码简析 . 10 8.4.3. 修改代码 . 13 8.4.4. 编译下载 . 15 8.5. 测试 17 2017-9-1 M0M1 模组 SDK 开发指南 4 第八章 阿里云物联网套件例程 8.1. 阿里云 阿里云 创立于 2009 年,是 全球 领先的 云计算 及人工智能科技 公司 ,致力于以在线公共 服务的 方式 ,提供 安全 、可靠的计算和数据处理能力,让计算和人工智能成为普惠 科技 。 阿里云服务着制造、金融、 政务 、交通、 医疗 、 电信 、能源等众
3、多领域的领军企业,包括 中国联通 、 12306、 中石化 、 中石油 、 飞利浦 、华大基因等大型企业客户,以及微博、 知乎 、锤子科技等明星互联网公司 。 阿里云服务器的优势:安全稳定,数据可靠、 BGP 独享宽带,高速访问、简单易用、弹性伸缩、按需求购买,节约成本等。 8.2. 阿里云物联网套件 物联网套件是阿里云专门为物联网领域的开发人员推出的, 其目的是帮助开发者搭建安全且性能强大的数据通道,方便终端(如传感器、执行器、嵌入式设备或智能家电等等)和云端的双向通信。全球多节点部署让海量设备在全球范围内都可以安全、低延时地接入阿里云 IoT Hub。在安全上,物联网套件提供多重防护,保障
4、设备云端安全。在性能上,物联网套件能够支撑亿级设备长连接,百万消息并发。物联网套件还提供了一站式托管服务 , 从数据采集到计算到存储,用户无需购买服务器部署分布式架构,通过规则引擎只需在 web 上配置规则即可实现采集 +计算+存储等全栈服务。 阿里云网联网套件提供的服务为: 让设备轻松的接入云端、提供设备管理服务、保护设备和数据、存储设备数据、计算设备数据等。 其中,在阿里云官方网站上,提供了 演示如何快速体验让设备连接到阿里云 IoT,包括:设备基于 MQTT 接入 、设备基于 CoAP 接入、设备基于 HTTP 接入等资料,用户可自行参考。 oT Hub 支持两种通信模式, Revert
5、-RPC 以及 Pub/Sub。用户可以根据自己的业务灵活使用两种通信模式。 Revert-RPC: 基于开源协议 MQTT 封装了同步的通行模式,服务端下发指令给设备可以同步得到设备端 response。 Pub/Sub: Pub/Sub 是基于 Topic 进行消息的路由转发,让设备端或者服务端可以发布订阅消2017-9-1 M0M1 模组 SDK 开发指南 5 息,实现异步的通信。 如图 8-1 所示。 图 8-1: Pub/Sub 通讯模式 本文的阿里云例程主要是 基于 MQTT 协议的 PUB/SUB 实现 一个 通信过程 ,实现 M0M1 模组与阿里云平台的通讯过程。 8.3. M
6、0M1 模组在阿里云上的应用 8.3.1. 账号申请 登陆阿里与官方云网站: https:/ 8-2 所示。 图 8-2:用户注册 2017-9-1 M0M1 模组 SDK 开发指南 6 注册成功后,登陆自己的阿里云账号和密码,在阿里云首页中找寻“物联网套件”,如图 8-3所示, 1,2,3,4 步骤,点击确认即可。 图 8-3:进入物联网套件 然后,弹出页面如图 8-4 所示,点击,开通物联网套件服务。 图 8-4:开通物联网套件 2017-9-1 M0M1 模组 SDK 开发指南 7 8.3.2. 创建产品 开通阿里云物联网套件后, 以 aliyun 账号 , 直接进入 IoT 控制台 ,
7、 如图 8-5 所示。 初步进入控制台后,需要创建产品 ,点击“创建设备”。 图 8-5:进入 IoT 控制台 弹出对话框,如图 8-6 所示。 图 8-6:创建产品 8.3.3. 添加设备 创建完产品之后,可以为该产品 下 添加设备。进入产品管理页面下的设备管理,点击 “添加设备”,如图 8-7 所示。 说明:用户可以自定义设备名称 (即 deviceName),这个名称即可作为设备唯一标识符,用户可以基于该设备名称与 IoT Hub 进行通信,需要指出的是,用户需要保证 deviceName 产品内唯一。 2017-9-1 M0M1 模组 SDK 开发指南 8 图 8-7:添加设备 如图
8、8-8 所示,创建设备,本文创建的设 备名称: mylinks。 图 8-8:创建设备 8.3.4. 获取设备的 Topic 添加设备之后,可以获取设备的 Topic。点击 “ Topic 列表”。如图 8-9 所示。 图 8-9: 点击 “ Topic 列表” 2017-9-1 M0M1 模组 SDK 开发指南 9 弹出对话框,如图 8-10 所示。 图 8-10: Topic 列表 说明:创建产品之后,物联网套件都会为产品默认定义三个 Topic 类。那么,在添加设备之后,每个设备都会默认有三个 Topic,即图 8-10 中所示。如果想要增加、修改、删除 Topic,请到消息通信重新定义
9、 Topic 类。 设 备 可 以 基 于 Topic 列 表 中 的 Topic 进行 Pub/Sub 通 信 , 例 如 列 表 中 有 / 9Ybu4TrmtFg/mylinks/update,且设备拥有的权限是发布,这就意味着设备可以往这个 Topic 发布消息;同样,列表中 9Ybu4TrmtFg/mylinks /get, 权限是订阅,这就意味着设备可以从这个 Topic订阅消息 。 8.4. 设备接入 8.4.1. 工程代码 劢领为用户提供了阿里云物联网套件的开发,只需用户将申请的设备信息填写在 SDK 源代码中,即可实现 M0M1 模块与阿里云通讯。 SDK 开发包下载地址:
10、http:/ 在 SDK 工程文件里 : mylinks-m0m1-open-sdk,通常含有用户工程 proj、头文件 include、 Lib静态库 及编译烧录生成目录 images 等,如图 8-11 所示。 2017-9-1 M0M1 模组 SDK 开发指南 10 图 8-11: SDK 开发包 在用户项目工程 proj 文件夹下,提供了 M0M1 模组的开发例程,其中包括: TCP、 UDP、AT、 MQTT、 阿里云物联网套件串口透传 等 例程 ,方便用户使用和学习,因此,我们可以找到阿里云开发例程,文件名称为: iotaliyun,如图 8-12 所示, iotaliyun 文件
11、代码。 图 8-12: iotaliyun 例程源代码 8.4.2. 代码简析 在例程 iotaliyun 文件下, Main.c 文件里包含以下几个函数,如图 8-13 所示。 2017-9-1 M0M1 模组 SDK 开发指南 11 图 8-13: main.c 中的函数 在 user_init()用户初始化函数里,我们配置了 M0M1 模块组的工作模式、初始化串口、连接家中路由器的过程,如图 8-14 所示,用户根据实际情况连接自己的路由器,其中, SSID 为路由器的名称, PWD 为路由器的密码。 图 8-14:模块初始化函数 2017-9-1 M0M1 模组 SDK 开发指南 12
12、 在 static void iotaliunclient( void *arg )函数,设置阿里云物联网套件 MQTT 处理函数,包括:连接阿里云物联网套件服务器和端口号,创建订阅号及发送数据的过程,详细过程请参考源码,本文只是部分截图。如图 8-15 所示。 图 8-15: MQTT 处理任务 注:用户可参考:第三章 MQTT 教程指南,学习数据如何处理及订阅号等内容。本文不做重复介绍了。 用户也可参考在工程目录下,头文件 include 文件下, iot_aliyun.h 文件内容。其里面具有详细的函数说明,用户可以直接调用。如图 8-16 所示,部分截图代码。 2017-9-1 M0M
13、1 模组 SDK 开发指南 13 图 8-16:部分 iot_aliyun.h 文件内容 8.4.3. 修改代码 本文在在阿里云物联网套件中申请的产品的为“ test”,设备名称: mylingks,用户在阿里云控制台里查看自己的设备详情。如图 8-17 所示。 图 8-17:查看设备详情 根据图 8-17,我们可以在设备中得到三个参数, deviceName, producKey, deviceSecret。将2017-9-1 M0M1 模组 SDK 开发指南 14 此三个参数值,填写在工程目录: / mylinks-m0m1-open-sdk/proj/ iotaliyun/main.c
14、中,对应的填写三个参数值在 mian.c 文件中,如图 8-18 所示。 图 8-18:修改 mian.c 文件 根据阿里云提供的物联网套 SDK 源码中,我们可知 MQTT 协议的服务器 IP 或者域名,端口号。如图 8-19 所示。服务器域名: “xxx.iot-as--“(其中 XXX 表示阿里云设备中的 producKey),端口号: 1883。 图 8-19: MQTT 协议服务器及端口 2017-9-1 M0M1 模组 SDK 开发指南 15 此时,在阿里云物联网套件中,只需修改在阿里云官网上申请的设备信息,即可实现简单的通讯,用户若想对数据及订阅号的修改,请参考“第三章 MQTT
15、 例程指南”。 8.4.4. 编译下载 修改好参数后,我们利用 Linux 开发环境编译 iotaliyun 文件,分为一下步骤: 1、利用 make 编译 lib 文件,生成 mqq.a 静态库。 如图 8-20 所示,找到 lib 文件所在的 位置,本文在 /mylinks-m0m1-open-sdk 目录下,使用 make指令,编译 lib 文件,使之,生成 mqtt.a 静态库文件,如图 8-21 所示。 图 8-20: make lib 文件 图 8-21:编译生成 mqtt.a 文件 2017-9-1 M0M1 模组 SDK 开发指南 16 2、利用 make 编译例程 iotal
16、iyun 文件,生成 iotaliyun.img 文件。 在工程目录下,编译例程文件 iotaliyun 文件,如图 8-22 所示。 图 8-22:编译生成 iotaliyun.img 文件 3、下载 使用劢领下载工具 MylinkDownloadTool.exe,将编译好的 iotaliyun 例程 iotaliyun.img 文件,放入劢领下载工具配置文件里,如图 8-23 所示。 图 8-23:添加 iotaliyun.img 文件 点击“开始”,此时, M0M1 模组自动获取 MAC 地址,如图 8-24 所示,完成下载。 2017-9-1 M0M1 模组 SDK 开发指南 17 图
17、 8-24:完成下载 8.5. 测试 M0M1 模块上电测试 ,打开串口 助手 , 根据 iotaliyun 例程中,初始化串口函数 uart_init()函数来设置串口助手参数,其 设置波特率为 115200,如图 8-25 所示,串口参数设置。 图 8-25:串口参数配置 当 M0M1 模块连接到阿里云物联网套件成功后,此时,我们在阿里云网站上看到自己所创建的设备 mylinks 的状态: 在线 。如图 8-26 所示。 2017-9-1 M0M1 模组 SDK 开发指南 18 图 8-26:设备状态 点击“ Topic 列表”,我们可得到此设备下的三个 Topic,如图 8-27 所示。我们可以看到三个Topic 下收发到 M0M1 模组的信息的数量。 图 8-27: Topic 状态 此时,我们可以简单的实现阿里云服务器跟 M0M1 模组发送数据,如图 8-28 所示。设备mylinks 发送的信息为: 11223344。点击确认, M0M1 模组即可收到此信息,并通过串口显示出来,如图 8-29 所示。 2017-9-1 M0M1 模组 SDK 开发指南 19 图 8-28:发送数据信息 图 8-29: M0M1 模组收到数据