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

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

作者: 會有狗的    時間: 2020-4-23 00:32
標題: ESP8266無法接收單片機發送的指令?
ESP8266用TTL轉USB插入電腦,用串口發送AT等指令一切正常
POST /devices/59****198/datapoints?type=5 HTTP/1.1
api-key:m1************************30=
Host:api.heclouds.com
Content-Length:10

,;temp,30
用串口發送以上指令時能上傳數據至云平臺,返回succ

連接單片機后ESP8266沒有任何反應,連不上WiFi也沒有上傳數據,用串口監視單片機發出的指令也是正常的(用串口監視到的指令復制重新用串口發送ESP8266是正常工作的)
晶振是11.0592MHz,波特率設置為9600(試著設了一下115200,用串口監視輸出的是亂的)
直接把指令轉換成十六進制發送也試了還是不行。
代碼也貼這兒了,求大佬們指點一下。
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include<string.h>
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. uchar aa[]="55";   

  7. void delay1(uint z)         //延時1ms
  8. {
  9.     uint x,y;
  10.     for(x=z;x>0;x--)
  11.         for(y=110;y>0;y--);
  12. }
  13. void sendChar(uchar a)                 //單片機發送一個字節
  14. {
  15.    
  16.     SBUF = a;
  17.     while(TI==0);
  18.     TI=0;
  19. }

  20. void sendString(uchar *s)            //發送一個字符串
  21. {
  22.     uchar i;
  23.   for(i=0;i<strlen(s);i++)
  24.   {
  25.        if(s[i]!='\0')
  26.              sendChar(s[i]);
  27.          else
  28.            sendChar('\0');
  29.   }
  30. }


  31. void init()
  32. {
  33.     TMOD=0x20;                            //定時器1工作在方式2  
  34.     TH1=0xfd;                            //波特率為9600,精振為11.0592MHz
  35.     TL1=0xfd;
  36.     REN=1;                                //啟動串行口接收數據
  37.     SM0=0;                                //串口工作在方式1
  38.     SM1=1;                                //串行口工作方式選擇
  39.     EA=1;                                //打開總中斷
  40.     TR1=1;                                //打開定時器中斷
  41.     /*esp8266初始化*/
  42.     delay1(1000);
  43.     sendString("AT+RST\r\n");
  44.      delay1(1000);
  45.     sendString("AT+CWMODE=3\r\n");        //設置WIFI應用模式
  46.     delay1(1000);                        //設置WIFI應用模式
  47.     sendString("AT+RST\r\n");            //重置WIFI模塊
  48.     delay1(1000);
  49.     sendString("AT+CIFSR\r\n");            //查詢本地IP
  50.     delay1(1000);
  51.     sendString("AT+CWJAP=\"DESKTOP-RNE8OFL9047\",\"<93v8V22\"\r\n");//連接無線路由器
  52.     delay1(5000);
  53.    
  54. }
  55. void chuansu()                             //單片機通過8266給OneNET傳送數據
  56. {
  57.     sendString("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80\r\n");//和服務器建立TCP連接
  58.     delay1(1000);
  59.     sendString("AT+CIPMODE=1\r\n");      //進入透明傳輸模式
  60.     delay1(1000);
  61.     sendString("AT+CIPSEND\r\n");         //開始傳輸
  62.     delay1(1000);
  63.     sendString("POST /devices/59****198/datapoints?type=5 HTTP/1.1\r\napi-key:m17*******************30=\r\nHost:api.heclouds.com\r\nContent-Length:10\r\n\r\n,;temp,");
  64.     sendString(aa);
  65.     sendString("\r\n");
  66.     delay1(1000);
  67. }

  68. void main()
  69. {              
  70.     init();                  //初始化定時器和esp8266
  71.    
  72.     while(1)
  73.     {
  74.         chuansu();
  75.         delay1(1000);
  76.     }
  77. }
復制代碼

下面是監視單片機io口發出的指令


作者: 會有狗的    時間: 2020-4-23 14:03
問題已經解決了,設置ESP82866接收的波特率即可
作者: 124192    時間: 2020-4-26 13:48
會有狗的 發表于 2020-4-23 14:03
問題已經解決了,設置ESP82866接收的波特率即可

樓主,我的問題也是跟你差不多,但是我一開始就把8266的波特率設置成9600了還是不行,能不能講解下你具體的方法呢
作者: 會有狗的    時間: 2020-5-30 11:41
124192 發表于 2020-4-26 13:48
樓主,我的問題也是跟你差不多,但是我一開始就把8266的波特率設置成9600了還是不行,能不能講解下你具體 ...

只要保持單片機串口和ESP8266串口的波特率一樣就行了,你串口監視一下單片機IO口發出的指令,如果顯示空白,可能是代碼問題,如果亂碼,適當添加延時試試。注意串口監視器要設置同樣的波特率




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