標(biāo)題: ESP8266無法接收單片機(jī)的指令 [打印本頁]

作者: 153152837    時(shí)間: 2021-3-28 23:37
標(biāo)題: ESP8266無法接收單片機(jī)的指令
想問一下,單片機(jī)可以與電腦串口通信,ESP8266也能與電腦串口通信并發(fā)送AT指令控制,但ESP8266接收不到來自單片機(jī)的AT指令是什么原因我用的是51開發(fā)板,WIFI模塊是ESP-01S,因?yàn)殚_發(fā)板電源接口不夠所以用開發(fā)板給電源模塊供電再用ESP8266連接電源模塊
ESP8266的VCC和EN接電源模塊的3V3,GND接電源模塊的GND
ESP8266的TX、RX分別連接了單片機(jī)的P31(RX)、P30(TX)
不知道怎么上傳圖片,我就直接復(fù)制串口助手的信息了

(省略亂碼)

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單片機(jī)常用的頭文件
  2. #define uchar unsigned char                //宏定義一個(gè)無符號的char類型
  3. #define uint unsigned int                //宏定義一個(gè)無符號的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')        //字符串默認(rèn)結(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;    //設(shè)置定時(shí)器1位16位自動(dòng)重裝模式
  26.   TL1 = 0xfd;     //設(shè)置定時(shí)器初值,波特率為9600
  27.   TH1 = 0xfd;
  28.   ET1 = 0;        //禁止定時(shí)器1中斷
  29.   TR1 = 1;        //啟動(dòng)定時(shí)器1
  30.   EA = 1;

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

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

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

  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. }  
復(fù)制代碼

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

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

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

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

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

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

作者: haokey    時(shí)間: 2021-3-31 16:43
ESP-01S模塊默認(rèn)波特率是115200,單片機(jī)也要用115200波特率來發(fā)指令?梢杂脝纹瑱C(jī)改波特率,但是模塊每次掉電后再上電波特率又會(huì)默認(rèn)115200。




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