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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 20137|回復: 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,而且試驗證明用單片機發送指令去修改波特率會有問題,保險點還是串口調試就修改好。除了波特率,其他的可以在單片機程序中設置。

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







  接好后,電源指示燈亮,串口的驅動玩單片機的應該都裝好了,打開串口調試軟件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,燒錄完再接上,不然會發現燒錄軟件沒反應)

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



單片機源程序如下:

  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 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

39#
ID:36322 發表于 2023-2-16 23:15 | 只看該作者
解決了入門的第一步,終于有反應了
回復

使用道具 舉報

38#
ID:974905 發表于 2022-7-6 00:15 | 只看該作者
ESP8266 的 默認 baud 不是115200嗎?  用9600 可以調試?
回復

使用道具 舉報

37#
ID:1010593 發表于 2022-3-15 21:31 | 只看該作者
樓主很詳細的介紹。多謝了
回復

使用道具 舉報

36#
ID:624685 發表于 2021-6-21 18:54 | 只看該作者
先收藏,剛剛開始學習,后邊一定用的到。謝謝
回復

使用道具 舉報

35#
ID:941748 發表于 2021-6-21 18:06 | 只看該作者
wifi模塊?
回復

使用道具 舉報

34#
ID:920914 發表于 2021-6-14 15:55 | 只看該作者
多謝大佬分享技術
回復

使用道具 舉報

33#
ID:61192 發表于 2021-6-10 21:07 | 只看該作者
darkside 發表于 2021-5-17 18:16
這個壓縮包里面怎么沒有51單片機的程序啊

看28#已經回答了
回復

使用道具 舉報

32#
ID:403144 發表于 2021-5-17 18:16 | 只看該作者
這個壓縮包里面怎么沒有51單片機的程序啊

回復

使用道具 舉報

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

使用道具 舉報

30#
ID:409166 發表于 2021-5-13 21:16 | 只看該作者
感謝,正需要呢,下來學習下。
回復

使用道具 舉報

29#
ID:579174 發表于 2021-5-11 19:36 | 只看該作者
打卡,以后好找到!感謝分享!
回復

使用道具 舉報

28#
ID:430492 發表于 2021-5-5 19:59 | 只看該作者
沒有APP的源程序,只有APK。
回復

使用道具 舉報

27#
ID:328014 發表于 2021-5-5 17:30 | 只看該作者
929260 發表于 2021-5-5 15:30
沒有單片機程序在里面啊

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

使用道具 舉報

26#
ID:915899 發表于 2021-5-5 15:30 | 只看該作者
沒有單片機程序在里面啊
回復

使用道具 舉報

25#
ID:545457 發表于 2021-1-29 17:36 | 只看該作者
GitHub 發表于 2019-11-14 10:40
下載了,文件夾里沒有程序

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

使用道具 舉報

24#
ID:545457 發表于 2021-1-29 17:29 | 只看該作者
打擾,請問為什么下載后沒有程序?
回復

使用道具 舉報

23#
ID:881400 發表于 2021-1-29 14:55 | 只看該作者
用app控制不太靈敏,需要發送好幾次數據才能打開或關閉,這是怎么回事呀?
回復

使用道具 舉報

22#
ID:810999 發表于 2020-10-23 08:59 | 只看該作者
非常不錯,學習了。
回復

使用道具 舉報

21#
ID:495323 發表于 2020-10-18 11:11 | 只看該作者
軟件:TCP連接。樓主做的和我相同可以參考我的
,
回復

使用道具 舉報

20#
ID:65237 發表于 2020-7-30 17:16 來自觸屏版 | 只看該作者
ziziziziz 發表于 2019-6-6 16:13
請問這個app點連接/監聽,怎么知道連上了呢?

你是看那里說連上了
回復

使用道具 舉報

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

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

16#
ID:65237 發表于 2020-7-14 21:39 | 只看該作者
謝謝分享 下載有空做一個
回復

使用道具 舉報

15#
ID:56960 發表于 2020-7-10 14:14 | 只看該作者
真不錯的思路,路過頂一下!
回復

使用道具 舉報

14#
ID:724172 發表于 2020-6-29 10:54 | 只看該作者
真不錯的思路
回復

使用道具 舉報

13#
ID:430492 發表于 2020-6-24 11:15 | 只看該作者
這個不錯的思路!家電都可以手機WIFI控制了!
回復

使用道具 舉報

12#
ID:787683 發表于 2020-6-23 14:43 | 只看該作者
感謝分享
回復

使用道具 舉報

11#
ID:787683 發表于 2020-6-23 14:42 | 只看該作者
看一下效果
回復

使用道具 舉報

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

使用道具 舉報

9#
ID:632112 發表于 2020-5-27 11:13 | 只看該作者
值得學習學習,謝謝分享
回復

使用道具 舉報

8#
ID:761405 發表于 2020-5-26 10:39 | 只看該作者
謝謝分享
回復

使用道具 舉報

7#
ID:758478 發表于 2020-5-22 16:36 | 只看該作者
圍觀一下,看看效果
回復

使用道具 舉報

6#
ID:758478 發表于 2020-5-22 16:36 | 只看該作者
圍觀一下,看看效果
回復

使用道具 舉報

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

使用道具 舉報

地板
ID:631878 發表于 2019-11-14 10:40 | 只看該作者
下載了,文件夾里沒有程序,后來在網頁上找到了
回復

使用道具 舉報

板凳
ID:531751 發表于 2019-6-6 23:34 | 只看該作者
那個問題解決了!但是我發0,單片機沒反應是怎么回事呀?
回復

使用道具 舉報

沙發
ID:531751 發表于 2019-6-6 16:13 | 只看該作者
請問這個app點連接/監聽,怎么知道連上了呢?
回復

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩精品一区二区三区四区 | 成人免费观看男女羞羞视频 | 久久久这里只有17精品 | 国产精品一级在线观看 | 涩涩视频网 | 免费xxxx大片国产在线 | 国产精品九九 | 久久av资源网 | 中文字幕日韩欧美一区二区三区 | 午夜资源 | 毛片免费观看视频 | 精品一二区 | 在线亚洲免费 | 国产综合精品 | 成人h动漫精品一区二区器材 | 欧美成年网站 | 欧美激情国产精品 | 国产a区| 久久久久久国产精品免费免费狐狸 | 欧美精品二区 | 一区二区三区欧美 | 久久在线 | 久久不射网 | 91国内外精品自在线播放 | 久久亚洲视频 | 日一区二区| 玖操| 亚洲视频中文字幕 | 亚洲视频免费播放 | 天天操 夜夜操 | 中文二区| 久久久久久成人 | 精品亚洲国产成av人片传媒 | 国产成人av一区二区三区 | 可以免费观看的av片 | 欧美午夜视频 | 欧美日韩国产一区二区三区 | 亚洲网站在线观看 | 青青草网站在线观看 | 色综合久久久久 | 成人在线一区二区 |