设计一个基于AiPi-Eye-S1的气象站
扫描二维码
随时随地手机看文章
2. 工作描述
2.1硬件
硬件采用AiPi-Eye-S1开发板和3.5英寸240*320像素电容触摸屏。在日常使用中,设备通过开发板上的type-c接口通过USB线供电。使用USB转TTL工具下载程序。
2.2软件
①开发环境我使用VSCode在Windows环境下开发项目。
②UI设计本项目使用LVGL图形库和相应的辅助开发工具SquareLine Studio进行界面设计和C代码生成。
③天气信息获取本项目利用易客云天气提供的免费天气API,获取当前区域的七天基本天气和实时基本天气。由于在请求数据时使用用户ID和键参数,因此需要进行帐户注册。
本项目方案参考官方气象站实例(master·Ai-Thinker-Open/AiPi-Open-Kits·GitHub中的AiPi-Open-Kits/AiPi-Eyes_weather),其总体实现思路如下:
系统初始化
基于FreeRTOS创建多个任务
(1) wifi_mainWiFi运行任务;
(2) lvgl_taskRun LVGL实现触摸屏显示和触摸功能。当网络连接条件触发时,将WiFi名和密码数据发送到队列;
(3)通过串口显示bl61x_show_heap_size_taskPrint内存使用情况(波特率设置为2000000);
(4) queue_task对队列数据进行分析处理,并执行相应的程序。任务之间的通信基于队列。
目前,该任务处理的队列数据包括以下4种类型:
a. WiFi名密码数据->数据存储,WiFi连接,WiFi连接成功时将WiFi连接成功数据发送到队列;
b. WiFi连接成功数据->创建https_get_weather_taska任务获取时间和天气信息;
c.未来七天天气数据->更新屏幕显示内容;
d.基本实时天气数据->更新屏幕显示内容。
(5) https_get_weather_task通过https获取未来7天的天气和基本实时天气。采集成功后,相应的数据将被发送到队列中。该任务使用一个定时器http_timers设置数据采集的频率。
3. 使用说明
3.1固件烧录
环境配置完成后,需要进行以下操作。
①程序编译
打开项目根目录下的终端,输入“make”
如果没有错误,最后将显示如下内容
②固件燃烧
在终端中输入make flash COMX=COMxxxx,其中xx为实际连接的下载程序的COM端口号。在下图中,COM端口为20。
按提示按复位键烧录
3.2网络配置和天气账号
(1)在网络配置菜单中输入需要连接的WiFi名称和密码。
(2)在天气账号菜单中注册“易似云天气”后,输入个人的appid和appsecret。
(3)单击“连接”按钮。如果配置正确,您将被重定向到以下接口。
3.3接口切换
在主界面中,单击下图所示的对应区域,可切换到对应界面。
在子界面中,点击底部按钮,切换到主界面。
本文编译自hackster.io