admin 管理员组文章数量: 1184232
基于小熊派的智慧路灯(WIFI连接)
前言
本文将讲解在使用小熊派官方例程中遇到的问题,以及实现用WIFI连接到华为云平台。
正文
一开始使用官方给的资料里面的智慧路灯demo,发现可以运行,数据能正常上传到云平台。但在过了一天以后,发现莫名连接不了,一直卡在如下这个界面。
根据输出,我们查找到对应的文件代码,这里对应着下面这个语句
在执行完nb_reboot()之后,尝试输出AT+CFUN?的信息,发现得到的结果是+CFUN:0,而我们的函数nb_hw_detect()检测期望的结果是+CFUN:1,这也难免程序会卡在这里,因为执行的是一个死循环的设备检测。
AT+CFUN=0 设置NBIoT模块最小功能
AT+CFUN=1 设置NBIoT模块最大功能
那么只要通过AT执行,设置CFUN=1即可退出该循环,从而继续执行下面的语句。
这段代码的意思是首先检测网络的状态(是否有激活或附着),通过AT+CGATT?,通过检测网络的强度csq,这里如果网络没有激活或者附着成功,那么返回的强度应该是CSQ:99,99(信号获取失败)。
解决的办法就是激活该网络,通过AT+CGATT=1,执行成功会返回如下信息。
那么此时就能够检测到网络的强度(信号能够获取成功)。
数据的发送
AT+NMGS=长度,数据
这命令用来向华为Iot平台发送数据,数据以十六进制字符串格式传输,最大长度512字节
AT+NMGS=3,AA11BB
OK
AT+NQMGS
该命令查询发送到华为物联网平台的上游消息的状态。
AT+NQMGS
PENDING=1,SENT=34,ERROR=0
OK
//PENDING=1,上游(云平台发送的消息数)
/**@param buf 十六进制数据指针@param len 长度@return -1 失败@return 0 成功nb-iot 发送数据负载
*/
int32_t nb_send_payload(const char* buf, int len)
{//向电信平台发送数据,AT+NMGS=<length>,<data>//查询已发送消息,AT+NQMGSchar *cmd1 = "AT+NMGS=";char *cmd2 = "AT+NQMGS\r";int ret;char* str = NULL;int curcnt = 0;int rbuflen;static int sndcnt = 0;if(buf == NULL || len > AT_MAX_PAYLOADLEN){//如果发送的消息为空或者长度为最大负载AT_LOG("payload too long");return -1;}//memset(tmpbuf, 0, AT_DATA_LEN);memset(wbuf, 0, AT_DATA_LEN);//str_to_hex(buf, len, tmpbuf);memset(rbuf, 0, AT_DATA_LEN);//AT+NMGS=3,001234:“00”是数据头,根据平台上的定义修改“12”、“34”为要上传的数据snprintf(wbuf, AT_DATA_LEN,"%s%d,%s%c",cmd1,(int)len,buf,'\r');ret = at.cmd((int8_t*)wbuf, strlen(wbuf), "OK", NULL,NULL);if(ret < 0)return -1;//回复:PENDING=0,SENT=317,ERROR=0//cmd有个期待回答ret = at.cmd((int8_t*)cmd2, strlen(cmd2), "SENT=", rbuf,&rbuflen);//如果没有send,返回-1if(ret < 0)return -1;//找到send的内容str = strstr(rbuf,"SENT=");if(str == NULL)return -1;//格式化输出,send=317,ERROR=0,那么curcnt = 317,wbuf="ERROR=0"sscanf(str,"SENT=%d,%s",&curcnt,wbuf);//长度相等,即没有接收到答复//比如这次发送是100,那么下次就从100开始+字节数if(curcnt == sndcnt)return -1;sndcnt = curcnt;return ret;
}
使用WIFI连接
根据小熊派的教程,我们可以使用WIFI或者2G通信模块来连接上云平台。
1.修改网络类型
2.修改热点名称和密码
3.修改设备唯一标识符(连接上云平台使用)
执行过程
关于2G模块的联网过程和云平台的连接配置参数等等,会在下一次博客说明,包括如何在示例例程添加使用WIFI模块等。
参考
STM32学习笔记ESP8266(一)
Agent Tiny 是什么?
Arduino利用AT指令连接乐鑫ESP8266实现串口通讯、配网
Agent Lite SDK使用指南(C)
本文标签: 基于小熊派的智慧路灯(WIFI连接)
版权声明:本文标题:基于小熊派的智慧路灯(WIFI连接) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.roclinux.cn/p/1698025993a283297.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论