找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

  [复制链接]
跳转到指定楼层
楼主
本帖内容为82C52单片机通过wifi模块(ESP8266)温度传感器(DS18B20)的温度数据通过HTTP协议上传到OneNET云平台。
所需的硬件设备:
单片机一块;
ESP8266模块一个;
DS18B20一个。
软件:
需要在OneNET平台注册一个账号,并建立相关产品设备
如图所示:






部分代码如下:
#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, 下载次数: 743)

(有不懂或者不完善的地方欢迎大家评论)

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:512761 发表于 2020-1-4 18:28 | 只看该作者
谢谢分享
回复

使用道具 举报

板凳
ID:314651 发表于 2020-1-6 17:11 | 只看该作者
sendString("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80\r\n");//和服务器建立TCP连接
这段代码怎么修改?还是所有的都一样?
回复

使用道具 举报

地板
ID:521432 发表于 2020-3-18 12:44 | 只看该作者
花少广 发表于 2020-1-6 17:11
sendString("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80\r\n");//和服务器建立TCP连接
这段代码怎么修改 ...

不需要改,183.230.40.33是中移onenet重庆总部地址
回复

使用道具 举报

5#
ID:582615 发表于 2020-3-19 11:34 来自手机 | 只看该作者
谢大佬分享
回复

使用道具 举报

6#
ID:58925 发表于 2020-3-19 16:25 | 只看该作者
很好,支持楼主
回复

使用道具 举报

7#
ID:704752 发表于 2020-3-21 14:58 | 只看该作者
楼主你好!想请问一下可以用oneNET来显示单片机发送的报警信号吗?程序也是和这个差不多吗
回复

使用道具 举报

8#
ID:582615 发表于 2020-3-22 07:47 来自手机 | 只看该作者
大佬,我把我手机热点改成了123456,密码wds123456。key和设备id改成了自己的onenet,然后发现连接不上WiFi模块连接不上热点
回复

使用道具 举报

9#
ID:582615 发表于 2020-3-22 08:18 来自手机 | 只看该作者
大佬,硬件部分怎么连的呢?
回复

使用道具 举报

10#
ID:540642 发表于 2020-3-26 15:00 | 只看该作者
大佬,有问题请教你,可以留个邮箱吗
回复

使用道具 举报

11#
ID:326528 发表于 2020-3-26 17:46 | 只看该作者
收藏了 感谢大佬
回复

使用道具 举报

12#
ID:563347 发表于 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
回复

使用道具 举报

13#
ID:563347 发表于 2020-3-27 21:13 | 只看该作者
这里只需要改数字跟IDkey?还是要改黑色字体的?
回复

使用道具 举报

14#
ID:563347 发表于 2020-3-27 21:14 | 只看该作者
cbay 发表于 2020-3-22 08:18
大佬,硬件部分怎么连的呢?

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

使用道具 举报

15#
ID:347588 发表于 2020-3-31 20:14 | 只看该作者
您好,为什么conect-length要分成几段发送呢
回复

使用道具 举报

16#
ID:680535 发表于 2020-4-13 10:26 | 只看该作者
LBJ9999 发表于 2020-3-27 21:13
这里只需要改数字跟IDkey?还是要改黑色字体的?

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

使用道具 举报

17#
ID:445280 发表于 2020-4-13 14:06 | 只看该作者
楼主 52是单纯接了8266的两个txd和人rxd吗 再接上高低电平
回复

使用道具 举报

18#
ID:730979 发表于 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;
回复

使用道具 举报

19#
ID:730979 发表于 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
回复

使用道具 举报

20#
ID:715360 发表于 2020-4-17 12:24 | 只看该作者
cbay 发表于 2020-3-22 07:47
大佬,我把我手机热点改成了123456,密码wds123456。key和设备id改成了自己的onenet,然后发现连接不上WiFi ...

你的现在可以了吗
回复

使用道具 举报

21#
ID:715360 发表于 2020-4-17 12:24 | 只看该作者
连不上热点的原因是什么呢
回复

使用道具 举报

22#
ID:582615 发表于 2020-4-21 10:19 来自手机 | 只看该作者
wanwancui 发表于 2020-4-17 12:24
连不上热点的原因是什么呢

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

使用道具 举报

23#
ID:582615 发表于 2020-4-21 10:20 来自手机 | 只看该作者
wanwancui 发表于 2020-4-17 12:24
你的现在可以了吗

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

使用道具 举报

24#
ID:582615 发表于 2020-4-21 10:21 来自手机 | 只看该作者
大佬,如果是上传三个数据,怎么写呢
回复

使用道具 举报

25#
ID:734207 发表于 2020-4-21 11:10 来自手机 | 只看该作者
718 发表于 2020-4-16 23:36
将tcp连接延时改为5000之后,串口返回这样子了&#128552;
WIFI CONNECTED
WIFI GOT IP

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

使用道具 举报

26#
ID:734207 发表于 2020-4-21 11:37 来自手机 | 只看该作者
你这很有创意啊
回复

使用道具 举报

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

使用道具 举报

28#
ID:450211 发表于 2020-4-24 02:34 | 只看该作者
可以用onenet做一个手机app显示这些数据吗
回复

使用道具 举报

29#
ID:314651 发表于 2020-4-24 20:50 | 只看该作者
有没有对应的硬件连接原理图?ESP8266就只连VCC  GND  RX  TX 吗?
回复

使用道具 举报

30#
ID:79874 发表于 2020-4-28 07:35 来自手机 | 只看该作者
ESP8266需要烧写什么嘛
回复

使用道具 举报

31#
ID:691498 发表于 2020-4-28 12:50 | 只看该作者
大佬,有没有8266连接阿里云的代码呀??
回复

使用道具 举报

32#
ID:739177 发表于 2020-4-29 21:00 | 只看该作者
你好,请问mqtt协议怎么写?你这个是http协议的
回复

使用道具 举报

33#
ID:665326 发表于 2020-5-1 16:00 | 只看该作者
AT+CIPSEND


ERROR

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

使用道具 举报

34#
ID:665326 发表于 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>
回复

使用道具 举报

35#
ID:746850 发表于 2020-5-8 13:41 | 只看该作者
好的。。
回复

使用道具 举报

36#
ID:545795 发表于 2020-5-11 08:30 | 只看该作者
l956597431 发表于 2020-4-24 02:34
可以用onenet做一个手机app显示这些数据吗

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

使用道具 举报

37#
ID:545795 发表于 2020-5-11 08:33 | 只看该作者
pengyongnet 发表于 2020-4-28 07:35
ESP8266需要烧写什么嘛

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

使用道具 举报

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

应该差不多
回复

使用道具 举报

39#
ID:545795 发表于 2020-5-11 08:39 | 只看该作者
17727219780 发表于 2020-4-13 14:06
楼主 52是单纯接了8266的两个txd和人rxd吗 再接上高低电平

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

使用道具 举报

40#
ID:545795 发表于 2020-5-11 08:40 | 只看该作者
wanwancui 发表于 2020-4-17 12:24
连不上热点的原因是什么呢

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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