智能手表OV-Watch - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

专业版 智能手表OV-Watch

简介:功能包括日历、计算器、秒表、NFC、蓝牙传数据给手机、与手机同步时间、抬腕亮屏、心率检测、环境温湿度检测、指南针、海拔测量等功能。已经尽量满足现在智能手表的功能,后期还需要继续添加修改很多东西。

开源协议: GPL 3.0

(未经作者授权,禁止转载)

创建时间: 2023-05-06 20:09:09
更新时间: 2024-02-25 23:28:17
描述

V2.3版本更新说明:

1.心率部分,硬件增加LED矩阵,增强PPG信号强度
2.双板改为贴合,不做4层板因为立创不能做盲埋孔
3.蓝牙改为KT6328A
4.MPU6050电路更改,V2.2的AUX接地了,导致之前的功耗高了,现在待机功耗几百uA
5.删除NFC部分,因为以前的设计NFC会被PCB铺铜以及屏幕铁皮屏蔽
6.供电部分进行低功耗设计,TPS63020的PS/SYNC端口拉低,设置Power Save模式。在参考手册中,低电流状态下,以往的效率只有60%,power save模式可以达到90%。
7.加入游戏(2048,记忆方块,MPU6050相关游戏)
8.修改了一些bug。

 

V2.3版本实物图:

ZMqdfwmNsIbXL1EOpuajHDeWZCL5KHRM0Mj0j0EO.pngacDH89gul5otJyvPChTeVTTeDnYk0zCbpe7ZKxYM.pngeApzYAM1XmCGx25EWBwEuQWCrlxB4q5KZNSjbmL3.png

yIEBKN0IoyGaan6vXDawv7f3cXKuFgKbv442gwRt.png

 

 

 

 

fp0wrEQ7kt8B7tzJHGLDLLF1K9WphjzRW9y5mC39.pngCfrJkUuMnLvKVt0gkCWtkvQpeOpYjJCkDqoHVTOU.png

 

系统组成

系统框图如下所示,主控使用STM32F411CEU6,操作系统使用FreeRTOS,图形库使用的LVGL。传感器部分:手势识别使用6轴MPU6050;心率血氧使用的是EM7028(没有用MAX30102是因为之前太贵了),EM7028的资料很少,之前自己写的局部寻峰算法来计算心率但是效果不好,现在改成了使用官方的库,后面V2.3版本心率血氧传感器将会改成MAX30102,开发资料也更多;海拔测量用的气压计SPL06-001;电子指南针使用LSM303DLHC;蓝牙使用的HC-04模块,后面V2.3版本可以换成很便宜的国产芯片KT6328A,它开着蓝牙可以实现低功耗,大力推荐。

SxhIWPJrJjfo6wAMFCYGshw6LTLI13lUeqeJ7oPy.png

功能说明

大致功能表如下图所示:

xmOMJLxUsqLkazTixYaygcCRYMBsh3zRHVzoMssu.png

1.电源部分:手表使用的是3.7V锂电池,通过TPS63020提供3V3电源,V2.2版本充电口留了两个焊盘,用来接触磁吸充电口。特别注意,V2.0版本使用的无线充电,使用了芯片T3168,但是用无线充电的话,加上线圈和多的器件,体积就非常大了,同时还有散热问题。

 

2.蓝牙部分:现在用的是HC-04(邮票孔封装),后面的版本会改成用国产芯片KT6328A。

 

3.辅助功能部分:计算器:当时做带浮点数的计算器做得很烦,字符串处理很麻烦。现在这个计算器是通过一个数字栈和一个符号栈实现的,具体看代码。

 

4.NFC部分:V2.0版本的IC卡复制器模块介绍详见:https://oshwhub.com/no_chicken/ICka-fu-zhi-qi

在V2.2版本中,为了精简减小体积,仅有UID卡,可以被外部读卡器读写。而在V2.0版本中,用的是RC522和一张UID卡组成的,可以自行复制外部IC卡,然后也可以被外部读卡器读写如下图所示:

EBK7PmpgIULRS9Smr1n5sKSRgqPzzkDldXgD88er.png

 

硬件设计说明

PCB分为两个板,一个Core板,一个Back板,Back板包括了传感器部分和蓝牙模块。

 

UI界面、实物图片

部分界面图:

6UTyGvATttKbdoJQoOHAXlvzlXhNxyM4cSZhLry9.png

v2.2版本实物图:

l61P4SN4I9gB3B4Jfw5HDjwtPRld3WAiwCIqGxV0.jpegcykp1oyM0wHCcGNV79PtPsDrTD49cXmCbvBX38a6.png

 

部分软件设计说明

1.低功耗设计

      手表的模式分为3个。

      第一个是正常的运行模式,手表正常运行;第二个是睡眠模式,MCU进入STOP模式,MPU6050仍在记步数;第三个是关机模式,TPS63020直接关闭使能,此时无3V3供电,只有Vbat有供电。在最开始的时候,手表从睡眠到唤醒使用的是MPU6050的运动功能,打开中断,唤醒,但是这样尝试过,有个问题就是需要抖动幅度很大才能触发中断。所以最后还是用的RTC定时中断,然后定时检测当前手势状态,如果有抬腕动作则唤醒。MPU6050不能直接使用DMP库,初始化后功耗很高,需要进行一些改动,才能让功耗下来,具体看工程代码。蓝牙使用了KT6328A后,不建议关闭蓝牙使能,他的待机功耗很低。

2.心率血氧

      血氧部分暂时还没有写。

      心率计算本来使用的官方的库,但是计算太慢了,后面改为自己写的一个简易的峰值检测的算法。EM7028的PPG信号如下图所示.

3.数据存储

目前使用的外部的EEPROM进行数据存储,主要用于存储设置等,详细可以看Datasave.c文件。

 

4.页面切换逻辑

为了实现页面切换,可以返回上次的界面,这里使用了一个栈来存储页面对应的,例如,使用user_Stack_Pop(&ScrRenewStack);弹出上一个界面,然后进入到新的界面再使用 user_Stack_Push(&ScrRenewStack,(long long int)&ui_HomePage);入栈一个界面的指针地址。注意不能直接在push操作使用类似ui_HomePage入栈,它是会动态变化的,这是个很大的坑。

5.计算器逻辑

计算器的逻辑就是很经典的字符计算器问题,经典的就是开两个栈,一个存放符号,一个存数字,然后进行出栈计算等等操作,以1+2*6/3为例,具体的过程如下动图所示。但是会有一个问题就是小数点,这个动图展示的只是整数计算的逻辑,带小数点的详细见代码。

 

注意事项

焊的时候很烦,0402太小了,热风qiang吹的时候尽量用高温小风,免得把器件吹走了。

 

软件说明

代码github传送门:https://github.com/No-Chicken/OV-Watch

如果没有梯子可以用我copy过去的gitee的仓库:https://gitee.com/kingham/OV-Watch

演示视频

视频地址:https://www.bilibili.com/video/BV1hh4y1J7TS

 

交流QQ群

qq群:572216445

UoEw0zP6q5imehSs3pTfTKQDOc5Y1zUawLoXbf8v.png

 

设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
工程视频/附件
暂无
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP