警告:本系列教程针对ILOP.A221固件开发,如使用其他ILOP固件,请自行修改配网部分、数据上报部分及解析服务器下发信息部分!
从本节开始我们就开始写程序用STC15单片机了实现设备上云啦!在此之前我们需要完成以下步骤:
1.完成EMW3080+STC15轻松实现设备上云1(阿里云物联网平台、智能生活开放平台)
2.完成EMW3080+STC15轻松实现设备上云2(阿里云物联网平台、智能生活开放平台)
3.安装Keil(此处省略安装教程)
4.下载stc-isp-15xx-v6.86R.zip(此处省略安装教程)
5.点我获取程序源码(程序源码已更新至基于V2.3.2版本固件开发)
源码比较简单,在这里就不花大篇幅来讲解了,仅简单的讲解重要的代码部分!
1. 如何上报数据?
Send_AT("AT+ILOPSENDICA=property,标识符,上报的数据\r");//上报数据(可同时上报多个数据)
2.如何判断成功上报数据?
在我们成功上报数据后,EMW3080会返回OK,由此根据这个特点我们只需要判断模组返回的数据中是否含有OK便可判断指令是否发送成功
//发送AT指令.这里会等待回复的OK,否则会重发void Send_AT(unsigned char *Str){unsigned char Dat=0;unsigned char Count=0;unsigned char Loop_Count=0;unsigned char ReSend_Count=0;Send_Str2(Str);//先通过串口发送出去while(1)//等待回复{Delay1ms(50);Loop_Count++;if(Loop_Count >= 100){ReSend_Count++;if(ReSend_Count < 3){Loop_Count = 0;Send_Str1("\r\n重发指令: ");Send_Str1(Str);Send_Str1("\r\n");Send_Str2(Str);//重发一遍}else{Send_Str1("\r\n发送失败: ");Send_Str1(Str);Send_Str1("\r\n");return;//重发失败,退出}}if(Get_Byte_WIFI(&Dat)){if (Dat == 'O'){Delay1ms(20);Get_Byte_WIFI(&Dat);if(Dat == 'K'){Send_Str1("\r\n成功执行一条指令: ");Send_Str1(Str);Send_Str1("\r\n");return;}}}}}
3. 如何解析平台下发的数据
if(Compare_str(Dat,"标识符,数据") != 255)
{
Send_Str1("\r\n 串口提示语句 \r\n");
}
void Analyze_MQTT_Read(void)//解析服务器下发的消息{unsigned int Len=0;unsigned char Dat[256];if(Get_Mess_Count_WIFI() == 0)return;Len=0;while(Get_Byte_WIFI(&Dat[Len++]));//获取接收缓冲区数据Dat[Len] = 0;if(Compare_str(Dat,"LightSwitch,1") != 255) {Send_Str1("\r\n 平台下发命令:打开主灯! \r\n");}if(Compare_str(Dat,"LightSwitch,0") != 255) {Send_Str1("\r\n 平台下发命令:关闭主灯! \r\n");}if(Compare_str(Dat,"NightLightSwitch,1") != 255) {Send_Str1("\r\n 平台下发命令:打开夜灯! \r\n");}if(Compare_str(Dat,"NightLightSwitch,0") != 255) {Send_Str1("\r\n 平台下发命令:关闭夜灯! \r\n");}}
-------------------------------------------------------------------
注意:
1.EMW3080配网需要用到的AT指令工程包可在此处下载
2.若需要重新配网绑定,需要完成以下步骤:
解绑:AT+ILOPRESET\r
停止服务操作:AT+ILOPSTOP\r
重启模块:AT+REBOOT\r
重启模块后从 启动 ilop 服务AT+ILOPSTART\r开始运行即可