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

编辑器版本 ×
标准版 Standard

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

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

3、支持简单的电路仿真

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

专业版 professional

1、全新的交互和界面

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

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

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

专业版 智能手表OV-Watch

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

开源协议: CC BY-NC-SA 4.0

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

创建时间: 2023-05-06 20:09:09
更新时间: 2024-04-24 22:00:14
描述
<center>

OV-Watch

</center> <font size=3> ## 推荐 如果觉得这个手表的硬件难做,又想学习相关的东西,可以试下这个新出的开发板,功能和例程demo更多! **FriPi炸鸡派STM32F411开发板**: [https://oshwhub.com/no_chicken/frypi](https://oshwhub.com/no_chicken/frypi) <center>

</center> ## 简介 这是一个基于STM32F411CUE6和FreeRTOS和LVGL的低成本的超多功能的STM32智能手表~ <center>

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

</center> ## 功能说明 大致功能表如下图所示: <center>

</center> 1. 电源部分:手表使用的是3.7V锂电池,通过TPS63020提供3V3电源,V2.2版本之后,充电口留了两个焊盘,用来接触磁吸充电口。特别注意,V2.0版本使用的无线充电,使用了芯片T3168,但是用无线充电的话,加上线圈和多的器件,体积就非常大了,同时还有散热问题。 1. 蓝牙部分:V2.2用的是HC-04(邮票孔封装),后面的V2.3版本改成了用国产芯片KT6328A。 1. 辅助功能部分:计算器:当时做带浮点数的计算器做得很烦,字符串处理很麻烦。现在这个计算器是通过一个数字栈和一个符号栈实现的,具体看代码。 1. NFC部分:V2.0版本的IC卡复制器模块介绍详见:https://oshwhub.com/no_chicken/ICka-fu-zhi-qi.在V2.2版本中,为了精简减小体积,仅有UID卡,可以被外部读卡器读写。而在V2.0版本中,用的是RC522和一张UID卡组成的,可以自行复制外部IC卡,然后也可以被外部读卡器读写如下图所示: <center>

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

</center> ## 软件部分设计细节: ### 1.低功耗设计 手表的模式分为3个。第一个是正常的运行模式,手表正常运行;第二个是睡眠模式,MCU进入STOP模式,MPU6050仍在记步数;第三个是关机模式,TPS63020直接关闭使能,此时无3V3供电,只有Vbat有供电。 在最开始的时候,手表从睡眠到唤醒使用的是MPU6050的运动功能,打开中断,唤醒,但是这样尝试过,有个问题就是需要抖动幅度很大才能触发中断。所以最后还是用的RTC定时中断,然后定时检测当前手势状态,如果有抬腕动作则唤醒。 MPU6050不能直接使用DMP库,初始化后功耗很高,需要进行一些改动,才能让功耗下来,具体看工程代码。 蓝牙使用了KT6328A后,不建议关闭蓝牙使能,他的待机功耗很低。 最后接3V3测试,运行模式70-80mA,待机模式1mA左右,关机模式基本不耗电只有RTC在工作。当然后面没有测试电源接到Vbat端经过DCDC供电的情况,这个功耗就完全看DCDC的效率的。 ### 2.心率血氧 血氧部分暂时还没有写。 心率计算本来使用的官方的库,但是计算太慢了,后面改为自己写的一个简易的峰值检测的算法。EM7028的PPG信号如下图所示 <center>

</center> ### 3.数据存储 目前使用的外部的EEPROM进行数据存储,主要用于存储设置等,详细可以看`Datasave.c`文件。 ### 4.页面切换逻辑 为了实现页面切换,可以返回上次的界面,这里使用了一个栈来存储页面对应的,例如,使用`user_Stack_Pop(&ScrRenewStack);`弹出上一个界面,然后进入到新的界面再使用 `user_Stack_Push(&ScrRenewStack,(long long int)&ui_HomePage);`入栈一个界面的指针地址。注意不能直接在push操作使用类似`ui_HomePage`入栈,它是会动态变化的,这是个很大的坑。 ```c //key1 pressed if(keystr == 1) { user_Stack_Pop(&ScrRenewStack); if(user_Stack_isEmpty(&ScrRenewStack)) { ui_MenuPage_screen_init(); lv_scr_load_anim(ui_MenuPage,LV_SCR_LOAD_ANIM_MOVE_RIGHT,0,0,true); user_Stack_Push(&ScrRenewStack,(long long int)&ui_HomePage); user_Stack_Push(&ScrRenewStack,(long long int)&ui_MenuPage); } else if(ScrRenewStack.Data[ScrRenewStack.Top_Point-1] == (long long int)&ui_HomePage) { ui_HomePage_screen_init(); lv_scr_load_anim(ui_HomePage,LV_SCR_LOAD_ANIM_MOVE_RIGHT,0,0,true); } } ``` ### 5.计算器逻辑 计算器的逻辑就是很经典的计算器问题,经典的就是开两个栈,一个存放符号,一个存数字,然后进行出栈计算等等操作,以`1+2*6/3`为例,具体的过程如下动图所示。但是会有一个问题就是小数点,这个动图展示的只是整数计算的逻辑,带小数点的详细见代码。 具体整数计算的过程是: 1. 遍历表达式,当遇到操作数,将其压入操作数栈。 2. 遇到运算符时,如果运算符栈为空,则直接将其压入运算符栈。 3. 如果运算符栈不为空,那就与运算符栈顶元素进行比较:如果当前运算符优先级比栈顶运算符高,则继续将其压入运算符栈,如果当前运算符优先级比栈顶运算符低或者相等,则从操作数符栈顶取两个元素,从栈顶取出运算符进行运算,并将运算结果压入操作数栈。 4. 继续将当前运算符与运算符栈顶元素比较。 5. 继续按照以上步骤进行遍历,当遍历结束之后,则将当前两个栈内元素取出来进行运算即可得到最终结果。 <center>

</center> 6. LVGL在windows在vscode的仿真配置参考参考链接: [https://blog.csdn.net/weixin_49337111/article/details/136536375](https://blog.csdn.net/weixin_49337111/article/details/136536375)。已经更改好的可以跑的代码放在了`lv_sim_vscode_win`这个文件夹中,应该可以直接使用vscode打开。仿真文件也放在了附件里了。 <center>

</center> ## 硬件设计说明 PCB分为两个板,一个Core板,一个Back板,Back板包括了传感器部分和蓝牙模块。V2.3版本的两个板子是贴合在一起的,详见上面实物图。 ## 注意事项 焊的时候很烦,0402太小了,热风qiang吹的时候尽量用高温小风,免得把器件吹走了。 ## 软件代码仓库 代码github传送门: [https://github.com/No-Chicken/OV-Watch](https://github.com/No-Chicken/OV-Watch-V2.2) 如果没有梯子可以用我copy过去的gitee的仓库: [https://gitee.com/kingham/OV-Watch](https://gitee.com/kingham/OV-Watch) ## 演示视频 V2.2版本视频地址: [https://www.bilibili.com/video/BV1hh4y1J7TS](https://www.bilibili.com/video/BV1hh4y1J7TS) V2.3新增功能视频地址: [https://www.bilibili.com/video/BV19g4y1N7YR/](https://www.bilibili.com/video/BV19g4y1N7YR/) ## 交流QQ群 qq群1:572216445 qq群2:912218004
设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
工程视频/附件
序号 文件名称 下载次数
1

LVGL仿真lv_sim_vscode_win.rar

253
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

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

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

服务时间

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

support
  • 开源平台公众号

MP