欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 20242|回復: 39
收起左側

ESP8266-01使用手機發送信息給Wifi模塊控制51單片機點亮LED燈蜂鳴器(軟件+app)

  [復制鏈接]
ID:551942 發表于 2019-5-31 17:47 | 顯示全部樓層 |閱讀模式
一、準備

之前在網上找了很多關于ESP8266模塊和單片機互聯的資料,但是看完都一頭霧水,直到向買的店要了實例代碼后,才完成這一功能。對于我這樣的新手,單單看模塊說明書就寫出單片機中的相關代碼不要太難。本帖僅用于臨時使用卻找不到方法,而不是探究原理的愛好者們。需要準備的模塊有:ESP8266-01模塊、USB轉TTL模塊、單片機開發板或單片機學習板、LED燈、蜂鳴器、杜邦線,其他的可以自己加。


二、串口調試ESP


   首先要用ESP8266模塊和USB轉TTL模塊進行串口調試,看你的wifi模塊是不是正常工作的。具體教程百度很多,我就不過多說明了。但是記得串口調試時候要把ESP8266的波特率改為9600,因為51單片機最大也就9600,而且試驗證明用單片機發送指令去修改波特率會有問題,保險點還是串口調試就修改好。除了波特率,其他的可以在單片機程序中設置。

   1.jpg
  上圖是ESP8266-01的接腳說明,在官方給的資料里有。串口調試時候接線方法為:CH_PD和VCC接3.3伏接口(模塊工作電壓3.3V,過高容易燒壞),esp的TXD接口接轉換模塊的RXD,esp的RXD接TXD,也就是讀接寫,寫接讀。不要接反。GND接GND,串口調試不是燒錄,不用接燒錄用的口。而且自己燒錄不熟練容易成板磚。



IMG_20190531_170220.jpg esp8266-01串口調試圖.png



  接好后,電源指示燈亮,串口的驅動玩單片機的應該都裝好了,打開串口調試軟件sscom42,sscom其他版本也差不多。如果串口沒接好或者驅動不正常,軟件打開會提示無法找到串口,找到就正常進入。然后點擊軟件的打開串口按鈕,在“字符串輸入框”輸入:“AT”發送,返回“OK”,正常。然后輸入“AT+RST”發送,重啟。其他指令可以百度AT指令查看,或者在我的附件里有ESP8266的官方文件。
  測試后一定要記得把波特率在串口調試中修改了,發送“AT+CIOBAUD=9600”,返回OK后修改波特率成功。



三、接入單片機


  接入單片機的接線和串口大致一樣。CH_PD和VCC接3.3V,CH_PD最好先串聯一個10k電阻再接電源防止燒壞,如果單片機工作電壓是5V,最好再接一個三端穩壓降壓模塊,把5V輸入,輸出3.3V給wifi模塊。在STC89C52RC單片機中,P3.0是RXD口,接Wifi模塊的TXD口。P3.1是TXD口,接Wifi模塊RXD口。記住度對寫,寫對讀。(燒錄單片機程序的時候要把wifi模塊接的P3.0和P3.1接線拔了,因為燒錄用的模塊接口也是P3.0和P3.1,燒錄完再接上,不然會發現燒錄軟件沒反應)

   QQ截圖20190531171918.png esp8266-01單片機接線圖.png
  接好了后,把LED燈和蜂鳴器也接好就行了。下面是程序。其中有幾個點注意,接收到的數據是字符串,不能直接進行整數的判斷,要轉換或者判斷字符再賦值整數。代碼中可以設置端口號,這里是8080,。IP地址我沒有改,是官方默認的192.168.4.1。下載一個手機的串口調試助手,你也可以自己寫一個,用E4A中文編碼很適合初學者。選擇TCP調試。連接小車的wifi,(wifi名字一般帶ESP8266,也可以串口調試時候自己改)然后輸入IP和端口,連接,發送字符“0”、“1”、“2”進行測試。

截屏_20190531_174321.jpg 截屏_20190531_174328.jpg

單片機源程序如下:

  1. #include <reg52.h>
  2. #include <string.h>
  3. #include <stdio.h>

  4. sbit P11_LED =P1^1; //自己定義你的LED接口
  5. sbit BUZZ = P2^3; //自己定義你的蜂鳴器接口


  6. char Recive_table[20]="";  //接收緩沖,最大20個字節
  7. char Recive_state = 0;   //接收完成標志
  8. void WIFI_Init(void);
  9. void Uart_Init(void);
  10. void ms_delay(int t);
  11. void LED(void);

  12. int main (void)
  13. {
  14.         /********************功能初始化***********************/
  15.         Uart_Init();//串口初始化,波特率為9600
  16.         ms_delay(1000) ;
  17.         WIFI_Init(); //wifi初始化
  18.         /****************************************************/
  19.         /**********************主循環************************/
  20.         while(1)
  21.         {
  22.                 ms_delay(10) ;
  23.                 if(Recive_state == 1)
  24.                 {
  25.                         ES=0;  //清空接收標志位
  26.                         if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//接收到的字符串形式為+IPD,x,x:y
  27.                         {
  28.                             if((Recive_table[3]=='D')&&(Recive_table[6]==','))
  29.                             {   
  30.                                 
  31.                                     if(Recive_table[9]=='0')  //如果你發送的是“0”
  32.                                     {
  33.                                                 P11_LED = 0;              //LED亮
  34.                                             ms_delay (10);
  35.                             BUZZ=0;               //蜂鳴器響一聲
  36.                                         ms_delay (10);
  37.                             BUZZ=1;
  38.                                                 ms_delay (30);
  39.                                                 P11_LED = 1;              //LED滅
  40.                                     }
  41.                                        
  42.                                         if(Recive_table[9]=='1')  //如果你發送的是“1”
  43.                                     {
  44.                                                 P11_LED = 0;              //LED亮
  45.                                             ms_delay (10);
  46.                             BUZZ=0;               //蜂鳴器響兩聲
  47.                                         ms_delay (10);
  48.                             BUZZ=1;
  49.                                                 ms_delay (10);
  50.                             BUZZ=0;
  51.                                         ms_delay (10);
  52.                             BUZZ=1;
  53.                                                 ms_delay (30);
  54.                                                 P11_LED = 1;              //LED滅
  55.                                     }
  56.                                        
  57.                                         if(Recive_table[9]=='2')  //如果你發送的是“2”
  58.                                     {
  59.                                                 P11_LED = 0;              //LED亮
  60.                                             ms_delay (10);
  61.                             BUZZ=0;               //蜂鳴器響三聲
  62.                                         ms_delay (10);
  63.                             BUZZ=1;
  64.                                                 ms_delay (10);
  65.                             BUZZ=0;
  66.                                         ms_delay (10);
  67.                             BUZZ=1;
  68.                                                 ms_delay (10);
  69.                             BUZZ=0;
  70.                                         ms_delay (10);
  71.                             BUZZ=1;
  72.                                                 ms_delay (30);
  73.                                                 P11_LED = 1;              //LED滅
  74.                                     }
  75.                                        

  76.                                 }
  77.                                 
  78.                                 
  79.                                        
  80.                                        
  81.                         }
  82.                         memset(Recive_table,'\0',20);
  83.                         Recive_state = 0;
  84.                         ES=1;  //打開接收標志位
  85.                 }
  86.         }
  87.         /****************************************************/
  88.          
  89. }

  90. /******************************************************************
  91. 函 數: void Uart_Interrupt() interrupt 4
  92. 功 能: 串口中斷函數,將收到的字符存到Recive_table[]數組中
  93. 參 數: 無
  94. 返回值: 無
  95. *******************************************************************/
  96. void Uart_Interrupt() interrupt 4         
  97. {   
  98.         static char i=0;  //因為是一位一位接收,所以用static
  99.         if(RI==1)   
  100.         {  
  101.                 ES = 0;
  102.                 RI=0;         
  103.                 Recive_table[i]=SBUF;        
  104.                 i++;
  105.                 if((Recive_table[i-1] == '\n'))
  106.                 {
  107.                         Recive_table[i]='\0';
  108.                         i=0;
  109.                         Recive_state = 1;
  110.                 }
  111.                 ES = 1;      
  112.         }
  113.         else
  114.         TI = 0;     
  115. }

  116. /******************************************************************
  117. 函 數: void Uart_Init(void)
  118. 功 能: 串口初始化,波特率為9600(這個不會,上網百度)
  119. 參 數: 無
  120. 返回值: 無
  121. *******************************************************************/
  122. void Uart_Init(void)
  123. {  
  124.         TMOD=0x20;
  125.         TH1=0xfD;
  126.         TL1=0xfD;
  127.         TR1=1;
  128.         REN=1;
  129.         SM0=0;
  130.         SM1=1;
  131.         EA=1;
  132.         ES=1;
  133. }

  134. /******************************************************************
  135. 函 數: void ms_delay(int t)
  136. 功 能: 毫秒級延時
  137. 參 數: 無
  138. 返回值: 無
  139. *******************************************************************/
  140. void ms_delay(int t)
  141. {  
  142.         int i,j;
  143.         for(i=t;i>0;i--)   
  144.                 for(j=110;j>0;j--);
  145. }

  146. /******************************************************************
  147. 函 數: void LED(void)
  148. 功 能: 發送完命令后顯示用的函數
  149. 參 數: 無
  150. 返回值: 無
  151. *******************************************************************/
  152. void LED(void)
  153. {
  154.         P2 = 0;
  155.         ms_delay(100);
  156.         P2 = 0xff;
  157.         ms_delay(100);
  158. }


  159. /******************************************************************
  160. 函 數: void WIFI_Init(void)
  161. 功 能: wifi初始化
  162. 參 數: 無
  163. 返回值: 無
  164. *******************************************************************/
  165. void WIFI_Init(void)
  166. {
  167.         ES = 0;
  168.         TI = 1;
  169.         printf("AT+RST\r\n");
  170.         LED();
  171.         ms_delay(1000) ;
  172.         printf("AT+CWMODE=3\r\n");
  173.         LED();
  174.         ms_delay(1000) ;
  175.         printf("AT+CIPMUX=1\r\n");
  176.         LED();
  177.         ms_delay(1000) ;
  178.         printf("AT+CIPSERVER=1,8080\r\n");      // 設置端口號8080      
  179.         LED();
  180.         ms_delay(1000) ;
  181.     printf("AT+CIOBAUD=9600\r\n");   // 設置與單片機一致的波特率     
  182.         LED();
  183.         ms_delay(1000) ;
  184.         while(!TI);
  185.         TI = 0;
  186.         ES = 1;

復制代碼
AT指令集內容太多無法直接貼出來,只好放在附件里面了:
ESP8266模塊AT指令+ 串口調試軟件.7z (18.06 MB, 下載次數: 694)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:390243 發表于 2019-6-2 00:39 | 顯示全部樓層
請問大佬有沒有遇到過,在利用ESP8266收發送數據的時候,只要程序從中斷接受完數據,就從main函數的開頭執行,而不從進入中斷的地方開始?
回復

使用道具 舉報

ID:531751 發表于 2019-6-6 16:13 | 顯示全部樓層
請問這個app點連接/監聽,怎么知道連上了呢?
回復

使用道具 舉報

ID:531751 發表于 2019-6-6 23:34 | 顯示全部樓層
那個問題解決了!但是我發0,單片機沒反應是怎么回事呀?
回復

使用道具 舉報

5#
無效樓層,該帖已經被刪除
6#
無效樓層,該帖已經被刪除
ID:631878 發表于 2019-11-14 10:40 | 顯示全部樓層
下載了,文件夾里沒有程序,后來在網頁上找到了
回復

使用道具 舉報

ID:673765 發表于 2019-12-26 21:22 | 顯示全部樓層
請問1、大佬有沒有ESP8266收發數據掉包的情況,不知是模塊的問題還是程序寫的有問題,有沒有大佬知道怎么回事呀。2、收發數據還沒有接收就接收成功了
回復

使用道具 舉報

ID:758478 發表于 2020-5-22 16:36 | 顯示全部樓層
圍觀一下,看看效果
回復

使用道具 舉報

ID:758478 發表于 2020-5-22 16:36 | 顯示全部樓層
圍觀一下,看看效果
回復

使用道具 舉報

11#
無效樓層,該帖已經被刪除
ID:761405 發表于 2020-5-26 10:39 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:632112 發表于 2020-5-27 11:13 | 顯示全部樓層
值得學習學習,謝謝分享
回復

使用道具 舉報

ID:69408 發表于 2020-6-3 13:13 | 顯示全部樓層
這個經過測試單片機這邊的程序可以使用的,就是用APP控制時不知道怎么回事不太靈敏,有時候要點擊APP上的開或者關按鍵多次才能夠正確的執行亮滅LED的了
回復

使用道具 舉報

ID:787683 發表于 2020-6-23 14:42 | 顯示全部樓層
看一下效果
回復

使用道具 舉報

ID:787683 發表于 2020-6-23 14:43 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:430492 發表于 2020-6-24 11:15 | 顯示全部樓層
這個不錯的思路!家電都可以手機WIFI控制了!
回復

使用道具 舉報

ID:724172 發表于 2020-6-29 10:54 | 顯示全部樓層
真不錯的思路
回復

使用道具 舉報

19#
無效樓層,該帖已經被刪除
ID:56960 發表于 2020-7-10 14:14 | 顯示全部樓層
真不錯的思路,路過頂一下!
回復

使用道具 舉報

ID:65237 發表于 2020-7-14 21:39 | 顯示全部樓層
謝謝分享 下載有空做一個
回復

使用道具 舉報

ID:702127 發表于 2020-7-25 14:02 | 顯示全部樓層
請問樓主,蘋果手機可以嗎?我按照您的教程一步一步來,8266通過USB轉串口連接到電腦后,蘋果手機可以正常連接wifi與串口,但是8266連接到單片機后,蘋果手機只能連接wifi,連接串口時顯示連接失敗。
回復

使用道具 舉報

ID:65237 發表于 2020-7-27 21:05 | 顯示全部樓層
樓主請教下 你這是通過路 手機APP 路郵器 8266 單片機控制電路 是嗎  其中路郵器那塊怎么設置 能講一下嗎
回復

使用道具 舉報

ID:65237 發表于 2020-7-29 16:52 來自觸屏版 | 顯示全部樓層
denminshen 發表于 2020-6-3 13:13
這個經過測試單片機這邊的程序可以使用的,就是用APP控制時不知道怎么回事不太靈敏,有時候要點擊APP上的開 ...

你好 你做的是直接app和esp8266直接連嗎?中間有通過路由器沒 還有app上面二項是怎么設置的 求指點啊 搞了好久app里二項tcp那里
回復

使用道具 舉報

ID:65237 發表于 2020-7-30 17:16 來自觸屏版 | 顯示全部樓層
ziziziziz 發表于 2019-6-6 16:13
請問這個app點連接/監聽,怎么知道連上了呢?

你是看那里說連上了
回復

使用道具 舉報

ID:495323 發表于 2020-10-18 11:11 | 顯示全部樓層
軟件:TCP連接。樓主做的和我相同可以參考我的
,
回復

使用道具 舉報

ID:810999 發表于 2020-10-23 08:59 | 顯示全部樓層
非常不錯,學習了。
回復

使用道具 舉報

ID:881400 發表于 2021-1-29 14:55 | 顯示全部樓層
用app控制不太靈敏,需要發送好幾次數據才能打開或關閉,這是怎么回事呀?
回復

使用道具 舉報

ID:545457 發表于 2021-1-29 17:29 | 顯示全部樓層
打擾,請問為什么下載后沒有程序?
回復

使用道具 舉報

ID:545457 發表于 2021-1-29 17:36 | 顯示全部樓層
GitHub 發表于 2019-11-14 10:40
下載了,文件夾里沒有程序

我也是這個情況,不知道您解決了嗎
回復

使用道具 舉報

31#
無效樓層,該帖已經被刪除
ID:915899 發表于 2021-5-5 15:30 | 顯示全部樓層
沒有單片機程序在里面啊
回復

使用道具 舉報

33#
無效樓層,該帖已經被刪除
ID:328014 發表于 2021-5-5 17:30 | 顯示全部樓層
929260 發表于 2021-5-5 15:30
沒有單片機程序在里面啊

單片機C語言程序有198行,不用下載 直接在網頁上復制即可
回復

使用道具 舉報

ID:430492 發表于 2021-5-5 19:59 | 顯示全部樓層
沒有APP的源程序,只有APK。
回復

使用道具 舉報

ID:579174 發表于 2021-5-11 19:36 | 顯示全部樓層
打卡,以后好找到!感謝分享!
回復

使用道具 舉報

ID:409166 發表于 2021-5-13 21:16 | 顯示全部樓層
感謝,正需要呢,下來學習下。
回復

使用道具 舉報

ID:197229 發表于 2021-5-15 05:45 | 顯示全部樓層
下載了app文件壓縮檔 7z格式要用什么軟件打開?那位朋友能發給我一份解壓好的啊?感謝先
回復

使用道具 舉報

39#
無效樓層,該帖已經被刪除
ID:403144 發表于 2021-5-17 18:16 | 顯示全部樓層
這個壓縮包里面怎么沒有51單片機的程序啊

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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