使用esp32与LVGL实现一个每日一句

此篇文章在2022年3月13日被记录

硬件

主控:esp32

屏幕:ili9341@40Mhz

软件开发环境:esp32-idf

UI界面:LVGL

实现方式:

1、在天行数据网申请应用,会得到一个key,在浏览器访问这个特定的网址与key,浏览器会返回一串json数据,其中包含我们所需要的显示的数据。

2、使用esp32中的http client demo进行测试,其中在头文件中定义:

    #define WEB_SERVER "api.tianapi.com"
    #define WEB_URL "/tiangou/index?key="
    #define APIKEY     "996ab2924dd38412a3d1bd98a00b426f"
    static const char *REQUEST = "GET " WEB_URL "" APIKEY " HTTP/1.1\r\n"
                                 "Host: " WEB_SERVER "\r\n"
                                 "Connection: close\r\n"
                                 "\r\n";

其中的REQUEST就是我们需要需要访问的链接,访问方式为GET,进行多次测试,可以正常返回数据。

3、使用最适用于嵌入式的LVGL界面作为显示工具:需要实现:在第一个页面,点击扫描函数可以在下拉框中更新附近的wifi名称,然后在密码输入框中输入wifi密码,点击回车按键进行连接。

4、wifi连接成功后进行到下一个页面,通过点击按钮进行http访问,在主页面显示数据。

5、根据自己的喜好添加动画效果。

实现这些需要知道的知识:控件制作、动画制作、UTF-8显示、动画显示、HTTP访问等。

目前还存在的问题,lvgl是非抢占式的UI界面,现在制作完成之后有时候wifi连接不成功或者http获取不成功,可能需要加上操作系统中的线程锁,即在运行lvgl主要任务完成后在进行连接wifi于http获取等任务,总体来说学无止境还需要学习。

演示视频在这里:

点击这里跳转到哔哩哔哩主站
不得不说,idf所需要的编程能力与专业理论比较高,怀念简单好用的arduino。

posted @ 2024-12-09 16:22  shumei52  阅读(77)  评论(0)    收藏  举报