找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 17428|回復(fù): 44
收起左側(cè)

ESP8266+51單片機(jī)WIFI控制多路遙控開關(guān)程序設(shè)計(jì)

  [復(fù)制鏈接]
ID:284357 發(fā)表于 2019-4-14 18:09 | 顯示全部樓層 |閱讀模式
這是一個(gè)基于單片機(jī)WIFI多路遙控開關(guān)設(shè)計(jì),里面有文檔,程序,圖片等資料

制作出來的實(shí)物圖如下:
IMG_5152.JPG IMG_5144.JPG IMG_5143.JPG IMG_5142.JPG

電路原理圖如下:
0.png

Wifi開關(guān)元件清單

1)    9*15萬用板
2)    STC89C52單片機(jī)
3)    40腳IC座
4)    11.0592MHz晶振
5)    30pF瓷片電容*2
6)    10uF電解電容
7)    ESP8266模塊
8)    2*4P排母
9)    2P排母*2
10)    3.3V穩(wěn)壓模塊
11)    2P接線端子*3
12)    繼電器*3
13)    3MM LED燈*3(紅、綠、藍(lán))
14)    8550三極管*3
15)    按鍵
16)    1k電阻*6
17)    10k電阻
18)    自鎖開關(guān)
19)    DC電源插座
20)    USB電源線
21)    導(dǎo)線
22)    手機(jī)APP(贈(zèng)送)

1、單片機(jī)是通用的無論51還是52、無論stc還是at都一樣,引腳功能都一樣。
   程序也是一樣的。
2、原理圖中的.ddb、.Bkp等格式是要用protelse打開的,沒有軟件的不要緊,
   我已幫您轉(zhuǎn)換成word格式和pdf格式的了。
3、程序中的.c文件可以用記事本(文本文檔)打開,就是程序了。其他的是寫程序是自動(dòng)
   生成的,沒什么用的。
4、可以按照正面布局,不要按照實(shí)物的背面焊接,要按照原理圖焊接。

