基于单片机多功能智能手表的设计与实现

2023-01-11 04:52郭星智杨桂华
电子制作 2022年22期
关键词:手表页面心率

郭星智,杨桂华

(桂林理工大学 机械与控制工程学院,广西桂林,541004)

0 引言

随着移动技术的步伐不断前进,伴随着智能化的传统电子产品也逐渐进入到人们的生活。人们在享受科技发展所带来的红利的同时,对于智能产品的需求也逐渐增多。而在近年来,智能手表这一款充满智能,充满科技的产品逐渐进入人们的眼帘。相比于过去只能用来查看时间的传统手表,智能手表的问世使得手表不仅具有可靠的传统功能,而且也能通过互联网或者蓝牙与智能设备相连接,以获取国家新闻、天气数据等重要信息。智能手表在人们的运动、睡眠、通话、娱乐等方面扮演着非常重要的角色,其技术的发展和功能的改进也将不断改变人们的生活,给人们带来更多的智能体验[1]。

1 总体设计方案

1.1 功能方案

智能手表的种类主要分为三种,分别为成人智能手表、老人智能手表以及儿童定位智能手表。老人和儿童智能手表在功能上更偏向于安全定位、预防走失、SOS求救等方面,主要为了保障儿童的安全和呵护老人的健康。而成人智能手表,主要以提升手表功能的多样性以及可玩性,来满足成年人的休闲娱乐运动等日常需求。本文也将以成人智能手表为功能设计的方向,其主要功能有天气信息显示、全年日历、运动计步、背光调节、表盘切换、心率检测、久坐提醒、指南针、游戏、秒表、计算器、手电筒以及系统设置等。

1.2 模型方案

当今,智能手表不仅要满足功能上的要求还要满足外观上的要求,外观设计已经成为智能可穿戴产品的一个重要影响因素[2]。在如今的智能手表中,表盘的结构主要分为方形和圆形两种。在方形手表中,因其方形的表盘设计,使得内容显示的区域会更加广,也符合原本软件系统的设计逻辑。传统的手表多以圆形的表盘进行设计,圆形结构的手表,搭配圆形的显示屏,更能给人一种熟悉感,且美观大方。所以,本文中的智能手表模型结构使用SOLIDWORKS软件进行设计,其总体外观渲染图如图1所示,主要以圆形作为设计属性。同时采用了典型的“三明治”结构,分为底层、中框和顶层。三层之间通过两组不同规格的内六角螺丝来连接固定。其中,顶层主要装配电容触摸屏,并适当增加几何图形元素,提升手表的整体美感。中框主要装配主板和表带,并需要根据主板上的按键、充电接口等具体位置进行合理的规划设计。底层结构主要用来装配锂电池,同时合理设计心率传感器的开孔位置,使心率传感器能够正常的工作。

图1 模型渲染图

1.3 硬件方案及工作原理

智能手表硬件结构框图如图2所示。主要包括ESP32主控芯片、实时时钟芯片、心率传感器、磁场传感器、加速度传感器、电容触摸屏模块、侧边按键、蜂鸣器以及电源模块等。由于尺寸限制,为了尽可能地节省PCB的布局空间,所有的元器件都将选用较小封装的贴片类型,同时为了契合屏幕大小,将PCB设计为半径19mm的圆形结构。

图2 系统硬件结构框图

智能手表系统结构主要分为两个部分,即系统的功能部分和系统的交互部分。系统功能部分包括:(1)天气信息显示。通过WiFi功能连接网络,访问心知天气提供的API获取Json格式的天气信息数据,并解析得到最低气温、最高气温、空气质量、当前温度和天气现象代码等有效数据显示在天气卡片界面上。(2)全年日历。全年日历显示主要是以翻页形式的日历本,通过点击相应按钮显示以当年当月为基准的前一个月或者后一个月的数据,其范围为1900年到2100年。(3)运动记步。运动记步通过加速度传感器检测人体行走的步数以及运动状态,并计算出运动的距离以及消耗的卡路里。(4)心率检测。心率检测主要是通过心率传感器获取人体的心率数据以曲线图表的方式在心率检测卡片界面上显示出来,并记录当次心率检测的最低和最高值。(5)久坐提醒。久坐提醒主要是通过加速度传感器检测人体状态来实现,如果人体处于静止状态,则会进行周期为30分钟的计时。在计时周期内如果静止状态未发生改变,则会记录一次久坐并提醒,反之则重新计时。(6)背光调节。主要是以PWM的方式来实现屏幕背光的调节,其亮度值范围在0~255之间。(7)表盘切换。通过表盘切换界面来进行不同表盘的切换,系统设计了六个不同风格类型的表盘,这六个表盘可来回进行切换,其切换亦可通过长按表盘卡片进入到表盘切换界面。(8)指南针。通过获取磁场传感器数据控制指针旋转到相应的位置来进行方位的指示。(9)游戏娱乐。通过点击2048游戏图标进入游戏。除此之外,还具有秒表功能、计算器、手电筒等功能。

