找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6121|回复: 47
收起左侧

单片机通过ESP8266将温度数据上传到OneNET平台

  [复制链接]
1715092042 发表于 2019-8-8 17:06 | 显示全部楼层 |阅读模式
本帖内容为82C52单片机通过wifi模块(ESP8266)温度传感器(DS18B20)的温度数据通过HTTP协议上传到OneNET云平台。
所需的硬件设备:
单片机一块;
ESP8266模块一个;
DS18B20一个。
软件:
需要在OneNET平台注册一个账号,并建立相关产品设备
如图所示:
51hei截图20190808165552.png

51hei图片20190808165734.png

51hei截图20190808165914.png

部分代码如下:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit DQ=P2^4;
sbit k1=P1^0;
uchar aa[1]="";
uint i,temp;
void delay(uint i)                //延时5us
{
        do
        {
                _nop_();             
                _nop_();
                _nop_();
                i--;
        }
        while(i);       
}
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)                        //发送一个字符串
{
        while(*s!='\0')
        {
                sendChar(*s);
                s++;
        }
               
}
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+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=\"123456\",\"wds123456\"\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/527602572/datapoints?type=3 HTTP/1.1\r\n");  //需要修改成你自己的id
        delay1(1000);
        sendString("api-key:sggrqbMr4YanhJ2YyjP6E=EwWd4=\r\n");                 //需要修改成你的api-key
        delay1(1000);
        sendString("Host:api.heclouds.com\r\n");  
        delay1(1000);
        sendString("Content-Length:11\r\n");
        delay1(1000);
        sendString("\r\n");
        delay1(5000);
        sendString("{\"temp\":");                          
        delay1(1000);
        sendString(aa);                            //aa为温度数据
        delay1(1000);
        sendString("}");
        delay1(1000);
        sendString("\r\n");
        delay1(1000);               
        ES=1;                                          //开串口中断
} 将温度上传到OneNET.zip (29.01 KB, 下载次数: 335)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

201308789 发表于 2020-8-2 13:57 | 显示全部楼层
2530的吗?
回复

使用道具 举报

201308789 发表于 2020-8-2 12:06 | 显示全部楼层
厉害厉害,再有一个视频给我这种小白学习就好了
回复

使用道具 举报

