找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

ESP8266無法接收單片機的指令

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:808611 發(fā)表于 2021-3-28 23:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想問一下,單片機可以與電腦串口通信,ESP8266也能與電腦串口通信并發(fā)送AT指令控制,但ESP8266接收不到來自單片機的AT指令是什么原因我用的是51開發(fā)板,WIFI模塊是ESP-01S,因為開發(fā)板電源接口不夠所以用開發(fā)板給電源模塊供電再用ESP8266連接電源模塊
ESP8266的VCC和EN接電源模塊的3V3,GND接電源模塊的GND
ESP8266的TX、RX分別連接了單片機的P31(RX)、P30(TX)
不知道怎么上傳圖片,我就直接復制串口助手的信息了

(省略亂碼)

Ai-Thinker Technology Co. Ltd.

ready
AT+CWMODE=2
AT+CIPMUX=1
AT+CIPSERVER=1,8080

發(fā)送AT+CIPMUX?后顯示
AT+CIPMUX?

+CIPMUX:0

OK


下面是我找的例程
  1. #include<reg52.h>                                //51單片機常用的頭文件
  2. #define uchar unsigned char                //宏定義一個無符號的char類型
  3. #define uint unsigned int                //宏定義一個無符號的int類型

  4. //發(fā)送一字節(jié)
  5. void sendByte(uchar b)
  6. {
  7.   SBUF = b;
  8.   while(!TI);
  9.   TI=0;
  10. }

  11. //發(fā)送字符串
  12. void sendString(uchar *s)
  13. {
  14.   while(*s != '\0')        //字符串默認結(jié)尾'\0',以此來判斷字符串的結(jié)束
  15.   {
  16.     sendByte(*s);
  17.     s++;
  18.   }
  19. }

  20. //初始化ESP8266WiFi模塊
  21. void initEsp()
  22. {
  23.   uint a;
  24.   SCON = 0x50;    //8位數(shù)據(jù),可變波特率
  25.   TMOD = 0x20;    //設置定時器1位16位自動重裝模式
  26.   TL1 = 0xfd;     //設置定時器初值,波特率為9600
  27.   TH1 = 0xfd;
  28.   ET1 = 0;        //禁止定時器1中斷
  29.   TR1 = 1;        //啟動定時器1
  30.   EA = 1;

  31.   for (a=0; a<50000; a++);                //延時幾秒,讓模塊有時間啟動
  32.   sendString("AT+CWMODE=2\r\n");        //設置為softAP和station共存模式

  33.   //WiFi熱點不能通過代碼設置,可使用串口助手進行設置,該設置斷電不丟失
  34.   /*
  35.   for (a=0; a<20000; a++);
  36.   sendString("AT+CWSAP='TEST','12345678',1,3\n"); //建立WiFi熱點
  37.   */

  38.   for (a=0; a<50000; a++);   
  39.   sendString("AT+CIPMUX=1\r\n"); //啟動多連接

  40.   for (a=0; a<20000; a++);
  41.   sendString("AT+CIPSERVER=1,8080\r\n");//建立server,端口為333



  42.   RI=0;
  43.   ES=1;   //初始化完成,串行口中斷打開
  44. }

  45. //主函數(shù)  
  46. void  main()  
  47. {  
  48.   initEsp();
  49. }  
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:342911 發(fā)表于 2021-3-29 12:23 來自觸屏版 | 只看該作者
個人建議,可以把串口調(diào)試助手16進制查看選上去分別對比單片機發(fā)出的AT和助手發(fā)的AT有何不同可能會發(fā)現(xiàn)新世界,之前記得做時每句結(jié)尾是\r\r\n

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:808611 發(fā)表于 2021-3-29 22:59 | 只看該作者
muzhi 發(fā)表于 2021-3-29 12:23
個人建議,可以把串口調(diào)試助手16進制查看選上去分別對比單片機發(fā)出的AT和助手發(fā)的AT有何不同可能會發(fā)現(xiàn)新世 ...

謝謝大佬的建議,試了一下確實稍有不同,但是多次嘗試更改程序后還是無法解決問題。。
回復

使用道具 舉報

地板
ID:808611 發(fā)表于 2021-3-29 23:04 | 只看該作者
muzhi 發(fā)表于 2021-3-29 12:23
個人建議,可以把串口調(diào)試助手16進制查看選上去分別對比單片機發(fā)出的AT和助手發(fā)的AT有何不同可能會發(fā)現(xiàn)新世 ...

主要問題是ESP8266完全接收不到單片機的信息,例如串口不加換行直接發(fā)送的話8266會回復原句,用單片機不加任何\n或\r直接發(fā)送,8266也沒有回復

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:808611 發(fā)表于 2021-3-30 20:10 | 只看該作者
我悟了,解決了
回復

使用道具 舉報

6#
ID:342911 發(fā)表于 2021-3-30 21:39 來自觸屏版 | 只看該作者
153152837 發(fā)表于 2021-3-30 20:10
我悟了,解決了

是換行回車的問題嗎?建議把解決方案總結(jié)寫出來,方便后來人
回復

使用道具 舉報

7#
ID:808611 發(fā)表于 2021-3-30 21:47 | 只看該作者
本帖最后由 153152837 于 2021-3-30 22:21 編輯

總結(jié)
1、檢查接線是否正確
2、單片機和ESP8266分別連接電腦,用串口助手調(diào)試
3、檢查波特率
4、使用開發(fā)板的師兄千萬千萬要注意。!部分開發(fā)板由于自帶USB轉(zhuǎn)TTL模塊,P30口和P31(也就是RX和TX)在設計上會默認反接,或者在標注上會反過來,一定要看開發(fā)板原理圖去確認!。。ㄟ@個就是我遇到的問題)

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

8#
ID:808611 發(fā)表于 2021-3-30 21:50 | 只看該作者
muzhi 發(fā)表于 2021-3-30 21:39
是換行回車的問題嗎?建議把解決方案總結(jié)寫出來,方便后來人

網(wǎng)上給的代碼一般都是沒有問題的,AT指令后面加\r\n沒啥問題,要注意檢查接線
回復

使用道具 舉報

9#
ID:207421 發(fā)表于 2021-3-30 23:31 | 只看該作者
ESP8266模塊的波特率一般都是 115200
你不改成 9600 沒發(fā)通訊,如下:
AT+CIOBAUD=9600
AT+RST
回復

使用道具 舉報

10#
ID:569384 發(fā)表于 2021-3-31 16:43 | 只看該作者
ESP-01S模塊默認波特率是115200,單片機也要用115200波特率來發(fā)指令。可以用單片機改波特率,但是模塊每次掉電后再上電波特率又會默認115200。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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