app程序
WIFI模块如何传送数据说明
用电脑串田口发送命令。来验证模块与手机通信方法(波特率9600,每条命令后必须加换行回车符,命令一条一条发):
AT
AT+CWMODE=2
AT+CWSAP="ESP8266_001","12345678",11,4
AT+CIPMUX=1
AT+CIPSERVER=1,5000
AT+CIPSTO=0
发完以上命令后,打开手机WIFI,找到"ESP8266_001"这个WIFI名,连接,密码:12345678
之后,再打开APP,点连接,用电脑串田口发送下面命令。就实现WIFI模块传送数据了。
AT+CIPSEND=0,7
T121210
电脑发送命令:
AT+CWMODE=2
AT+CWSAP="wifi_yuan","123456789",11,4
AT+CIPMUX=1
AT+CIPSERVER=1,5000
AT+CIPSTO=0
AT+CIPSEND=0,28 用这条命令就可以传数据了
单片机源程序:
- #include "DHT11.h"
- #include <stdio.h>
- #include "string.h"
- extern unsigned char F16T,F16RH; //温湿度数据
- sbit LED1=P2^0;
- sbit LED2=P2^3;
- sbit LED3=P2^6;
- #define uchar unsigned char
- #define uint unsigned int
- unsigned char idata Rxbuff[40],Rxnum,SF16T,SF16RH;
- unsigned char Recwifi_data[5],led[2],n,x;
- char *strx=0;
- char clinetid;//连接ID
- unsigned char getflag;//获取标志
- void Get_Clinet(void);
- void InitUART(void) //这是串口的基本配置,配置他的波特率是9600.这些参数都是标准的。
- {
- TMOD = 0x20;
- SCON = 0x50;
- TH1 = 0xFD;
- TL1 = TH1;
- PCON = 0x00;
- EA = 1;
- ES = 1;
- TR1 = 1;
- }
- /******************************************************************************/
- void delayms(unsigned int x)
- {
- unsigned int i;
- while(x--)
- for(i=125;i>0;i--);
- }
- /*
- * UART 发送一字节
- */
- void UART_send_byte(char dat)
- {
- SBUF = dat; //发送
- while (TI == 0); //等待发送完毕
- TI = 0; //清发送完毕中断请求标志位
- }
- /*
- * UART 发送字符串
- */
- void Send_Str(unsigned char *buf)
- {
- while (*buf != '\0')
- {
- UART_send_byte(*buf++);
- }
- }
- void ESP8266_SERVER(void)//建立服务器
- {
- Send_Str("AT\r\n");
- delayms(500);
- Send_Str("ATE0\r\n");
- delayms(500);
- Send_Str("AT+CWMODE=2\r\n"); //服务器搭建在WIFI模块上
- delayms(500);
- Send_Str("AT+CWSAP=\"wifi\",\"12345678\",5,3\r\n"); //设置显示名称:wifi,密码:12345678
- delayms(500);
- Send_Str("AT+CIPMUX=1\r\n");//启动多连接,建立服务器都需要配置
- delayms(500);
- Send_Str("AT+CIPSERVER=1,5000\r\n");//建立服务器
- delayms(500);
- Send_Str("AT+CIPSTO=0\r\n");
- }
- void Send_DATA(uchar *buffer)
- {
- Send_Str("AT+CIPSEND=0,11\r\n");
- delayms(10);
- Send_Str(buffer);//发送数据
- delayms(1000);
- if((Rxbuff[0]=='1')&&(Rxbuff[1]=='1'))//关灯
- {
- LED1=1;
- x=1;
- }
- if((Rxbuff[0]=='1')&&(Rxbuff[1]=='0'))//开灯
- {
- LED1=0;
- x=0;
- }
- if(x==0)
- {
- if(F16T>=SF16T)
- LED2=0;
- else LED2=1;
- if(F16RH>=SF16RH)
- LED3=0;
- else LED3=1;
- }
- else
- {
- if((Rxbuff[0]=='2')&&(Rxbuff[1]=='1')) //关灯
- LED2=1;
- if((Rxbuff[0]=='2')&&(Rxbuff[1]=='0'))//开灯
- LED2=0 ;
- if((Rxbuff[0]=='3')&&(Rxbuff[1]=='1')) //关灯
- LED3=1;
- if((Rxbuff[0]=='3')&&(Rxbuff[1]=='0'))//开灯
- LED3=0 ;
- }
- if((Rxbuff[0]=='5')&&(Rxbuff[1]=='1')) //加温度定值
- {
- SF16T++;
- if(SF16T>50)
- SF16T=50;
- Rxbuff[1]=9;
- }
- if((Rxbuff[0]=='5')&&(Rxbuff[1]=='0'))//减温度定值
- {
- SF16T--;
- if(SF16T<1)
- SF16T=1;
- Rxbuff[1]=9;
- }
- if((Rxbuff[0]=='6')&&(Rxbuff[1]=='1')) //加湿度定值
- {
- SF16RH++;
- if(SF16RH>90)
- SF16RH=90;
- Rxbuff[1]=9;
- }
- if((Rxbuff[0]=='6')&&(Rxbuff[1]=='0'))//减湿度定值
- {
- SF16RH--;
- if(SF16RH<20)
- SF16RH=20;
- Rxbuff[1]=9;
- }
- }
- void main()
- {
- unsigned char Tx_Buf[12];
- unsigned char LEDstatus;//灯的状态
- delayms(500);
- delayms(1000); //延时一段时间,让WIFI模块稳定
- InitUART(); //初始化串口
- ESP8266_SERVER(); //初始化ESP8266
- SF16T=25;
- SF16RH=50;
- x=1;
- while(1)
- {
- getDHT11(); //获取温湿度值
- Tx_Buf[0]=F16T/10%10+0x30; //将温湿度数据送往发送数组,送给模块让手机APP显示
- Tx_Buf[1]=F16T%10+0x30;
- Tx_Buf[2]=F16RH/10%10+0x30;
- Tx_Buf[3]=F16RH%10+0x30;
- Tx_Buf[4]=SF16T/10%10+0x30; //将温湿度数据送往发送数组,送给模块让手机APP显示
- Tx_Buf[5]=SF16T%10+0x30;
- Tx_Buf[6]=SF16RH/10%10+0x30;
- Tx_Buf[7]=SF16RH%10+0x30;
- LEDstatus=LED1;
- Tx_Buf[8]=LEDstatus+0x30;//发送灯的状态
- LEDstatus=LED2;
- Tx_Buf[9]=LEDstatus+0x30;
- LEDstatus=LED3;
- Tx_Buf[10]=LEDstatus+0x30;
- Send_DATA(Tx_Buf) ;//发送数据
- }
- }
- /*****************串口接收中断函数,接收数据*********************/
- void UARTInterrupt(void) interrupt 4
- {
- if(RI)
- {
- ES=0;
- RI = 0;
- Rxbuff[Rxnum]=SBUF;
- if(Rxbuff[Rxnum]=='=')
- {
- Rxnum=0;
- }
- else
- {
- Rxnum++;
- if(Rxnum>2)
- {
- Rxnum=2;
- }
- }
- ES=1;
- }
- }
-
复制代码
全部资料51hei下载地址:
A075_WIFI_温度湿度控制.rar
(990.49 KB, 下载次数: 271)
|