小安派开源硬件,你的体验到哪一步了?有大佬@灰太狼在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服务器连接问题偶然出现卡死的问题,正尝试进行解决......
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !