在前面的学习中已经完成了stm32通过esp8266将我们读取的温湿度等数据上传onenet云平台,实现云端监测和控制,在参与合泰杯比赛中的一个功能同样也需将数据上传云平台。
下面将记录和分享实现过程
个人感受
在我们新接触的开发版学习过程中,最开始可能真的会很痛苦,拿合泰芯片来说资料真的很少,网上也找不到相关的教学视频,官网自带的例程很多看不懂,代码写的也乱,和之前接触的stm32固件库编程来说相差太多了。不过值得开心的事情是在学习过程中HT32这款型号的开发板和stm32开发很像,很多不会的可以借鉴stm32的使用方法,自己在学习HT32过也是按照32固件库分模块化来写的,整个过程学习起来也没有最初的那种痛苦,本次分享的数据云平台显示就是完全按照stm32使用方式进行相应的移值的代码修改,当然还是会遇到一些难以解决的问题,一直卡在哪里,总之,遇到问题不要着急慢慢来,一步一步总会解决的。
云端效果展示
同样在前面也介绍过了Onenet云平台的使用,需要的伙伴可以去看相关博文
代码挺多的这里就只分享主函数了,需要的小伙伴自行去下载完整工程
main.c
#include "usart.h"
#include "led.h"
#include "delay.h"
#include "time.h"
#include "dht11.h"
//网络
#include "esp8266.h"
#include "onenet.h"
//C包
#include "string.h"
void Hardware_Init(void)
{
USART1_Configuration();//打印信息用 //串口1,打印信息用
USART0_Configuration(); //串口2,驱动ESP8266用
Led_Init(); //LED初始化
dou_dht11_init(); //温度初始化
GPTM_PWM_init(); //舵机相关初始化
Servo_Run(45);
Servo_Run2(45);
Servo_Run3(45);
Servo_Run4(45);
UsartPrintf(USART_DEBUG, " Hardware init OK\r\n");
}
int main(void)
{
unsigned char *dataPtr = NULL;
unsigned short timeCount = 0; //发送间隔变量
Hardware_Init();//硬件初始化
ESP8266_Init(); //初始化ESP8266
printf("8266_INIT_END\n");
while(OneNet_DevLink()) //接入OneNET
delay_ms(500);
printf("接入onenet成功");
while(1)
{
if(++timeCount >= 150) //时间间隔1s
{
dou_dht11_get_data();
delay_ms(20);
printf("hum temp=%d .%d %d .%d\r\n",H_H,H_L,T_H,T_L);
printf( "OneNet_SendData\r\n");//通过串口1发送提示信息(要开始发送数据了)
OneNet_SendData();//发送数据给onenet
printf("send_data_end\n");
timeCount = 0;
ESP8266_Clear();
}
dataPtr = ESP8266_GetIPD(0);//获取平台返回的数据
if(dataPtr != NULL)//如果返回数据不为空
OneNet_RevPro(dataPtr);//平台返回数据检测
delay_ms(10);
}
}
串口数据打印