基于小安派AiPi-Eye-S1的天气站设计

描述

小安派开源硬件,你的体验到哪一步了?有大佬@灰太狼在B站和安信可社区发布了基于小安派AiPi-Eye-S1的天气站,来看看过程~

02.作品说明

2.1硬件部分

硬件上使用到了AiPi-Eye-S1开发板以及3.5寸 240*320像素的电容触摸屏,日常使用USB线通过开发板上的typec接口为设备进行供电。使用USB转TTL工具进行程序下载。

 

2.2软件部分

①开发环境
个人是在Windows环境下使用VSCode进行项目的开发,具体的环境搭建过程可参考论坛中的帖子:【零基础搭建小安派Windows 开发环境】

触摸屏

②UI设计
本项目使用了LVGL图形库,使用相应的辅助开发工具SquareLine Studio来进行界面设计与C代码生成。

触摸屏

③天气信息获取
本项目使用易客云天气提供的免费天气API接口来获取当前地区基础七日天气与基础实况天气。由于请求数据时使用到用户ID与密钥参数,因此需要进行账号注册。

触摸屏

④程序设计思路
本项目程序参考了官方给的天气站示例(AiPi-Open-Kits/AiPi-Eyes_weather at master · Ai-Thinker-Open/AiPi-Open-Kits · GitHub),其整体的实现思路如下:

系统初始化

基于FreeRTOS创建多个任务
(1) wifi_main Wi-Fi运行任务;
(2) lvgl_task 运行LVGL,实现触摸屏显示与触摸功能,当触发网络连接条件时,会向队列中发送WiFi名称密码数据;
(3) bl61x_show_heap_size_task 通过串口打印内存占用情况(设定波特率为2000000);
(4) queue_task分析处理队列数据,执行相应程序。各任务间的通信是基于队列实现的,目前该任务处理的队列数据包含以下4种:
  a.Wi-Fi名称密码数据 -> 数据保存,进行Wi-Fi连接,Wi-Fi连接成功会向队列中发送Wi-Fi连接成功数据;
  b.Wi-Fi连接成功数据 -> 创建https_get_weather_task任务来获取时间、天气信息;
  c.未来七日天气数据 -> 更新屏幕显示内容;
  d.基础实况天气数据 -> 更新屏幕显示内容。
(5) https_get_weather_task 通过https获取未来七日天气及基础实况天气,成功获取后将向队列中发送相应数据。任务通过定时器http_timers来设定数据获取的频率。

03.固件烧录

3.1 固件烧录

以下操作需要再环境配置完成后进行。
①程序编译
在项目根目录下打开终端,输入make。

触摸屏

如无错误,最终会显示以下内容。

触摸屏

②固件烧录
在终端中输入make flash COMX=COMxx 其中xx为实际连接的下载器的COM口号,如下图中COM口为20。

触摸屏

触摸屏

根据提示按下复位按钮,进行烧录。

触摸屏

3.2 网络配置与天气账号

(1)在网络配置菜单中输入要连接的WiFi名称及密码。

触摸屏

(2)在天气账号菜单中输入注册易客云天气后个人的appid与appsecret。

触摸屏

(3)点击连接按钮,若配置正确,则会跳转到以下界面。

 

04.说明

4.1界面切换说明

在主界面下点击下图所示的对应区域,可切换至相应界面,在子界面下触摸底部按钮可切换至主界面。

 

4.2其他说明

需要注意的是,如果长时间运行,会因http服务器连接问题偶然出现卡死的问题,正尝试进行解决......

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分