久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: ESP8266-01使用手機(jī)發(fā)送信息給Wifi模塊控制51單片機(jī)點(diǎn)亮LED燈蜂鳴器(軟件+app) [打印本頁]

作者: admnesia    時(shí)間: 2019-5-31 17:47
標(biāo)題: ESP8266-01使用手機(jī)發(fā)送信息給Wifi模塊控制51單片機(jī)點(diǎn)亮LED燈蜂鳴器(軟件+app)
一、準(zhǔn)備

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


二、串口調(diào)試ESP


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

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







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



三、接入單片機(jī)


  接入單片機(jī)的接線和串口大致一樣。CH_PD和VCC接3.3V,CH_PD最好先串聯(lián)一個(gè)10k電阻再接電源防止燒壞,如果單片機(jī)工作電壓是5V,最好再接一個(gè)三端穩(wěn)壓降壓模塊,把5V輸入,輸出3.3V給wifi模塊。在STC89C52RC單片機(jī)中,P3.0是RXD口,接Wifi模塊的TXD口。P3.1是TXD口,接Wifi模塊RXD口。記住度對寫,寫對讀。(燒錄單片機(jī)程序的時(shí)候要把wifi模塊接的P3.0和P3.1接線拔了,因?yàn)闊浻玫哪K接口也是P3.0和P3.1,燒錄完再接上,不然會發(fā)現(xiàn)燒錄軟件沒反應(yīng))

  
  接好了后,把LED燈和蜂鳴器也接好就行了。下面是程序。其中有幾個(gè)點(diǎn)注意,接收到的數(shù)據(jù)是字符串,不能直接進(jìn)行整數(shù)的判斷,要轉(zhuǎn)換或者判斷字符再賦值整數(shù)。代碼中可以設(shè)置端口號,這里是8080,。IP地址我沒有改,是官方默認(rèn)的192.168.4.1。下載一個(gè)手機(jī)的串口調(diào)試助手,你也可以自己寫一個(gè),用E4A中文編碼很適合初學(xué)者。選擇TCP調(diào)試。連接小車的wifi,(wifi名字一般帶ESP8266,也可以串口調(diào)試時(shí)候自己改)然后輸入IP和端口,連接,發(fā)送字符“0”、“1”、“2”進(jìn)行測試。



