功能介绍:
使用51单片机将温度数据上传到OneNET云平台,同时可以实现远程控制LED灯的功能。

前提准备:
1、有OneNET的账号
2、刷入 OneNET 提供的 ESP8266 固件参考文章
需要下载的固件位置:

下载注意:

硬件准备:
1、C51单片机
2、WIFI模块esp8266-01s或者esp8266-01
3、USB转串口模块,用于烧录固件

模块接线:
ESP8266-01S: TX–P30 RX–P31 VCC–3.3V GND–GND
ESP8266-01: TX–P30 RX–P31 VCC–3.3V GND–GND EN–3.3V
DS18B20: IO–P37
在下载程序前,应该先断开WIFI模块的接线,不然程序烧写不了。
演示图片:
1、实物图
我用的是esp8266-01,所以EN引脚要接3.3V

2、设备在线状态

3、上传的温度数据

4、下发命令
在设备列表中的详情/数据流/更多可以找到下发命令
发送字符串LED0打开P2_0引脚处的LED灯,发送LED1关闭LED灯

代码实现:
/**************************************************************************************
接线:
ESP826601S: TX–P30 RX–P31 VCC–3.3V GND–GND
DS18B20: IO–P37
需要烧写 OneNET 提供的 ESP8266 固件
***************************************************************************************/
#include “reg52.h” //此文件中定义了单片机的一些特殊功能寄存器
#include “usart.h”
#include “delay.h”
#include “stdio.h”
#include “18b20.h”

sbit led=P2^0; //将单片机的P0.0端口定义为led
unsigned char xdata dataBuf[36]= {0};//定义显示区域临时存储数组

//定义两全局变量,在串口接收中断改变其值
char WIFI_OK = 0;
char OneNET_OK = 0;

void main()
{
int temp1;
float temperature;
Init_DS18B20();

//UART_init();//串口初始化
set52_baudrate(11.0592, 115200);//串口初始化
DelayMs(1000);UART_SendStr("AT+CWJAP=XIAOCHUN02,3118003167\r\n",32); //手动连接WiFi,参数分别代表热点名称、密码
while(WIFI_OK != 1);  //当连上WIFI后WIFI_OK==1UART_SendStr("AT+IOTCFG=879125822,486413,0713\r\n",33);//配置登录信息,参数分别代表设备ID、产品ID、鉴权信息
while(OneNET_OK != 1);  //当登陆OneNET后OneNET_OK==1UART_SendStr("AT+IOTSEND=0,data,100\r\n",23);    //发送数据流,参数分别代表数据是数值类型、数据流名、数据值
DelayMs(1000);while(1)
{temp1=ReadTemperature();       //读取温度temperature=(float)temp1*0.0625; //温度值转换sprintf(dataBuf,"AT+IOTSEND=0,data,%.1f\r\n",temperature);  //将温度数据放入dataBuf数组中UART_SendStr(dataBuf,36);    //发送数据流DelayMs(2000);
}

}