系统交互部分包括:(1)图形界面。图形界面是智能手表系统组成中十分重要的一部分,论文通过GUI进行设计,GUI集成了图形操作系统以及内存管理。(2)实体按键。论文设计了触摸屏的交互,但考虑用户物理操作上的反馈感,弥补触摸屏操作的不足,增加了按键的使用,有效缩短了交互过程,为用户提供极佳的交互体验感。

2 硬件电路设计

2.1 核心电路

核心电路如图3所示,其主要包含四个部分,分别是主控电路、复位电路、时钟电路和接口电路。本设计采用了以ESP32-PICO-D4为核心的主控模块TTGO-MICRO32,该核心采用了系统级封装。在芯片内部已经集成了基本的外设电路、FLASH电路、40MHz晶振电路和RF匹配链路[3]。由于该核心的I2C接口引脚为开漏输出,并没有输出高电平的能力,所以需要为其添加上拉电阻,并合理地选择上拉电阻的阻值。BM8563MEA时钟作为本设计的时间数据来源,需要为其匹配外部32.768kHz的晶振,并根据晶振的规格合理的匹配相应的电容。接口电路采用了Type-C口,不仅能够通过下载器下载程序,还可以作为锂电池的充电接口。复位电路主要连接主控芯片的EN引脚,需要采用上拉电阻的方式进行设计。

图3 核心电路

2.2 外围电路模块

智能手表外围电路主要包括各传感器电路、电源管理电路、交互设备电路。传感器模块电路如图4所示,其主要是心率传感器模块、磁场传感器、加速度传感器的外围基础电路设计,其中。所有传感器都通过I2C总线与主控芯片上的SDA和SCL引脚相连接。电源管理电路如图5所示,其主要包括三部分,分别为锂电池管理电路、电源复用器电路和线性降压电路。交互设备电路如图6所示,该电路主要包含蜂鸣器电路、电容触摸屏电路以及按键电路。

图4 传感器电路

图5 电源管理电路

3 系统软件设计

系统软件所有的程序采用模块化的编程设计,采用了面向对象的编程思维,将每个界面、应用单独进行封装,极大程度上减少了代码的耦合性使得代码结构清晰,易于维护或者增删功能。代码结构框架分为三个层次,分别为应用层、系统框架层和硬件抽象层,代码结构框图如图7所示。其中硬件抽象层主要是硬件驱动的初始化设置,应用层主要是交互界面的开发以及功能的实现,框架层主要是操作系统任务和页面的调度管理。

图7 代码结构框架

3.1 硬件抽象层

硬件抽象层程序设计主要负责硬件的初始化以及硬件层的数据获取。其中包括RTC驱动初始化、屏幕背光驱动初始化、屏幕显示驱动初始化、屏幕触摸驱动初始化、按键驱动初始化、加速度传感器驱动初始化、磁场传感器驱动初始化、心率传感器驱动初始化、蜂鸣器驱动初始化等。

3.2 系统框架层

3.2.1 页面调度管理

在页面管理中,包括页面的交互逻辑和页面加载逻辑。页面交互逻辑的实现在硬件上依靠于电容触摸屏触摸数据,在软件上依靠于LVGL图形库设备驱动TouchPad事件类型。通过两者的耦合,可通过在触摸屏上实现滚动、点击、长按、向上滑动、向下滑动、向左滑动、向右滑动等基本事件类型,并将此类事件回调给LVGL驱动设备管理函数。通过获取到的这些基本事件输入类型和声明的多类函数指针,就可以将已经设计好的界面通过回调函数的方式进行页面的切换。

(1)主界面交互逻辑

主界面的交互触发方式通过上下左右滑动实现,并可通过长按时钟界面进入表盘切换界面。主界面交互逻辑图示如8所示。

图8 主界面交互逻辑图

(2)页面加载逻辑

页面的加载主要分为页面加载完成、页面将显示、页面完成显示、页面将消失、页面完成消失五个步骤。其中页面加载完成指的是对每个页面分配相对应的页面ID,并对其封装函数进行初始化。页面将显示指的是页面初始化完成后,即将显示页面。在这个过程中,可以为页面的显示创建相对应的动画效果。页面将消失指的是页面退出即将消失的过程,在这个过程中也可以为其设定过渡的动画效果,同样在完成动画效果后页面完成消失。在页面的切换过程中,上述逻辑可以实现非常高级的切换效果。页面加载逻辑图示如图9所示。