122429 发表于 2020-7-21 17:30 来自手机 | 显示全部楼层
void Common_Init()
{
        Phase = 0;
        NextPhase = 0;
               
        TuneDutyRatioCnt = 0;
        
        PWMDutyCycle = PWM_DUTYCYCLE_05;

        CurrentPgaSample = 0;
        CurrentSample = 0;        // 电流采样值
        VoltageSample = 0;        // 电压采样值
        UserSpeedSample = 0;

        ADCIntProtectCnt = 0;
        flag_ADCSample = 0;

        flag_ErrorException = 0;
        
        LastPhase = 0;
        SamePhaseCnt = 0;

        flag_SpeedTime = 0;        
        SpeedTimeCnt = 0;        
        SpeedTime = 0;
        SpeedTimeTemp = 0;
        SpeedTimeSum = 0;

        MotorSpeed = 0;
        UserRequireSpeed = 0;        // 用户请求转速

        RheostatCnt = 0;

        VoltageProCnt = 0;
        CurrentPgaProCnt = 0;
        CurrentProCnt = 0;

        #if(SENSORMODE)
        NowHallState = 0;
        PreHallState = 0;

        flag_HallStateRight = 0;
回复

使用道具 举报

wy820 发表于 2020-7-21 10:32 | 显示全部楼层
这个代码能在arduino  ide环境下烧录吗?
回复

使用道具 举报

夏颜two 发表于 2020-7-8 19:17 | 显示全部楼层
cbay 发表于 2020-3-22 07:47
大佬,我把我手机热点改成了123456,密码wds123456。key和设备id改成了自己的onenet,然后发现连接不上WiFi ...

请问你的问题解决了吗
回复

使用道具 举报

maikenjifuyi 发表于 2020-6-11 20:44 | 显示全部楼层
如果是用GPRS模块呢
回复

使用道具 举报

时代ui 发表于 2020-6-4 18:03 | 显示全部楼层
很厉害
回复

使用道具 举报

 楼主| 1715092042 发表于 2020-5-11 08:41 | 显示全部楼层
979738600 发表于 2020-4-28 12:50
大佬,有没有8266连接阿里云的代码呀??

没有
回复

使用道具 举报

 楼主| 1715092042 发表于 2020-5-11 08:40 | 显示全部楼层
wanwancui 发表于 2020-4-17 12:24
连不上热点的原因是什么呢

可能是没有配置8266模块,需要先修改收发模式,波特率等等
回复

使用道具 举报

 楼主| 1715092042 发表于 2020-5-11 08:39 | 显示全部楼层
17727219780 发表于 2020-4-13 14:06
楼主 52是单纯接了8266的两个txd和人rxd吗 再接上高低电平

是的,电源最好加一个3.3V稳压模块
回复

使用道具 举报

 楼主| 1715092042 发表于 2020-5-11 08:34 | 显示全部楼层
老大的哥 发表于 2020-3-21 14:58
楼主你好!想请问一下可以用oneNET来显示单片机发送的报警信号吗?程序也是和这个差不多吗

应该差不多
回复

使用道具 举报

 楼主| 1715092042 发表于 2020-5-11 08:33 | 显示全部楼层
pengyongnet 发表于 2020-4-28 07:35
ESP8266需要烧写什么嘛

不需要,但需要重新配置一下ESP8266模块,比如波特率(修改为和你的单片机波特率一样就行),收发模式,名称等等。
回复

使用道具 举报

 楼主| 1715092042 发表于 2020-5-11 08:30 | 显示全部楼层
l956597431 发表于 2020-4-24 02:34
可以用onenet做一个手机app显示这些数据吗

ONENET有自己的APP,可以将网页的数据同步到APP上
回复

使用道具 举报

qqppwwoo 发表于 2020-5-8 13:41 | 显示全部楼层
好的。。
回复

使用道具 举报

jiang1998 发表于 2020-5-1 18:56 | 显示全部楼层
加了延时就解决了AT+CIPSEND的问题 在后一步开始传输id和api——key又出问题了 一直解决不了
HTTP/1.1 200 OK
Date: Fri, 01 May 2020 10:52:47 GMT
Content-Type: application/json
Content-Length: 61
Connection: keep-alive
Server: Apache-Coyote/1.1
Pragma: no-cache

{"errno":6,"error":"invalid parameter: error parameter::锟?}HTTP/1.1 400 Bad Request
Server: nginx
Date: Fri, 01 May 2020 10:52:47 GMT
Content-Type: text/html
Content-Length: 166
Connection: close

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
回复

使用道具 举报

jiang1998 发表于 2020-5-1 16:00 | 显示全部楼层
AT+CIPSEND


ERROR

发送AT+CIPSEND 出现错误是什么问题呢,我用单片机与esp8266通信到这一步出错,后面都报错,用usb转ttl连esp8266用串口调试助手也是到这一步出错,前面全是ok
回复

使用道具 举报

1176107178 发表于 2020-4-29 21:00 | 显示全部楼层
你好,请问mqtt协议怎么写?你这个是http协议的
回复

使用道具 举报

979738600 发表于 2020-4-28 12:50 | 显示全部楼层
大佬,有没有8266连接阿里云的代码呀??
回复

使用道具 举报

pengyongnet 发表于 2020-4-28 07:35 来自手机 | 显示全部楼层
ESP8266需要烧写什么嘛
回复

使用道具 举报

花少广 发表于 2020-4-24 20:50 | 显示全部楼层
有没有对应的硬件连接原理图?ESP8266就只连VCC  GND  RX  TX 吗?
回复

使用道具 举报

l956597431 发表于 2020-4-24 02:34 | 显示全部楼层
可以用onenet做一个手机app显示这些数据吗
回复

使用道具 举报

会有狗的 发表于 2020-4-23 12:07 | 显示全部楼层
ESP8266默认的波特率为115200,如果直接接入单片机,esp是接收不到单片机发送的指令的,要先把esp8266接入电脑用串口调试助手发送指令AT+URAT=9600,8,1,0,0把波特率设置为9600,这时下次esp8266下次上电还能保持9600的波特率才能接收到单片机的指令
回复

使用道具 举报

一天会 发表于 2020-4-21 11:37 来自手机 | 显示全部楼层
你这很有创意啊
回复

使用道具 举报

一天会 发表于 2020-4-21 11:10 来自手机 | 显示全部楼层
718 发表于 2020-4-16 23:36
将tcp连接延时改为5000之后,串口返回这样子了&#128552;
WIFI CONNECTED
WIFI GOT IP

我觉得你这个延时函数有点问题
回复

使用道具 举报

cbay 发表于 2020-4-21 10:21 来自手机 | 显示全部楼层
大佬,如果是上传三个数据,怎么写呢
回复

使用道具 举报

cbay 发表于 2020-4-21 10:20 来自手机 | 显示全部楼层
wanwancui 发表于 2020-4-17 12:24
你的现在可以了吗

可以了,是因为WiFi模块的波特率与单片机的波特率不一样导致的
回复

使用道具 举报

cbay 发表于 2020-4-21 10:19 来自手机 | 显示全部楼层
wanwancui 发表于 2020-4-17 12:24
连不上热点的原因是什么呢

可能是WiFi模块的波特率与单片机不一样
回复

使用道具 举报

wanwancui 发表于 2020-4-17 12:24 | 显示全部楼层
连不上热点的原因是什么呢
回复

使用道具 举报

wanwancui 发表于 2020-4-17 12:24 | 显示全部楼层
cbay 发表于 2020-3-22 07:47
大佬,我把我手机热点改成了123456,密码wds123456。key和设备id改成了自己的onenet,然后发现连接不上WiFi ...

你的现在可以了吗
回复

使用道具 举报

718 发表于 2020-4-16 23:36 | 显示全部楼层
将tcp连接延时改为5000之后,串口返回这样子了&#128552;
WIFI CONNECTED
WIFI GOT IP
AT+CIPMUX=0busy p...

OK
AT+CIPSTART="TCP","183.230.40.33",80
ERROR
CLOSED
AT+CIPMODE=1
OK
AT+CIPSEND
ERROR
回复

使用道具 举报

718 发表于 2020-4-16 22:46 | 显示全部楼层
WIFI CONNECTED
WIFI GOT IP
AT+CIPMUX=0busy p...

OK
AT+CIPSTART="TCP","183.230.40.33",80AT+CIPMODE=1busy p...
AT+CIPSENDbusy p...

ERROR
CLOSED
用了楼主的程序,不知为何接不上服务器,大四狗答辩在即,着实着急,谢谢&#128591;
回复

使用道具 举报

17727219780 发表于 2020-4-13 14:06 | 显示全部楼层
楼主 52是单纯接了8266的两个txd和人rxd吗 再接上高低电平
回复

使用道具 举报

会有狗的 发表于 2020-4-13 10:26 | 显示全部楼层
LBJ9999 发表于 2020-3-27 21:13
这里只需要改数字跟IDkey?还是要改黑色字体的?

产品名称改成你自己的产品名称
回复

使用道具 举报

浮子 发表于 2020-3-31 20:14 | 显示全部楼层
您好,为什么conect-length要分成几段发送呢
回复

使用道具 举报

LBJ9999 发表于 2020-3-27 21:14 | 显示全部楼层
cbay 发表于 2020-3-22 08:18
大佬,硬件部分怎么连的呢?

P2.4连接温感器的io口,k1是按键,按键另一端接地
回复

使用道具 举报

LBJ9999 发表于 2020-3-27 21:13 | 显示全部楼层
这里只需要改数字跟IDkey?还是要改黑色字体的?
回复

使用道具 举报

LBJ9999 发表于 2020-3-27 21:13 | 显示全部楼层
sendString("POST /devices/527602572/datapoints?type=3 HTTP/1.1\r\n");  //需要修改成你自己的id         delay1(1000);          sendString("api-key:sggrqbMr4YanhJ2YyjP6E=EwWd4=\r\n");                 //需要修改成你的api-key
回复

使用道具 举报

18668033313 发表于 2020-3-26 17:46 | 显示全部楼层
收藏了 感谢大佬
回复

使用道具 举报

chen132 发表于 2020-3-26 15:00 | 显示全部楼层
大佬,有问题请教你,可以留个邮箱吗
回复

使用道具 举报

cbay 发表于 2020-3-22 08:18 来自手机 | 显示全部楼层
大佬,硬件部分怎么连的呢?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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