單片機(jī)多路遙控開關(guān)源程序如下:
  1. /********************************************************************/
  2. #include <REGX51.H>
  3. #define uint unsigned int
  4. #define uchar unsigned char   
  5. sbit LED0=P2^0;          //紅燈
  6. sbit LED1=P2^3;                //黃燈
  7. sbit LED2=P2^6;            //綠燈

  8. /*****************相關(guān)變量**************/
  9. uchar Receive,i,qj,yz,zz,ht;                              
  10. uint n;  
  11. uchar Recive_table[40];                  //用于接收wifi模塊反饋到MCU上的數(shù)據(jù)  

  12. /*******************************************************************
  13. 名稱:延時(shí)函數(shù)  作用:毫秒級延時(shí),微妙級延時(shí)函數(shù),為數(shù)據(jù)收發(fā)完成作等待.......  
  14. ********************************************************************/
  15. void ms_delay(uint t)
  16. {  
  17.         uint i,j;  
  18.         for(i=t;i>0;i--)   
  19.         for(j=110;j>0;j--);
  20. }   

  21. void us_delay(uchar t)
  22. {  
  23.         while(t--);
  24. }         

  25. void Uart_Init()                                //使用定時(shí)器1作為波特率發(fā)生器(STC89C52、STC89C51、AT89C51等均可)
  26. {  
  27.     TMOD = 0x20;
  28.     SCON = 0x50;                                 //設(shè)置串行方式
  29.     TH1 = 0xFD;                                         //波特率9600
  30.     TL1 = TH1;
  31.     PCON = 0x00;
  32.     EA = 1;                                                //總中斷打開
  33.     ES = 1;                                                //開串口中斷  
  34.     TR1 = 1;                                        //啟動(dòng)定時(shí)器1
  35. }

  36. /********************************************************************
  37. 名稱:串口發(fā)送函數(shù)  功能:MCU向無線WIFI模塊ESP8266發(fā)送數(shù)據(jù)  
  38. ********************************************************************/
  39. void Send_Uart(uchar value)
  40. {  
  41.         ES=0;                                                  //關(guān)閉串口中斷  
  42.         TI=0;                                           //清發(fā)送完畢中斷請求標(biāo)志位   
  43.         SBUF=value;                                 //發(fā)送  
  44.         while(TI==0);                                 //等待發(fā)送完畢   
  45.         TI=0;                                           //清發(fā)送完畢中斷請求標(biāo)志位   
  46.         ES=1;                                                  //允許串口中斷  
  47. }  

  48. /********************************************************************
  49. 名稱:WIFI模塊設(shè)置函數(shù)  作用: 啟動(dòng)模塊,以便可以實(shí)現(xiàn)無線接入和控制  
  50. ********************************************************************/

  51. void ESP8266_Set(uchar *puf)         // 數(shù)組指針*puf指向字符串?dāng)?shù)組               
  52. {   
  53.         while(*puf!='\0')                    //遇到空格跳出循環(huán)  
  54.         {   
  55.                 Send_Uart(*puf);                  //向WIFI模塊發(fā)送控制指令。   
  56.                 us_delay(5);   
  57.                 puf++;   
  58.         }  
  59.         us_delay(5);  
  60.         Send_Uart('\r');                         //回車  
  61.         us_delay(5);  
  62.         Send_Uart('\n');                           //換行  
  63. }

  64. /********************************************************************
  65. 名稱:主函數(shù)  作用:程序的執(zhí)行入口  
  66. ********************************************************************/

  67. void main()
  68. {         
  69.         Uart_Init();                                                                                        //波特率發(fā)生器
  70.         ms_delay(2000);
  71.         ESP8266_Set("AT+CWMODE=2");                                                         //設(shè)置路由器模式1 station,模式2 AP,模式3 station+AP混合模式   
  72.         ms_delay(2000);
  73. //        ESP8266_Set("AT+RST");                                                                         //重新啟動(dòng)wifi模塊            
  74. //  ms_delay(2000);
  75.         ESP8266_Set("AT+CWSAP=\"wifi_yuan\",\"123456789\",11,4");          //AT+CWSAP="wifi_yuan","123456789",11,4  設(shè)置模塊SSID:WIFI, PWD:密碼 及安全類型加密模式(WPA2-PSK)
  76.         ms_delay(2000);
  77.         ESP8266_Set("AT+CIPMUX=1");                                                                //開啟多連接模式,允許多個(gè)各客戶端接入
  78.         ms_delay(2000);
  79.         ESP8266_Set("AT+CIPSERVER=1,5000");                                          //啟動(dòng)TCP/IP 實(shí)現(xiàn)基于網(wǎng)絡(luò)//控制         ESP8266_Set("AT+CIPSERVER=1,5000");  
  80.         ms_delay(2000);
  81.         ESP8266_Set("AT+CIPSTO=0");                                                         //永遠(yuǎn)不超時(shí)
  82.         ES=1;                                                                                           //允許串口中斷                 
  83.         qj=1;
  84.         zz=1;
  85.         yz=1;
  86.         ht=1;
  87.         LED0=1;
  88.         LED1=1;
  89.         LED2=1;
  90.         while(1)   
  91.         {   
  92.                 if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//MCU接收到的數(shù)據(jù)為+IPD時(shí)進(jìn)入判斷控制0\1來使小燈亮與滅   
  93.                 {           
  94.                         if((Recive_table[9]=='G')&&(Recive_table[10]=='P'))            
  95.                         {      
  96.                                 if(Recive_table[15]=='0')      
  97.                                 {      
  98.                                         LED0=0;                         //紅燈亮                          
  99.                                 }                                
  100.                                 else
  101.                                 if (Recive_table[15]=='1')      
  102.                                 {              
  103.                                         LED0=1;                         //紅燈滅
  104.                                 }
  105.                                 else
  106.                                 if (Recive_table[15]=='2')      
  107.                                 {              
  108.                     LED1=0;            //黃燈亮           
  109.                                 }
  110.                                 else
  111.                                 if (Recive_table[15]=='3')      
  112.                                 {              
  113.                         LED1=1;                    //黃燈滅
  114.                                 }
  115.                                 else
  116.                                 if (Recive_table[15]=='4')      
  117.                                 {              
  118.                         LED2=0;                       //綠燈亮
  119.                                 }  
  120.                                 else
  121.                                 if (Recive_table[15]=='5')      
  122.                                 {              
  123.                         LED2=1;                       //綠燈滅
  124.                                 }                                                                                                                                                            
  125.                         }  
  126.                 }
  127.           }   
  128. }   

  129. /*********************************************************************  
  130. 名稱:串行通訊中斷  作用:發(fā)送或接收結(jié)束后進(jìn)入該函數(shù),對相應(yīng)的標(biāo)志位軟件清0,實(shí)現(xiàn)模塊對數(shù)據(jù)正常的收發(fā)。  
  131. ********************************************************************/

  132. void Uart_Interrupt() interrupt 4         
  133. {   
  134.         static uchar i=0;  
  135.         if(RI==1)  
  136.         {   
  137.                 RI=0;   
  138.                 Receive=SBUF;                                                        //MCU接收wifi模塊反饋回來的數(shù)據(jù)      
  139.                 Recive_table[i]=Receive;   
  140.                 if((Recive_table[i]=='\n'))
  141.                 {                     
  142.                         i=0;
  143.                 }   
  144.                 else i++;                                                                                  //遇到換行 重新裝值  
  145.         }   
  146.         else TI=0;   
  147. }  
