STM32单片机项目实例:基于TouchGFX的智能手表设计(2)UI交互逻辑的设计

STM32单片机项目实例:基于TouchGFX的智能手表设计(2)UI交互逻辑的设计

目录

一、UI交互逻辑的设计

1.1 硬件平台的资源

1.2 界面切换功能

​​​​​​​1.3 表盘界面

1.4 运动界面

​​​​​​​1.6 设置界面

​​​​​​​1.7 应用界面


一、UI交互逻辑的设计

1.1 硬件平台的资源

STM32U5核心板采用STM32U575RIT6微控制器,基于32位Cortex-M33内核,运行频率可达160MHz,内部Flash容量为2MB,RAM容量786KB。核心板采用最小系统设计,板载16MB的Flash存储器,用于存储大容量数据,例如图片(分辨率240*320的16位彩色图片大小240*320*16=150KB)、升级的固件等等。供电端口采用USB TypeC接口,板载USB转UART芯片,用于ISP功能或串口调试。核心板提供复位、BOOT与用户按键,提供2.8寸电容触摸屏接口。核心板提供电源指示灯与运行指示灯(用户编程控制)。

 图 1-1 STM32U5核心板资源

  STM32开发板底板,支持5V电源适配器与TypeC供电。提供RTC时钟电源,提供三轴加速度与角速度传感器,用于姿态感知。板载ESP-12F无线模组,用于物联网云平台项目开发。提供1路五向按键,采用中断与A/D模式采样。提供1路有源蜂鸣器,1路2*17P扩展接口,用于资源扩展板的接入。核心板接口通过2.54mm间距的插针引出,方便用户外接其它设备。

图 1-2 STM32开发板底板

  电容触摸显示屏在很多智能设备上得到应用,提升了设备的交互感。在开发板套件中使用方型显示屏用来模拟圆形的一个手表项目。显示屏尺寸为2.8寸,分辨率320*240(RGB)。驱动IC采用ILI9341,自带172,800字节的 GRAM存储。电容触摸屏采用I2C接口,驱动IC采用FT6336G。

图 1-3 2.8寸显示屏

  资源扩展板提供基于I2C总线的温湿度传感器、环境光感知、心率/脉搏测量。基于模数转换接口的电压/电流采集。基于EXTI事件/中断控制类型的人体红外、光电开关、火焰感知传感器。基于SPI总线的数码管驱动电路。基于PWM控制的风扇、蜂鸣器、震动马达。基于GPIO的按键、LED指示灯。基于异步串行通信的485总线电平转换。基于控制器局域网总线的CAN电平转换等外设。资源扩展板主要用于微控制器入门外设的使用,硬件图纸原理以及项目案例的应用开发学习。

图 1-4 资源扩展板

  仿真器在单片机程序开发过程中起着重要的作用。通过仿真器,使开发者能够在计算机上运行和调试单片机程序,开发者可以逐步执行程序并观察变量的值、寄存器的状态以及程序的执行流程,从而快速发现和解决程序中的错误。推荐采用的仿真器:FS-DAP-Link或者ST-LINK V3.0,用于程序烧写和仿真调试。

图 1-5 华清远见DAP-Link/ST-Link仿真器

  基于TouchGFX的智能手表项目,硬件包含STM32U5核心板、底板、2.8寸显示屏、资源扩展板以及仿真器,进行智能手表的设计。手表主要功能包括健康监测、运动模式、环境检测、电池电量检测、RTC时钟、状态提醒、模式切换(运行/待机,LPBAM功能演示)和网络连接等功能。

