安信可(Ai-Thinker)A9/A9G GPRS模块10分钟

2017-10-11  本文已影响15756人  Neucrack

前言

安信可 A9/A9G GPRS(GPS) 模块因为有GPRS,相比WIFI,它可以随时随地联网,实现24小时稳定在线,不受地理位置限制,而且提供基站定位和GPS定位功能。提供AT固件使用起来也非常简单,几条命令就快速配置成功。
另外,AT指令固件集成了机智云接入协议,使用简单的几条命令就可以快速接入机智云,从而在非常短的时间内实现M2M应用。
因此这里介绍如何使用A9/A9G模块快速建立一个简单的M2M应用。

目标

  1. A9/A9G内部集成了一个应用A9Tracker(定位器),实现手机远程查看定位器实时位置以及电子围栏功能,具体使用方法及效果可以看这里(A9/A9G GPRS模块内部集成应用A9Tracker使用方法)
  2. 使用串口助手操作A9/A9G模块,实现模块接入机智云,实现模块推送消息到手机、手机发送控制数据到模块

准备

  1. 硬件:

A9G

A9 A9/A9G pudding开发板(链接稍后放出)

物联网卡 USB转串口模块

开发过程

  1. 保证AT固件是最新固件,不是则需要到安信可官网下载并升级固件
    使用ATI\r\n查询固件信息,与最新固件版本对比
    固件升级指南
    固件发布页面

  2. 申请机智云账号

注册登录机智云
  1. 创建产品及数据点
产品 产品创建 创建数据点 数据点 应用数据点
  1. 复制PK和PS


    基本信息
  2. 连接硬件到电脑
    注意要保证足够的供电能力,或者使用锂电池在VBAT端进行供电也可以


    硬件连接
  3. 下载并打开串口助手
    使用安信可串口助手,下载
    或者使用其它串口助手都可以,我这里使用的开源的串口助手COMTool(代码不到1000行哦),下载版本列表

  4. 连接A9/A9G模块,上电等待串口助手显示READY字样后,发送AT(回车结尾,即AT\r\n)测试连接以及模块是否正常工作(可以多发几次)注意每一个AT命令都是以\r\n(即windows下的换行符)结尾,后面所有命令默认都以\r\n结尾

AT

OK

READY AT
  1. 连接机智云
设备在线 上下线信息
  1. 设备推送消息
    使用AT+GIZSEND=<action>,[length],[data]推送数据到云端(/手机客户端)
    这里action代表数据的含义,如下表:

定长产品:

命令 数值(十六进制) 数值(十进制) 含义
ACTION_CONTROL 0x01 1 App控制命令,设备收到手需要根据数据改变状态,然后上报状态
ACTION_READ_STATUS 0x02 2 App读取状态,设备收到后上报状态
ACTION_READ_STATUS_ACK 0x03 3 App读取状态后,设备返回状态
ACTION_REPORT_STATUS 0x04 4 设备主动上报状态
ACTION_TRANS_RECV 0x05 5 接收到MQTT原始数据
ACTION_TRANS_SEND 0x06 6 MQTT原始数据发送
ACTION_PUSH_OTA 0xfe 254 OTA

变长产品:

命令 数值(十六进制) 数值(十进制) 含义
ACTION_CONTROL 0x11 17 App控制命令,设备收到手需要根据数据改变状态,然后上报状态
ACTION_READ_STATUS 0x12 18 App读取状态,设备收到后上报状态
ACTION_READ_STATUS_ACK 0x13 19 App读取状态后,设备返回状态
ACTION_REPORT_STATUS 0x14 20 设备主动上报状态
ACTION_TRANS_RECV 0x15 21 接收到MQTT原始数据
ACTION_TRANS_SEND 0x16 22 MQTT原始数据发送
ACTION_PUSH_OTA 0xfe 254 OTA

发送数据的方式有三种格式,类似AT+CIPSEND,如下图,更详细说明见AT指令文档

设备推送数据

在后台可以看到数据已经成功推送

后台数据记录

上面的数据推送是随便推送的,在这里没有任何含义!
那么如何推送数据点呢,我们创建了一个数据点,且因为是变长产品,根据协议(最后会详细说明,这里可以先不深入探究),我们需要发送两个字节的数据,报告灯为开:0x0101,报告灯为关:0x0100;因为是设备主动报告数据而且产品是变长,action为20:

上传数据点

在后台可以看到,推送数据点成功


后台数据
  1. 手机App查询状态以及控制设备
机智云App 扫描二维码 已绑定设备 设备页面 设备收到消息(这里收到ACTION为18的数据即读取命令,数据内容没显示是因为是非ASCII码)

点击控制开关,设备会收到控制命令

点击App中的开关,发送控制命令 设备收到控制命令(这里收到ACTION为17的数据即控制命令,数据内容没显示是因为是非ASCII码)

如果设备推送设备状态(定长ACTION为4,变长ACTION为20)或者响应App的查询命令推送状态(定长ACTION为3,变长ACTION为19),App界面也会实时更新状态

设备推送数据

在App可以看到数据发生了变化

App灯从关变成了开状态

在后台也可以看到数据内容


后台数据内容

关于机智云的定长数据和变长数据

定长

定长就是每次传输都传输所有数据点的信息(相对简单,如果编程经验比较少,或者数据量不大或者通信频率不高建议直接选择这种方式),比如建了2个数据点,长度分别为4个字节,则每次推送都要推送两个数据点的数据即8个字节,如图:

定长传输

变长

变长相对来说复杂一些!
在推送数据时,由于数据时变长的,服务器需要知道硬件上传的是哪些数据点的数据,所以需要有标志位来表示传输的是哪些数据点,所以在数据的开头会有数据点标志位,每位代表一个数据点(位数不足8位高位补0补足8位,即传输的单位是字节)。举个例子:
创建了一个数据点,数据点类型为bool类型(1位),则传输数据应该为:
0x0100(False) 或者 0x0101(True)
创建了两个数据点,数据点类型为bool类型,
当只传输第一个数据点:
0x0100(False) 或者 0x0101(True)
当只传输第二个数据点:
0x0200(False) 或者 0x0201(True)
当传输两个数据点:
0x0300(False False) 或者 0x0301(False True)或者0x0302(True False)或者0x0303(True True)

同理,三个数据点标志位占3位,比如同时传输三个数据点数据,且三个数据点的数据都为1,数据为:0x0707

如果数据点不是bool类型,比如有一个bool 类型和一个2个字节的数据

两个数据

可以使用虚拟设备可以方便地进行调试,:


虚拟设备

实际发送的数据为:

后台数据

相关

!有疑问留言吧

上一篇 下一篇

猜你喜欢

热点阅读