找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 31568|回复: 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 踩
回复

使用道具 举报

63#
ID:1038538 发表于 2022-9-1 16:48 | 只看该作者
单片机代码编译后在OneNET平台哪个地方看温度数据呀?
回复

使用道具 举报

62#
ID:700054 发表于 2022-4-4 13:35 | 只看该作者
楼主这个为啥现在那个直接连不上WiFi
回复

使用道具 举报

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

这个数据是你申请的OneNet给你的,你要注意记录
回复

使用道具 举报

60#
ID:768219 发表于 2022-3-13 16:33 | 只看该作者
你好 这个程序我在51上试过可以用 换到stc15上面为什么就不行了呢 延时我都换成15的了 串口配置需要换吗
回复

使用道具 举报

59#
ID:88256 发表于 2021-12-27 13:53 | 只看该作者
如果仅仅是应用,既然都已经用上了了8266,那就没必要用单片机了
回复

使用道具 举报

58#
ID:270495 发表于 2021-12-27 13:03 | 只看该作者
qweqweqe123123 发表于 2021-5-14 20:06
我的可以连接到WIFI热点了 但是数据发不到onenet平台上,请问这是为什么呢?

我也是,请问你解决了吗?
回复

使用道具 举报

57#
ID:270495 发表于 2021-12-27 13:00 | 只看该作者
718 发表于 2020-4-16 22:46
WIFI CONNECTED
WIFI GOT IP
AT+CIPMUX=0busy p...

请问你解决了吗?我也连不上不知道啥问题
回复

使用道具 举报

56#
ID:944237 发表于 2021-11-25 14:19 | 只看该作者
我想问一下这个的发送时间间隔太长了,要如何改进呢
回复

使用道具 举报

55#
ID:920511 发表于 2021-5-21 10:55 来自触屏版 | 只看该作者
cbay 发表于 2020-4-21 10:19
可能是WiFi模块的波特率与单片机不一样

应该是你热点的频段是5G
回复

使用道具 举报

54#
ID:919881 发表于 2021-5-14 20:06 | 只看该作者
我的可以连接到WIFI热点了 但是数据发不到onenet平台上,请问这是为什么呢?
回复

使用道具 举报

53#
ID:463811 发表于 2021-4-29 17:10 | 只看该作者
jiang1998 发表于 2020-5-1 18:56
加了延时就解决了AT+CIPSEND的问题 在后一步开始传输id和api——key又出问题了 一直解决不了
HTTP/1.1 2 ...

我也是这样,请问你有找到问题么?
回复

使用道具 举报

52#
ID:899241 发表于 2021-3-31 20:33 | 只看该作者
大佬可以帮忙解决连接51板+8266连接onenet吗
回复

使用道具 举报

51#
ID:409166 发表于 2021-3-24 20:35 | 只看该作者
请问,这个程序实现后,可以在手机端用APP实时查看温度值吗?谢谢,请指教!
回复

使用道具 举报

50#
ID:398219 发表于 2021-2-21 15:34 | 只看该作者
消息队列服务TOPIC关闭后,是不是就不能上传数据至ONENET了
回复

使用道具 举报

49#
ID:667191 发表于 2021-1-4 16:27 | 只看该作者
改完以后,串口接受乱码。esp8266的波特率已经改到9600,,求解答
回复

使用道具 举报

48#
ID:864096 发表于 2020-12-20 17:59 | 只看该作者
大佬,求教一下那个设备创建的多协议接入是哪来的?
回复

使用道具 举报

47#
ID:810494 发表于 2020-8-2 13:57 | 只看该作者
2530的吗?
回复

使用道具 举报

46#
ID:810494 发表于 2020-8-2 12:06 | 只看该作者
厉害厉害,再有一个视频给我这种小白学习就好了
回复

使用道具 举报

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

使用道具 举报

44#
ID:804156 发表于 2020-7-21 10:32 | 只看该作者
这个代码能在arduino  ide环境下烧录吗?
回复

使用道具 举报

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

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

使用道具 举报

42#
ID:604052 发表于 2020-6-11 20:44 | 只看该作者
如果是用GPRS模块呢
回复

使用道具 举报

41#
ID:769635 发表于 2020-6-4 18:03 | 只看该作者
很厉害
回复

使用道具 举报

40#
ID:545795 发表于 2020-5-11 08:41 | 只看该作者
979738600 发表于 2020-4-28 12:50
大佬,有没有8266连接阿里云的代码呀??

没有
回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

应该差不多
回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

33#
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>
回复

使用道具 举报

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


ERROR

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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