在线时间279 小时
UID3181444
注册时间2015-12-8
NXP金币8
TA的每日心情 | 开心 2017-11-15 10:33 |
---|
签到天数: 79 天 [LV.6]常住居民II
金牌会员
- 积分
- 1779
- 最后登录
- 2020-8-22
|
所属团队:济南大学 1209Lab
选用WIFI模块:ESP8266-WROOM-02
连接云平台:微分云平台 http://123.56.93.246:8080/v4/ui_main.html
数据交互:将温度传感器、湿度传感器和光照传感器的数据上传至云平台,实时显示;能够通过网页云平台实时控制灯和电机的运转
这边主要介绍ESP8266的使用和数据传输的显示
首先我们使用的ESP8266-WROOM-02
主要有以下特性
我们通过连接手机热点,访问外部服务器,与微分电子的云平台进行数据交互,下面贴出代码。
#include "ESP8266.h"
#define ESP8266_UART LPC_USART1 //连接ESP8266的串口
#define ESP8266_Send_Quote uart_PutChar(ESP8266_UART,34) //发送引号
#define ESP8266_Send_Comma uart_PutChar(ESP8266_UART,44) //发送逗号
#define ESP8266_Send_Tab uart_PutChar(ESP8266_UART,13) //发送\r
#define ESP8266_Send_Enter uart_PutChar(ESP8266_UART,10) //发送\n
char* ESP8266_AT = "AT\r\n"; //测试AT
char* ESP8266_RST = "AT+RST\r\n";//复位ESP8266
char* ESP8266_Version = "AT+GMR\r\n";//查看版本信息
char* ESP8266_Mode_STA = "AT+CWMODE=1\r\n";//模式设置:进入STA模式
char* ESP8266_Mode_AP = "AT+CWMODE=2\r\n";//模式设置:进入AP模式
char* ESP8266_Mode_STA_AP = "AT+CWMODE=3\r\n";//模式设置:进入STA+AP模式
char* ESP8266_STA_WIFI_SSID = "lab09"; //STA模式下连接AP的SSID:TP-LINK_5BBA54
char* ESP8266_STA_WIFI_Password = "12091209"; //STA模式下连接AP的密钥:12091211
char* ESP8266_STA_List_AP = "AT+CWLAP\r\n"; //搜索并列出附近可用AP
char* ESP8266_STA_Quit_AP = "AT+CWQAP\r\n"; //退出与目标AP的连接
char* ESP8266_STA_Join_AP = "AT+CWJAP="; //加入目标AP
char* ESP8266_STA_Connect_Server = "AT+CIPSTART="; //连接指定服务器的端口
char* ESP8266_STA_Data_Length = "AT+CIPSEND="; //设置向服务器发送数据的长度
char* ESP8266_Server_IP = "123.56.93.246"; //微分云平台IP:123.56.93.246
char* ESP8266_Server_Port = "9900"; //微分云平台端口号:9900
char* ESP8266_TCP = "TCP"; //TCP类型
char* ESP8266_UDP = "UDP"; //UDP类型
char* ESP8266_Data = "test is ok";
const uint8_t LED_ID[16]={0x00,0x00,0x04,0x47,0xde,0x80,0xaf,0x44,0xe4,0x3c,0xfe,0x59,0x66,0x00,0xc5,0x32};
const uint8_t Temp_ID[16]={0x00,0x00,0xf2,0x7f,0xa1,0xc4,0xd7,0x19,0x6b,0x3d,0xb4,0x12,0xb5,0xcc,0xf5,0xab};
const uint8_t Hum_ID[16]={0x00,0x00,0x64,0xd7,0x85,0x73,0x4e,0x22,0x95,0x96,0x4c,0x43,0x03,0x60,0x2a,0x9e};
const uint8_t Light_ID[16]={0x00,0x00,0x37,0xab,0xe4,0xee,0x9a,0x11,0xff,0xf4,0x56,0x1b,0xcf,0x29,0xad,0x30};
/*************************************************************************
* 1 2 0 9 电 机 拖 动 实 验 室
* 函数名称ED_Send_Data
* 功能说明:通过微分云平台控制LED灯和对指令进行回应
* 参数说明:State:数据包的类型
* 函数返回:无
* 修改时间:2016年10月30日
* 备 注:无
* 作 者:何昌昕
*************************************************************************/
void LED_Send_Data(uint8_t State)
{
uint8_t i;
for(i=0;i<16;i++)
{
uart_PutChar(ESP8266_UART,LED_ID);
}
uart_PutChar(ESP8266_UART,0x00);
uart_PutChar(ESP8266_UART,0x13);
switch(State)
{
case 0:uart_PutChar(ESP8266_UART,0x00);break;//设备认证
case 1:uart_PutChar(ESP8266_UART,0x03);break;//回应心跳
case 2:uart_PutChar(ESP8266_UART,0x07);break;//回应开灯
case 3:uart_PutChar(ESP8266_UART,0x09);break;//回应关灯
}
}
/*************************************************************************
* 1 2 0 9 电 机 拖 动 实 验 室
* 函数名称:Temp_Send_Data
* 功能说明:向微分云平台发送温度传感器的数据
* 参数说明:State:数据包的类型
* 函数返回:无
* 修改时间:2016年10月30日
* 备 注:无
* 作 者:何昌昕
*************************************************************************/
void Temp_Send_Data(uint8_t temp)
{
uint8_t i;
for(i=0;i<16;i++)
{
uart_PutChar(ESP8266_UART,Temp_ID);
}
uart_PutChar(ESP8266_UART,0x00);//发送字节数高位
uart_PutChar(ESP8266_UART,0x14);//发送字节数低位
uart_PutChar(ESP8266_UART,0x00);//数据包类型
uart_PutChar(ESP8266_UART,temp);//数据
}
/*************************************************************************
* 1 2 0 9 电 机 拖 动 实 验 室
* 函数名称:Hum_Send_Data
* 功能说明:向微分云平台发送湿度传感器的数据
* 参数说明:State:数据包的类型
* 函数返回:无
* 修改时间:2016年10月30日
* 备 注:无
* 作 者:何昌昕
*************************************************************************/
void Hum_Send_Data(uint8_t temp)
{
uint8_t i;
for(i=0;i<16;i++)
{
uart_PutChar(ESP8266_UART,Hum_ID);
}
uart_PutChar(ESP8266_UART,0x00);//发送字节数高位
uart_PutChar(ESP8266_UART,0x14);//发送字节数低位
uart_PutChar(ESP8266_UART,0x00);//数据包类型
uart_PutChar(ESP8266_UART,temp);//数据
}
/*************************************************************************
* 1 2 0 9 电 机 拖 动 实 验 室
* 函数名称ight_Send_Data
* 功能说明:向微分云平台发送光照传感器的数据
* 参数说明:State:数据包的类型
* 函数返回:无
* 修改时间:2016年10月30日
* 备 注:无
* 作 者:何昌昕
*************************************************************************/
void Light_Send_Data(uint8_t temp)
{
uint8_t i;
for(i=0;i<16;i++)
{
uart_PutChar(ESP8266_UART,Light_ID);
}
uart_PutChar(ESP8266_UART,0x00);//发送字节数高位
uart_PutChar(ESP8266_UART,0x14);//发送字节数低位
uart_PutChar(ESP8266_UART,0x00);//数据包类型
uart_PutChar(ESP8266_UART,temp);//数据
}
/*************************************************************************
* 1 2 0 9 电 机 拖 动 实 验 室
* 函数名称:ESP8266_Check_Cmd
* 功能说明:对返回的指令进行检查
* 参数说明:str:想要收到的结果
* 函数返回:无
* 修改时间:2016年10月30日
* 备 注:无
* 作 者:何昌昕
*************************************************************************/
uint8_t* ESP8266_Check_Cmd(char* str)
{
char *strx;
//strx=strstr((const char*)info.RevBuff,(const char*)str);
return (uint8_t*)strx;
}
/*************************************************************************
* 1 2 0 9 电 机 拖 动 实 验 室
* 函数名称:ESP8266_Send_Cmd
* 功能说明:向ESP8266模块发送AT指令
* 参数说明:cmd:字符串指令
* 函数返回:无
* 修改时间:2016年10月30日
* 备 注:无
* 作 者:何昌昕
*************************************************************************/
void ESP8266_Send_Cmd(char* cmd)
{
uint8_t i ;
for(i=0;i<strlen(cmd);i++)
{
uart_PutChar(ESP8266_UART,cmd);
}
}
/*************************************************************************
* 1 2 0 9 电 机 拖 动 实 验 室
* 函数名称:ESP8266_Join_AP
* 功能说明:向ESP8266模块发送连接目标AP的指令
* 参数说明:无
* 函数返回:无
* 修改时间:2016年10月30日
* 备 注:根据不同场合更改不同设备的SSID和Password
* 作 者:何昌昕
*************************************************************************/
void ESP8266_Join_AP(void)
{
ESP8266_Send_Cmd(ESP8266_STA_Join_AP);
ESP8266_Send_Quote;
ESP8266_Send_Cmd(ESP8266_STA_WIFI_SSID);
ESP8266_Send_Quote;
ESP8266_Send_Comma;
ESP8266_Send_Quote;
ESP8266_Send_Cmd(ESP8266_STA_WIFI_Password);
ESP8266_Send_Quote;
ESP8266_Send_Tab;
ESP8266_Send_Enter;
}
/*************************************************************************
* 1 2 0 9 电 机 拖 动 实 验 室
* 函数名称:ESP8266_Connect_Server
* 功能说明:在STA模式下,向ESP8266模块发送连接目标服务器的指定端口
* 参数说明:无
* 函数返回:无
* 修改时间:2016年10月30日
* 备 注:根据不同场合更改不同服务器的IP和Port
* 作 者:何昌昕
*************************************************************************/
void ESP8266_Connect_Server(void)
{
ESP8266_Send_Cmd(ESP8266_STA_Connect_Server);
ESP8266_Send_Quote;
ESP8266_Send_Cmd(ESP8266_TCP);
ESP8266_Send_Quote;
ESP8266_Send_Comma;
ESP8266_Send_Quote;
ESP8266_Send_Cmd(ESP8266_Server_IP);
ESP8266_Send_Quote;
ESP8266_Send_Comma;
ESP8266_Send_Cmd(ESP8266_Server_Port);
ESP8266_Send_Tab;
ESP8266_Send_Enter;
}
/*************************************************************************
* 1 2 0 9 电 机 拖 动 实 验 室
* 函数名称:ESP8266_Send_Data
* 功能说明:在STA模式下,向ESP8266模块发送数据
* 参数说明:无
* 函数返回:无
* 修改时间:2016年10月30日
* 备 注:根据不同场合更改数据长度
* 作 者:何昌昕
*************************************************************************/
void ESP8266_Send_Data(char* length)
{
ESP8266_Send_Cmd(ESP8266_STA_Data_Length);
ESP8266_Send_Cmd(length);
ESP8266_Send_Tab;
ESP8266_Send_Enter;
}
/*************************************************************************
* 1 2 0 9 电 机 拖 动 实 验 室
* 函数名称:ESP8266_Data_Handle
* 功能说明:接收数据提取和处理
* 参数说明:无
* 函数返回:无
* 修改时间:2016年10月30日
* 备 注:根据不同情形来更改判断标准
* 作 者:何昌昕
*************************************************************************/
/*void ESP8266_Data_Handle(void)
{
uint8_t i;
if(info.RevFlag==0xff)
{
if(DiffTime(info.RevTime,GetTime())>50)
{
for(i=0;i<info.RevCount;i++)
{
uart_PutChar(USART3,info.RevBuff);
}
printf("%d",info.RevCount);
printf("%d",info.RevBuff[info.RevCount-7]);
switch(info.RevBuff[info.RevCount-7])
{
case 1:
printf("Connect is successful!");
break;
case 2:
printf("Check the heart!");
ESP8266_Send_Data("19");
delay_ms(100);
LED_Send_Data(1);
break;
case 6:
printf("开灯");
LED1=0;
ESP8266_Send_Data("19");
delay_ms(100);
LED_Send_Data(2);
break;
case 8:
printf("关灯");
LED1=1;
ESP8266_Send_Data("19");
delay_ms(100);
LED_Send_Data(3);
break;
default:break;
}
info.RevCount=0;
info.RevFlag=0;
}
}.
}*/
/*----------------------------end of ESP8266.c-------------------------------*/
登陆云平台,网址上面已经给出,查看“我的设备”,添加设备会生成对应设备的ID,我们只需要按照云平台给定的协议进行发送即可显示,下面贴一张湿度传感器的数据,具体效果待全部完成后贴出视频。
|
|