23浏览
查看: 23|回复: 0

[Micropython] 尝鲜DFRobot ESP32-C5开发板,LVGL Micropython性能检测体验

[复制链接]
本帖最后由 PY学习笔记 于 2025-8-27 16:55 编辑

近期,DFRobot 推出了全新开发板 FireBeetle 2 ESP32-C5。这块开发板搭载了 ESP32-C5 主控,集成 支持5GHz的Wi-Fi6(意思为可以连接5G网络),凭借强劲性能,令人眼前一亮。很荣幸能抢先体验这块开发板!
1.开发板介绍
FireBeetle 2 ESP32-C5有很多外设:
  • Type-C:USB接口
  • Charge:充电指示灯

    • 熄灭:未接入电源或已充满
    • 常亮: 充电中

  • 15/D13:板载LED引脚
  • RST:复位按键
  • 28/BOOT:IO28引脚/BOOT按键
  • BAT:锂电池接口,支持3.7~4.2V
  • lO1:电池电压检测引脚
  • 3V3_C:IO0控制3.3V电源输出,默认关闭,可高电平开启。
  • GDI:GDI显示屏接口
  • ESP32-C5:型号为ESP32-C5-WROOM-1模组

2.micropython烧录
在上一篇《尝鲜DFRobot ESP32-C5开发板,玩转LVGL Micropython》的基础上添加了性能检测的效果,根据上一篇烧录即可。
3.正式体验
请先修改screen.py提高性能:
  1. import lcd_bus
  2. from micropython import const
  3. import machine
  4. import lcd_utils
  5. # 创建SPI总线对象
  6. spi_bus = machine.SPI.Bus(
  7.     host=1,
  8.     mosi=24,
  9.     miso=25,
  10.     sck=23,
  11. )
  12. # 创建显示屏的SPI通信对象
  13. display_bus = lcd_bus.SPIBus(
  14.     spi_bus=spi_bus,
  15.     freq=40000000,
  16.     dc=8,
  17.     cs=27,
  18. )
  19. import ili9488
  20. import lvgl as lv
  21. import task_handler
  22. # 创建显示屏对象
  23. display = ili9488.ILI9488(
  24.     data_bus=display_bus,
  25.     display_width=320,
  26.     display_height=480,
  27.     backlight_pin=15,
  28.     reset_pin=26,
  29.     reset_state=ili9488.STATE_LOW,
  30.     color_space=lv.COLOR_FORMAT.RGB888,
  31.     color_byte_order=ili9488.BYTE_ORDER_RGB,
  32.     rgb565_byte_swap=True,
  33. )
  34. import i2c
  35. import task_handler
  36. import gt911
  37. # 初始化显示屏
  38. display.init()
  39. # 定义触摸屏的I2C通信参数
  40. i2c_bus = i2c.I2C.Bus(host=0, scl=10, sda=9, freq=400000, use_locks=False)
  41. print(i2c_bus.scan())
  42. touch_dev = i2c.I2C.Device(bus=i2c_bus, dev_id=0x5D, reg_bits=gt911.BITS)
  43. # 创建触摸屏设备对象
  44. indev = gt911.GT911(touch_dev)
  45. # 如果未校准,则进行校准
  46. #indev.calibrate()
  47. #indev._cal.mirrorX = False
  48. #indev._cal.mirrorY = True
  49. #indev._cal.save()
  50. # 启用输入优先级
  51. indev.enable_input_priority()
  52. # 旋转显示
  53. display.set_rotation(lv.DISPLAY_ROTATION._270)
  54. # 打开屏幕背光(实战派ESP32C3是相反的)
  55. display.set_backlight(1)
  56. th = task_handler.TaskHandler(duration=1)
复制代码

