MicroPython[ESP32-S3]:LVGL显示GIF+http request显示哔哩哔哩粉丝计数

bilibili-视频演示

点击本文字,打开哔哩哔哩APP

NO.1
本期功能

以下内容

  1. LVGL显示GIF图片

  2. HTTP GET请求API获取哔哩哔哩当前粉丝数

旧图展示

img

NO.2
GIF文件传输

参考文档

MicroPython 工具 Ampy:给ESP32传送JPG,GIF等文件

本期内容对应视频会演示流程

NO.3
显示GIF

旧的GIF仅供参考,现在有更好的显示方式

哔哩哔哩粉丝计数器:设置ESP32显示GIF动画

现在使用新的LVGL方法显示

官方文档

https://docs.lvgl.io/8.3/libs/fsdrv.html#usage

LVGL 有一个文件系统模块,为各种文件系统驱动程序提供抽象层

引入文件驱动,设置存储标识为S

# 导入LVGL文件系统import fs_driverfs_drv = lv.fs_drv_t()fs_driver.fs_register(fs_drv, 'S')

下载gif动图

img

使用ampy传输文件到ESP32—S3

img

查看ESP32-S3文件,说明传输成功

img

设置GIF

官方文档

https://docs.lvgl.io/8.3/libs/gif.html

# 设置哔哩哔哩gifgif_bilibili = lv.gif(scr)gif_bilibili.set_src("S:bilibili.gif")gif_bilibili.set_x(50)gif_bilibili.set_y(120)

img

设置fans文案

注意,为了动态显示粉丝数,特别把数字部分拆分开了

# 显示粉丝文案label_fans = lv.label(scr)label_fans.set_text("bilibili fans:")label_fans.set_x(120)label_fans.set_y(135)
# 显示粉丝数label_fans_num = lv.label(scr)label_fans_num.set_text("0")label_fans_num.set_x(210)label_fans_num.set_y(135)

img

NO.4
HTTP GET

使用HTTP GET请求,请求哔哩哔哩粉丝数API

然后用定时器定时请求并刷新粉丝数文案

文档地址

https://makeblock-micropython-api.readthedocs.io/en/latest/public_library/Third-party-libraries/urequests.html

github地址

https://github.com/micropython/micropython-lib/blob/master/python-ecosys/urequests/urequests.py

注意事项

如果提示没有urequests这个模块,就需要gthub下载对应的文件,然后保存到ESP32-S3的存储中

NameError(“name ‘urequests’ isn’t defined”,)

引入依赖

import urequests

设置HTTP GET请求

哔哩哔哩API

http://api.bilibili.com/x/relation/stat?vmid=你的id

# HTTP GET获取粉丝def http_fans():    try:        print("http获取粉丝")        response = urequests.get('http://api.bilibili.com/x/relation/stat?vmid=31238770')        parsed = response.json()        print("parsed",parsed)        fans_num_str=str(parsed["data"]["follower"])        label_fans_num.set_text(""+fans_num_str)    except Exception as e:        print("http请求错误",repr(e))http_fans()

获取的请求结果

img

更新的结果

img

设置定时器

10分钟更新一次

注意事项,这个API不是官方提供的,所以要控制频率(况且小V一天也没有几个涨粉)

tim11 = Timer(11)# 10分钟执行一次tim11.init(period=1000*60*10, mode=Timer.PERIODIC, callback=lambda t:http_fans())
NO.5
Tips

到此为止,哔哩哔哩粉丝计数功能完成

总结如下

  1. 需要把GIF图片传输到ESP32-S3

  2. 使用LVGL文件系统+GIF API显示GIF图片(不需要转码)

  3. 使用urequests发送HTTP GET请求哔哩哔哩API获取粉丝数

  4. 设置定时器,控制请求频率,10分钟一次,更新粉丝数字文字显示

END