​​​​​​​1.2 界面切换功能

  开发板套件包含了丰富的传感与控制资源,智能手表项目可以通过这些资源,实现许多有趣的功能。作为手表,时间的显示是必不可少的。项目设计了表盘页面,表盘界面主要负责时间的显示,除此之外,心率、步数、温度、日期等信息由于查看频率相对较高,且不需要太复杂的交互,在表盘页面上进行了这些信息的显示。

  运动功能是目前市面上的大部分智能手表的主打卖点之一,手表可以通过陀螺仪、心率传感器等等外设检测用户的运动状态与健康监测,并对其运动进行记录,符合现代人对健康的追求。因此本项目设计了运动模式页面。在该页面中,不同的运动功能以列表的形式展示。用户可以通过手指的上下滑动浏览不同的运动种类,且可以通过点击相应的运动图标切换到对应运动的记录页面。

  智能手表的应用程序很多,在项目中增加了应用页面,与实际手表不同的是,该页面下的应用程序主要用于UI控件的学习与使用。在该页面中,不同的应用程序图标以列表的形式展示。用户可以通过手指的上下滑动浏览不同的应用程序,且可以通过点击相应的应用程序图标切换到对应的应用程序页面。由于本项目为单片机裸机编程实现智能手表功能的项目,因此无法实现app的安装,在应用程序页面以操作不同的外设,实现对应用程序功能的模拟。

  在设置界面与工具页面,包含智能手表的常用小工具或快捷设置功能,在表盘页面通过物理按键的方式进行页面的切换。

  除此之外,需要设计在表盘页面、运动页面、工具界面、应用页面以及设置界面之间的切换方法。项目中使用开发板上的五向按键完成页面的切换。在表盘页面上按切换到应用界面,下按切换到设置页面;在应用程序中,通过五向按键的中间按键切换回应用界面。

图 1-6 基于TouchGFX的智能手表界面

​​​​​​​1.3 表盘界面

  智能手表的时间可以通MCU内部的RTC时钟功能产生,优点是成本低,缺点是时钟精度不高。也可以通过外置的RTC实时时钟芯片进行获取,缺点是成本会增加。在本项目中,采用STM32U575的内部RTC时钟功能与备份域寄存器,实现时间的设置与产生。

  项目中设计了两个时间显示的页面,分别是模拟时钟表盘页面与数字时钟表盘页面。这两种时钟表盘的设计是目前市面上绝大多数智能手表或传统手表采用的时间显示方法。采用左右滑动的方式进行表盘切换。

图 1-7 表盘界面

1.4 运动界面

  “智能可穿戴”这个理念现在深入人心,从智能手表、智能手环,到其他一系列智能可穿戴设备,都有着类似的功能,例如追踪身体运动,监测温度、血氧饱和度、心率等等。在这些功能的背后,是传感器技术的应用。以运动传感器和生物传感器为例,可穿戴设备的运动传感器可以随时随地测量、记录和分析人体的活动情况,用户可以知道跑步步数、游泳圈数、骑车距离、能量消耗和睡眠时间等;而生物传感器则可以通过动态的、非侵入性测量的方式对心率、血氧饱和度、心电、脑电波等状况进行连续的、实时的监测,用户可以实时观察“健康信号”,及时发现并处理身体出现的异常状况。

  STM32开发板底板包含一个六轴运动传感器MPU6050,MPU6050 是 InvenSense 公司推出的全球首款整合性 6 轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了安装空间。MPU6050 内部整合了 3 轴陀螺仪和 3 轴加速度传感器,并且含有一个第二 IIC 接口,可用于连接外部磁力传感器,并利用自带的数字运动处理器(DMP: Digital Motion Processor)硬件加速引擎,通过主 IIC 接口,向应用端输出完整的 9 轴融合演算数据。有了 DMP,我们可以使用 InvenSense 公司提供的运动处理资料库,非常方便的实现姿态解算,降低了运动处理运算对操作系统的负荷,同时大大降低了开发难度。

  运动界面采用物理按键触发进入。在运动界面采用上下滑屏的方式,实现户外步行、户外跑步、室内游泳、自由训练与户外骑行模式间的切换,上下滑屏的逻辑部分采用C++代码编写,五种运动模式,主要实现户外步行模式的应用。

图 1-8 运动界面

    1. 工具界面

  工具界面主要包含倒计时、呼吸训练、压力训练以及快捷支付等。该界面不涉及太复杂的UI交互逻辑,主要用到TouchGFX的按钮控件与界面的交互设置。在快捷支付方面,实现了二维码页面的弹出与返回。

图 1-9 工具界面

​​​​​​​1.6 设置界面

  设置界面用于系统的便捷设置,例如静音、排水、低功耗、信息等功能,设置界面通过物理按键进行切换,设置界面根据开发板的资源,实现静音、背光亮度、排水以及低功耗模式的应用。快捷设置界面实现排水功能,点击排水后,振动电机启动4秒后停止。

 

图 1-10 设置界面 

​​​​​​​1.7 应用界面

  应用界面主要包含健康监测、姿态信息、环境信息、芯片信息、设备控制、电源电压以及无线连接七个应用,应用界面中采用上下滑动的交互方式,通过点击应用的图标进入应用程序。在应用程序中,通过物理按键切换回应用界面。

健康监测

  资源扩展板上搭载了心率血氧传感器MAX30102。可以实现心率、血氧数据的读取。在表盘页面设计了心率信息的实时显示。如下图所示,心率血氧检测页面可以通过应用页面点击相应图标进入。

图 1-11 健康监测页面

姿态信息

  开发板上搭载了MPU6050陀螺仪,通过陀螺仪可以实现欧拉角的读取以及步数信息的读取。在表盘页面设计了步数信息的实时显示。如下图所示,陀螺仪页面可以通过应用页面点击陀螺仪图标切换进入。在该页面可以完成欧拉角的实时显示(包括横滚、俯仰、偏航角)。

图 1-12 姿态感知页面

环境信息

   开发板上搭载了光照传感器AP3216C、温湿度传感器SI7006/SHT20。可以实现温湿度以及光照的信息读取。在表盘页面设计了温度信息的实时显示。如下图所示,温湿度光照可以通过应用页面点击相应图标进入。在该页面中可以完成温度、湿度、光照度信息的实时更新和显示。

图 1-13 环境信息页面

芯片信息

  通过ADC内部/外部通道,可以实时监测芯片温度、VREF、RTC等数据。如下图所示,芯片电压测量页面可以通过应用页面点击相应图标进入。可以在该页面实时显示芯片温度、VREF、RTC电池等数据。

图 1-14 芯片信息页面

设备控制

  开发板与资源扩展板搭载了振动马达\蜂鸣器\风扇,可以实现对震动马达、蜂鸣器、风扇控制的功能。如下图所示,振动马达及蜂鸣器页面可以通过应用页面点击相应图标进入。可以在该页面控制振动马达及蜂鸣器,点击相应按钮即可打开或关闭相应的外设,按钮按下后会有状态的变化。

图 1-15 设备控制页面

电源电压

  可以通过ADC测量资源扩展板的电位器电压,资源扩展板的电流来模拟电池电量的采集与显示,该页面的电池图标与显示电位器的实时电压,采集的电流进行动态显示与绘制波形。

图 1-16 电源电压页面

无线连接

  开发板上搭载了ESP8266无线WIFI模块,可以实现WIFI连接的功能。通过手机生成热点,热点名称HQYJ-YF,密码STM32G070,点击下面的无线连接后,文本框显示连接信息,连接成功,获取连接的RSSI值,并进行显示。

图 1-17 无线连接页面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/210416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不一样的年会彩瞳推荐,绮芙莉多款彩瞳彰显个性

临近年底,各种公司年会、跨年晚会活动也逐渐排上日程,出席这种正式场合,每个人都有自己的“杀手锏”,从发型妆容到穿搭都是变美小细节,作为心灵之窗的双眸,更需要一副彩瞳来提升我们的眼妆质感,…

【SpringBoot】解析Springboot事件机制,事件发布和监听

