使用esp32与LVGL实现一个每日一句
硬件:
主控: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。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。