1 Star 2 Fork 2

XuKaiSheng / OpenHarmony_LVGL8.3

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Smart-Timekeeper

题目标题: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 具有以下特点:

  1. 轻量级:LVGL 使用纯 C 语言编写,不依赖任何外部库,因此非常适合在资源受限的嵌入式设备上使用。

  2. 灵活性:LVGL 提供了丰富的 UI 组件和图形效果,开发者可以根据自己的需要进行定制化设置,实现个性化的界面设计。

  3. 可移植性:LVGL 支持多种操作系统和平台,包括 Linux、Windows、macOS、FreeRTOS、Arduino 等,具有很好的可移植性。

项目目标

本项目名称为 Smart-Timekeeper(智能时间守护者),最终目标为实现在 LCD 屏幕上利用 lvgl 图形库打造一个智能产品,拥有实时时钟,温度显示等功能。

  1. 实现 LVGL 移植到 OpenHarmony 系统上
  2. 完成 LVGL 驱动 LCD 屏幕,并实现简单的显示
  3. 可自动更新当前中国时间
  4. 显示当前环境体感信息
  5. 配合其余外设,完成一个物联网的屏幕产品

成果展示

工程源码: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 操作系统上作为三方库,进行项目的应用开发。

project_struct

project_struct

项目创新

  1. 首次在 OpenHarmony 轻量化系统上使用 LVGL 库,可以创造更多的轻量级设备屏幕类产品
  2. 对 LVGL 库进行解耦处理,便于轻量化设备开发屏幕,对新手更加友好;与此同时,applications 子系统下的模块管理以及 BUILD 编译文件的设计可以为新手树立软件工程规范的典范
  3. 本项目不仅使用I2C 类屏幕开发(https://ost.51cto.com/posts/22444),还使用了 SPI 类屏幕进行开发,拓展了 OpenHarmony 系统的屏幕开发途径,给予 OpenHarmony 新手更多的学习路径
  4. 本项目还针对了 OpenHarmony 教学工作进行拓展性开发,针对 Hi3861 教学开发板设计了 LVGL 的模块,便于 Hi3861 开展 LVGL 教学工作imag
  5. 拓展 LVGL 显示界面,为操作系统教学提供 LVGL 的 UI 开发途径
  6. 结合 WIFI、温度传感器等外围功能,通过wifi提供当前中国时间,温湿度传感器提供当前环境体感信息,实现更加智能的 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同步中国时间
加入温度传感器实现温度显示 实现温湿度显示

后续工作 & 未来期望

  • 优化代码工程,模块化代码
  • 实现流畅的帧率
  • 优化 UI 界面,关注以人为本的客户需求,可用性、逻辑性更强
  • 实现 WIFI 功能可视化,屏幕显示 WIFI STA/AP 开关,WIFI 名称以及 IP
  • 通过 WIFI 获取当地天气、时间等信息,将信息展示在屏幕
  • 加入更多的外围功能:蜂鸣器、温度传感器等,实现显示室内温度等功能

文件目录

├─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配置文件

技术细节

技术文档

  1. LVGL 移植前学习工作
  2. LVGL 移植工作
  3. 完成 SPI 的 LCD 屏幕驱动
  4. 移植 lvgl 适配 LCD 屏幕并显示图像
  5. 提高 LCD 屏幕的刷新速率
  6. lvgl 按键输入适配
  7. PCB 设计
  8. 设计完整的时钟 UI
  9. 工程结构设计及 GUI 代码移植
  10. SNTP开发
  11. 温湿度传感器开发

设计思路

  1. 移植 LVGL 库
  2. 移植 SPI 屏幕驱动,并对 LVGL 进行适配
  3. 提高屏幕刷新速率
  4. 加入 ADC 按键,给 LVGL 适配输入设备
  5. 做 LVGL 的 UI 界面
  6. 加入其余外围设备以及 WIFI 功能,丰富屏幕可显示功能

硬件连接

GPIO10 <---------> SCK

GPIO9 <---------> SDA

GPIO13 <---------> RST

GPIO14 <---------> DC

GPIO5 <---------> CS

GPIO7 <---------> BLK

GPIO12 <---------> BUTTON

GPIO0 <--------->AHT20_SDA

GPIO1 <--------->AHT20_SCL

GPIO2 <--------->PWM

问题& 解决

刷新率低,掉帧严重

LVGL 帧率优化

LVGL 编译错误

报错:lv_theme_default.c未定义lv_win_class。在 lvgl 工程里,lv_win.h里面已经将lv_win_classextern了,但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

空文件

简介

2023全国大学生计算机系统能力大赛操作系统设计赛-功能挑战赛proj263 基于OpenHarmony轻量系统的智能时钟项目 内包含SPI驱动(ST7735S)以及LVGL图形库 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/KaiSheng_Xu/open-harmony_-lvgl8.3.git
git@gitee.com:KaiSheng_Xu/open-harmony_-lvgl8.3.git
KaiSheng_Xu
open-harmony_-lvgl8.3
OpenHarmony_LVGL8.3
master

搜索帮助