單片機(jī)源程序如下:

  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個(gè)字節(jié)
  7. char Recive_state = 0;   //接收完成標(biāo)志
  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.         /**********************主循環(huán)************************/
  20.         while(1)
  21.         {
  22.                 ms_delay(10) ;
  23.                 if(Recive_state == 1)
  24.                 {
  25.                         ES=0;  //清空接收標(biāo)志位
  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')  //如果你發(fā)送的是“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')  //如果你發(fā)送的是“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')  //如果你發(fā)送的是“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;  //打開接收標(biāo)志位
  85.                 }
  86.         }
  87.         /****************************************************/
  88.          
  89. }

  90. /******************************************************************
  91. 函 數(shù): void Uart_Interrupt() interrupt 4
  92. 功 能: 串口中斷函數(shù),將收到的字符存到Recive_table[]數(shù)組中
  93. 參 數(shù): 無
  94. 返回值: 無
  95. *******************************************************************/
  96. void Uart_Interrupt() interrupt 4         
  97. {   
  98.         static char i=0;  //因?yàn)槭且晃灰晃唤邮眨杂胹tatic
  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. 函 數(shù): void Uart_Init(void)
  118. 功 能: 串口初始化,波特率為9600(這個(gè)不會,上網(wǎng)百度)
  119. 參 數(shù): 無
  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. 函 數(shù): void ms_delay(int t)
  136. 功 能: 毫秒級延時(shí)
  137. 參 數(shù): 無
  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. 函 數(shù): void LED(void)
  148. 功 能: 發(fā)送完命令后顯示用的函數(shù)
  149. 參 數(shù): 無
  150. 返回值: 無
  151. *******************************************************************/
  152. void LED(void)
  153. {
  154.         P2 = 0;
  155.         ms_delay(100);
  156.         P2 = 0xff;
  157.         ms_delay(100);
  158. }


  159. /******************************************************************
  160. 函 數(shù): void WIFI_Init(void)
  161. 功 能: wifi初始化
  162. 參 數(shù): 無
  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");      // 設(shè)置端口號8080      
  179.         LED();
  180.         ms_delay(1000) ;
  181.     printf("AT+CIOBAUD=9600\r\n");   // 設(shè)置與單片機(jī)一致的波特率     
  182.         LED();
  183.         ms_delay(1000) ;
  184.         while(!TI);
  185.         TI = 0;
  186.         ES = 1;

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


作者: LOGLOG6    時(shí)間: 2019-6-2 00:39
請問大佬有沒有遇到過,在利用ESP8266收發(fā)送數(shù)據(jù)的時(shí)候,只要程序從中斷接受完數(shù)據(jù),就從main函數(shù)的開頭執(zhí)行,而不從進(jìn)入中斷的地方開始?
作者: ziziziziz    時(shí)間: 2019-6-6 16:13
請問這個(gè)app點(diǎn)連接/監(jiān)聽,怎么知道連上了呢?
作者: ziziziziz    時(shí)間: 2019-6-6 23:34
那個(gè)問題解決了!但是我發(fā)0,單片機(jī)沒反應(yīng)是怎么回事呀?
作者: GitHub    時(shí)間: 2019-11-14 10:40
下載了,文件夾里沒有程序,后來在網(wǎng)頁上找到了
作者: DFFFGH    時(shí)間: 2019-12-26 21:22
請問1、大佬有沒有ESP8266收發(fā)數(shù)據(jù)掉包的情況,不知是模塊的問題還是程序?qū)懙挠袉栴},有沒有大佬知道怎么回事呀。2、收發(fā)數(shù)據(jù)還沒有接收就接收成功了
作者: 2795825624    時(shí)間: 2020-5-22 16:36
圍觀一下,看看效果
作者: 2795825624    時(shí)間: 2020-5-22 16:36
圍觀一下,看看效果
作者: jack9168    時(shí)間: 2020-5-26 10:39
謝謝分享
作者: ycs89554171    時(shí)間: 2020-5-27 11:13
值得學(xué)習(xí)學(xué)習(xí),謝謝分享
作者: denminshen    時(shí)間: 2020-6-3 13:13
這個(gè)經(jīng)過測試單片機(jī)這邊的程序可以使用的,就是用APP控制時(shí)不知道怎么回事不太靈敏,有時(shí)候要點(diǎn)擊APP上的開或者關(guān)按鍵多次才能夠正確的執(zhí)行亮滅LED的了
作者: 楊宮梓    時(shí)間: 2020-6-23 14:42
看一下效果
作者: 楊宮梓    時(shí)間: 2020-6-23 14:43
感謝分享
作者: cooleaf    時(shí)間: 2020-6-24 11:15
這個(gè)不錯(cuò)的思路!家電都可以手機(jī)WIFI控制了!
作者: dilongking    時(shí)間: 2020-6-29 10:54
真不錯(cuò)的思路
作者: 滄海一粒    時(shí)間: 2020-7-10 14:14
真不錯(cuò)的思路,路過頂一下!
作者: 阿飛7812    時(shí)間: 2020-7-14 21:39
謝謝分享 下載有空做一個(gè)
作者: ii11nnocent    時(shí)間: 2020-7-25 14:02
請問樓主,蘋果手機(jī)可以嗎?我按照您的教程一步一步來,8266通過USB轉(zhuǎn)串口連接到電腦后,蘋果手機(jī)可以正常連接wifi與串口,但是8266連接到單片機(jī)后,蘋果手機(jī)只能連接wifi,連接串口時(shí)顯示連接失敗。
作者: 阿飛7812    時(shí)間: 2020-7-27 21:05
樓主請教下 你這是通過路 手機(jī)APP 路郵器 8266 單片機(jī)控制電路 是嗎  其中路郵器那塊怎么設(shè)置 能講一下嗎
作者: 阿飛7812    時(shí)間: 2020-7-29 16:52
denminshen 發(fā)表于 2020-6-3 13:13
這個(gè)經(jīng)過測試單片機(jī)這邊的程序可以使用的,就是用APP控制時(shí)不知道怎么回事不太靈敏,有時(shí)候要點(diǎn)擊APP上的開 ...

你好 你做的是直接app和esp8266直接連嗎?中間有通過路由器沒 還有app上面二項(xiàng)是怎么設(shè)置的 求指點(diǎn)啊 搞了好久app里二項(xiàng)tcp那里
作者: 阿飛7812    時(shí)間: 2020-7-30 17:16
ziziziziz 發(fā)表于 2019-6-6 16:13
請問這個(gè)app點(diǎn)連接/監(jiān)聽,怎么知道連上了呢?

你是看那里說連上了
作者: 有心插花花木蘭    時(shí)間: 2020-10-18 11:11
軟件:TCP連接。樓主做的和我相同可以參考我的
,
作者: xxw369    時(shí)間: 2020-10-23 08:59
非常不錯(cuò),學(xué)習(xí)了。
作者: 保爾柯察金    時(shí)間: 2021-1-29 14:55
用app控制不太靈敏,需要發(fā)送好幾次數(shù)據(jù)才能打開或關(guān)閉,這是怎么回事呀?
作者: 玩卟欺    時(shí)間: 2021-1-29 17:29
打擾,請問為什么下載后沒有程序?
作者: 玩卟欺    時(shí)間: 2021-1-29 17:36
GitHub 發(fā)表于 2019-11-14 10:40
下載了,文件夾里沒有程序

我也是這個(gè)情況,不知道您解決了嗎
作者: 929260    時(shí)間: 2021-5-5 15:30
沒有單片機(jī)程序在里面啊

作者: 51hei團(tuán)團(tuán)    時(shí)間: 2021-5-5 17:30
929260 發(fā)表于 2021-5-5 15:30
沒有單片機(jī)程序在里面啊

單片機(jī)C語言程序有198行,不用下載 直接在網(wǎng)頁上復(fù)制即可
作者: cooleaf    時(shí)間: 2021-5-5 19:59
沒有APP的源程序,只有APK。
作者: XZHI2003    時(shí)間: 2021-5-11 19:36
打卡,以后好找到!感謝分享!
作者: canghaiyisuMF    時(shí)間: 2021-5-13 21:16
感謝,正需要呢,下來學(xué)習(xí)下。
作者: bomb1999    時(shí)間: 2021-5-15 05:45
下載了app文件壓縮檔 7z格式要用什么軟件打開?那位朋友能發(fā)給我一份解壓好的啊?感謝先
作者: darkside    時(shí)間: 2021-5-17 18:16
這個(gè)壓縮包里面怎么沒有51單片機(jī)的程序啊


作者: ouyang    時(shí)間: 2021-6-10 21:07
darkside 發(fā)表于 2021-5-17 18:16
這個(gè)壓縮包里面怎么沒有51單片機(jī)的程序啊

看28#已經(jīng)回答了
作者: 1606786084    時(shí)間: 2021-6-14 15:55
多謝大佬分享技術(shù)

作者: tvs    時(shí)間: 2021-6-21 18:06
wifi模塊?
作者: pq1972    時(shí)間: 2021-6-21 18:54
先收藏,剛剛開始學(xué)習(xí),后邊一定用的到。謝謝
作者: hhy1030    時(shí)間: 2022-3-15 21:31
樓主很詳細(xì)的介紹。多謝了

作者: charlyking    時(shí)間: 2022-7-6 00:15
ESP8266 的 默認(rèn) baud 不是115200嗎?  用9600 可以調(diào)試?
作者: zxcscm    時(shí)間: 2023-2-16 23:15
解決了入門的第一步,終于有反應(yīng)了




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: av在线播放免费 | 国产婷婷 | 日韩中文字幕高清 | 全免费a级毛片免费看视频免费下 | 日日摸天天添天天添破 | 国产成人精品午夜 | 久久久久欧美 | 久久亚洲免费 | 99久久精品一区二区成人 | 久久精品欧美一区二区三区不卡 | 亚洲欧美精品在线观看 | 日韩视频在线观看中文字幕 | 国产一区二区在线免费 | 天天久久 | 精品国产成人 | 日韩av一区二区在线观看 | 亚洲欧美日韩在线 | 日韩伦理电影免费在线观看 | 久久精品一区二区 | h在线播放 | 夜夜夜久久 | 欧美精品在线一区 | 亚洲国产欧美在线人成 | 国产综合av | 日韩免费一区 | 久久高潮| 一区二区三区日本 | 欧美jizzhd精品欧美巨大免费 | 国产高清美女一级a毛片久久w | 色综合天天综合网国产成人网 | 国产999在线观看 | 欧洲一区在线观看 | 国产福利视频 | 91偷拍精品一区二区三区 | 男人天堂99 | 国产在线精品一区二区 | 91一区二区三区 | 国产视频第一页 | 欧美日韩精品免费观看 | 亚洲一视频 | 91精品国产麻豆 |