用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)
2017-11-30 18:48 上傳
點擊文件名下載附件
|