题目标题:proj263-lvgl_for_openharmony
题目内容:将 LVGL 库移植到 OpenHarmony 轻量系统
题目链接:https://github.com/oscomp/proj263-lvgl_for_openharmony
难度:中等
LVGL(Light and Versatile Graphics Library)是一个 C 语言编写的免费的开源图形库,提供了用于嵌入式 GUI 的各种元素。用户可以利用丰富的图形库资源,在消耗低内存的情况下构建视觉效果丰富多彩的 GUI。它提供了一套丰富的 UI 组件和图形效果,可以帮助开发者快速构建交互式的嵌入式图形界面。 LVGL 具有以下特点:
轻量级:LVGL 使用纯 C 语言编写,不依赖任何外部库,因此非常适合在资源受限的嵌入式设备上使用。
灵活性:LVGL 提供了丰富的 UI 组件和图形效果,开发者可以根据自己的需要进行定制化设置,实现个性化的界面设计。
可移植性:LVGL 支持多种操作系统和平台,包括 Linux、Windows、macOS、FreeRTOS、Arduino 等,具有很好的可移植性。
本项目名称为 Smart-Timekeeper(智能时间守护者),最终目标为实现在 LCD 屏幕上利用 lvgl 图形库打造一个智能产品,拥有实时时钟,温度显示等功能。
工程源码:Smart-TimeKeeper
初赛视频演示及工程讲解:链接:https://pan.baidu.com/s/1rp-zTmzo2ZKE-cE5FgiSpA?pwd=jji6 提取码:jji6
决赛功能简单展示:
<iframe height=1280 width=720 src="./doc/_resources/12.mp4">Smart-Timekeeper 项目整体上分为硬件架构构和软件架构。 硬件由润和 Hi3861 开发板作为主控,可以提供多种轻量级网络协议,轻量级的图形框架,以及丰富的 IOT 总线读写部件等。驱动各种外设硬件,ADC 按键实现输入交互,SPI 屏幕实现界面功能展示,以及其他传感器例如 pwm 蜂鸣器,II2 温度传感器等。 软件上搭载 OpenHarmony 轻量系统,使用于硬件资源较少的设备,版本为 OpenHarmony-3.1-release,通过系统提供丰富的外设计口用于各类硬件的驱动,通过移植 lvgl 到 OpenHarmony 操作系统上作为三方库,进行项目的应用开发。
目标情况 | 完成情况 | |
---|---|---|
第一阶段(基本功能) | 在 OpenHarmony 轻量系统上移植 LVGL 库 | 已完成,选择 OpenHarmony3.1 系统完成 LVGL 库移植 |
利用该库在 OLED 显示屏上显示 | 已完成,在 0.96 寸 OLED 单色屏幕完成显示 | |
显示简单的图形图像 | 已完成,在屏幕上显示 FSR 按钮 | |
第二阶段(优化) | 完成 SPI 的 LCD 屏幕驱动 | 已完成,选择 1.44 寸 LCD 屏幕 16bit 彩色完成显示 |
移植 lvgl 适配 LCD 屏幕并显示图像 | 已完成,使用 lvgl 显示简单的页面 | |
提高 LCD 屏幕的刷新速率 | 已完成,LCD 屏幕刷新率符合预期 | |
开发 lvgl 的输入功能,增加按键输入设备 | 已完成,并对此设计了三个按键以及屏幕的开发板 | |
设计完整的时钟 UI | 已完成,时钟可以正常显示 | |
工程结构设计及 GUI 代码移植 | 已完成,项目工程能正常编译运行并显示在 LCD 屏幕上 | |
第三阶段(拓展) | 加入蜂鸣器功能 | 已实现 PWM 驱动蜂鸣器 |
开发 LVGL 的 PCB 模块 | 已实现集成全部模块 | |
开发 wifi 网络功能 | 实现SNTP同步中国时间 | |
加入温度传感器实现温度显示 | 实现温湿度显示 |
├─doc //技术文档
├─Hardware //电路板设计图
├─lcd_st7735s //LCD屏幕的软SPI驱动
├─lcd_st7735s_spi //LCD屏幕的硬件SPI驱动
├─lvgl_lcd //LVGL第一版移植
└── smart_timekeeper //工程目录
├── app //主函数
├── custom //用户自定义API
├── drivers //设备驱动
│ ├── adc_key //按键输入驱动
│ ├── pwm_buzzer //蜂鸣器驱动
│ ├── spi_st7735s //显示屏驱动
│ ├── aht20 //温湿度传感器驱动
│ └── sntp //sntp获取时间驱动
├── generated //UI资源
│ ├── guider_customer_fonts
│ ├── guider_fonts
│ └── images
└── lvgl //LVGL库
├── demos
├── examples
└── src
└─lv_conf.h //LVGL配置文件
GPIO10 <---------> SCK
GPIO9 <---------> SDA
GPIO13 <---------> RST
GPIO14 <---------> DC
GPIO5 <---------> CS
GPIO7 <---------> BLK
GPIO12 <---------> BUTTON
GPIO0 <--------->AHT20_SDA
GPIO1 <--------->AHT20_SCL
GPIO2 <--------->PWM
报错:lv_theme_default.c
未定义lv_win_class
。在 lvgl 工程里,lv_win.h
里面已经将lv_win_class
extern了,但lv_theme_default.c
文件还是报错未定义lv_win_class
解决方案:
于是便直接在这个文件applications/sample/wifi-iot/app/lvgl/src/extra/themes/default/lv_theme_default.c
中加入
const lv_obj_class_t lv_win_class;
队名:“FSR”来自深圳技术大学,基本情况如下:
姓名 | 单位 | 联系方式 | |
---|---|---|---|
小组成员 1 | 黄耿斌 | 深圳技术大学大数据与互联网学院 | 2426284742@qq.com |
小组成员 2 | 许凯胜 | 深圳技术大学大数据与互联网学院 | 202100201105@stumail.sztu.edu.cn |
小组成员 3 | 卢怡沙 | 深圳技术大学大数据与互联网学院 | 3224185255@qq.com |
指导老师 | 李蒙(副教授) | 深圳技术大学大数据与互联网学院 | Limeng2@sztu.edu.cn |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。