一、借助ESP8266 WIFI模块(ESP8266-01S芯片),实现Android手机有人网络调试助手(或Android手机网络调试助手)与单片机互相通信原理分析。
通过给单片机编写串口通信函数(用来实现单片机与ESP8266 WiFi模块(ESP8266-01S芯片)通信)、激活ESP8266 WiFi模块(ESP8266-01S芯片)WiFi功能的AT命令函数(用来把ESP8266 WiFi模块(ESP8266-01S芯片)设置成具有端口号能发射WiFi的服务器端)和实现功能函数(用来给Android手机上的有人网络调试助手(或Android手机网络调试助手)控制单片机去点亮熄灭LED灯或操作单片机上的硬件给Android手机上的有人网络调试助手(或Android手机网络调试助手)发送单片机程序所编好的信息),并把这些单片机函数烧入单片机。先让Android手机连上ESP8266 WiFi模块(ESP8266-01S芯片)发射出的WiFi,通过查看Android手机连上ESP8266 WiFi模块(ESP8266-01S芯片)所发射出WiFi的相关信息,可以获取ESP8266 WiFi模块(ESP8266-01S芯片)所发射出WiFi的IP地址和端口号。然后在Android手机上的有人网络调试助手(或Android手机网络调试助手)服务器端(tcp server)界面输入ESP8266 WiFi模块(ESP8266-01S芯片)所发射出WiFi的端口号,用来激活ESP8266 WiFi模块(ESP8266-01S芯片)所设置的端口。再切换到Android手机上的有人网络调试助手(或Android手机网络调试助手)客户端(tcp client )界面,在该界面下输入ESP8266 WiFi模块(ESP8266-01S芯片)所发射WiFi的IP地址和端口,点击增加,让Android手机上的有人网络调试助手(或Android手机网络调试助手)连接上ESP8266 WiFi模块(ESP8266-01S芯片)所发射出的WiFi。当Android手机上的有人网络调试助手(或Android手机网络调试助手)客户端(tcp client )连接ESP8266 WiFi模块(ESP8266-01S芯片)发射出的WiFi成功后,可在Android手机上的有人网络调试助手(或Android手机网络调试助手)客户端(tcp client )界面输入框输入控制信息,经ESP8266 WiFi模块(ESP8266-01S芯片)接收后,再传送给单片机来控制单片机去点亮熄灭LED灯,也可在操作单片机上的硬件给Android手机上的有人网络调试助手(或Android手机网络调试助手)客户端(tcp client )界面发送单片机程序所编好的信息,经ESP8266 WiFi模块(ESP8266-01S芯片)接收后,再传送给Android手机上的有人网络调试助手(或Android手机网络调试助手)客户端(tcp client )接收,从而实现Android手机上的有人网络调试助手(或Android手机网络调试助手)与单片机互相通信。
二、借助ESP8266 WIFI模块(ESP8266-01S芯片),实现Android手机有人网络调试助手(或Android手机网络调试助手)与单片机互相通信接线图。
三、给单片机编写串口通信函数(用来实现单片机与ESP8266 WiFi模块(ESP8266-01S芯片)通信)、激活ESP8266 WiFi模块(ESP8266-01S芯片)WiFi功能的AT命令函数(用来把ESP8266 WiFi模块(ESP8266-01S芯片)设置成具有端口号能发射WiFi的服务器端)和实现功能函数(用来给Android手机上的有人网络调试助手(或Android手机网络调试助手)控制单片机去点亮熄灭LED灯或操作单片机上的硬件给Android手机上的有人网络调试助手(或Android手机网络调试助手)发送单片机程序所编好的数据)。
1、单片机与ESP8266 WiFi模块(ESP8266-01S芯片)通信的串口通信程序
void UART_Init(void)//单片机串口初始化函数 { TMOD=0x20;//0010 0000定时器工作方式为方式2,8位自动重装。 TH1=0xfd;//初始化计数器高8位:1111 1101 TL1=0xfd;//初始化计数器低8位 TR1=1;//启动定时器1 SM0=0;//设定串口工作方式为方式1(10位异步通信) SM1=1;//设定串口工作方式 REN=1;//打开串口中断接收允许 EA=1;//打开全局中断 ES=1;//打开串口中断允许位 } void UART_Interrupt() interrupt 4//单片机串口中断函数 { static char i=0; if(RI==1)//判断串口接收中断标志位是否为1,若串口接收中断标志位为1,表示单片机接收数据缓存寄存器接收数据结束。 { ES = 0;//关闭串口中断允许位,阻止进入串口中断服务程序。为什么要设置ES=0?由于单片机接收数据缓存寄存器接收ESP8266 WiFi模块从某设备获取的数据结束后,RI(即串口接收中断标志位)=1,申请串口中断,若ES不设置为0,在RI(即串口接收中断标志位)=1时,申请串口中断进入串口中断服务程序,形成固定循环,导致无法运行其他程序。 RI=0;//表示单片机接收数据缓存寄存器可重新接收数据,不可申请串口中断。 Recive_table[i]=SBUF;//单片机接收缓存器接收ESP8266 WiFi模块从某设备获取的数据赋给数组变量Recive_table[] i++; if((Recive_table[i-1] == ' '))//判断单片机接收缓存器接收ESP8266 WiFi模块从某设备获取的数据是否有换行。 { Recive_table[i]='