找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2699|回复: 3
收起左侧

ESP8266无法接收单片机发送的指令?

[复制链接]
ID:680535 发表于 2020-4-23 00:32 | 显示全部楼层 |阅读模式
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
51hei.png
连接单片机后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口发出的指令
51hei.png
回复

使用道具 举报

ID:680535 发表于 2020-4-23 14:03 | 显示全部楼层
问题已经解决了,设置ESP82866接收的波特率即可

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:365247 发表于 2020-4-26 13:48 | 显示全部楼层
会有狗的 发表于 2020-4-23 14:03
问题已经解决了,设置ESP82866接收的波特率即可

楼主,我的问题也是跟你差不多,但是我一开始就把8266的波特率设置成9600了还是不行,能不能讲解下你具体的方法呢
回复

使用道具 举报

ID:680535 发表于 2020-5-30 11:41 | 显示全部楼层
124192 发表于 2020-4-26 13:48
楼主,我的问题也是跟你差不多,但是我一开始就把8266的波特率设置成9600了还是不行,能不能讲解下你具体 ...

只要保持单片机串口和ESP8266串口的波特率一样就行了,你串口监视一下单片机IO口发出的指令,如果显示空白,可能是代码问题,如果乱码,适当添加延时试试。注意串口监视器要设置同样的波特率
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表