做毕设需要用到WiFi通信,选用了ESP8266WiFi通信模块,这个小芯片功能强大,有AP、STA和混合通信三种模式,简单说下三种模式是什么意思:
AP模式相当于8266是一个热点,由独立的WiFi信号,其它设备可以连接到这个热点上来实现通信,做多支持5个设备接入;
STA模式就是8266去连接公用WiFi网络,其他设备通过WiFi网络来实现和8266通信,这种模式下可以进行透传;
混合模式就是AP+STA模式,既能当热点也能连WiFi。
刚买来的8266一般都是直接刷好固件的,如果没有就要到官网上去下载固件,刷固件需要使用烧录器,或者使用USB转TTL烧录线。
三种模式下的AT指令为
ESP8266WiFi模块AP模式建立服务器模式

  1. 设置AP模式 AT+CWMODE=2
  2. 复位生效 AT+RST
  3. 配置热点 AT+CWSAP=“test”,“12345678”,1,3
  4. AT+CIPMUX=1
  5. 设置端口号 AT+CIPSERVER=1,8086
  6. AT+CIFSR
    服务器向客户端发送信息格式 AT+CIPSEND=0,4
    1234(四位数据) 服务器模式不支持透传

ESP8266作为客户端连接服务器支持透传

  1. AT+CWMODE=3
  2. AT+RST
  3. AT+CWJAP=“360WiFi-0F605E”,“123456789”
  4. AT+CIPMUX=0
  5. AT+CIPSERVER=1,8086
  6. AT+CIPMODE=1
  7. AT+CIFSR
  8. AT+CIPSTART=“TCP”,“192.168.0.14”,8086
  9. AT+CIPSEND
    AT+CWJAP=“360WiFi-0F605E”,“123456789”

ESP8266 STA模式 单连接透传
AT+CWMODE=1 设置工作模式为STA模式
AT+RST 模块重启(生效工作模式)
AT+CWJAP=“360WiFi-0F605E”,“123456789” 连接WiFi
AT+CIPMUX=0 设置单路连接模式
AT+CIPSTART=“TCP”,“192.168.0.14”,8086 IP地址为手机的地址
AT+CIPMODE=1 开启透传模式
AT+CIPSEND 进入透传模式,开始传输数据
+++ 退出透传模式,取消发送新行

AT+CWLAP 查看无线网络
可以先在电脑上面用串口助手和手机进行通信

单片机连接8266

#include "reg52.h"          //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16;     //对数据类型进行声明定义
typedef unsigned char u8;sbit k1=P3^5;  //定义P35口是k1
sbit k2=P3^4;
sbit k3=P3^3;
sbit k4=P3^2;
sbit led1=P1^0;     //定义P10口是led1
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
u8 dat;void Init(void);//串口初始化函数
void Delay_ms(u16 n);//延时子函数
void Sent_ZF(u8 dat);//发送一个字节
void AT_Send_String(u8 *string);//发送字符串
void ESP8266_Init();//ESP8266初始化
void fasong();
void shuju();void Init(void)        //串口初始化函数
{TMOD=0x20;    //定时器工作方式2,8位自动重载(0010 0000)TL1=0xfd;      //装入初值TH1=0xfd;        TR1=1; //启动定时器1REN=1;    //允许串行口接收数据SM0=0;    //工作方式1,10位异步收发SM1=1;   EA=1;   //打开全局中断控制ES=1;     //打开串行口中断
}
/*******************************************************************************
* 函 数 名         : delay
* 函数功能         : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void Delay_ms(u16 i)
{while(i--);
}/*******************************************************************************
* 函 数 名         : keypros
* 函数功能         : 按键处理函数,判断按键K1是否按下
*******************************************************************************/
void keypros1()       //按键1
{if(k1==0)          //检测按键K1是否按下{ Delay_ms(1000);   //消除抖动 一般大约10msif(k1==0)     //再次判断按键是否按下{led1=~led1;    //led状态取反ESP8266_Init();  //8266初始化,设置为STA模式,连接WiFi}while(!k1);  //检测按键是否松开}
}
void keypros2()        //按键2
{if(k2==0)          //检测按键K2是否按下{ Delay_ms(1000);   //消除抖动 一般大约10msif(k2==0)     //再次判断按键是否按下{led2=~led2;    //led状态取反fasong();    //接入服务器}while(!k2);  //检测按键是否松开}
}
void keypros3()        //按键2
{if(k3==0)          //检测按键K2是否按下{ Delay_ms(1000);   //消除抖动 一般大约10msif(k3==0)     //再次判断按键是否按下{led3=~led3;    //led状态取反shuju(); //发送数据}while(!k3);   //检测按键是否松开}
}/*******************************************************************************
* 函 数 名       : main
* 函数功能       : 主函数
* 输    入       : 无
* 输    出         : 无
*******************************************************************************/
void main()
{   Init();P1=0Xff;while(1){   keypros1();  //按键处理函数1keypros2();keypros3();    }
}void Sent_ZF(u8 dat)  //发送一个字节
{ES=0;  //关闭串行口中断TI=0;     //关闭发送中断标志位SBUF=dat;while(!TI);TI=0;ES=1;   //打开串行口中断
}
void AT_Send_String(u8 *string)  //发送字符串
{while(*string!='\0'){Sent_ZF(*string);string++;Delay_ms(1000);}}
void ESP8266_Init()   //ESP8266初始化
{   AT_Send_String("AT+CWMODE=1\r\n");  //重启模块Delay_ms(1000000);Delay_ms(1000000);AT_Send_String("AT+RST\r\n");  //重启模块Delay_ms(1000000);Delay_ms(1000000);AT_Send_String("AT+CIFSR\r\n");  //重启模块Delay_ms(1000000);Delay_ms(1000000);AT_Send_String("AT+CWJAP=\"360WiFi-0F605E\",\"123456789\"\r\n");  //重启模块Delay_ms(100000000);Delay_ms(100000000);}void fasong()
{AT_Send_String("AT+CIPMUX=0\r\n");  //设置为单连接模式,启动模块Delay_ms(1000000);Delay_ms(1000000);AT_Send_String("AT+CIPSTART=\"TCP\",\"192.168.0.14\",8086\r\n"); //服务器的设置端口Delay_ms(1000000);Delay_ms(1000000);AT_Send_String("AT+CIPMODE=1\r\n"); //开启透传Delay_ms(1000000);Delay_ms(1000000);AT_Send_String("AT+CIPSEND\r\n"); //进入透传模式Delay_ms(1000000);Delay_ms(1000000);AT_Send_String("OK"); //发送OKDelay_ms(1000000);Delay_ms(1000000);}void shuju()
{AT_Send_String("niuwentao\r\n"); //服务器的设置端口Delay_ms(1000000);Delay_ms(1000000);
} void InterruptUART() interrupt 4  //控制小灯开关
{ RI=0;        //清零dat= SBUF;    //收到的数据占存到SBUF中{if(dat=='o'){led4=0;    }if(dat=='f')  {                         led4=1; }
}}

ESP80266WiFi通信模块连接51单片机实现双向通信相关推荐

  1. nrf24l01无线通信模块与51单片机工作原理

    资源获取码:aaaa . 实物测试成功 . . 功能描述: 1 本无线用了NRF24l01作为无线模块,进行发射与接收. 2 当左边板的一个按键按下不放,右边板一盏灯点亮. 3 当左边板的一个按键松开 ...

  2. 51单片机通过WIFI模块ESP8266控制LED灯

    完整源码下载地址:https://download.csdn.net/download/tongxin082/21440621 一.系统方案 手机APP通过ESP8266 WIFI模块与51单片机通信 ...

  3. 51单片机使用和配置HC-05蓝牙模块

    需要的工具: usb转ttl模块*1 模块如下: 要想使用HC-05蓝牙模块进行单片机之间通讯或者单片机和蓝牙设备之间通讯,首先要配置好HC-05蓝牙模块的参数.设置好蓝牙的名称.密码.波特率等待. ...

  4. 快速复习51单片机的外部中断、计数/定时器中断和串行口中断,加代码实现

    目录 1.中断系统的概念 1.1中断的概念 1.2中断系统的概念 1.3中断系统的优点 1.4我们要说的三种中断源 2.外部中断 2.1 外部中断0 代码示范 2.2 外部中断 分析 3.计数/定时器 ...

  5. 51单片机—— 定时器

    定时器:简单的理解就是用来计时或者计数 定时器的作用:定时器的目的主要是用于精准计时,因为使用晶振的方法,常用的晶振为11.0592MHZ(在计算中常取整数12Mhz),所以会出现偏差,或者6MHZ ...

  6. hc05与单片机连接图_基于proteus的51单片机开发实例(13)-LED指示那个按键被按下

    1. 基于proteus的51单片机开发实例(13)-LED指示那个按键被按下 1.1. 实验目的 本实例将实现两路外部中断的检测和识别,让我们能够更好地理解51单片机的外部中断以及中断优先级的概念. ...

  7. 51单片机控制步进电机-电路连接

    51单片机控制步进电机-电路连接 概要:本案例讲解的内容是51单片机控制步进电机硬件连接部分.后续会分别讲解单片机程序,S曲线加减速方法,上位机等相关内容 硬件清单: 1.51单片机控制板一个 2.二 ...

  8. 51单片机-蓝牙遥控红外循迹小车-代码+硬件连接

    2021/04/28-更新工具的连接 ----------------------------------------- 前几天弄了个基于51芯片的蓝牙红外小车,因为是新手也没有人教,网上的资料也不够 ...

  9. nRF24L01--2.4G无线通信模块(1)(51单片机和51单片机通信)

    作者:李剀 出处:https://www.cnblogs.com/kevin-nancy/ 或者 https://blog.csdn.net/Kevin_8_Lee/article/details/9 ...

最新文章

  1. Gartner预测:2025年,人工智能将创造200万个新增就业机会
  2. hyperterminal使用教程_如何在Win7中安装使用超级终端Hyper Terminal(转)
  3. 使用ZooKeeper编程 - 一个基本教程
  4. C#LeetCode刷题之#867-转置矩阵(Transpose Matrix)
  5. blui_BLUI:一种创建游戏UI的简单方法
  6. python 放射 水平_基于Python的放射性核素大气扩散程序初步开发与验证
  7. Linux目录下有剩余空间,但无法写入数据
  8. 关于javascript 中的defer 属性介绍
  9. CentOS下ELK收集Nginx日志
  10. javascript学习之模块拖拽功能的实现
  11. KafkStream架构
  12. QT实现操控打印机打印图片
  13. scanner读取带空格字符串_Scanner类提供了输入字符出的方法,下面哪个方法可以实现字符串的输入且该串可以含有空格()。-智慧树JAVA程序设计(山东联盟-山东农业大学)章节答案...
  14. psp记忆棒测试软件,PSP记忆棒有问题?修复软件MS-Format帮你解忧
  15. 将bilibili缓存的m4s音视频文件合并(基于ffmpeg/含xml弹幕转ass/附exe程序)
  16. 移动互联网创业组织可持续发展模型
  17. SSH免密失败并报错:no mutual signature algorithm
  18. 在线ARM仿真器知识(嵌入式系统设计师必备)
  19. python中列表概念_详解python列表
  20. 前端图像处理之马赛克

热门文章

  1. SiamFC响应图热力图绘制
  2. 管家婆服务器端口修改,更改sql数据库端口
  3. 黑马自动化软件测试全套完整视频教程 不容错过哦!!!!!
  4. 【C#】【平时作业】习题-5-类的基础知识
  5. Java-Tomcat如何修改端口号
  6. react 翻书效果_React-FlipOver-Counter(日历翻页)
  7. pythonista3免费下载 itunes下载_‎App Store 上的“Duet Display”
  8. 人工智能——DBSCAN密度聚类(Python)
  9. Modbus RTU转MQTT网关的登录配置
  10. 安川机器人报错_安川机器人报错代码:报警历史和I/O 信息历史