串口中断服务函数,在此处接收下发的命令并控制LED灯
```c
static  char  uart_buf[32]={0};   //用于保存串口数据
static  unsigned char uart_cnt=0; //用于定位串口数据的位置
extern char WIFI_OK;              //判断WIFI是否连接
extern char OneNET_OK;            //判断OneNET是否登陆
void UART_SER (void) interrupt 4    //串行中断服务程序
{if(RI)                        //判断是接收中断产生{RI=0;                      //标志位清零//接收串口数据uart_buf[uart_cnt] =SBUF;  uart_cnt++;//判断是否是下发的指令if(uart_buf[uart_cnt-4]=='L'&&uart_buf[uart_cnt-3]=='E'&&uart_buf[uart_cnt-2]=='D'&&uart_buf[uart_cnt-1] == '0')  {led = 0;       //开灯uart_cnt = 0;  //清零,重新计数}else if(uart_buf[uart_cnt-4]=='L'&&uart_buf[uart_cnt-3]=='E'&&uart_buf[uart_cnt-2]=='D'&&uart_buf[uart_cnt-1] == '1')  {led = 1;       //关灯uart_cnt = 0;}//添加其他命令//WIFI连接成功后会返回字符串:+Event:WIFI GOT IPelse if(uart_buf[uart_cnt-4]=='T'&&uart_buf[uart_cnt-3]==' '&&uart_buf[uart_cnt-2]=='I'&&uart_buf[uart_cnt-1] == 'P'){WIFI_OK = 1;uart_cnt = 0;}//OneNET成功登陆后会返回字符串:+Event:Connect:0else if(uart_buf[uart_cnt-4]=='c'&&uart_buf[uart_cnt-3]=='t'&&uart_buf[uart_cnt-2]==':'&&uart_buf[uart_cnt-1] == '0'){OneNET_OK = 1;uart_cnt = 0;}if(uart_cnt>28)   //防止数组越界{uart_cnt = 0;}}if(TI)  //如果是发送标志位,清零TI=0;
} 

更新:
1、程序很简单,但也不够稳定,如果设备不能在线,可以尝试多复位几次。----2022-03-28
2、已经更新代码了,解决了需要复位好几次,靠运气接上OneNET的BUG。----2022-04-10

最后:
需要代码的可以自行下载。代码下载链接
下载操作:

C51接入OneNET-实现数据上传和命令下发相关推荐

  1. CC2530接入OneNET-实现数据上传和命令下发

    前言: 之前物联网课设时就想用CC2530单片机和ESP8266-01S来实现数据上传和远程控制,当时在网上也找了很多资料,无果.本来是不想再碰这个的,由于我同学做毕设需要用到,所以再努力了一把,也终 ...

  2. 4G模块接入阿里云-实现数据上传和命令下发

    功能介绍: 使用4G模块EC600S和32单片机实现接入阿里云服务器,上传光照数据和下发命令控制LED灯(PC13),同时可以打电话.发短信. 前期准备: 1.首先你得有一个阿里云的账号,没有的话就注 ...

  3. RaspberryPi+OneNET MQTT方式 数据上传和命令下发

    MQTT相关实验 第一节:Mosquitto 相关实验 第二节:域名解析和内网穿透实验 第三节:OneNET 相关实验 Gitee仓库地址: https://gitee.com/zhj0125/MQT ...

  4. STM32接入阿里云(FreeRTOS)-实现数据上传和命令下发

    功能介绍: 将传感器采集的数据上传到阿里云,同时可以下发控制板上的LED灯(PC13) 前期准备: 1.首先你得有一个阿里云的账号,没有的话就注册一个 2.在物联网平台创建产品和设备 主要硬件准备: ...

  5. 新大陆物联网-Android实现网关功能-连接云平台并上传传感器数据-获取执行器指令并执行-Android网关开发-通信-数据上传云平台-JAVA原理讲解-免费云平台使用-竞赛2022国赛真题

    目录 一.任务要求 二.开发环境 三.网关上线 四.数据上传与命令下发 五.JSON命令解析思路 六.总结 一.任务要求 我们将要实现的效果是:Android开发平板与Lora板进行有线串口通信,解析 ...

  6. 监测现场实时数据上传到中移物联网OneNet云平台

    OneNet,中移物联网云平台,是由中国移动打造的PaaS物联网开放平台.平台能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件.智能家居产品提供完善的物联网解决方案(摘自36 ...

  7. m5310模组数据上传至onenet_NBIOT模组M5310接入中国移动物联网开放平台示例文档

    <time>: -t 设备存活时间,标示终端和 OneNET 平台之间连接的存活周 期,设置范围为 10s~86400s: : -u 设置 PUT 和 POST 指令分片长度,范围 0~6 ...

  8. OneNET麒麟座应用开发之四:数据上传测试

    已经测试过OneNET麒麟座开发板了,这次来尝试与OneNET的连接和数据上传.这也是我们测试这块开发办的主要原因,因为在十几种我们有这种将分散的采集点数据上传到后台的需求. 先看看麒麟座这块开发板, ...

  9. 家庭IOT监测之摄像头数据上传ONENET

    本篇目标:将摄像头OV7670的照片数据,转换成BMP二进制,上传到ONENET平台,用于远程监测. 材料准备: 之前移植的温湿度及红外修改工程:(温湿度及红外修改工程),继续往里面移植摄像头驱动上传 ...

最新文章

  1. 网工学Python——初识面向对象
  2. innodb_force_recovery的值意思
  3. RealFormer:把残差转移到Attention矩阵上面去
  4. c++ 将集合set的数据输出到数组中_Java集合类(容器类)简介:(摘抄)
  5. SAP CRM呼叫中心toolbar的cancel按钮会导致session清理
  6. jstl与EL表达式处理字符串
  7. 【计算机视觉】运动目标检测算法文献阅读笔记
  8. fastunfolding算法_社区发现算法综述—part1
  9. 死磕YOLO系列,YOLOv2的自我修养
  10. 浏览器渲染原理及web前端分析
  11. su 与 su - 的区别
  12. 服务器mgmt口监控协议,服务器如何查看mgmt地址
  13. 四、异常(高琪java300集+java从入门到精通笔记)
  14. 8.18 @烤仔建工 | 抓住夏天的尾巴,和烤仔一起打造秘密花园吧
  15. java有abc三边求周长语句_java 给定三个点由三个点求三角形周长和面积
  16. 前端架构师的YY定义
  17. 【项目管理软件盛宴】谁才是人气王?
  18. DistilBERT, a distilled version of BERT
  19. 两台计算机是怎么“连接”在一起的
  20. 华二紫竹2021年高考成绩查询,2019年华二紫竹升学数据分析!

热门文章

  1. 自动驾驶小实验之Turtlebot3_Autopilot(Tensorflow, OpenCV, ROS, PID)
  2. 十分钟看懂图像语义分割技术
  3. 计算机视觉—BOW图像检索
  4. 谈今天的头条 台湾地震影响海底光纤
  5. 用DapperExtensions和反射来实现一个通用搜索
  6. 手机加速度传感器在Android横竖屏切换中的应用
  7. python编程圆面积_python如何求圆的面积
  8. 这本书,豆瓣评分9.3,送给大家!
  9. 有哪些好书值得一看?
  10. 网络广播风暴产生的原因