IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 合宙4G模组-Air724UG-一机一密上网认证流程 -> 正文阅读

[嵌入式]合宙4G模组-Air724UG-一机一密上网认证流程

说明

前几天本人接手了一个STM32移植AT32的项目,一个智能电瓶车充电桩。在做的过程中学到了许多,也有很多地方由于资料少或者没有资料而困难重重。本文用以记录开发过程中自己总结的一些经验,供其他刚入门的小伙伴参考,也为自己日后复习提供便利。这是本系列的第一篇,后面也有可能再出另外几篇。

一、一机一密流程简介

一机一密,即利用创建的设备的三元组信息,对设备进行认证,获得设备唯一的接入用户名和密码的流程。

1.获取三元组信息(创建设备)

本次认证全程使用阿里云平台
首先打开阿里云平台,若没有账号则注册一个,并通过支付宝验证(较为快速)进行实名认证

完成后点击左上角三条杠,切换至 物联网平台 页面

切换至物联网平台

需要先拥有一个实例,然后才能往实例中添加产品,最后往产品中添加设备
默认进入时已拥有一个免费的公共实例,测试使用足以。点击该实例,进行产品创建

创建实例


在左侧菜单中点击设备管理,并进行产品创建

创建产品


以充电桩为例,创建一个充电桩产品,如下图
产品名称和品类可任意,节点类型选择 直连设备 ,联网方式为蜂窝(2G/3G/4G/5G),其他默认即可

新建产品页面


创建完成后提示添加设备,点击前往添加,跳转至设备页面

前往添加设备

在设备页面点击添加设备

请添加图片描述

在添加设备页面,DeviceName推荐与设备的IMEI码一致,备注可任意,点击创建即可

请添加图片描述


创建完成后,点击设备的 查看 按钮,进行三元组信息查看

请添加图片描述
点击DeviceSecret处的查看,查看相关信息

请添加图片描述

三元组信息中,要注意的是ProductKeyDeviceNameDeviceSecret这三项。点击一键复制,复制到其他地方保存

请添加图片描述
至此,三元组信息获取完毕,接下来将利用三元组信息,实现模块与服务器的对接


2.AT指令获取用户名和密码

我们与这个模块的通信方式主要是串口通信,通过AT指令集进行交互
以下是本次一机一密鉴权用到的AT指令

AT指令解释
AT确认设备在线状态
AT+CGMR查询模块固件版本信息(版本过低的固件无法连接阿里云平台)
AT+CGSN查询模块IMEI号
AT+CSQ获取当前信号强度
AT+CPIN?查询PIN锁状态,开启方可进入下一步
AT+CREG?查询网络注册状态
AT+CGREG?查询GPRS网络注册状态
AT+CGATT?查询模块是否已附着到GPRS网络上
AT+SAPBR设定网络承载相关属性
AT+HTTPINIT初始化HTTP服务
AT+HTTPPARA设置HTTP连接的参数值
AT+HTTPDATAHTTP写数据(需指定数据长度)
AT+HTTPACTION激活HTTP方式
AT+HTTPREADHTTP读数据
AT+HTTPTERM关闭HTTP链接

指令的具体参数值和返回值含义详见
https://www.openluat.com/Product/4g/S724.html

在该链接中下载《Luat 4G模块AT命令手册》查阅即可

由于手头上的板子,模块已经焊死在上面,所以在测试之前先实现了一个单片机进行两个串口间数据转发的程序,在此不展开描述,直接看通信的过程

请添加图片描述


先进行模块状态和网络状态测试(以下发送和接收皆为电脑串口收发)

->AT
收->AT

	OK

发->AT+CGMR
收->AT+CGMR

	+CGMR: "AirM2M_Air724UG_V907_LTE_AT"	//固件版本必须大于461

	OK
	
发->AT+CGSN
收->AT+CGSN

	867435054468947

	OK
	
