找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 17593|回復: 44
打印 上一主題 下一主題
收起左側(cè)

ESP8266+51單片機WIFI控制多路遙控開關程序設計

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:284357 發(fā)表于 2019-4-14 18:09 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
這是一個基于單片機WIFI多路遙控開關設計,里面有文檔,程序,圖片等資料

制作出來的實物圖如下:


電路原理圖如下:


Wifi開關元件清單

1)    9*15萬用板
2)    STC89C52單片機
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(紅、綠、藍)
14)    8550三極管*3
15)    按鍵
16)    1k電阻*6
17)    10k電阻
18)    自鎖開關
19)    DC電源插座
20)    USB電源線
21)    導線
22)    手機APP(贈送)

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

單片機多路遙控開關源程序如下:
  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. /*****************相關變量**************/
  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ù)據(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()                                //使用定時器1作為波特率發(fā)生器(STC89C52、STC89C51、AT89C51等均可)
  26. {  
  27.     TMOD = 0x20;
  28.     SCON = 0x50;                                 //設置串行方式
  29.     TH1 = 0xFD;                                         //波特率9600
  30.     TL1 = TH1;
  31.     PCON = 0x00;
  32.     EA = 1;                                                //總中斷打開
  33.     ES = 1;                                                //開串口中斷  
  34.     TR1 = 1;                                        //啟動定時器1
  35. }

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

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

  51. void ESP8266_Set(uchar *puf)         // 數(shù)組指針*puf指向字符串數(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");                                                         //設置路由器模式1 station,模式2 AP,模式3 station+AP混合模式   
  72.         ms_delay(2000);
  73. //        ESP8266_Set("AT+RST");                                                                         //重新啟動wifi模塊            
  74. //  ms_delay(2000);
  75.         ESP8266_Set("AT+CWSAP=\"wifi_yuan\",\"123456789\",11,4");          //AT+CWSAP="wifi_yuan","123456789",11,4  設置模塊SSID:WIFI, PWD:密碼 及安全類型加密模式(WPA2-PSK)
  76.         ms_delay(2000);
  77.         ESP8266_Set("AT+CIPMUX=1");                                                                //開啟多連接模式,允許多個各客戶端接入
  78.         ms_delay(2000);
  79.         ESP8266_Set("AT+CIPSERVER=1,5000");                                          //啟動TCP/IP 實現(xiàn)基于網(wǎng)絡//控制         ESP8266_Set("AT+CIPSERVER=1,5000");  
  80.         ms_delay(2000);
  81.         ESP8266_Set("AT+CIPSTO=0");                                                         //永遠不超時
  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時進入判斷控制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ā)送或接收結束后進入該函數(shù),對相應的標志位軟件清0,實現(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. }  
復制代碼

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


評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏43 分享淘帖 頂5 踩
回復

使用道具 舉報

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

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

求求高手解釋下
回復

使用道具 舉報

板凳
ID:222183 發(fā)表于 2019-4-16 11:41 | 只看該作者
非常感謝解了我的燃眉之急
回復

使用道具 舉報

地板
ID:493109 發(fā)表于 2019-4-16 13:33 | 只看該作者
先保存,等以后試試,是不是完全資料能一次成功.謝謝
回復

使用道具 舉報

5#
ID:92810 發(fā)表于 2019-5-27 10:27 | 只看該作者
謝謝樓主分享了,學習一波去
回復

使用道具 舉報

6#
ID:484845 發(fā)表于 2019-5-28 18:21 | 只看該作者
謝謝你,很有幫助
回復

使用道具 舉報

7#
ID:525478 發(fā)表于 2019-6-12 09:56 | 只看該作者
謝謝樓主分享了  正需要
回復

使用道具 舉報

8#
ID:312929 發(fā)表于 2019-7-8 21:56 | 只看該作者
在么,我這個連接不上什么原因?
回復

使用道具 舉報

9#
ID:56665 發(fā)表于 2019-7-9 08:16 | 只看該作者
怎么能夠遠程控制的,寫一個帖子。
回復

使用道具 舉報

10#
ID:167337 發(fā)表于 2019-7-9 08:30 | 只看該作者
樓主,資料很詳細,值得學習!謝謝樓主分享好資源
回復

使用道具 舉報

11#
ID:577538 發(fā)表于 2019-7-10 12:38 | 只看該作者
問一下,為什么要外接一個晶振,C52不是自帶晶振嗎?
回復

使用道具 舉報

12#
ID:572103 發(fā)表于 2019-8-10 17:59 | 只看該作者
非常想要學習一下,有沒有APP的源碼?
回復

使用道具 舉報

13#
ID:630282 發(fā)表于 2019-11-4 19:45 | 只看該作者
學習做的第二個東西。感謝分享。
回復

使用道具 舉報

14#
ID:635750 發(fā)表于 2019-11-5 06:10 來自觸屏版 | 只看該作者
學習一下,很感興趣
回復

使用道具 舉報

15#
ID:385637 發(fā)表于 2019-11-7 16:59 | 只看該作者
謝謝樓主分享那么好的資料!
回復

使用道具 舉報

16#
ID:77126 發(fā)表于 2019-11-12 20:49 | 只看該作者
非常感謝樓主無私分享,助我學習,解我燃眉之急
回復

使用道具 舉報

17#
ID:396487 發(fā)表于 2019-11-13 10:53 來自觸屏版 | 只看該作者
好像你拷貝我的吧?
回復

使用道具 舉報

18#
ID:573271 發(fā)表于 2019-11-14 16:59 | 只看該作者
非常感謝樓主無私分享,助我學習,解我燃眉之急
回復

使用道具 舉報

