当前位置: 首页 > news >正文

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 无线连接页面

相关文章:

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

STM32单片机项目实例:基于TouchGFX的智能手表设计(2)UI交互逻辑的设计 目录 一、UI交互逻辑的设计 1.1 硬件平台的资源 1.2 界面切换功能 ​​​​​​​1.3 表盘界面 1.4 运动界面 ​​​​​​​1.6 设置界面 ​​​​​​​1.7 应…...

ES-分析器

分析器 两种常用的英语分析器 1 测试工具 #可以通过这个来测试分析器 实际生产环境中我们肯定是配置在索引中来工作 GET _analyze {"text": "My Moms Son is an excellent teacher","analyzer": "english" }2 实际效果 比如我们有下…...

智能优化算法应用:基于缎蓝园丁鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于缎蓝园丁鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于缎蓝园丁鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.缎蓝园丁鸟算法4.实验参数设定5.算法…...

【开发问题】vue的前端和java的后台,用sm4,实现前台加密,后台解密

sm4加密 vue引入的包代码加密解密 javamaven代码运行结果 vue 引入的包 npm install sm-crypto代码加密解密 加密: key :代表着密钥,必须是16 字节的十六进制密钥 password :加密前的密码 sm4Password :代表sm4加密…...

【算法专题】分治 - 快速排序

分治 - 快速排序 分治 - 快速排序1. 颜色分类2. 排序数组(快速排序)3. 数组中的第K个最大元素4. 库存管理Ⅲ5. 排序数组(归并排序)6. 交易逆序对的总数7. 计算右侧小于当前元素的个数8. 翻转对 分治 - 快速排序 1. 颜色分类 做题链接 -> Leetcode -75.颜色分类 题目&…...

UG NX二次开发(C#)-求曲线在某一点处的法矢和切矢

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、在UG NX中创建一个曲线3、直接放代码4、测试案例1、前言 最近确实有点忙了,好久没更新博客了。今天恰好有时间,就更新下,还请家人们见谅。 今天我们讲一下如何获取一条曲线上某一条曲…...

leetcode 622. 设计循环链表

这道题讲了两种方法,第一个代码是用数组实现的,第二个是用链表实现的,希望对你们有帮助 (最好在VS自己测试一遍,再放到 leetcode上哦) 下面的是主函数(作参考),静下心来…...

Linux:dockerfile编写搭建tomcat练习(9)

我使用的httpyum仓库 本地使用了5个文件,tomcat使用的官网解压直接用的包】 Dockerfile 主配置文件 基于centos基础镜像 jdk1.8.0_91 java环境 run.sh 启动脚本 centos.repo 仓库文件 tomcat 源码包 vim Dockerfile写入FROM centos MAINTAINER ta…...

Linux 基础IO

文章目录 前言基础IO定义系统IO接口文件描述符重定向原理缓冲区刷新 前言 要知道每个函数/接口的全部参数和返回值建议去官网或者直接在Linux的man手册中查,这不是复制粘贴函数用法的文章。 C语言文件读写介绍链接 基础IO定义 IO是Input/Output的缩写&#xff0c…...

uniapp 打开文件管理器上传(H5、微信小程序、android app三端)文件

H5跟安卓APP 手机打开的效果图&#xff1a; Vue页面&#xff1a; <template><view class"content"><button click"uploadFiles">点击上传</button></view> </template><script>export default {data() {return…...

掌控安全 -- header注入

http header注入 该注入是指利用后端验证客户端口信息&#xff08;比如常用的cookie验证&#xff09;或者通过http header中获取客户端的一些信息&#xff08;比如useragent用户代理等其他http header字段信息&#xff09;&#xff0c;因为这些信息是会重新返回拼接到后台中的&…...

windows批处理脚本(.bat)如何激活Anconda Prompt虚拟环境

通过call 来调用激活脚本&#xff0c; activate myenv指的是要激活的环境&#xff0c;若省略&#xff0c;则激活的是base环境。 call : 从另一个批处理程序调用一个批处理程序&#xff0c;而不停止父批处理程序。 call C:\ProgramData\Anaconda3\Scripts\activate.bat activate…...

扩散模型实战(十四):扩散模型生成音频

推荐阅读列表&#xff1a; 扩散模型实战&#xff08;一&#xff09;&#xff1a;基本原理介绍 扩散模型实战&#xff08;二&#xff09;&#xff1a;扩散模型的发展 扩散模型实战&#xff08;三&#xff09;&#xff1a;扩散模型的应用 扩散模型实战&#xff08;四&#xff…...

《微信小程序开发从入门到实战》学习四十七

4.4 云函数 4.4.5 云函数的定时触发 如果云函数需要定时执行&#xff0c;可以使用云函数定时触发器。配置了定时触发器&#xff0c;云函数会在相应时间点被自动触发。函数返回结果不会返回调用方 在需要添加触发器的云函数下新建文件config.json。格式如下&#xff1a; &quo…...

LeetCode刷题笔记之数组

一、二分查找 1. 704【二分查找】 题目&#xff1a; 给定一个 n 个元素 有序的&#xff08;升序&#xff09; 整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。代码&#xff1a;…...

ViT:视觉 Transformer

ViT&#xff1a;视觉 Transformer 网络结构Transformer 编码器MLP 头CNN 和 Transformer 网络结构 Transformer 的优势&#xff1a;注意力机制相当于一个多标签检索系统&#xff0c;位置嵌入能知道每个单词的位置&#xff0c;而且适合并行。 尝试把 Transformer 迁移到视觉领…...

Jmeter 请求签名api接口-BeanShell

Jmeter 请求签名api接口-BeanShell 项目签名说明编译扩展jar包jmeter 使用 BeanShell 调用jar包中的签名方法 项目签名说明 有签名算法的api接口本地不好测试&#xff0c;使用BeanShell 扩展jar 包对参数进行签名&#xff0c;接口签名算法使用 sha512Hex 算法。签名的说明如下…...

No suitable driver found for jdbc:mysql://localhost:3306(2023/12/7更新)

有两种情况&#xff1a; 压根没安装下载了但没设为库或方法不对 大多数为第一种情况&#xff1a; 一. 下载jdbc 打开网址选择一个版本进行下载 https://nowjava.com/jar/version/mysql/mysql-connector-java.html 二.安装jdbc 在项目里建一个lib文件夹 在把之前下载的jar文…...

word文档中数字格式转换(排版助手)

示例&#xff1a;李老师收入了234243.33元&#xff0c;产量3000公斤&#xff1b; 张老师收入了2324324元&#xff0c;产量45555公斤&#xff1b; 孙老师收入了600000元&#xff0c;产量2342公斤 王老师收入了1234443243元&#xff0c;产量1243142公斤。 1、数字批量转换成千…...

阿里云docker加速

文章目录 一、 阿里云镜像仓库配置二、配置加速1. CentOS2. Mac3. Windows注意 一、 阿里云镜像仓库配置 1.注册阿里云账号&#xff0c;并登陆到阿里云后台&#xff0c;进入控制台面板 2.进入控制台以后&#xff0c;找到左上方的三横的功能列表按钮&#xff0c;在弹出来的功能…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...