发->AT+CSQ
收->AT+CSQ

	+CSQ: 22,99

	OK
	
发->AT+CPIN?->AT+CPIN?

	+CPIN: READY

	OK
	
发->AT+CREG?->AT+CREG?

	+CREG: 0,1

	OK
	
发->AT+CGREG?->AT+CGREG?

	+CGREG: 0,1

	OK
	
发->AT+CGATT?->AT+CGATT?

	+CGATT: 1		//此处返回值为1方可进行后续操作

	OK

接下来通过HTTP进行鉴权,获取MQTT用户名和密码
获取需要先使模块建立与鉴权服务器的HTTP链接,然后发送鉴权字符串(需手动合成),远程服务器将返回该模块对应的MQTT用户名和密码

首先来合成鉴权字符串,字符串的组成为

productKey=xxxx&sign=xxxx&clientId=xxxx&deviceName=xxxx

productKey:三元组内的productKey
sign:通过HmacMD5算法计算出的一个字符串
clientId:用户ID,建议与deviceName一致(注意I为大写
deviceName:与创建设备时填入的DeviceName一致,推荐为IMEI码

接下来计算sign,先打开以下网址
HmacMD5计算网址

消息为:
clientIdxxxdeviceNamexxxproductKeyxxx
(将其中的xxx替换成自己设备的)

请添加图片描述
结果A即为我们所需的sign值

由于该过程容易操作失败,我找到了一个可以一键计算参数的网站
http://mqtt.lovemcu.cn/
填入productKey、deviceName、deviceSecret、clientId即可。注意最下方的HTTP用区域,我们需要的是DOWNLOAD字符串和字符串的长度,复制备用

以下是具体的通信流程

->AT+SAPBR=3,1,"CONTYPE","GPRS"->AT+SAPBR=3,1,"CONTYPE","GPRS"

	OK

发->AT+SAPBR=3,1,"APN","CMNET"->AT+SAPBR=3,1,"APN","CMNET"

	OK

发->AT+SAPBR=1,1->AT+SAPBR=1,1

	OK

	*CGEV: ACT,6,"CMNET","10.92.232.72"->AT+HTTPINIT
收->AT+HTTPINIT

	OK

发->AT+HTTPPARA="URL","https://iot-auth.cn-shanghai.aliyuncs.com/auth/devicename"->AT+HTTPPARA="URL","https://iot-auth.cn-shanghai.aliyuncs.com/auth/devicename"

	OK

//注意Content-Type:后面还有一个**空格**!->AT+HTTPPARA="USER_DEFINED","Content-Type: application/x-www-form-urlencoded"->AT+HTTPPARA="USER_DEFINED","Content-Type: application/x-www-form-urlencoded"

	OK

//此处的112替换成自己的DOWNLOAD字符串的长度->AT+HTTPDATA=112,20000->AT+HTTPDATA=112,20000

	DOWNLOAD

//一定要等到DOWNLOAD出来才能发送
//此处的字符串替换成自己刚才生成的那个->productKey=gb0pn1aCHev&sign=b7963cb94ed27b26022cafc5dbdb38f5&clientId=867435054468947&deviceName=867435054468947->OK


发->AT+HTTPACTION=1->AT+HTTPACTION=1

	OK

	+HTTPACTION: 1,200,124	//第二个参数200表示连接正常,第三个参数表示返回的信息长度->AT+HTTPREAD
收->AT+HTTPREAD

	+HTTPREAD: 124
	{"code":200,"data":{"iotId":"VjqyzKHIDve1fkjyQ4ZJgb0p00","iotToken":"8e9680781c5e4ffd932f4673c604b42"},"message":"success"}
	OK

发->AT+HTTPTERM
收->AT+HTTPTERM

	OK

至此,鉴权流程完毕。在HTTPREAD获取到的字符串中,用户名即iotId,密码即iotToken,复制备用。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:17:19  更:2021-08-20 15:19:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:33:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码