找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2313|回复: 2
打印 上一主题 下一主题
收起左侧

51单片机用esp8266上传数据到乐为物联网平台失败

[复制链接]
跳转到指定楼层
楼主
想要通过单片机检测温度,然后通过esp8266将温度数据上传到乐为物联网平台。



通过串口调试助手输入和程序一样的AT指令,能够成功传输到数据,但是将代码写进单片机后,就无法实现,不知问题出在哪,求大神解答。
已经排除波特率的因素,esp8266的波特率已经改为9600了。

附上单片机代码:
  1. #include <reg52.h>
  2. #include <stdio.h>

  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. void delayms(uint x)   //51单片机的常用延时方式
  6. {
  7.         uint i,j;
  8.         for(i=x;i>0;i--)
  9.                 for(j=110;j>0;j--);
  10. }

  11. void uart_init()      //串口的初始化
  12. {
  13.         TMOD = 0x20;
  14.         TH1 = 0XFd;
  15.         TL1 = 0XFd;
  16.         SCON = 0x50;
  17.         PCON = 0X00;
  18.         TR1 = 1;
  19.         EA = 1;
  20.         ES = 1;
  21. }

  22. void wifi_init()      //初始化wifi模块
  23. {
  24.         ES = 0;       //关闭串口中断,以免发送指令过程中被其他事情打断
  25.         TI = 1;


  26.         printf("AT+CWMODE=1\r\n");  //选择STA模式
  27.         delayms(1200);

  28.         printf("AT+RST\r\n");  //往串口发重启指令,在单片机中使用printf默认是往串口发送数据
  29.         delayms(1200);         //适当延时,给wifi模块一点反应时间

  30.         printf("AT+CWJAP=\"iPhone7 plus\",\"123456789a\"\r\n");  
  31.         delayms(2000);      

  32.         printf("AT+CIPMUX=0\r\n");  //单通道模式
  33.         delayms(1200);

  34.         printf("AT+CIPMODE=1\r\n");  //选择透传
  35.         delayms(1200);

  36.         printf("AT+CIPSTART=\"TCP\",\"tcp.lewei50.com\",9960\r\n");  //设置远程主机IP和端口号
  37.         delayms(2000);

  38.         printf("AT+CIPSEND\r\n");  //发送数据命令
  39.         delayms(1200);

  40.         while(!TI);
  41.         TI = 0;  
  42.         ES = 1;  //重新开启串口中断
  43. }

  44. void send(char *p)  //发送数据函数
  45. {
  46.         TI=0;
  47.         do
  48.         {       
  49.                 SBUF = *p;
  50.                 p++;
  51.                 while(!TI);
  52.                 TI = 0;
  53.         }while(*p);
  54.         SBUF = ' ';
  55.         while(!TI);
  56.         TI = 0;
  57. }


  58. void main()
  59. {
  60.         uart_init();
  61.         wifi_init();
  62. //        while(1)
  63. //        {
  64.                 send("{\"method\": \"update\",\"gatewayNo\": \"02\",\"userkey\":\"82b16d0e39ee4a84989eb8ce812510de\"}&^!\r\n");
  65.                 delayms(1000);  //适当延时

  66.                 send("{\"method\": \"upload\",\"data\":[{\"Name\":\"T1\",\"Value\":\"30\"}]}&^!\r\n");
  67.                 delayms(1000);  //适当延时
  68. //        }
  69. }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:53031 发表于 2019-12-27 10:51 | 只看该作者
调整下延迟时间,有时候这个搜到回复内容的时间不一定
回复

使用道具 举报

板凳
ID:445280 发表于 2020-4-12 11:43 | 只看该作者
楼主 想问一下这个json的字节数怎么看呀 是大括号里面的字节数叫上后缀0D和0A两个吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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