前几天不是刚发布小安派Eyes-S1/S2两款开源的板子,于是就有大佬问了,我们那两款板子怎么玩?
小安派Eyes是一款带触摸屏+音频+摄像头的一款开发板,最近刚好桌面少了个摆件,我就打算先从最容易也最有意思的屏幕下手,搞一个天气站。
一、功能分析
我这里使用的UI上位机是NXP的GuiGuider软件,官方下载地址:https://www.nxp.com.cn/design/so ... i-guider:GUI-GUIDER
也可以到本文尾部连接下载资料包,里面有GuiGuider 软件及本次项目的GuiGuider 工程。
二、Gui Guider模拟运行结果
三、UI 代码移植
1.文件移植
因为在此之前,我们已经把屏幕和触摸的驱动写好了,并且在LVGL 下测试成功,所以本文不会介绍Lvgl 的移植。Gui Guider 在成功运行之后,才会生成最新的UI代码。需要移植的程序代码如下:
以上连个文件夹复制到工程的UI位置:Ai-Pi_Eeys/demos/240X320_ui。
因为M6X_SDK中的Lvgl没有dclock 时钟组件,所以也要把dclock 移植到SDK当中。dclock的目录如下:M6x_Eyes\lvgl\src\extra\widgets
把整个dclock文件夹复制到:Ai-Pi_Eeys\aithinker_Ai-M6X_SDK\components\graphics\lvgl\extra\widgets目录下。
2.代码修改
1)工程添加UI代码
只需要在CMakeLists.txt 中添加以下内容:
然后在main.c中引用gui_guider.h和custom.h,并定义lv_ui全局变量,且使用setup_ui() 函数进行初始化:
2)HTTPS GET请求及时间获取
然后随手把HTTPS请求天气的逻辑实现一下,大概就是写一个HTTPS的客户端,然后发送请求,时间可以在响应头中获取,Date参数中获取,北京时间只要把小时+8就OK,比如:
天气情况获取,我们这里使用的是天气API的免费未来七天天气接口:http://www.tianqiapi.com/index/doc?version=week
请求数据如下:
所以天气站最高可以显示未来七天的天气情况,我们只显示未来三天的数据。
3)WiFi 连接功能
天气站使用的屏幕是电容触摸屏,所以可以通过触摸输入WiFi 名称及密码连接WiFi。当我们输入完成后,点击确定按钮即可触发WiFi连接,天气站在连接成功WiFi之后,会保存当前的路由信息,下次重启时可以自动连接这次的WiFi。按钮的点击事件及读取输入的WiFi名称及密码代码:
四、实际运行
五、总结
个人觉得这个花了一天开发出来的天气站单纯从界面还是可以的,它就是少了个美丽的外壳。个人的想法有限,不知道大家有什么好的想法,说不定我们可以帮你实现呢? 
|