用51单片机和esp8266实现通过手机app控制单片机小灯,也可以控制其他外设,可以自行添加。附件为源程序,app可使用附件里面的安卓手机测试app或者ios系统可以去apple store下载netassist使用。
设计目的: 给所有客户提供一个标准全功能而又经济适用的体验平台!客户拿到手直接测试,而 没有任何争议的环节。 本测试板能完成什么: 拥有本测试板,你可以无需任何其他开发工具,对ESP8266 模块进行AT 类应用与SDK类应用开发。 简单的演示功能:用安卓手机做的一个控制界面,用手机WIFI 和板载WIFI 进行数据交互,让手机控制 板载WIFI 输出数据,板载CPU 收到数据后控制板载LED,和蜂鸣器的动作!当然你还可以进过串口调试工具,直接对板载WIFI 模块进行手动测试! 测试版是一块51/AVR开发板,MCU可更换,板上资源丰富。既可以学习WiFi又能学习单片机,一举两得 下面是收到测试版后的简单说明: 1. 默认收到的开发板内有开发板测试程序,使用WiFi功能时,需要用户把程序烧写到单片机(程序烧写见“KR-51程序烧写说明”)。 2.烧写完程后,连接蓝牙模块,如下图; 上图为收到开发板的跳线的跳线帽位置,只需插USB供电,或者插上独立供电电源供电(独立供电电源不小于5V/600mA)。上电后如果电源灯不亮,请尝试多次开关(左上角开关)。正常上电后可看到模块蓝灯在间歇性闪烁,这是MCU在配置模块作为服务端,在灯无闪烁后,可以在手机上搜索到ESP8266的WiFi名称,安卓手机设置里可以看到这个WIFI,如下图 连上这个WIFI,打开手机端APP(在测试版程序文件夹里),等待模块蓝灯停止闪烁,直接点连接,可以控制LED,蜂鸣器。 - 如果以上试过后无反应,依旧提示连接失败,请检查模块波特率和单片机是否一致。
上图:(注:此跳线用跳线帽短接3,5 和4,6,代表USB_UART和模块的串口直连,) 
查看波特率方法:模块:打开03_调试工具里的“SSCOM”串口调试助手,如果这样显示 代表模块工作在115200波特率下,如果不是,可调节波特率(一般是115200或者9600),直到输出正常字符。这时可通过AT+CIOBAUD=9600,改为9600的波特率. (更多指令请参照指令说明设置) 恢复连接,插上模块,重新连接
单片机源程序如下:
- /**************************************************************************************
- *功能:Wifi模块测试 *
- *说明:手机安装测试APP,手机连接WiFi模块,控制开发板上的LED、蜂鸣器 *
- *硬件连接:在J10处插上跳线帽 1,3用跳线短路 2,4用跳线短路 *
- *作者:研发中心 *
- ***************************************************************************************/
- #include <REGX52.H>
- #include<intrins.h>
- typedef unsigned int uint;
- typedef unsigned char uchar;
- /**串口数据使用**/
- #define RX1_Lenth 32 //串口接收缓冲长度
- uchar idata RX1_Buffer[RX1_Lenth]; //接收缓冲
- uchar TX1_Cnt; //发送计数
- uchar RX1_Cnt; //接收计数
- bit B_TX1_Busy; //发送忙标志
- /************* 端口引脚定义 **************/
- sbit LED1=P1^0;//LED1
- sbit LED2=P1^1;//LED2
- sbit LED3=P1^2;//LED3
- sbit DK1=P1^3;//继电器
- sbit BEEP=P2^5;//蜂鸣器
- /**wifi模块命令**/
- unsigned char RST[8]="AT+RST\r\n";
- unsigned char LYMS[13]="AT+CWMODE=2\r\n";
- //unsigned char SZLY[38]="AT+CWSAP='ESP8266','0123456789',11,0\r\n";
- unsigned char SZDLJ[13]="AT+CIPMUX=1\r\n";
- unsigned char KQFU[21]="AT+CIPSERVER=1,5000\r\n";
- unsigned char FSSJ[13]="AT+CIPSEND=\r\n";//AT+CIPSEND= 发送数据
- void Delay2(unsigned long cnt)
- {
- long i;
- for(i=0;i<cnt*100;i++);
- }
- void Delay3(unsigned int N)
- {
- int i;
- for(i=0;i<N*10;i++);
- }
- /********************************************************************
- * 名称 : Uart_Init()
- * 功能 : 串口初始化,晶振11.0592,波特率9600,使能了串口中断
- * 输入 : 无
- * 输出 : 无
- ***********************************************************************/
- void Uart_Init(void)
- {
- TMOD = 0x20; //定时器工作在定时器1的方式2
- PCON = 0x00; //不倍频
- SCON = 0x50; //串口工作在方式1,并且启动串行接收
- TH1 = 0xFd; //设置波特率 9600
- TL1 = 0xFd;
- TR1 = 1; //启动定时器1
- ES = 1; //开串口中断
- EA = 1; //开总中断
- RX1_Cnt=0; //接受计数清零
- TX1_Cnt = 0; //发送计数清零
- B_TX1_Busy = 0;//初始化判忙标志位
- }
- /********************************************************************
- * 名称 : Main()
- * 功能 : 主函数
- * 输入 : 无
- * 输出 : 无
- ***********************************************************************/
- void main(void)
- {
- char i=0;
- Uart_Init();
- Delay3(2000);
- /******************设置WiFi模块**********************************************/
- for(i=0;i<8;i++)//AT+RST 重启
- {
- SBUF=RST[i];Delay3(5);
- }
- Delay3(5000);
- for(i=0;i<13;i++)//AT+CWMODE=2 设置成路由模式
- {
- SBUF=LYMS[i];Delay3(5);
- }
- /*Delay3(1000);
- for(i=0;i<38;i++)//AT+CWSAP="ESP8266","0123456789",11,0 设置路由
- {
- SBUF=SZLY[i];Delay3(5);
- }*/
- Delay3(3000);
-
- for(i=0;i<13;i++)//AT+CIPMUX=1 设置成多连接
- {
- SBUF=SZDLJ[i];Delay3(5);
- }
- Delay3(2000);
- for(i=0;i<21;i++)//AT+CIPSERVER=1,5000 开启TCP服务端口
- {
- SBUF=KQFU[i];Delay3(5);
- }
- Delay3(2000);
- while (1)
- {
-
- }
- }
- /********************************************************************
- * 名称 : Uart_Int()
- * 功能 : 串口中断子函数
- * 输入 : 无
- * 输出 : 无
- ***********************************************************************/
- void UART1_int (void) interrupt 4
- {
- // char i,a,b,c;
- if(RI)
- {
- RI = 0;
- RX1_Buffer[RX1_Cnt] = SBUF; //保存一个字节
- if(RX1_Buffer[0]==0x45)
- {
- RX1_Cnt++;
- }
- else
- {
- RX1_Cnt=0;
- }
- if(RX1_Cnt>=10)
- {
- if(RX1_Buffer[0]==0x45&&RX1_Buffer[1]==0x53&&RX1_Buffer[2]==0x50)
- {
- if(RX1_Buffer[4]==0x4C&&RX1_Buffer[5]==0x45&&RX1_Buffer[6]==0x44)//判断LED
- {
- if(RX1_Buffer[7]==0x31)//判断LED1
- {
- if(RX1_Buffer[3]==0x4B)//判断开
- {
- LED1=0;
- }
- if(RX1_Buffer[3]==0x47)//判断关
- {
- LED1=1;
- }
- }
- if(RX1_Buffer[7]==0x32)//判断LED2
- {
- if(RX1_Buffer[3]==0x4B)//判断开
- {
- LED2=0;
- }
- if(RX1_Buffer[3]==0x47)//判断关
- {
- LED2=1;
- }
- }
- if(RX1_Buffer[7]==0x33)//判断LED3
- {
- if(RX1_Buffer[3]==0x4B)//判断开
- {
- LED3=0;
- }
- if(RX1_Buffer[3]==0x47)//判断关
- {
- LED3=1;
- }
- }
- }
- if(RX1_Buffer[4]==0x4A&&RX1_Buffer[5]==0x44&&RX1_Buffer[6]==0x51)//判断继电器
- {
- if(RX1_Buffer[7]==0x31)//判断LED1
- {
- if(RX1_Buffer[3]==0x4B)//判断开
- {
- DK1=1;
- }
- if(RX1_Buffer[3]==0x47)//判断关
- {
- DK1=0;
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
以上资料51hei下载地址:
wifi测试程序.zip
(2.46 MB, 下载次数: 1249)
|