復(fù)制代碼

所有資料51hei提供下載:
50基于單片機(jī)WIFI多路遙控開關(guān)設(shè)計(jì).7z (2.5 MB, 下載次數(shù): 727)


評分

參與人數(shù) 2黑幣 +55 收起 理由
mashuiyou + 5 贊一個(gè)!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:647953 發(fā)表于 2019-11-23 17:06 | 顯示全部樓層
if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//MCU接收到的數(shù)據(jù)為+IPD時(shí)進(jìn)入判斷控制0\1來使小燈亮與滅   
                        
沒有看到D的判斷
                        

if((Recive_table[9]=='G')&&(Recive_table[10]=='P'))   
這行是啥意思

求求高手解釋下
回復(fù)

使用道具 舉報(bào)

ID:222183 發(fā)表于 2019-4-16 11:41 | 顯示全部樓層
非常感謝解了我的燃眉之急
回復(fù)

使用道具 舉報(bào)

ID:493109 發(fā)表于 2019-4-16 13:33 | 顯示全部樓層
先保存,等以后試試,是不是完全資料能一次成功.謝謝
回復(fù)

使用道具 舉報(bào)

ID:92810 發(fā)表于 2019-5-27 10:27 | 顯示全部樓層
謝謝樓主分享了,學(xué)習(xí)一波去
回復(fù)

使用道具 舉報(bào)

ID:484845 發(fā)表于 2019-5-28 18:21 | 顯示全部樓層
謝謝你,很有幫助
回復(fù)

使用道具 舉報(bào)

ID:525478 發(fā)表于 2019-6-12 09:56 | 顯示全部樓層
謝謝樓主分享了  正需要
回復(fù)

使用道具 舉報(bào)

ID:312929 發(fā)表于 2019-7-8 21:56 | 顯示全部樓層
在么,我這個(gè)連接不上什么原因?
回復(fù)

使用道具 舉報(bào)

ID:56665 發(fā)表于 2019-7-9 08:16 | 顯示全部樓層
怎么能夠遠(yuǎn)程控制的,寫一個(gè)帖子。
回復(fù)

使用道具 舉報(bào)

ID:167337 發(fā)表于 2019-7-9 08:30 | 顯示全部樓層
樓主,資料很詳細(xì),值得學(xué)習(xí)!謝謝樓主分享好資源
回復(fù)

使用道具 舉報(bào)

ID:577538 發(fā)表于 2019-7-10 12:38 | 顯示全部樓層
問一下,為什么要外接一個(gè)晶振,C52不是自帶晶振嗎?
回復(fù)

使用道具 舉報(bào)

ID:572103 發(fā)表于 2019-8-10 17:59 | 顯示全部樓層
非常想要學(xué)習(xí)一下,有沒有APP的源碼?
回復(fù)

使用道具 舉報(bào)

ID:630282 發(fā)表于 2019-11-4 19:45 | 顯示全部樓層
學(xué)習(xí)做的第二個(gè)東西。感謝分享。
回復(fù)

使用道具 舉報(bào)

ID:635750 發(fā)表于 2019-11-5 06:10 來自手機(jī) | 顯示全部樓層
學(xué)習(xí)一下,很感興趣
回復(fù)

使用道具 舉報(bào)

ID:385637 發(fā)表于 2019-11-7 16:59 | 顯示全部樓層
謝謝樓主分享那么好的資料!
回復(fù)

使用道具 舉報(bào)

ID:77126 發(fā)表于 2019-11-12 20:49 | 顯示全部樓層
非常感謝樓主無私分享,助我學(xué)習(xí),解我燃眉之急
回復(fù)

使用道具 舉報(bào)

ID:396487 發(fā)表于 2019-11-13 10:53 來自手機(jī) | 顯示全部樓層
好像你拷貝我的吧?
回復(fù)

使用道具 舉報(bào)

ID:573271 發(fā)表于 2019-11-14 16:59 | 顯示全部樓層
非常感謝樓主無私分享,助我學(xué)習(xí),解我燃眉之急
回復(fù)

使用道具 舉報(bào)

ID:613618 發(fā)表于 2019-11-14 21:46 來自手機(jī) | 顯示全部樓層
能用嗎
回復(fù)

使用道具 舉報(bào)

ID:642363 發(fā)表于 2019-11-15 03:36 | 顯示全部樓層

非常感謝樓主無私分享,助我學(xué)習(xí),解我燃眉之急
回復(fù)

使用道具 舉報(bào)

ID:642933 發(fā)表于 2019-11-21 22:43 | 顯示全部樓層
你好 我用了你的例程 但是手機(jī)發(fā)送字符1的時(shí)候單片機(jī)沒有反應(yīng) 測試好多遍 單片機(jī)都沒有反應(yīng) 這是為什么呢  想請教一下
回復(fù)

使用道具 舉報(bào)

ID:634862 發(fā)表于 2019-11-23 20:12 | 顯示全部樓層
下載了三個(gè),對于我學(xué)習(xí)單片機(jī)挺有幫助的,真心感謝這個(gè)網(wǎng)站,希望可以提供點(diǎn)玩具車遙控代碼和電路圖
回復(fù)

使用道具 舉報(bào)

ID:93929 發(fā)表于 2019-11-24 20:47 | 顯示全部樓層
手機(jī)APP是在哪里下載
回復(fù)

使用道具 舉報(bào)

ID:137736 發(fā)表于 2019-11-24 22:06 來自手機(jī) | 顯示全部樓層
用單片機(jī)控制,電路有點(diǎn)麻煩
回復(fù)

使用道具 舉報(bào)

ID:218360 發(fā)表于 2019-11-25 13:35 | 顯示全部樓層
使用安信可的模塊把。有模塊指令嗎?
回復(fù)

使用道具 舉報(bào)

ID:686631 發(fā)表于 2020-1-17 16:58 | 顯示全部樓層
謝謝樓主分享,正在學(xué)習(xí)中
回復(fù)

使用道具 舉報(bào)

ID:56960 發(fā)表于 2020-7-10 15:18 | 顯示全部樓層
非常感謝樓主的分享!已收藏了
回復(fù)

使用道具 舉報(bào)

ID:605585 發(fā)表于 2020-7-10 15:54 | 顯示全部樓層
挺好的,感謝樓主,也希望能加入我的STC51單片機(jī)的開發(fā)932747872,分享技術(shù),分享心得。
回復(fù)

使用道具 舉報(bào)

ID:801121 發(fā)表于 2020-7-10 16:29 | 顯示全部樓層
非常感謝樓主無私分享,助我學(xué)習(xí),解我燃眉之急
回復(fù)

使用道具 舉報(bào)

