小白驱动C51+ESP8266局域网与APP通讯控制IO口

第一次写博客,记录一下方便自己查看
文章内容:
ESP8266接线方式,51C程序,AndroidAPP,ESP8266调试方式,路由器端口映射;

接线方式

VCC最好使用3.3V;5V 容易发热导致烧坏模块

ESP8266单片机
VCCVCC
CH_PDVCC
GNDGND
URXDTXD
UTXDRXD

ESP8266调试方式

使用串行数据线连接电脑,使用安可信官方提供的调试工具调试
这里使用https://blog.csdn.net/ls1792304830/article/details/72380281?depth_1-
这位博主的图片;我也是参考他的博客;特别感谢

在这里插入图片描述

打开调试工具
图片上传顺序可能不一样 已经标注了步骤了 一共4步
第一步
在这里插入图片描述
第四步 这里改完后要重新改连接的时候的波特率 重新打开串口才能连接
在这里插入图片描述
第二步
在这里插入图片描述
第三步
在这里插入图片描述

配置完模块就可以烧录程序到51中了

51C程序

直接复制;根据自己硬件参数修改波特率

#include <reg52.h>
#include "intrins.h"
sbit LED1=P2^0;
sbit LED2=P2^1;
typedef unsigned int u16;
typedef unsigned char u8;
u8 receive[2];
u8 sign=0;
void delay1s(void)   //误差 0us
{
    u8 a,b,c;
    for(c=46;c>0;c--)
       for(b=152;b>0;b--)
           for(a=70;a>0;a--);
    _nop_();  //if Keil,require use intrins.h
}


void delay600us(void)   //误差 -1.041666666667us
{
    unsigned char a,b;
    for(b=61;b>0;b--)
        for(a=3;a>0;a--);
}




//初始化串口
void Init()
{
       SCON = 0x50;      //串口模式1,允许接收
       TMOD = 0x20;    //T1工作模式2,自动重装
       PCON = 0x80;      //波特率倍增
       REN = 1;
                                         //根据实际选择
//  TH1 = 0xfa;          //波特率9600(11.0592)
    //   TH1 = 0xf3;          //波特率4800(12.0000)
  	   TH1 = 0xf4;          //波特率4800(11.0592)
       TL1 = TH1;
       RI=0;
       EA = 1;
       ES = 0;
       TR1 = 1;
}
//发送字符
void send(u8 value)
{
       ES=0; //关闭串口中断
       TI=0; //清发送完毕中断请求标志位
       SBUF=value; //发送
       while(!TI); //等待发送完毕
       TI=0; //清发送完毕中断请求标志位
       ES=1; //允许串口中断
}
//单片机向模块发送AT指令
void wifi_init()
{
       u8 j=0;
   u8 a[]="AT+CIPMUX=1\r\n";     //那两条掉电要重新配置的指令	  多路模式
   u8 b[]="AT+CIPSERVER=1,8266\r\n";
   while(a[j]!='\0')
   {
           send(a[j]);
           j++;
   }
       j=0;                        //清零准备发第二条指令
       delay1s();                    //延时一下
       while(b[j]!='\0')
   {
           send(b[j]);
           j++;
   }
       delay1s();
}
void wifi_data()
{
       if(receive[0]=='A')
	   {     LED1=0;    //亮
	   		 LED2=1;
			 delay1s();
			 receive[0]="";
			 LED1=1;
			 LED2=0;
			 delay1s();
	   }
	   //if(receive[0]=='A')     LED1=1;    //亮
	   
       //if(receive[0]=='B')    LED1=1;    //灭
}   
void main()
{
	   delay1s();
       Init();
       wifi_init();
       while(1)
       {
                wifi_data();
       }
}
//中断程序,此程序只把+IPD,x,x:后的有用数据存进receive数组里
void ZD() interrupt 4
{
       if(RI)
       {
                RI=0;
                if(sign==1)
                {
                        receive[0]=SBUF;
                        sign=0;                    //保存receive[0]的数据
                }
                if(SBUF==':')       sign=1;
       }
}

硬件接线

同上图 模块RXD接单片机TXD
模块TXD接单片机RXD
上电 等模块初始化化完成

路由器端口映射

在路由器中查找当前模块的IP 记录下来
在路由器设置中找到端口映射 每个路由器地方不一样 找找就好了 有些叫端口转发,大概就是这个意思
名字不一定一样
在端口映射中添加映射
一般来说
映射名字 随便设置 如 ESP
内网IP 就是刚刚记录的IP
端口范围就随便了 我这边默认设置就可以了
保存就好了

APP

APP比较LOW,就不上传了,有需要的可以联系我;

正式测试

上电模块初识话完成
在手机上使用TCP网络助手以客户端的方式加入 刚刚查询的IP 端口为程序里设置的
发送数据;根据你的需求改数据动作 ;我这里设置的是 发送A 就会改变IO口上电状况
到此全部完成

写的不好,请多多指教,写的错误的地方多谢指导。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值