解析Springboot事件机制,事件发布和监听 一、Spring的事件是什么二、使用步骤2.1 依赖处理2.2 定义事件实体类2.3 定义事件监听类2.4 事件发布 三、异步调用3.1 启用异步调用3.2 监听器方法上添加 Async 注解 一、Spring的事件是什么 Spring的事件监听(…

持续集成交付CICD:使用Jenkins插件上传Nexus制品

目录 一、实验 1.使用Jenkins插件上传Nexus制品 一、实验 1.使用Jenkins插件上传Nexus制品 (1)Jenkins安装插件Nexus Artifact Uploader (2)添加凭据 (3)使用片段生成器生成DSL (4&#xf…

docke网络之bridge、host、none

一、bridge网络 1.创建一个测试容器 [rootlocalhost ~]# docker run -d -it --name busybox_1 busybox /bin/sh -c "while true;do sleep 3600;done" 03b308c847edd23f21ba69afb825d92f7aaeb05b1ff4431dd47ccee439a0361a 2.查看当前机器docker有哪些网络 [rootlocal…

2023年9月8日 Go生态洞察:gopls的扩展与Go生态系统的成长

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

AI材料专题报告:AI革命催生新需求国产替代推动新方向

今天分享的AI系列深度研究报告:《AI材料专题报告:AI革命催生新需求国产替代推动新方向》。 (报告出品方:光大证券) 报告共计:25页 1、算力需求增长催生 800G 光模块需求 算力是数字经济时代新生产力&…

2023年10月9日 Go生态洞察:深入了解类型推断及其更多细节

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

【C++ Primer Plus学习记录】if语句

目录 一、if语句 二、if else语句 三、格式化if else语句 四、if else if else结构 一、if语句 if语句让程序能够决定是否应执行特定的语句。 if有两种格式:if和if else。 if语句的语法与while相似: if(test-condition)statement; 如果test-con…

Android 从assets读取文件装载成Bitmap,Kotlin

Android 从assets读取文件装载成Bitmap,Kotlin /*** fileName assets里面图片文件名*/fun readBitmapFromAssets(ctx: Context, fileName: String): Bitmap? {val assetManager: AssetManager ctx.assetsvar bitmap: Bitmap? nulltry {val inputStream assetMa…

Java预科知识

以下内容是根据狂神的Java说、chatgpt和csdn相关博客,结合自己的理解完成的。 Java了解 基于Java 开发了巨多的平台,系统,工具 构建工具: Ant, Maven, Jekins应用服务器:Tomcat, Jetty, Jboss, Websphere, weblogic…

程序员入门:打造抖音同城外卖小程序的技术解析

在当今数字化时代,外卖平台已经成为人们生活中不可或缺的一部分,而抖音作为一款社交媒体平台,也开始涉足同城外卖服务。本文将为初学者提供一份关于如何打造抖音同城外卖平台的技术解析,探讨其中的关键技术和步骤。 一、项目规划…

【C++】输入输出流 ⑤ ( cin 输入流对象 | cin.ignore() 函数 | cin.peek() 函数 | cin.putback() 函数 )

文章目录 一、cin.ignore() 函数1、cin.ignore() 函数简介2、cin.ignore() 函数原型3、代码示例 - cin.ignore() 函数 二、cin.peek() 函数1、cin.peek() 函数简介2、代码示例 - cin.peek() 三、cin.putback() 函数1、cin.putback() 函数简介2、代码示例 - cin.putback() 一、c…

if语句和switch语句来确定金额之下的优惠折扣

一、优惠规则 输入相应的金额,可以获得规则之下,金额相应的享受的折扣,需要先定义金额,然后就是使用if语句进行判断,使用switch语句选择判断规则之下对应的优惠折扣。 二、相关代码 public class DiscountPrice {p…

矩阵处理—Zigzag矩阵打印

与其明天开始,不如现在行动! 文章目录 Zigzag矩阵打印1.1 题目描述1.2 解决思路1.3 代码实现 💎总结 Zigzag矩阵打印 1.1 题目描述 有一个n行m列的矩阵,要求按照Z字形打印出数据,如图: 1.2 解决思路 用一…

Weblogic T3协议反序列化漏洞

文章目录 1. Weblogic T3协议反序列化漏洞1.1 漏洞描述1.2 基本原理1.3 漏洞复现1.4 修复建议 1. Weblogic T3协议反序列化漏洞 1.1 漏洞描述 说明内容漏洞编号CVE-2018-2628漏洞名称Weblogic T3协议反序列化漏洞漏洞评级高危影响范围Weblogic 10.3.6.0Weblogic 12.1.3.0Webl…

基于JavaWeb+SSM+Vue居住证申报系统小程序的设计和实现

基于JavaWebSSMVue居住证申报系统小程序的设计和实现 源码获取入口KaiTi 报告Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 KaiTi 报告 1.1题目背景 随着时代的发展,人口流动越来越频繁&#xff0…

pycharm安装

1.先去官网下载pycharm 2.下载python3.8 3.修改pip镜像 4.如果有环境变量没加的加一下

全国农服进万家系列活动——中国农业生产托管万里行在河北玉田举行

12月8日,“全国农服进万家系列活动-中国农业生产托管万里行”在河北省玉田县圆满举行。来自全国各地农业农村领域的嘉宾齐聚一堂,交流农业社会化服务典型经验,共话农业社会化服务高质量发展大事。 原农业部总农艺师、中国合作经济学会会长孙中…

【恋上数据结构】前缀树 Tire 学习笔记

Tire 需求分析 如何判断一堆不重复的字符串是否以某个前缀开头? 用 Set\Map 存储字符串(不重复)遍历所有字符串进行判断缺点:时间复杂度 O(n) 有没有更优的数据结构实现前缀搜索? Tire(和 Tree 同音&a…

Rust测试字符串的移动,Move

代码创建了一个结构体,结构体有test1 字符串,还有指向字符串的指针。一共创建了两个。 然后我们使用swap 函数 交换两个结构体内存的内容。 最后如上图。相同的地址,变成了另外结构体的内容。注意看指针部分,还是指向原来的地址…