C51接入OneNET-实现数据上传和命令下发
功能介绍:
使用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-实现数据上传和命令下发相关推荐
- CC2530接入OneNET-实现数据上传和命令下发
前言: 之前物联网课设时就想用CC2530单片机和ESP8266-01S来实现数据上传和远程控制,当时在网上也找了很多资料,无果.本来是不想再碰这个的,由于我同学做毕设需要用到,所以再努力了一把,也终 ...
- 4G模块接入阿里云-实现数据上传和命令下发
功能介绍: 使用4G模块EC600S和32单片机实现接入阿里云服务器,上传光照数据和下发命令控制LED灯(PC13),同时可以打电话.发短信. 前期准备: 1.首先你得有一个阿里云的账号,没有的话就注 ...
- RaspberryPi+OneNET MQTT方式 数据上传和命令下发
MQTT相关实验 第一节:Mosquitto 相关实验 第二节:域名解析和内网穿透实验 第三节:OneNET 相关实验 Gitee仓库地址: https://gitee.com/zhj0125/MQT ...
- STM32接入阿里云(FreeRTOS)-实现数据上传和命令下发
功能介绍: 将传感器采集的数据上传到阿里云,同时可以下发控制板上的LED灯(PC13) 前期准备: 1.首先你得有一个阿里云的账号,没有的话就注册一个 2.在物联网平台创建产品和设备 主要硬件准备: ...
- 新大陆物联网-Android实现网关功能-连接云平台并上传传感器数据-获取执行器指令并执行-Android网关开发-通信-数据上传云平台-JAVA原理讲解-免费云平台使用-竞赛2022国赛真题
目录 一.任务要求 二.开发环境 三.网关上线 四.数据上传与命令下发 五.JSON命令解析思路 六.总结 一.任务要求 我们将要实现的效果是:Android开发平板与Lora板进行有线串口通信,解析 ...
- 监测现场实时数据上传到中移物联网OneNet云平台
OneNet,中移物联网云平台,是由中国移动打造的PaaS物联网开放平台.平台能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件.智能家居产品提供完善的物联网解决方案(摘自36 ...
- m5310模组数据上传至onenet_NBIOT模组M5310接入中国移动物联网开放平台示例文档
<time>: -t 设备存活时间,标示终端和 OneNET 平台之间连接的存活周 期,设置范围为 10s~86400s: : -u 设置 PUT 和 POST 指令分片长度,范围 0~6 ...
- OneNET麒麟座应用开发之四:数据上传测试
已经测试过OneNET麒麟座开发板了,这次来尝试与OneNET的连接和数据上传.这也是我们测试这块开发办的主要原因,因为在十几种我们有这种将分散的采集点数据上传到后台的需求. 先看看麒麟座这块开发板, ...
- 家庭IOT监测之摄像头数据上传ONENET
本篇目标:将摄像头OV7670的照片数据,转换成BMP二进制,上传到ONENET平台,用于远程监测. 材料准备: 之前移植的温湿度及红外修改工程:(温湿度及红外修改工程),继续往里面移植摄像头驱动上传 ...
最新文章
- 网工学Python——初识面向对象
- innodb_force_recovery的值意思
- RealFormer:把残差转移到Attention矩阵上面去
- c++ 将集合set的数据输出到数组中_Java集合类(容器类)简介:(摘抄)
- SAP CRM呼叫中心toolbar的cancel按钮会导致session清理
- jstl与EL表达式处理字符串
- 【计算机视觉】运动目标检测算法文献阅读笔记
- fastunfolding算法_社区发现算法综述—part1
- 死磕YOLO系列,YOLOv2的自我修养
- 浏览器渲染原理及web前端分析
- su 与 su - 的区别
- 服务器mgmt口监控协议,服务器如何查看mgmt地址
- 四、异常(高琪java300集+java从入门到精通笔记)
- 8.18 @烤仔建工 | 抓住夏天的尾巴,和烤仔一起打造秘密花园吧
- java有abc三边求周长语句_java 给定三个点由三个点求三角形周长和面积
- 前端架构师的YY定义
- 【项目管理软件盛宴】谁才是人气王?
- DistilBERT, a distilled version of BERT
- 两台计算机是怎么“连接”在一起的
- 华二紫竹2021年高考成绩查询,2019年华二紫竹升学数据分析!