图9 页面加载逻辑图

3.2.2 操作系统任务

操作系统的任务主要有硬件消息更新任务、LVGL线程任务、WiFi异步连接任务。

(1)硬件消息更新任务

该任务主要用于定时刷新硬件流数据。通过获取系统毫秒级的心跳时钟,为硬件抽象层中封装好的需要定时更新消息的函数进行周期性更新。每个函数可以自由设定其更新的时间。例如按键状态检测的更新周期为30ms,每经过30ms即检测一次按键状态,通过返回按键的状态值即可实时响应到按键按下的消息并执行响应功能。类似的还有心率检测数据、定时低功耗熄屏、步数更新、蜂鸣器提示音更新等等。

(2)LVGL线程任务

该任务主要为了实时运行LVGL内部任务处理函数。该函数主要负责LVGL几乎所有的事务处理,只有在无阻塞的任务中才能够实时响应用户对于LVLG的所有操作。例如输入驱动事件、显示渲染事件、动画事件等等。与此同时,需要给予LVGL一个系统心跳,让其内部知道系统内部经过时间,这样才能在精确的处理所有具有时间概念的事件。例如动画的时间线,LVGL定时器重复的周期时间等。

(3)WiFi异步连接任务

由于在使用WiFi时,系统会处于正在连接的阻塞态,使得其他任务不能继续正常运行。所以就需要为WiFi的连接创建一个线程。该线程在开启WiFi连接时创建,在连接完成后删除。创建该任务的优点就是以异步处理的方式进行WiFi的连接,在连接过程中不会阻塞系统正在运行的其他任务,能够保证所有数据都能够正常的响应。

3.3 系统应用层

应用层是整个软件框架中最顶层的部分,以结构层和硬件层作为载体,将所有的数据以及结构框架以界面的形式展现在用户面前,并在符合结构层的操作逻辑下,稳定运行。在应用层中,主要有主界面(由久坐提醒卡片、心率检测卡片、时钟卡片、天气卡片、快捷设置卡片组成)、表盘切换界面和应用界面组成,如图10所示。

图10 主界面卡片效果图

3.4 主程序设计

系统在执行上电操作时,首先会对硬件抽象层中的所有驱动以及对LVGL图形库的显示设备、输入设备、内存管理、交互界面等进行初始化操作,在所有初始化完成后即进入FreeRTOS任务,该任务包含LVGL任务处理函数以及硬件数据更新函数。FreeRTOS任务将会一直运行并负责整个系统的所有事件,直至进入主控芯片的关机模式结程序。主程序流程图如图11所示。

图11 主程序流程图

4 系统测试

产品的硬件电路原理图以及PCB Layout通过立创EDA标准版软件设计完成,设计了PCB Layout 3D图,并精心焊接制作电路板如图12所示。产品制作完成后,对产品主板的供电电路进行了测试 ,并通过编写心率传感器、加速度传感器、磁场传感器、按键、WiFi功能、RTC时钟等测试程序,检测相应的外设是否能够正常地进行工作并读取数据。产品电源电路、外围设备电路均能够正常工作,手表的续航时间以及数据记录准确。

图12 PCB板实物图

5 结语

论文设计并实现了一款基于单片机的多功能智能手表。从电子元器件的选型、主板原理图的设计和主板的焊接制作、软件框架的搭建、交互界面的设计、3D结构的建模到产品的制作完成,设计的功能全部都可正常使用,系统运行稳定。尽管如此,在整体之上依然有许多可有优化完善的地方:

(1)主控板本身自带的RAM依然较小,无法开发出更多更加实用的功能,但可通过对硬件电路的重新设计,为主控芯片外接PSRAM来解决。

(2)手表的手电筒功能,因其发亮原为屏幕背光,需要在环境较暗的地方才能体现出照明的效果。可通过修改模型和电路,为其增加亮度更高的LED灯进行解决。

(3)手表的交互界面在切换界面时,增加了全屏的动画效果,使得界面刷新流畅度有所下降。可以通过外接PSRAM,增加图形库显示驱动的渲染显存来解决。

猜你喜欢
手表页面心率
刷新生活的页面
心率多少才健康
答案
是谁拿了手表
让Word同时拥有横向页和纵向页
谁偷走了手表?
离心率
离心率相关问题
手表
探索圆锥曲线离心率的求解