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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 40298|回復: 56
收起左側

ESP8266模塊與單片機的通信程序(硬件與軟件詳解)

  [復制鏈接]
ID:260951 發表于 2017-12-27 16:44 | 顯示全部樓層 |閱讀模式
  初次接觸ESP8266模塊,說實話還是費了很大的勁,從硬件部分到軟件部分,一個一個的問題對于我這個新手來說,確實有些吃力。不過還好,在51hei電子論壇有很多這方面的資料,也有很多很友好的人,感謝他們給予的幫助。
  雖然我是一個菜鳥,但我還是希望和大家分享一下。時間比較倉促,代碼也有很多不成熟的地方,希望能對初次接觸這個模塊的人有一些幫助。
  1,硬件:USB轉TTL是必需的,ESP8266模塊,一般模塊出廠就已經燒好了固件,拿到就可以直接發AT指令,AT指令的手冊網上很多,可以自行百度。
  硬件連接  TXD-RXD, RXD-TXD; 交叉連接,有的模塊需要自己拉高一個引腳的電平,如圖所示,電源最好是3.3V,模塊發熱很嚴重,不要長時間接電。
  2 ,軟件:在執行代碼之前,模塊要先設定好什么模式,用串口助手發送AT指令設定。我的是AP模式,模塊設定為server端,然后生成一個WiFi,名字隨   意,這個時候(當然得知道模塊的IP地址),可以用電腦上的網絡助手,嘗試連接模塊,電腦必須連接ESP8266模塊產生的WiFi才可以;這幾步之后,模塊就可以連接已經下載好的單片機了,在上面設定好之后,模塊斷電重啟后,在設定的模式不會變,WiFi不會變,后面的指令就需要通過單片機發送了。到這兒基本就可以實現簡單的通訊了,程序工程已附上。 IMG_20171227_164001.jpg

時間倉促,我也是這幾天才學的,分享只是為了更多的分享,不足的地方希望諒解,目前準備做433M。有愿意指導的或是技術交流的可以加我qq1946706342

單片機源程序如下:
  1. #include <reg52.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int

  6. sbit D1 = P2^0;
  7. sbit D2 = P2^1;
  8. sbit D3 = P2^2;
  9. sbit D4 = P2^3;
  10. sbit D5 = P2^4;
  11. sbit D6 = P2^5;
  12. sbit D7 = P2^6;
  13. sbit D8 = P2^7;

  14. uchar Receive;
  15. uchar Recive_table[15];
  16. uchar flag = 1;
  17. uchar flag1 = 1;
  18. uchar flag2 = 0;
  19. uchar num = 0;
  20. uint i=0;
  21. void ms_delay(uint n)        
  22. {
  23.         uint j,m;
  24.         for( m =n; m>0; m--)
  25.         for(j=110; j>0; j--);
  26. }
  27. void us_delay(uchar n)
  28. {
  29.         while(n--);
  30. }

  31. void Usart_init()
  32. {
  33.         SCON = 0x50;        //設置串行口工作在方式一,且啟動串行口接收(REN=1)
  34.         TMOD = 0x20;        //設置計數器1工作在方式二,即自動重裝計數值(8位)
  35.         PCON=0X80;
  36.         TH1 = 0xf3;                //設置波特率為4800
  37.         TL1 = 0xf3;
  38.         
  39.         EA = 1;       //開總中斷
  40.         TR1 = 1;                         //啟動計數器
  41. }

  42. void sent_AT(uchar *at_comd)
  43. {
  44.         ES = 0;
  45.         while(*at_comd != '\0')  //字符串結束標志
  46.         {
  47.                 TI = 0;
  48.                 SBUF = *at_comd;
  49.                 while(!TI);
  50.                 TI = 0;
  51.                 us_delay(5);
  52.                 at_comd++;
  53.         }
  54.         us_delay(5);
  55.         SBUF = '\r';
  56.         while(!TI);
  57.         TI = 0;
  58.         us_delay(5);
  59.         SBUF = '\n';
  60.         while(!TI);
  61.         TI = 0;
  62. }
  63. void main()
  64. {

  65.                 uchar Recivedat;
  66.         //        uchar Rec;
  67.         
  68.                 Usart_init();
  69.                 ms_delay(5000);
  70.                 ES = 0;
  71.                 while(flag == 1){
  72.                         sent_AT("AT+CIPMUX=1");//最方便的是直接printf("AT+CIPMUX=1\r\n");我想弄清楚發送原理,所以繞了一個彎
  73.                                 flag1 = 1;
  74.                                 while(flag1 == 1)//檢測模塊是否返回OK
  75.                                 {
  76.                                         if(RI)
  77.                                         {
  78.                                                 RI = 0;
  79.                                                 Recivedat = SBUF;
  80.                                                 if(Recivedat == 'K')
  81.                                                 {
  82.                                                         flag = 0;
  83.                                                         flag1 = 0;
  84.                                                 }
  85.                                         }
  86.                                         num++;
  87.                                         if(num == 1000)
  88.                                         {
  89.                                                 num = 0;
  90.                                                 flag1 = 0;
  91.                                         }
  92.                                 }
  93.                         }
  94.                 flag = 1;
  95.                 flag1 = 1;
  96.                 num = 0;
  97.           D1 = 0;
  98.                         
  99.                 while(flag == 1){
  100.                                 sent_AT("AT+CIPSERVER=1,8080");
  101.                                 flag1 = 1;
  102.                                 while(flag1 == 1)
  103.                                 {
  104.                                         if(RI)
  105.                                         {
  106.                                                 RI = 0;
  107.                                                 Recivedat = SBUF;
  108.                                                 if(Recivedat == 'K')
  109.                                                 {
  110.                                                         flag = 0;
  111.                                                         flag1 = 0;
  112.                                                 }
  113.                                         }
  114.                                         num++;
  115.                                         if(num == 1000)
  116.                                         {
  117.                                                 num = 0;
  118.                                                 flag1 = 0;
  119.                                         }
  120.                                 }
  121.                         }
  122.                 flag = 1;
  123.                 flag1 = 1;
  124.                 num = 0;
  125.                 D2 = 0;                        
  126. //                RI=0;

  127.         ES = 1;        //開串口中斷,接收完數據,進行處理
  128.         while(1);//掛住不讓代碼死掉
  129. }

  130. void Usat()interrupt 4//串口中斷里面接收從client端發過來的信息
  131. {
  132.                 if(RI==1)
  133.                 {
  134.                         RI=0;
  135.                         Recive_table[i] = SBUF;
  136.                         if(Recive_table[0]=='+')
  137.                         {
  138.                                 D3=0;
  139.                                 i++;
  140.                         }else{
  141.                                 D4=0;
  142.                                 i=0;
  143.                         }
  144.                         if(i>=10)  //這個參數很重要,因為i++
  145.                         {        
  146. ……………………

  147. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
wifi_51_3.rar (31.37 KB, 下載次數: 828)

評分

參與人數 2黑幣 +105 收起 理由
aiaiaia + 5 很給力!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:217448 發表于 2018-2-11 16:53 | 顯示全部樓層
好定西,值得參考
回復

使用道具 舉報

ID:311693 發表于 2018-4-19 15:15 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:314506 發表于 2018-4-27 11:05 | 顯示全部樓層
那個RST引腳和IO-O引腳是不是不用接?
回復

使用道具 舉報

ID:317780 發表于 2018-4-27 14:52 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:66302 發表于 2018-4-30 13:22 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:346924 發表于 2018-6-14 17:41 來自手機 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:120672 發表于 2018-7-8 22:58 | 顯示全部樓層
perfect123 發表于 2018-6-30 15:13
你寫了半天代碼,也沒說清楚到底實現了什么功能,硬件連接實物圖也沒有照片

你真看代碼了嗎?實現的功能就是用單片機對ESP8266進行設置。
回復

使用道具 舉報

ID:352182 發表于 2018-7-10 21:28 | 顯示全部樓層
感謝樓主分享
回復

使用道具 舉報

ID:373010 發表于 2018-7-21 10:36 | 顯示全部樓層
樓主你好,請問下你單片機發送指令時候,不用帶\r\n嗎?

另外有個問題想請教,我用C51單片機開發板,把C51的TXD,RXD和ESP2866RXD,TXD連接后,用串口助手鏈接到開發板的COM口,都是直接聯入ESP2866里面,C51不響應我發送的指令,但是ESP2866會響應,請問您有沒有遇到這個情況?
回復

使用道具 舉報

ID:364328 發表于 2018-7-26 09:55 | 顯示全部樓層
電路圖能不能看看呢
回復

使用道具 舉報

ID:328493 發表于 2018-7-30 17:46 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:280466 發表于 2018-8-7 20:52 | 顯示全部樓層
不錯的
回復

使用道具 舉報

ID:382890 發表于 2018-8-8 09:26 | 顯示全部樓層
stinfo 發表于 2018-7-21 10:36
樓主你好,請問下你單片機發送指令時候,不用帶\r\n嗎?

另外有個問題想請教,我用C51單片機開發板,把C ...

如果發的指令后面不帶\r\n,ESP8266就不會有回復
回復

使用道具 舉報

ID:58110 發表于 2018-8-9 07:08 | 顯示全部樓層
在此基礎上,是否可以通過ESP8266讀取某網站的天氣信息?
一直沒有找到用51單片機獲得天氣信心的資料
回復

使用道具 舉報

ID:384430 發表于 2018-8-9 08:10 | 顯示全部樓層
好東西,學習一下
回復

使用道具 舉報

ID:336603 發表于 2018-9-4 19:12 | 顯示全部樓層
慣性想象me 發表于 2018-4-27 11:05
那個RST引腳和IO-O引腳是不是不用接?

我也想知道誒,請問一下你找到答案了嗎?
回復

使用道具 舉報

ID:395175 發表于 2018-9-7 21:34 | 顯示全部樓層
很給力!
回復

使用道具 舉報

ID:395175 發表于 2018-9-7 22:39 | 顯示全部樓層
好東西
回復

使用道具 舉報

ID:109365 發表于 2018-10-4 13:31 | 顯示全部樓層
點贊!!!!!!!!!!!!!!!!
回復

使用道具 舉報

ID:297735 發表于 2018-10-5 16:35 | 顯示全部樓層
看看啊看
回復

使用道具 舉報

ID:418276 發表于 2018-10-31 01:51 | 顯示全部樓層
感謝樓主分享!
回復

使用道具 舉報

ID:411697 發表于 2018-10-31 09:21 來自手機 | 顯示全部樓層
謝謝分享,這個可以用嗎
回復

使用道具 舉報

ID:413993 發表于 2018-11-12 09:41 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:339500 發表于 2018-11-12 17:32 | 顯示全部樓層
lyMarvin 發表于 2018-8-9 07:08
在此基礎上,是否可以通過ESP8266讀取某網站的天氣信息?
一直沒有找到用51單片機獲得天氣信心的資料

和你做同一樣東西,至于天氣情況我能通過Python爬取天氣網站信息獲得,那么如何通過8266+c51----電腦之間連接數據我就不懂了
回復

使用道具 舉報

ID:424996 發表于 2018-11-14 11:22 | 顯示全部樓層
很好,很清楚
回復

使用道具 舉報

ID:437316 發表于 2018-12-1 19:43 | 顯示全部樓層
硬件連接那部分學習到了,謝謝
回復

使用道具 舉報

ID:489266 發表于 2019-3-12 15:29 | 顯示全部樓層
還沒試過
回復

使用道具 舉報

ID:490403 發表于 2019-3-14 03:24 | 顯示全部樓層
謝謝分享!
回復

使用道具 舉報

ID:490559 發表于 2019-3-14 11:13 | 顯示全部樓層
謝謝樓主分享!
回復

使用道具 舉報

ID:495308 發表于 2019-3-21 12:55 | 顯示全部樓層
我頂樓主,我想問個問題,就是esp8266如何發送數據給51單片機
回復

使用道具 舉報

ID:496159 發表于 2019-3-22 15:06 | 顯示全部樓層
太感謝您的幫助了
回復

使用道具 舉報

ID:496765 發表于 2019-3-23 16:04 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:367948 發表于 2019-4-10 20:33 | 顯示全部樓層
正想學習ESP8266,謝謝樓主
回復

使用道具 舉報

ID:403027 發表于 2019-4-16 12:49 | 顯示全部樓層
謝謝分享!!!!!!!
回復

使用道具 舉報

ID:479547 發表于 2019-4-17 17:15 | 顯示全部樓層
好東西呀
回復

使用道具 舉報

ID:514993 發表于 2019-4-17 21:28 | 顯示全部樓層
謝謝樓主  之前8266一直是用延時做的 現在能讓他自行判斷了
回復

使用道具 舉報

ID:470508 發表于 2019-4-22 22:33 | 顯示全部樓層
為什么我的WiFi模塊連接上單片機 通過sscom發送AT指令 串口沒有反應
回復

使用道具 舉報

ID:463636 發表于 2019-5-9 22:00 | 顯示全部樓層
這真的很不錯
回復

使用道具 舉報

ID:501681 發表于 2019-5-15 22:58 | 顯示全部樓層
很好用
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 伊人色综合久久久天天蜜桃 | 欧美理论片在线观看 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 欧美综合一区二区 | 中文字幕欧美一区 | 在线日韩精品视频 | 精品自拍视频在线观看 | 91免费视频观看 | 欧美成人精品一区二区三区 | 999久久久久久久久6666 | 国产一区二区三区 | 国产美女免费视频 | 九九久久久 | 黄色一级网 | 亚洲成人二区 | 亚洲精品日韩精品 | 亚洲午夜在线 | 欧美中文字幕一区二区三区亚洲 | 国产中文字幕亚洲 | www国产成人 | 午夜精品久久 | 精品美女 | 免费国产视频在线观看 | 日韩一区中文字幕 | aaa大片免费观看 | 国产精品久久久久久一区二区三区 | 高清免费在线 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 欧美精品一区二区三区在线 | 国产精品久久久久久吹潮 | 国产免费黄网 | 国产视频中文字幕 | 国产午夜精品视频 | 亚洲精品黄 | 日韩亚洲视频 | 国产小视频在线观看 | 一区二区精品电影 | 一区二区av | av电影一区二区 | 国产精品久久久久久久岛一牛影视 | 91精品久久久久久久久久入口 |