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,用串口监视输出的是乱的)
直接把指令转换成十六进制发送也试了还是不行。
代码也贴这儿了,求大佬们指点一下。
- #include<reg52.h>
- #include<intrins.h>
- #include<string.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar aa[]="55";
- void delay1(uint z) //延时1ms
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void sendChar(uchar a) //单片机发送一个字节
- {
-
- SBUF = a;
- while(TI==0);
- TI=0;
- }
- void sendString(uchar *s) //发送一个字符串
- {
- uchar i;
- for(i=0;i<strlen(s);i++)
- {
- if(s[i]!='\0')
- sendChar(s[i]);
- else
- sendChar('\0');
- }
- }
- void init()
- {
- TMOD=0x20; //定时器1工作在方式2
- TH1=0xfd; //波特率为9600,精振为11.0592MHz
- TL1=0xfd;
- REN=1; //启动串行口接收数据
- SM0=0; //串口工作在方式1
- SM1=1; //串行口工作方式选择
- EA=1; //打开总中断
- TR1=1; //打开定时器中断
- /*esp8266初始化*/
- delay1(1000);
- sendString("AT+RST\r\n");
- delay1(1000);
- sendString("AT+CWMODE=3\r\n"); //设置WIFI应用模式
- delay1(1000); //设置WIFI应用模式
- sendString("AT+RST\r\n"); //重置WIFI模块
- delay1(1000);
- sendString("AT+CIFSR\r\n"); //查询本地IP
- delay1(1000);
- sendString("AT+CWJAP=\"DESKTOP-RNE8OFL9047\",\"<93v8V22\"\r\n");//连接无线路由器
- delay1(5000);
-
- }
- void chuansu() //单片机通过8266给OneNET传送数据
- {
- sendString("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80\r\n");//和服务器建立TCP连接
- delay1(1000);
- sendString("AT+CIPMODE=1\r\n"); //进入透明传输模式
- delay1(1000);
- sendString("AT+CIPSEND\r\n"); //开始传输
- delay1(1000);
- 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,");
- sendString(aa);
- sendString("\r\n");
- delay1(1000);
- }
- void main()
- {
- init(); //初始化定时器和esp8266
-
- while(1)
- {
- chuansu();
- delay1(1000);
- }
- }
复制代码
下面是监视单片机io口发出的指令
|