YXUN 发表于 2019-5-30 14:48:53

WIFI-ESP8266 无线控制

实现的功能是:通过手机 APP 控制开发板上的 LED 灯,同时开发板上的 DS18B20 温度传感器采集的温度上传到手机 APP 端显示。
如果要控制别的东西程序稍作修改即可
测试使用的是安卓手机app程序为tcp连接,可以在应用商城下载(附件中也有安装包),
主程序 (完整的程序在附件中)
#include "public.h"                       
#include "temp.h"


sbit ESP8266_RST_Pin=P2^4;
sbit ESP8266_CH_PD_Pin=P2^3;

sbit led1=P1^0;
//sbit led2=P1^1;
sbit led3=P1^2;
//sbit relay=P1^4;

#define RELOAD_COUNT 0xFA //宏定义波特率发生器的载入值 9600

#if 1
u8 RecBuf;
u8 dat;
u8 recFlagOK=0;
#endif

u8 tempData;

void UART_Init()
{
        SCON=0X50;                        //设置为工作方式1
        TMOD=0X20;                        //设置计数器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=RELOAD_COUNT;        //计数器初始值设置
        TL1=TH1;
        ES=0;                                //关闭接收中断
        EA=1;                                //打开总中断
        TR1=1;                                //打开计数器
}

void UART_SendByte(u8 dat)
{
        ES=0; //关闭串口中断
        TI=0; //清发送完毕中断请求标志位
        SBUF=dat; //发送
        while(TI==0); //等待发送完毕
        TI=0; //清发送完毕中断请求标志位
        ES=1; //允许串口中断
}

void ESP8266_SendCmd(u8 *pbuf)
{
        while(*pbuf!='\0') //遇到空格跳出循环       
        {
                UART_SendByte(*pbuf);
                delay_10us(5);
                pbuf++;       
        }
        delay_10us(5);
        UART_SendByte('\r');//回车
        delay_10us(5);
        UART_SendByte('\n');//换行
        delay_ms(1000);
}

void ESP8266_SendData(u8 *pbuf)
{
        ESP8266_SendCmd("AT+CIPSEND=0,9");
        while(*pbuf!='\0') //遇到空格跳出循环       
        {
                UART_SendByte(*pbuf);
                delay_10us(5);
                pbuf++;       
        }
        delay_10us(5);
        UART_SendByte('\n');//换行       
        delay_ms(10);
}

//ESP8266-WIFI模块工作模式初始化
void ESP8266_ModeInit(void)
{
        ESP8266_RST_Pin=1;
        ESP8266_CH_PD_Pin=1;

        ESP8266_SendCmd("AT+CWMODE=3");//设置路由器模式 1 staTIon模式 2 AP点 路由器模式 3 station+AP混合模式
        ESP8266_SendCmd("AT+CWSAP=\"PRECHIN\",\"prechin168\",11,0"); //设置WIFI热点名及密码
        ESP8266_SendCmd("AT+CIPAP=\"192.168.4.2\"");//重新启动wifi模块
        ESP8266_SendCmd("AT+RST");//重新启动wifi模块
        ESP8266_SendCmd("AT+CIPMUX=1");        //开启多连接模式,允许多个各客户端接入
        ESP8266_SendCmd("AT+CIPSERVER=1,8080");        //启动TCP/IP 端口为8080 实现基于网络控制       
}

//温度数据处理
#if 1
void TempDataPros(void)
{
        int tempdat=0;

        tempdat=Ds18b20ReadTemp()*10;
        if(tempdat<0)
        {
                tempData='-';
        }               
        else
        {
                tempData=' ';       
        }
                       

        tempData=tempdat / 10000+0x30;
        tempData=tempdat % 10000 / 1000+0x30;
        tempData=tempdat % 1000 / 100+0x30;
        tempData ='.';
        tempData=tempdat % 100 / 10+0x30;
        tempData=tempdat % 10+0x30;
        tempData ='C';
        tempData ='\0';               
}       
#endif

void main()
{       
        u16 i=0;

        led1=led3=1;
//        relay=1;

        UART_Init(); //串口初始化
        ESP8266_ModeInit();
        ES=1; //允许串口中断
        while(1)
        {
                i++;
                if(i%10==0)
                {
                        led3=!led3;
                        TempDataPros();
                        ESP8266_SendData(tempData);
                }
                delay_ms(10);
        }               
}

#if 1
void InterruptUART() interrupt 4   
{
      RI = 0;      //清零
      dat = SBUF;    //收到的数据占存到SBUF中
          {
         if(dat=='o')
                               {
                                       led1 =0;   
                               }
                               if(dat=='f')
                               {                                               
                                  led1 =1;
                               }                                       
          }
}
#endif


YXUN 发表于 2019-5-30 14:49:50

tcp连接的安装包

柴燎宁_J9Xw8 发表于 2019-6-16 12:19:27

赞一个:lol

suxin 发表于 2019-7-9 14:12:49

给你dianzhan一个

soulreaper 发表于 2019-7-21 18:11:53

我的板子上面为啥没有usb转ttl模块啊?

YXUN 发表于 2019-7-22 16:00:46

soulreaper 发表于 2019-7-21 18:11
我的板子上面为啥没有usb转ttl模块啊?

什么开发板, 普中除了dsp 其他开发版全部是带有自动下载电路的,miniUSB接口那一块就是

lonmm 发表于 2019-7-28 10:31:14

:)点赞一个,不错的分享,我也试试

dfx 发表于 2019-9-17 10:11:41

这个跟那些个小车的差不多,有没有32的
页: [1]
查看完整版本: WIFI-ESP8266 无线控制