ID:65237 發(fā)表于 2020-7-28 22:06 來自手機(jī) | 顯示全部樓層
樓主按照你指導(dǎo),模塊wifi手機(jī)能連上 但手機(jī)app打開上面第一排顯示TCP服務(wù)器IP 192. 168.4.1第二排是TCP通信端口5000  上面顯示未連接 請問一二排怎么設(shè)置 手機(jī)app 模塊 8266 無線路由器  你的貼中沒有提到路由器那里的設(shè)置 是不用路由器嗎 但我看APP上面一二排好像要用路由器新手望指點(diǎn)
Screenshot_2020-07-28-21-46-12-788_com.newapp.png
回復(fù)

使用道具 舉報(bào)

ID:65237 發(fā)表于 2020-7-28 22:10 來自手機(jī) | 顯示全部樓層
揩油鵬 發(fā)表于 2019-11-21 22:43
你好 我用了你的例程 但是手機(jī)發(fā)送字符1的時(shí)候單片機(jī)沒有反應(yīng) 測試好多遍 單片機(jī)都沒有反應(yīng) 這是為什么呢   ...

你好 連上了嗎 ?你是模塊+單片機(jī) app 有無線路由器沒 我的手機(jī)連上模塊了 app連不上
回復(fù)

使用道具 舉報(bào)

ID:809905 發(fā)表于 2020-7-31 07:18 | 顯示全部樓層
51hei電控1125 發(fā)表于 2019-11-23 17:06
if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//MCU接收到的數(shù)據(jù)為+IPD時(shí) ...

我也是這一塊搞不懂
回復(fù)

使用道具 舉報(bào)

ID:65237 發(fā)表于 2020-7-31 17:23 來自手機(jī) | 顯示全部樓層
有按照樓主做成功的沒,我做的wifi模塊和手機(jī)聯(lián)上了 但app和模塊總是顯示未連接  望師傅們指點(diǎn)
回復(fù)

使用道具 舉報(bào)

ID:65237 發(fā)表于 2020-8-2 11:46 | 顯示全部樓層
壇友們有沒有APP和模塊能正常通信成功的
回復(fù)

使用道具 舉報(bào)

ID:61390 發(fā)表于 2020-8-3 15:31 | 顯示全部樓層
DING,謝謝,正需要此方面資料!
回復(fù)

使用道具 舉報(bào)

ID:724172 發(fā)表于 2020-10-10 09:33 | 顯示全部樓層
如果能與天貓精靈連上就perfect了
回復(fù)

使用道具 舉報(bào)

ID:849826 發(fā)表于 2020-12-7 14:34 來自手機(jī) | 顯示全部樓層
程序里面的指令無法修改8266的wifi名稱和端口號,導(dǎo)致手機(jī)軟件TCP連不上
回復(fù)

使用道具 舉報(bào)

ID:849826 發(fā)表于 2020-12-7 22:01 來自手機(jī) | 顯示全部樓層
8266- 01s原來的固件無法用AT指令修改波特率,重新刷的固件,用AT指令修改波特率為9600,8266連到單片機(jī)上,單片機(jī)里面的程序能夠修改wifi名稱和密碼,能夠設(shè)置端口,手機(jī)TCP軟件能夠連上,發(fā)送字符,發(fā)現(xiàn)單片機(jī)沒反應(yīng),問了好多人也沒給出合理的答案
回復(fù)

使用道具 舉報(bào)

ID:849826 發(fā)表于 2020-12-7 22:04 來自手機(jī) | 顯示全部樓層
對照藍(lán)牙遙控開關(guān)里面的按鍵程序,把他的按鍵程序部分刪掉,把藍(lán)牙遙控開關(guān)里面的程序?qū)戇M(jìn)去,編譯通過,下載,上電,TCP軟件發(fā)送字符,單片機(jī)能夠做出反應(yīng),至此局域網(wǎng)wifi遙控開關(guān)完成,里面的按鍵程序改成8路遙控的了
回復(fù)

使用道具 舉報(bào)

ID:849826 發(fā)表于 2020-12-7 22:14 來自手機(jī) | 顯示全部樓層
重要的一點(diǎn)82866必須用AT指令修改波特率9600,單片機(jī)才能和8266通信,如果不能修改波特率,請重新刷個(gè)固件,再試試。一個(gè)遙控開關(guān)研究了兩天,才做成功。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表