566|5

409

帖子

1

资源

一粒金砂(中级)

【平头哥RVB2601创意应用开发】网络天气时钟 [复制链接]

本帖最后由 xinmeng_wit 于 2022-5-15 21:56 编辑

网络天气时钟

 

 

作者:xinmeng_wit

 

  • 项目背景

RVB2601开发板板上外设资源除了基本的led,按键,OLED之外,还有音频输入输出和WiFi功能。有了WiFi的加持,使这款开发板很容易开发联网类的应用。由此想到了之前一直想做但是没有做的桌面天气摆件——网络天气时钟。用RVB2601开发板来实现网络天气时钟其实是非常合适的,毕竟不用外接WiFi模块,省掉了外部接线的麻烦,基本不用外接任何器件就能实现功能。

  • 作品简介

本作品的定位是桌面电子小摆件,主要功能是显示日历、实时时间、实时天气和未来天气。上电自动联网对时,无需手动调节,上电默认显示实时时间,可以通过板载的两个按键进行时间与天气的的切换(单击KEY2进行上翻页,单击KEY1进行下翻页)。另外,作品还支持城市的设置,长按KEY1进入设置页面,使用单击KEY1,KEY2进行光标移动,选择好城市以后长按KEY2确定,自动退出设置页面回到正常页面。板载RGB灯红绿蓝交替闪烁指示程序的运行。

 

IMG_20220515_162150.jpg

 

 

IMG_20220515_162123.jpg

 

 

IMG_20220515_210209.jpg


  • 系统框图

本作品全部使用板载资源,主控为CH2601WiFi芯片w800与主控之间采用SPI进行通讯;显示部分与主控之间也是通过SPI的方式进行通讯;剩下的led和按键直接就是GPIO驱动。

 

1.jpg

 


  • 各部分功能说明和解析

总体上功能并不复杂,总结下来主要分为如下几个部分:


  1. Wifi通讯部分

Wifi通讯部分主要负责网络连接、NTP对时和天气消息的获取,在软件里面是单独的一个task,专门负责处理网络相关的任务。该task有几个比较重要的模块:按键检测和天气数据的获取/解析/发送。

按键的检测移植了开源库Multi Button,注册了板载两个按键的单击和长按事件。单击实现上下翻页,长按实现进入设置和退出设置。

 

2.jpg 天气数据的解析,使用了到了开源库cJSON,使用cJSON库确实会带来很大的方便,但同时会带来RAM的开销,对于RAM不是很够的MCU不建议使用。天气数据的处理,主要包含几个函数:

3.jpg

 

4.jpg

 

2、OLED显示部分

显示部分也是单独的task,只负责显示,不参与任何检测和控制。显示部分通过消息队列接收消息进行显示。

5.jpg

 

另外,为了能够显示比较复杂的内容或者图形等,移植了GUI开源库u8g2u8g2内置很多的字符和图形接口,直接调用,非常方便,而且还支持中文的显示,但是中文的显示并不支持所有汉字,所以如果要显示汉字还需要制作汉字库。汉字库的制作方法可以参考网站上其它网友的方法,不在这篇讨论的范围内。

为了能够一目了然地显示天气状态,特意制作了十几种天气图标,这些图标都做成统一大小(48*48)的位图,并用工具取模保存为数组,显示的时候根据天气状态调用对应的图标。

6.jpg 天气中文的显示与图标一样通过数组偏移量的方法来匹配:

7.jpg

 

3、LedRTC部分

led的显示是在天气task里面附带做的,红绿蓝交替亮灭,间隔时间为1s

RTC的获取和显示的任务是在AOS软件定时器回调函数里面做的,软件定时器的周期是1s,也就是每一秒取一次硬件RTC的数据然后显示。

8.jpg

4、按键处理部分

按键部分是个回调事件已在上面介绍过了,这里不再赘述。


  • 作品源码

源代码:http://download.eeworld.com.cn/detail/xinmeng_wit/623572

 

视频演示


  • 项目总结

首次使用平头哥的芯片和开发板,收获颇多。在这个项目中,了解和学习了AOS,知道了什么是yoc,熟悉了平头哥芯片的开发环境和开发流程。

对于项目本身,完成了基本功能,实现了时间日期的显示,实时天气的显示,未来天气的显示,城市的设置。但是,还有一些功能由于某些原因未能在本次项目中实现。

RVB2601的硬件资源其实还是比较可以的,包括了网络和音频,可以开发出很多有创意的产品,但是也有一些小小的不足,总结下来主要有如下几点:


  1. 开发板缺乏配套的文档,只能通过有限的几个例程取学习摸索,新手使用有点难度,上手时间长;

  2. 发布的软件包有很明显的问题,NTP的问题应该很多小伙伴都遇到了;

  3. CH2601芯片本身ram不够大,开发一些比较复杂的应用就会比较困难;

  4. 开发工具CDK不能准确定位错误的位置,导致查找错误会花很长的时间;

  5. 没有板载SD/USB接口,有点遗憾。

最后,再次感谢平头哥和EEWORLD提供这次机会,期待平头哥继续完善生态,发布更好的产品。

 

帖子链接:


  1. 开箱&运行Helloworld例程

http://bbs.eeworld.com.cn/thread-1194780-1-1.html


  1. 板载RGB灯控制

http://bbs.eeworld.com.cn/thread-1195852-1-1.html


  1. wifi网络通信

http://bbs.eeworld.com.cn/thread-1198791-1-1.html


  1. cJSON获取天气信息

http://bbs.eeworld.com.cn/thread-1199757-1-1.html


  1. OLED显示天气信息

http://bbs.eeworld.com.cn/thread-1200949-1-1.html


  1. 网络天气时钟草版

http://bbs.eeworld.com.cn/thread-1201832-1-1.html

 

网络天气时钟.doc (13.97 MB, 下载次数: 2)


回复

12

帖子

2

资源

一粒金砂(中级)

论坛大神就是多。创意很好。不知道能不能使用普通led显示屏来做,那样的话,范围会更加的广泛。

点评

只要能显示就可以  详情 回复 发表于 2022-5-16 12:13

回复

409

帖子

1

资源

一粒金砂(中级)

云淡风轻12 发表于 2022-5-15 22:11 论坛大神就是多。创意很好。不知道能不能使用普通led显示屏来做,那样的话,范围会更加的广泛。

只要能显示就可以


回复

5381

帖子

18

资源

五彩晶圆(中级)

谢谢分享!

个人签名

默认摸鱼


回复

154

帖子

0

资源

一粒金砂(中级)

AOS软件定时器是如何实现年、月、日、时、分和秒的获取的呢?

点评

在AOS软件定时器中断里面取读取硬件RTC的数据,硬件RTC的数据是包含年月日时分秒的。  详情 回复 发表于 2022-5-29 13:04

回复

409

帖子

1

资源

一粒金砂(中级)

梦溪开物 发表于 2022-5-29 10:41 AOS软件定时器是如何实现年、月、日、时、分和秒的获取的呢?

在AOS软件定时器中断里面取读取硬件RTC的数据,硬件RTC的数据是包含年月日时分秒的。


回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/8 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表