原创
【富芮坤物联网开发板评测】ESP8266+FR8016基于贝壳物联的网络时钟与温湿度计
2020-7-6 14:17
6706
56
10
分类:
物联网
首先感谢富芮坤对这次活动提供的大力支持,感谢面包板社区提供这次宝贵的试用机会,感谢贝壳物联提供优质的免费平台!
话不多说,上才艺。。。
效果图:
温湿度远程记录:
功能简介:
1、esp8266通过透传连接至贝壳物联,FR8016通过串口0与esp8266通讯,获得网络时间并显示到TFT显示屏上;
2、读取SHT30的温湿度在TFT屏幕上显示,并上传到贝壳物联实现远程记录;
具体实现:
1、在贝壳物联官网 https://www.bigiot.net/ 注册账号并添加智能设备(获得设备ID和APIKEY)、添加接口(上传数据的ID);
2、ESP8266模块设置透传模式,具体教程 https://www.bigiot.net/talk/1.html
3、根据通讯协议 https://www.bigiot.net/help/1.html 在程序中增加登陆、查询时间、上传数据的代码:
//登陆贝壳物联
void timer_biglot_login_fun(void *arg){ uint8_t *temp; uint8_t buff[] = "{"M":"checkin","ID":"智能设备ID号","K":"智能设备APIKEY"}\n"; uart_write(UART0,buff,sizeof(buff));}//上传实时数据void timer_biglot_update_fun(void *arg){ uint8_t *RH_ID = "111111"; //湿度接口ID uint8_t *TEMP_ID = "111111"; //温度接口ID uint8_t buff[1024]; uint16_t i; i = sprintf(buff,"{"M":"update","ID":"智能设备ID号","V":{"%s":"%0.1f","%s":"%0.1f"}}\n",TEMP_ID,temperature/1000.0,RH_ID,humidity/1000.0); uart_write(UART0,buff,i); }//查询服务器时间void timer_biglot_checkTime_fun(void *arg){ uint8_t buff[] = "{"M":"time","F":"Y-m-d H:i:s"}\n"; uart_write(UART0,buff,sizeof(buff));}复制代码系统初始化后创建三个定时任务:
①.每隔10秒发送登陆指令(心跳包,要求40~50秒内必须发送一次,以维持设备在线)
②.每隔25秒查询服务器时间(最短5秒查询一次)
③.每隔15秒上传一次温湿度数据
然后在每秒刷新一次的定时器中设置时间自加,实现秒钟实时加1:
time_s++;
if(time_s >= 60){ time_s =0; time_m++; } if(time_m >= 60){ time_m = 0; time_h++; } if(time_h >= 24){ time_h = 0; time_D++; }复制代码最关键的,为了串口能够一次性收到全部的数据,需要修改串口中断函数的内容:
__attribute__((weak)) __attribute__((section("ram_code"))) void uart0_isr_ram(void)
{ uint8_t int_id; uint8_t c; volatile struct uart_reg_t *uart_reg = (volatile struct uart_reg_t *)UART0_BASE; int_id = uart_reg->u3.iir.int_id; //co_printf("uart0 in isr\r\n"); if(int_id == 0x04 || int_id == 0x0c ) /* Receiver data available or Character time-out indication */ { while(uart_reg->lsr & 0x01){<span style="white-space:pre"> </span>//这是重点,持续读完数据 rev_buff[flags] = uart_reg->u1.data; if(rev_buff[flags] == '\n'){<span style="white-space:pre"> </span> //处理收到的时间数据 if(strstr((char *)rev_buff,"time")){ time_Y = (rev_buff[19]-0x30)*10+(rev_buff[20]-0x30); time_M = (rev_buff[22]-0x30)*10+(rev_buff[23]-0x30); time_D = (rev_buff[25]-0x30)*10+(rev_buff[26]-0x30); time_h = (rev_buff[28]-0x30)*10+(rev_buff[29]-0x30); time_m = (rev_buff[31]-0x30)*10+(rev_buff[32]-0x30); time_s = (rev_buff[34]-0x30)*10+(rev_buff[35]-0x30); } flags =0; }else{ flags++; } } } else if(int_id == 0x06) { volatile uint32_t line_status = uart_reg->lsr; }}复制代码至此,程序已实现查询时间和上传温湿度数据,剩下的就是改改LCD屏的函数,或者再添加三个按键的其他功能,更多玩法等待我们去解锁~!
博客上传不了附件,只能存放在网盘里分享链接出来了,有需要参考的朋友可以下载看看~
工程下载 https://cloud.189.cn/t/6nERfyINJVza
| 检测语言世界语中文简体中文繁体丹麦语乌克兰语乌兹别克语乌尔都语亚美尼亚语伊博语俄语保加利亚语信德语修纳语僧伽罗语克罗地亚语冰岛语加利西亚语加泰罗尼亚语匈牙利语南非祖鲁语卡纳达语卢森堡语印地语印尼巽他语印尼爪哇语印尼语古吉拉特语吉尔吉斯语哈萨克语土耳其语塔吉克语塞尔维亚语塞索托语夏威夷语威尔士语孟加拉语宿务语尼泊尔语巴斯克语布尔语(南非荷兰语)希伯来语希腊语库尔德语弗里西语德语意大利语意第绪语拉丁语拉脱维亚语挪威语捷克语斯洛伐克语斯洛文尼亚语斯瓦希里语旁遮普语日语普什图语格鲁吉亚语毛利语法语波兰语波斯尼亚语波斯语泰卢固语泰米尔语泰语海地克里奥尔语爱尔兰语爱沙尼亚语瑞典语白俄罗斯语科萨科西嘉语立陶宛语索马里语约鲁巴语缅甸语罗马尼亚语老挝语芬兰语苏格兰盖尔语苗语英语荷兰语菲律宾语萨摩亚语葡萄牙语蒙古语西班牙语豪萨语越南语阿塞拜疆语阿姆哈拉语阿尔巴尼亚语阿拉伯语韩语马其顿语马尔加什语马拉地语马拉雅拉姆语马来语马耳他语高棉语齐切瓦语 | | 世界语中文简体中文繁体丹麦语乌克兰语乌兹别克语乌尔都语亚美尼亚语伊博语俄语保加利亚语信德语修纳语僧伽罗语克罗地亚语冰岛语加利西亚语加泰罗尼亚语匈牙利语南非祖鲁语卡纳达语卢森堡语印地语印尼巽他语印尼爪哇语印尼语古吉拉特语吉尔吉斯语哈萨克语土耳其语塔吉克语塞尔维亚语塞索托语夏威夷语威尔士语孟加拉语宿务语尼泊尔语巴斯克语布尔语(南非荷兰语)希伯来语希腊语库尔德语弗里西语德语意大利语意第绪语拉丁语拉脱维亚语挪威语捷克语斯洛伐克语斯洛文尼亚语斯瓦希里语旁遮普语日语普什图语格鲁吉亚语毛利语法语波兰语波斯尼亚语波斯语泰卢固语泰米尔语泰语海地克里奥尔语爱尔兰语爱沙尼亚语瑞典语白俄罗斯语科萨科西嘉语立陶宛语索马里语约鲁巴语缅甸语罗马尼亚语老挝语芬兰语苏格兰盖尔语苗语英语荷兰语菲律宾语萨摩亚语葡萄牙语蒙古语西班牙语豪萨语越南语阿塞拜疆语阿姆哈拉语阿尔巴尼亚语阿拉伯语韩语马其顿语马尔加什语马拉地语马拉雅拉姆语马来语马耳他语高棉语齐切瓦语 | | | | | | |
文本转语音功能仅限200个字符
作者: 随遇而安1992, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3913932.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
随遇而安1992 2020-7-11 14:08
whik 2020-7-11 12:49
随遇而安1992 2020-7-10 22:57
whik 2020-7-10 21:24
随遇而安1992 2020-7-10 20:08
#define DEV_V_1_4 (1) //FR8016H DEV1.4
改为
#define DEV_V_1_4 (0) //FR8016H DEV1.4
就好了,两个版本的初始化设置不同
lyyinhe_xi 2020-7-10 18:31
随遇而安1992 2020-7-10 11:49
whik 2020-7-9 17:51