原创 【富芮坤物联网开发板评测】ESP8266+FR8016基于贝壳物联的网络时钟与温湿度计

2020-7-6 14:17 1000 19 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 在程序中增加登陆、查询时间、上传数据的代码:

  1. //登陆贝壳物联
  2. void timer_biglot_login_fun(void *arg){
  3. uint8_t *temp;
  4. uint8_t buff[] = "{"M":"checkin","ID":"智能设备ID号","K":"智能设备APIKEY"}\n";
  5. uart_write(UART0,buff,sizeof(buff));
  6. }
  7. //上传实时数据
  8. void timer_biglot_update_fun(void *arg){
  9. uint8_t *RH_ID = "111111"; //湿度接口ID
  10. uint8_t *TEMP_ID = "111111"; //温度接口ID
  11. uint8_t buff[1024];
  12. uint16_t i;
  13. 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);
  14. uart_write(UART0,buff,i);
  15. }
  16. //查询服务器时间
  17. void timer_biglot_checkTime_fun(void *arg){
  18. uint8_t buff[] = "{"M":"time","F":"Y-m-d H:i:s"}\n";
  19. uart_write(UART0,buff,sizeof(buff));
  20. }

系统初始化后创建三个定时任务:

①.每隔10秒发送登陆指令(心跳包,要求40~50秒内必须发送一次,以维持设备在线)

②.每隔25秒查询服务器时间(最短5秒查询一次)

③.每隔15秒上传一次温湿度数据

然后在每秒刷新一次的定时器中设置时间自加,实现秒钟实时加1:

  1. time_s++;
  2. if(time_s >= 60){
  3. time_s =0;
  4. time_m++;
  5. }
  6. if(time_m >= 60){
  7. time_m = 0;
  8. time_h++;
  9. }
  10. if(time_h >= 24){
  11. time_h = 0;
  12. time_D++;
  13. }

最关键的,为了串口能够一次性收到全部的数据,需要修改串口中断函数的内容:

  1. __attribute__((weak)) __attribute__((section("ram_code"))) void uart0_isr_ram(void)
  2. {
  3. uint8_t int_id;
  4. uint8_t c;
  5. volatile struct uart_reg_t *uart_reg = (volatile struct uart_reg_t *)UART0_BASE;
  6. int_id = uart_reg->u3.iir.int_id;
  7. //co_printf("uart0 in isr\r\n");
  8. if(int_id == 0x04 || int_id == 0x0c ) /* Receiver data available or Character time-out indication */
  9. {
  10. while(uart_reg->lsr & 0x01){<span style="white-space:pre"> </span>//这是重点,持续读完数据
  11. rev_buff[flags] = uart_reg->u1.data;
  12. if(rev_buff[flags] == '\n'){<span style="white-space:pre"> </span>
  13. //处理收到的时间数据
  14. if(strstr((char *)rev_buff,"time")){
  15. time_Y = (rev_buff[19]-0x30)*10+(rev_buff[20]-0x30);
  16. time_M = (rev_buff[22]-0x30)*10+(rev_buff[23]-0x30);
  17. time_D = (rev_buff[25]-0x30)*10+(rev_buff[26]-0x30);
  18. time_h = (rev_buff[28]-0x30)*10+(rev_buff[29]-0x30);
  19. time_m = (rev_buff[31]-0x30)*10+(rev_buff[32]-0x30);
  20. time_s = (rev_buff[34]-0x30)*10+(rev_buff[35]-0x30);
  21. }
  22. flags =0;
  23. }else{
  24. flags++;
  25. }
  26. }
  27. }
  28. else if(int_id == 0x06)
  29. {
  30. volatile uint32_t line_status = uart_reg->lsr;
  31. }
  32. }

至此,程序已实现查询时间和上传温湿度数据,剩下的就是改改LCD屏的函数,或者再添加三个按键的其他功能,更多玩法等待我们去解锁~!

博客上传不了附件,只能存放在网盘里分享链接出来了,有需要参考的朋友可以下载看看~

工程下载 https://cloud.189.cn/t/6nERfyINJVza

作者: 随遇而安1992, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3913932.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论8条评论)

登录后参与讨论

随遇而安1992 2020-7-11 14:08

whik: 工程里有AT指令配置的代码吗?没有找到
没有在工程里设置,是单独先对8266设置好再插到板子上的

whik 2020-7-11 12:49

随遇而安1992: 原厂就行,按照教程设置透传
工程里有AT指令配置的代码吗?没有找到

随遇而安1992 2020-7-10 22:57

whik: ESP8266的固件是出厂的AT固件,还是贝壳物联的定制固件?
原厂就行,按照教程设置透传

whik 2020-7-10 21:24

随遇而安1992: 已上传云盘
ESP8266的固件是出厂的AT固件,还是贝壳物联的定制固件?

随遇而安1992 2020-7-10 20:08

lyyinhe_xi: 我烧录了固件,文字左右全反了,哪里问题?1.3版本的开发板
lcd.c文件的头部
#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

我烧录了固件,文字左右全反了,哪里问题?1.3版本的开发板

随遇而安1992 2020-7-10 11:49

whik: 工程能分享一下吗?
已上传云盘

whik 2020-7-9 17:51

工程能分享一下吗?
相关推荐阅读
随遇而安1992 2020-07-23 13:41
【SHT31智能小表】SHT31与SHT35一致性对比
本来想引出SHT31的引脚出来用其他板子来读取温湿度,一直没有成功,刚好实验室有个SHT35的温湿度记录仪,索性就来对比一下他俩的一致性,测试地点选在办公室,避免空调风直接吹到,并且将SHT35的探头...
随遇而安1992 2020-07-10 20:04
【SHT31智能小表】板子上手及精度测试
首先感谢盛思锐对本次试用提供样品支持,感谢面包板社区提供这次宝贵的试用机会!收到样品后第一时间开箱:包装正面包装背面(醒目的SHT31)打开之后1.主板一枚;2.说明书一份;3.底板一块;掰开底板插入...
随遇而安1992 2020-06-14 22:52
【富芮坤物联网开发板评测】1.4版SDK演示与天猫精灵的初次交互
首先,感谢富芮坤提供这次机会让我体验这个FR8016开发板,我收到的是一块1.4版本的板子;跟1.3稍微有些不同,其中OLED的驱动配置有改动,导致一开始烧录1.3版的演示固件一直发现显示不对,好在官...
广告
EE直播间
更多
我要评论
8
19
广告
关闭 热点推荐上一条 /6 下一条