然后再次运行上一篇《尝鲜DFRobot ESP32-C5开发板,玩转LVGL Micropython》的程序会看到画面不动基本在100FPS左右。
尝鲜DFRobot ESP32-C5开发板,LVGL Micropython性能检测体验图6
尝鲜DFRobot ESP32-C5开发板,LVGL Micropython性能检测体验图7
尝鲜DFRobot ESP32-C5开发板,LVGL Micropython性能检测体验图8
接着我又写了两个无需触摸的代码:
  1. import lvgl as lv
  2. import screen
  3. scr = lv.screen_active()      # 获取当前活动屏幕
  4. obj = lv.obj(scr)
  5. obj.remove_flag(lv.obj.FLAG.SCROLLABLE)
  6. obj.set_style_bg_color(lv.palette_main(lv.PALETTE.RED), 0)
  7. obj.set_style_radius(lv.RADIUS_CIRCLE, 0)
  8. obj.align(lv.ALIGN.LEFT_MID, 10, 0)
  9. # size 动画:通过 key = "size" 实现
  10. a1 = lv.anim_t()
  11. a1.init()
  12. a1.set_var(obj)
  13. a1.set_values(10, 100)
  14. a1.set_duration(2500)
  15. a1.set_reverse_delay(250)
  16. a1.set_reverse_duration(300)
  17. a1.set_repeat_delay(500)
  18. a1.set_repeat_count(lv.ANIM_REPEAT_INFINITE)
  19. a1.set_path_cb(lv.anim_t.path_ease_in_out)
  20. a1.set_custom_exec_cb(lambda a,val: obj.set_size(val,val))
  21. a1.start()
  22. # x 坐标动画:通过 key = "x" 实现
  23. a2 = lv.anim_t()
  24. a2.init()
  25. a2.set_var(obj)
  26. a2.set_values(10, 380)
  27. a2.set_duration(2500)
  28. a2.set_reverse_delay(250)
  29. a2.set_reverse_duration(300)
  30. a2.set_repeat_delay(500)
  31. a2.set_repeat_count(lv.ANIM_REPEAT_INFINITE)
  32. a2.set_path_cb(lv.anim_t.path_ease_in_out)
  33. a2.set_custom_exec_cb(lambda a,val: obj.set_x(val))
  34. a2.start()
复制代码
  1. import lvgl as lv
  2. import math,screen
  3. scr = lv.screen_active()
  4. # -------------------------------------------------
  5. # 工具:角度 -> 方位字符串
  6. # -------------------------------------------------
  7. def heading_to_cardinal(heading: int) -> str:
  8.     h = heading % 360
  9.     if   h < 23:  return "N"
  10.     elif h < 68:  return "NE"
  11.     elif h < 113: return "E"
  12.     elif h < 158: return "SE"
  13.     elif h < 203: return "S"
  14.     elif h < 248: return "SW"
  15.     elif h < 293: return "W"
  16.     elif h < 338: return "NW"
  17.     else:         return "N"
  18. # -------------------------------------------------
  19. # 创建 scale(罗盘)
  20. # -------------------------------------------------
  21. scale = lv.scale(scr)
  22. scale.set_size(200, 200)
  23. scale.set_mode(lv.scale.MODE.ROUND_INNER)
  24. scale.align(lv.ALIGN.CENTER,0,0)
  25. scale.set_total_tick_count(61)
  26. scale.set_major_tick_every(5)
  27. scale.set_style_length(5, lv.PART.ITEMS)
  28. scale.set_style_length(10, lv.PART.INDICATOR)
  29. scale.set_style_line_width(3, lv.PART.INDICATOR)
  30. scale.set_range(0, 360)
  31. custom_labels = ["N", "30", "60", "E", "120", "150",
  32.                  "S", "210", "240", "W", "300", "330", ""]
  33. scale.set_text_src(custom_labels)
  34. scale.set_angle_range(360)
  35. scale.set_rotation(270)
  36. # -------------------------------------------------
  37. # 中心文字标签
  38. # -------------------------------------------------
  39. label = lv.label(scr)
  40. label.set_width(100)
  41. label.align(lv.ALIGN.CENTER,0,0)
  42. label.set_text("0°\nN")
  43. label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
  44. # -------------------------------------------------
  45. # 红色箭头符号
  46. # -------------------------------------------------
  47. symbol = lv.label(scale)
  48. symbol.align(lv.ALIGN.TOP_MID, 0, 5)
  49. symbol.set_text(lv.SYMBOL.UP)
  50. symbol.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
  51. symbol.set_style_text_color(lv.palette_main(lv.PALETTE.RED), 0)
  52. # -------------------------------------------------
  53. # 动画:旋转罗盘
  54. # -------------------------------------------------
  55. def set_heading_value(_, v):
  56.     scale.set_rotation(270 - v)
  57.     label.set_text(f"{v}°\n{heading_to_cardinal(v)}")
  58. anim = lv.anim_t()
  59. anim.init()
  60. anim.set_var(scale)
  61. anim.set_custom_exec_cb(lambda _, v: set_heading_value(None, v))
  62. anim.set_duration(5000)
  63. anim.set_repeat_delay(500)
  64. anim.set_repeat_count(lv.ANIM_REPEAT_INFINITE)
  65. anim.set_reverse_duration(5000)
  66. anim.set_reverse_delay(500)
  67. anim.set_values(0, 360)
  68. anim.start()
复制代码

第一个基本在50~130FPS(差距很大的原因是动画又慢有快)之间,而第二个很奇怪调了很久还是3~4FPS:
尝鲜DFRobot ESP32-C5开发板,LVGL Micropython性能检测体验图9
尝鲜DFRobot ESP32-C5开发板,LVGL Micropython性能检测体验图10
PS:CPU为0%一直没有解决,遇到的朋友不用担心,不会有问题的


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail