51单片机通过ESP8266模块与手机进行通讯(单片机)

article/2025/10/11 18:22:44

本文章内容已经弃用,最新内容请参考ESP8266系列ESP-01S模块的配置使用(51单片机)

Step1:配置ESP8266

 通过USB转TTL模块把ESP8266模块和电脑连接起来,如

把ESP8266模块的VCC,GND,CH_PD,UTXD,URXD口分别接USB转TTL模块的3.3v,,3.3v,RXD,TXD

连接好后,就准备用电脑用串口调试助手向ESP8266发送AT指令。

串口调试助手下载地址:百度云盘 

或者下载  咸鱼ESP8266配置 提取码:hiuy

设置好串口调试助手的串口和波特率,ESP8266默认波特率为115200,把串口调试助手的波特率调为115200,勾选左下角的发送新行。在输入框中输入 AT+RST 然后点击发送:

如果前面的配置都没错的话,串口调试助手会接收到esp8266返回的信息,AT+RST是复位命令,ESP8266会返回一堆乱码,这时候就说明ESP8266配置成功了。

 

配置好ESP8266之后就可以更改模块的信息了,按照以下顺序向模块发送AT指令:

AT+CWMODE=2

AT+CWSAP="esp8266","0123456789",11,3     //更改wifi名称,名字最好不要乱改,有些特别的名字是显示不出来的。

AT+RST             //配置完AT+CWMODE要重启以下模块使配置生效

AT+CIPMUX=1

AT+CIPSERVER=1,8080               //8080为端口号,之后手机和单片机进行通讯要用到,可以自己修改。

前面三条绿色的指令配置一次就够了,断电重连配置的信息也不会改变,后面两条红色的指令要每次重启模块之后都要配置一遍。

按顺序配置完之后就可以用手机进行连接,如果手机发现wifi并且输入密码成功连接了,就证明上面的配置成功了。

下载手机网络调试助手:手机网络调试助手

打开手机网络调试助手,把协议类型设置为"TCP Client",IP地址设置为用AT+CIFSR指令查询到的ESP8266的IP,端口号就是前面设置的端口号。

配置好之后点连接(手机要连接好ESP8266的wifi),然后输入任意信息(如:123),点击发送。和ESP8266连接的电脑上的串口调试助手就会收到信息:+IPD,0,3:123(不同的ESP8266收到信息的格式可能会不同)从左到右的数字中,0是代表客户的索引,3是代表收到信息的大小,至于是字节数还是什么的就不清楚了,冒号后面是收到的信息,到时候把ESP8266连接到单片机上面的时候,单片机收到的和电脑一样的字符串,我们需要编写程序解析字符串,把其中需要的信息提取出来(如:+IPD,0,3:123,把123提取出来,单片机就可以得知手机发送了123,就可以在程序里面进行对应的动作)

Step2:连接单片机和ESP8266

上面的配置只是电脑和ESP8266的连接,确保ESP8266运行正常,现在要进行单片机和ESP8266的连接了。

因为51单片机通讯的波特率为9600,所以ESP8266要与单片机进行连接通讯,就要先用电脑吧ESP8266的波特率设置为9600;

AT+CIOBAUD=9600    发送一下指令就可以设置ESP8266波特率为9600了,AT+RST重启一下ESP8266,不要忘了把电脑串口调试助手的波特率也改为9600了,不然电脑连接ESP8266就会出现错误的了。

之前说过ESP8266有些指令配置一次就可以,有些重启之后要重新配置,这些指令是下面这两条:

AT+CIPMUX=1

AT+CIPSERVER=1,8080               //8080为端口号,之后手机和单片机进行通讯要用到,可以自己修改。

这些指令之前是用电脑给ESP8266发送的,但现在ESP8266和单片机连接起来的,这时要用单片机向ESP8266发送AT指令了。

在单片机程序中加入以下代码:

