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

標題: ESP8266無法接收單片機的指令 [打印本頁]

作者: 153152837    時間: 2021-3-28 23:37
標題: ESP8266無法接收單片機的指令
想問一下,單片機可以與電腦串口通信,ESP8266也能與電腦串口通信并發送AT指令控制,但ESP8266接收不到來自單片機的AT指令是什么原因我用的是51開發板,WIFI模塊是ESP-01S,因為開發板電源接口不夠所以用開發板給電源模塊供電再用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

發送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. //發送一字節
  5. void sendByte(uchar b)
  6. {
  7.   SBUF = b;
  8.   while(!TI);
  9.   TI=0;
  10. }

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

  20. //初始化ESP8266WiFi模塊
  21. void initEsp()
  22. {
  23.   uint a;
  24.   SCON = 0x50;    //8位數據,可變波特率
  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. //主函數  
  46. void  main()  
  47. {  
  48.   initEsp();
  49. }  
復制代碼

作者: muzhi    時間: 2021-3-29 12:23
個人建議,可以把串口調試助手16進制查看選上去分別對比單片機發出的AT和助手發的AT有何不同可能會發現新世界,之前記得做時每句結尾是\r\r\n
作者: 153152837    時間: 2021-3-29 22:59
muzhi 發表于 2021-3-29 12:23
個人建議,可以把串口調試助手16進制查看選上去分別對比單片機發出的AT和助手發的AT有何不同可能會發現新世 ...

謝謝大佬的建議,試了一下確實稍有不同,但是多次嘗試更改程序后還是無法解決問題。。
作者: 153152837    時間: 2021-3-29 23:04
muzhi 發表于 2021-3-29 12:23
個人建議,可以把串口調試助手16進制查看選上去分別對比單片機發出的AT和助手發的AT有何不同可能會發現新世 ...

主要問題是ESP8266完全接收不到單片機的信息,例如串口不加換行直接發送的話8266會回復原句,用單片機不加任何\n或\r直接發送,8266也沒有回復
作者: 153152837    時間: 2021-3-30 20:10
我悟了,解決了
作者: muzhi    時間: 2021-3-30 21:39
153152837 發表于 2021-3-30 20:10
我悟了,解決了

是換行回車的問題嗎?建議把解決方案總結寫出來,方便后來人
作者: 153152837    時間: 2021-3-30 21:47
本帖最后由 153152837 于 2021-3-30 22:21 編輯

總結
1、檢查接線是否正確
2、單片機和ESP8266分別連接電腦,用串口助手調試
3、檢查波特率
4、使用開發板的師兄千萬千萬要注意!!!部分開發板由于自帶USB轉TTL模塊,P30口和P31(也就是RX和TX)在設計上會默認反接,或者在標注上會反過來,一定要看開發板原理圖去確認!!!(這個就是我遇到的問題)
作者: 153152837    時間: 2021-3-30 21:50
muzhi 發表于 2021-3-30 21:39
是換行回車的問題嗎?建議把解決方案總結寫出來,方便后來人

網上給的代碼一般都是沒有問題的,AT指令后面加\r\n沒啥問題,要注意檢查接線
作者: lwh999995    時間: 2021-3-30 23:31
ESP8266模塊的波特率一般都是 115200
你不改成 9600 沒發通訊,如下:
AT+CIOBAUD=9600
AT+RST

作者: haokey    時間: 2021-3-31 16:43
ESP-01S模塊默認波特率是115200,單片機也要用115200波特率來發指令。可以用單片機改波特率,但是模塊每次掉電后再上電波特率又會默認115200。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1