19#
ID:613618 發(fā)表于 2019-11-14 21:46 來自觸屏版 | 只看該作者
能用嗎
回復

使用道具 舉報

20#
ID:642363 發(fā)表于 2019-11-15 03:36 | 只看該作者

非常感謝樓主無私分享,助我學習,解我燃眉之急
回復

使用道具 舉報

21#
ID:642933 發(fā)表于 2019-11-21 22:43 | 只看該作者
你好 我用了你的例程 但是手機發(fā)送字符1的時候單片機沒有反應 測試好多遍 單片機都沒有反應 這是為什么呢  想請教一下
回復

使用道具 舉報

22#
ID:634862 發(fā)表于 2019-11-23 20:12 | 只看該作者
下載了三個,對于我學習單片機挺有幫助的,真心感謝這個網(wǎng)站,希望可以提供點玩具車遙控代碼和電路圖
回復

使用道具 舉報

23#
ID:93929 發(fā)表于 2019-11-24 20:47 | 只看該作者
手機APP是在哪里下載
回復

使用道具 舉報

24#
ID:137736 發(fā)表于 2019-11-24 22:06 來自觸屏版 | 只看該作者
用單片機控制,電路有點麻煩
回復

使用道具 舉報

25#
ID:218360 發(fā)表于 2019-11-25 13:35 | 只看該作者
使用安信可的模塊把。有模塊指令嗎?
回復

使用道具 舉報

26#
ID:686631 發(fā)表于 2020-1-17 16:58 | 只看該作者
謝謝樓主分享,正在學習中
回復

使用道具 舉報

27#
ID:56960 發(fā)表于 2020-7-10 15:18 | 只看該作者
非常感謝樓主的分享!已收藏了
回復

使用道具 舉報

28#
ID:605585 發(fā)表于 2020-7-10 15:54 | 只看該作者
挺好的,感謝樓主,也希望能加入我的STC51單片機的開發(fā)932747872,分享技術,分享心得。
回復

使用道具 舉報

29#
ID:801121 發(fā)表于 2020-7-10 16:29 | 只看該作者
非常感謝樓主無私分享,助我學習,解我燃眉之急
回復

使用道具 舉報

30#
ID:65237 發(fā)表于 2020-7-28 22:06 來自觸屏版 | 只看該作者
樓主按照你指導,模塊wifi手機能連上 但手機app打開上面第一排顯示TCP服務器IP 192. 168.4.1第二排是TCP通信端口5000  上面顯示未連接 請問一二排怎么設置 手機app 模塊 8266 無線路由器  你的貼中沒有提到路由器那里的設置 是不用路由器嗎 但我看APP上面一二排好像要用路由器新手望指點

Screenshot_2020-07-28-21-46-12-788_com.newapp.png (44.59 KB, 下載次數(shù): 47)

Screenshot_2020-07-28-21-46-12-788_com.newapp.png
回復

使用道具 舉報

31#
ID:65237 發(fā)表于 2020-7-28 22:10 來自觸屏版 | 只看該作者
揩油鵬 發(fā)表于 2019-11-21 22:43
你好 我用了你的例程 但是手機發(fā)送字符1的時候單片機沒有反應 測試好多遍 單片機都沒有反應 這是為什么呢   ...

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

使用道具 舉報

32#
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時 ...

我也是這一塊搞不懂
回復

使用道具 舉報

33#
ID:65237 發(fā)表于 2020-7-31 17:23 來自觸屏版 | 只看該作者
有按照樓主做成功的沒,我做的wifi模塊和手機聯(lián)上了 但app和模塊總是顯示未連接  望師傅們指點
回復

使用道具 舉報

34#
ID:65237 發(fā)表于 2020-8-2 11:46 | 只看該作者
壇友們有沒有APP和模塊能正常通信成功的
回復

使用道具 舉報

35#
ID:61390 發(fā)表于 2020-8-3 15:31 | 只看該作者
DING,謝謝,正需要此方面資料!
回復

使用道具 舉報

36#
ID:724172 發(fā)表于 2020-10-10 09:33 | 只看該作者
如果能與天貓精靈連上就perfect了
回復

使用道具 舉報

37#
ID:849826 發(fā)表于 2020-12-7 14:34 來自觸屏版 | 只看該作者
程序里面的指令無法修改8266的wifi名稱和端口號,導致手機軟件TCP連不上
回復

使用道具 舉報

38#
ID:849826 發(fā)表于 2020-12-7 22:01 來自觸屏版 | 只看該作者
8266- 01s原來的固件無法用AT指令修改波特率,重新刷的固件,用AT指令修改波特率為9600,8266連到單片機上,單片機里面的程序能夠修改wifi名稱和密碼,能夠設置端口,手機TCP軟件能夠連上,發(fā)送字符,發(fā)現(xiàn)單片機沒反應,問了好多人也沒給出合理的答案
回復

使用道具 舉報

39#
ID:849826 發(fā)表于 2020-12-7 22:04 來自觸屏版 | 只看該作者
對照藍牙遙控開關里面的按鍵程序,把他的按鍵程序部分刪掉,把藍牙遙控開關里面的程序?qū)戇M去,編譯通過,下載,上電,TCP軟件發(fā)送字符,單片機能夠做出反應,至此局域網(wǎng)wifi遙控開關完成,里面的按鍵程序改成8路遙控的了
回復

使用道具 舉報

40#
ID:849826 發(fā)表于 2020-12-7 22:14 來自觸屏版 | 只看該作者
重要的一點82866必須用AT指令修改波特率9600,單片機才能和8266通信,如果不能修改波特率,請重新刷個固件,再試試。一個遙控開關研究了兩天,才做成功。
回復

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表