void connect_init()
{char *a="AT+CIPMUX=1\r\n";char *b="AT+CIPSERVER=1,8080\r\n";while(*a!='\0'){SBUF=*a;      //写入要发送的字符while(!TI);    //等待发送完成TI=0;          //发送a++;}//这里添加延时函数,延时5ms左右,给ESP8266反应时间while(*b!='\0'){SBUF=*b;  while(!TI);    //等待发送完成TI=0;b++;}
}

程序的开头,配置串口连接函数的后面加入上面的代码,就可以让单片机每次开机的时候都向ESP8266发送一次指令,如果不会配置单片机串口的话,就百度一下教程,配置串口中断是51单片机基础的知识,这里就不多说了。

烧录好程序之后,然后把ESP8266模块和单片机连接起来,接线方式跟之前的差不多,VCC,GND,CH_PD,UTXD,URXD口分别接3.3v,,3.3v,单片机芯片的RXD,单片机芯片的TXD,其中,要和单片机共地。

确保连接好ESP8266和烧录好程序,复位一下单片机,此时单片机应该向ESP8266完成发送AT指令了,打开手机的wifi,是否能连接上模块发出的wifi

热点,如果能连接上,证明单片机发送AT指令进行初始化的代码块没问题,如果失败了,检查一下连线和程序是否有问题。

 

 现在已经完成了单片机与ESP8266的连接与初始化了,之后就进行对ESP8266向单片机发送的信息的解析。
 

void Uart() interrupt 4
{char res;res=SBUF;         //取出接受到的数据RI=0;              //清除接受中断标志位if(res==':'||i>0)    //i是全局变量{receive[i]=res;   //receive数组也是全局变量i++;if(res=='\n'){i=0;//添加对收到信息的处理代码memset(receive,0,50);}}
}

因为单片机每产生一次串口中断,只是接收一个字符,单片机要接收+IPD,0,3:123的话,就会产生多次中断,单片机的中断程序里面就要进行对收到的信息进行筛选和提取。上面代码中 if(res==':'||i>0)  目的是排除掉+IPD,0,3 我不需要用的信息,然后i>0是确保之后程序能运行到if里面, 之后if(res=='\n')就是判断ESP8266发送完成一条信息没有,进入if(res=='\n')里面之后此时数组里面的信息是:123,然后就可以添加相关的处理函数了(如:LED=0),处理完之后要调用memset(receive,0,50);把数组清空,以便下次使用。

把程序向单片机进行烧录,连接好ESP8266(连接着ESP8266的时候烧录会失败,应该拔下ESP8266的TX和RX端),复位单片机,然后用手机连接上wifi,打开手机网络调试助手,发送自己设定好的信息,看看单片机有没做出对应的处理(如:LED从灭到亮),成功的话就可以在原先的程序上加上自己项目需要的代码就可以进行手机操控单片机了。

 

     


http://chatgpt.dhexx.cn/article/UEbE7Aiy.shtml

相关文章

C51单片机用esp8266点亮led灯(含源码)

大家好,我是一个单片机新手,也是一个兴趣者,我以前想用c51单片机用esp8266模块的热点控制led小灯的,实验,可是网上的资料很少,所以今天来给新生,老手也好,想出一个教程,希…

C51---PWM 脉冲宽度调制

1.PWM:脉冲宽度调制,它是通过一系列脉冲宽度进行调制,等效出所需要的波形(包含形状以及幅值)。对模拟信号电平进行数字编码。也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于…

基于51单片机的手机电话拨号盘模拟proteus仿真

功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.采用4X4矩阵键盘实现号码输入,并在LCD液晶上显示 2.按下enter键,显示calling…,并且蜂鸣器模拟电话拨号发声 3.按下*键,退格,按下#键,清楚…

基于51单片机的简易自动灌溉系统

基于51单片机的简易自动灌溉系统如下图所示。 系统的主要构成 主控核心:AT89C51. 显示器:LCD1602. 输入设备:独立按键(4个). 水泵控制:继电器控制. 外部数据存储:EEPROM. 温湿度传感器&am…

51单片机期末课程作业之蓝牙、操控、测速、里程小车

文章底部附源码 课程设计报告 学 科: 单片机原理及应用 项 目: 里程记录仪 学 院: 专业、年级: 指导老师: 摘要 设计首先实现对…

【超详细】C51单片机与HC-05蓝牙模块实现手机点灯

此文记录HC05蓝牙模块在C51单片机上的学习历程 文章目录 一、硬件连接(1)配置模式下接线(2)正常模式下接线 二、配置模式操作三、正常模式四、使用蓝牙通过蓝牙调试app点灯1.单片机代码烧录与蓝牙连接2.蓝牙调试app配置 一、硬件连接 HC05一共有6个引脚,此实验一般…

【单片机】C51中的I2C操作-Proteus+Keil4+C语言实现

51单片机中I2C读写操作 开发板:普中51-单核-A2; I2C器件-EEPROM:AT24C02、FM24C02(仿真EEPROM); 仿真软件:proteus; 开发环境:Keil4; 参考资料:开发板所附视频; 如有错误…

51单片机 智能小车

主函数中extern char speed 是在整个工程中与别处的speed共用一个内存 sprintf字串格式化命令,主要功能是把格式化的数据写入某个字符串中。 一、小车组装、用面包板供电、单片机也可以用面包板供电,必须共地、分文件(模块化编程&#xff09…

C51单片机 SIM900A 手机给门禁解锁 智能家居 【C程序代码已开源,更新至Ver4.0】...

为何要实施这个项目? 一般小区楼下,每幢都会有一个门禁系统, 可以使用钥匙打开门禁, 有的可以使用刷卡打开门禁, 有的可以使用密码打开门禁, 但是,长期下来,因为小区人多,锁的钥匙孔会被捅坏,物业修起来也很怠慢 使用密码按键解锁门禁,按键也会失灵 每家都会安装一个…

基于STC89C51单片机,CH340芯片的下载电路

前几天看到了卓晴公众号写的三篇关于STC系列单片机的下载电路,然后结合了其他的文章,对下载电路有了更加深入的了解,在这里我梳理一下自己的学习过程,附上完整的资料,方便日后查看,也方便有兴趣的同学交流讨…

C51单片机简易密码锁(课程设计)

已经过测试,全部可用。手机好像不能发博客,相册提取图片代码粘黏复制可用。 本密码锁用于开门关门。绿灯保持常亮状态,表示一直通电状态。如果处于开门状态,则红灯也会亮起。(单片机上无法显示红绿灯,仿真…

51单片机的架构与原理(STC89C51)

前言 学习单片机,不管怎么学都是要走一些弯路的,有的人弯路走得多,有多人弯路走得少,有些人中途就放弃了,也有不少人成功上岸,掌握了各式各样的单片机、处理器。用51单片机来学习是最合适不过的&#xff0c…

C51单片机利用HC-05蓝牙模块实现手机点灯

蓝牙通信,实现手机端远程(15米)控制单片机,这听起来对于初学者的我来说,是那么不可思议,经过不断地实验,阅读其他大佬的文章,终于实现了。 在有基础的通信原理知识的前提下,知,HC-05…

基于C51单片机的ESP8266Wifi模块(ESP-01s)编程(详细)

1、模块简介 ESP-01S 是由安信可科技开发的 Wi-Fi 模块,该模块核心处理器为ESP8266。ESP8266 拥有完整的且自成体系的 Wi-Fi 网络功能,既能够独立应用,也可以作为从机搭载于其他主机 MCU 运行。当 ESP8266 独立应用时,能够直接从外…

(可远程)开源手机app控制c51单片机,附微信小程序控制

开源手机app控制c51单片机 第一 、先上效果图第二、原理讲解第三、下载程序到c51第四 app inventor 开发第五、微信小程序开发第六 可能遇到的一些小问题 第一 、先上效果图 第二、原理讲解 原理简述:利用发布订阅模式。第一步,新建主题,第二…

java实例内部类

内部类:可以将一个类定义在另一个类或者一个方法的内部。描述一个事物的一个完整结构的描述。内部类包括:实例内部类(普通内部类),静态内部类,局部内部类(定义在方法里,几乎不用&…

Java内部类介绍 - 局部内部类和匿名内部类

文章目录 内部类局部内部类匿名内部类匿名内部类介绍常见的使用形式开发中使用场景 内部类 局部内部类 局部内部类 (鸡肋语法,了解即可) 局部内部类, 在方法、代码块、构造器等执行体中创建一个类, 称为为局部内部类(但是我们一般都不会这样…

夯实Java基础系列8:深入理解Java内部类及其实现原理

本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star、Fork、Watch三连哈,感谢你的支持。 文章首发于我的个人博客: www.how2playlife.c…

初识JAVA内部类

1 内部类概述 如果一个类存在的意义就是为指定的另一个类,可以把这个类放入另一个类的内部。 就是把类定义在类的内部的情况就可以形成内部类的形式。 A类中又定义了B类,B类就是内部类,B类可以当做A类的一个成员看待: 2 特点 1) 内部类可以直接访问外…

java 内部类怎么调用成员变量_JAVA内部类之成员内部类

JAVA有一个特殊的类形式——内部类(这个词有点为难普通话不好的南方朋友)。今天我们就来聊聊内部类的一种:成员内部类。 如何定义成员内部类 那要如何定义成员内部类呢。 既然叫成员内部类,说明和成员变量是有类似的地方。从代码的层次结构上来看他是和成…