电击手表设计#开源#

项目爆炸图


前言

本课题主要是通过STM32芯片来控制手表,在电击手表功能上,不仅具有普通手表具有的时间显示、触发提醒、循环充电等功能基础上,增加电击功能起到强提醒作用。项目灵感来源于国外一个电击手环项目,基于此,将电击功能集成到手表上,增加时间,日期,计步等功能。


提示:以下是本篇文章正文内容,下面案例可供参考

一、系统总体设计

电击手表系统原理框图
原理框图
采用STM32作为主控芯片对系统各模块进行控制。根据理论和分析计算的结果,首先设计了满足要求的电击手表的电冲击模块。其次考虑到需要记录运动数据,增加MPU6050运动检测模块;再者,电击手表需要能量可循环工作,设计了usb充电模块;最后。手表需要各种参数的显示,设计了OLED显示模块。系统的方案原理框图如上图所示。
依据上图,将系统分为三个部分:信号输入部分、数据处理部分以及电冲击和显示输出部分。
(1)信号输入部分:由时间模块、按键电路、运动监测模块和电池电压反馈构成。按键可调整时间,控制电击模式,时间模块可向MCU输出时间,MCU也可向时间模块发送命令调整时间;运动监测模块向MCU发送运动数据,送入数据处理单元;电压量通过MCU时刻监视,向电压数字量送入数据处理单元。
(2)数据处理部分:运动姿态监测处理模块利用数据协议将运动数据送入数据处理单元MCU后,数据处理单元系统会对运动姿态返回的数据进行运动姿态的解析和计算,判断此时的是运动姿态,并且用户可以实时记录下当下的运动姿态以及步数;时间对比处理模块将返回的时间数据送入MCU,会将运动闹钟时间与处理单元设定的运动闹钟时间进行对比,当一致时,或者通过对比可以发现运动姿态不准确时,控制震动模块或者控制电击模块做出的相应的反应。
(3)电冲击和显示输出部分:由电击模块、显示模块和LED灯组成。根据数据处理单元得到的控制信号,输入相对应的模块。模块得到信号做出对应的反应。
以上三个部分构成一个完整的系统,能够稳定准确的对应电击手表进行控制。

二、硬件系统实现

设计总功能框图如下图系统功能框图所示,所有用电器均采用3.3V供电,可以减少元器件数量,为了进一步缩减PCB尺寸。下图左侧为信号输入MCU部分,右侧为信号从MCU输出。下面对每个模块进行分析。
硬件系统框图
系统功能框图

2.1 单片机最小系统

STM32F103是一款32位的高性能的Cortex-M3内核的处理器,其最小系统包含四部分:单片机、时钟震荡电路、复位电路、SWD调试电路。如图所示为最小系统原理图。
最小系统
图-最小系统原理图

STM32F103是一款32位的高性能的Cortex-M3内核的处理器,内部时钟高达72MHz,支持DSP指令。其ADC分辨率达到12位,本次设计精度达到十位即可满足,为了使系统更加稳定因此使用其最大12位精度,满足要求;RGB灯使用三个普通IO控制引脚;电冲击使用一个PWM脚,一个普通IO脚;三个按键占用三个IO脚;OLED占用四个IO脚;运动检测模块占用一个I2C通道;预留串口引脚。其功能引脚定义见表3-1所示。
芯片功能引脚定义

2.2 电池管理模块

tps4057典型应用电路
TP4057这是一种用于单节便携式锂离子电池的恒流/恒压线性防反向充电器。简单的外部应用控制电路非常适合便携式锂离子设备的应用。它非常适用于对usb电源的操作。它内部具有防反向充电的功能,不需要额外的隔离充电二极管。热反馈电阻器可以自动地调节适配器的充电电流,以有效限制在高功率温度操作或高环境温度操作条件下的电池芯片的温度。TP4057的自动结束充电过程可通过截止输入电压为4.2v,可通过外部热反馈电阻器的设置来限制充电电流。同时当充电温度降至设定值的1/10时, TP4057将自动地结束充电的过程。同时在移除输入电压后, TP4057ST26P自动地进入低输出电流自动待机的状态,从而将高电流待机状态的电流降至3ua。
特点:
(1)最大充电电流:600mA
(2)无需MOSFET、检测电阻器和隔离二极管
(3)智能热调节功能可实现充电速率最大化
(4)智能再充电功能
(5)预充电压:4.2V
(6)C/10 充电终止
(7)2.9V 涓流充电阈值
(8)单独的充电、结束指示灯控制信号
(9)封装形式:SOT23-6L

2.3 电击(放电)模块

本电路的设计主要采用单片机的低压输出脉冲控制三极管驱动变压器初级,高压的脉冲从次级电路流出作为脉冲放电的输出端,变压器二极管作为主要的放电控制元件。三极管通过驱动变压器,再通过连接单片机的控制三极管,形成一个级联的脉冲放大信号控制电路。如图所示,电击控制电路一般需要两个引脚控制端口,一个是作为总的脉冲使能输出端,只有将总的使能输出端置于高电平,脉冲放大信号的输入才有效。
电击模块原理图

2.4 运动检测模块

为了运动传感器检测系统的稳定并有限度地增加系统的功能多样性,本系统的设计采用了MPU6050作为陀螺仪运动传感器检测系统的芯片。其运动传感器检测系统的电路如下图所示。在数据信号端和时钟信号端分别接10K的上拉电阻,额外添加一个四脚插针座,以防MPU6050焊接出现问题,可以外接拓展MPU6050模块。MPU6050通过专用的I2C协议与外界传输信息,协议上还可以挂载其他设备(比如压力传感器)。为了精准跟踪快、慢运动,该部件还可以可编程器件的加速度计、陀螺仪的量程范围和低通滤波器。该部件具有较强的抗冲击能力,高性能,低噪声等。
mpu原理图

2.5 其他模块

整个系统还包括交互设计,如按键操作,LED指示灯,OLED显示等电路
半成品
OLED状态指示
电击触点

该处使用的url网络请求的数据。


三、软件系统实现

该项目中主要使用的集成软件设计平台是keilμVision5。本设计过程中,以设定目标步数作为电击释放的条件。

3.1系统主程序设计

程序流程框图
当系统工作于运动数据处理时,MCU通过IIC通讯读取MPU6050数据,通过记步算法的计算,判断此时携带者的运动状态,将计算出来的步数显示在屏幕上。
当系统工作于时间数据处理时,MCU获取时间后,一方面直接输出屏幕上显示,另一方面要与提前设定的电击条件做对比,如果成立启动电击效果,也可作为闹钟,能起到强效催人起床的目的。

3.2 运动姿态算法程序设计

运动姿态算法为解运动姿态主要算法,为获取携带者运动姿态提供解决途径。其流程图如图4-2所示。
计步算法
运动姿态算法流程图如上图所示。该设计使用MPU6050作为传感器,MCU通过I2C与之通信以读取相应的数据。首先分析数据并建立姿态测试模型。这里可以使用ADI公司提供的运动姿态测试模型数据,如下图所示。可以清楚地看出,无论运动计步器如何设计和佩戴,至少一个运动轴始终应该具有相对较大的运动周期性加速度的变化。首先获取多组分别位于x,y和z轴的数据,然后求出他们的平均值。最终平均值可以被用作输出的结果,以使输出的结果更平滑。最后完成初步的过滤。
然后计算一个动态阈值。动态阈值实际上的含义就是在每次采样的过程中获得的每个活跃轴的最大平均值和最小值的平均值。它每50个活跃样本都会更新一次,并且可以动态地更改。所以只需要每50个活跃样本从中抽取出最大值和最小值即可。最大值和最小值也都具有重要的作用。它决定了最活跃的是哪个轴,因为最终判断哪个轴最活跃,根据那个活跃轴应该具有最大的运动加速度变化,它也被视为活跃的轴。
其次计算当前动态精度(由一个可以进行线性移位的寄存器加上一个寄存器预设已经确定的动态变化量绝对值来计算可以消除高频的噪声),移位的寄存器中应该有两个动态样本,一个是新样本,一个是老的样本。只要从样本中采集得到一个动态样本,为当前的样本。那么当当前的样本重新到来,老的样本无任何条件可以更新为新样本的绝对值,但是新样本就不是无条件可以更新了,假设寄存器设定当前动态的精度绝对值为10,当当前的样本到来时减去新样本的绝对值,如果样本轴动态变化量绝对值大于新当前动态的精度,那么新当前样本就会无条件更新为当前样本,否则动态精度不变。
最后步伐判断。判断为一步的条件是首先在样本中找到最活跃的轴,然后分别找到最活跃轴的老样本大于动态阈值和新的样本小于动态阈值。如果满足以上的条件,就被认为这是一个正确的步伐。在运动数据采集过程中,为了滤除错误数据,可以将连续的运动大于5步,才会视为走路。同时,数据显示最快的采集数据步长速度约为每秒5步,相当于200毫秒的采集数据为一步。会连续采集获得5组数据,然后对其进行滤波以获取样本,这样的数据可能会更准确。
ADI数据
图 ADI公司步态测试数据

四、实测

实测,计步,时间显示,电击功能以及电击能量等级调节功能正常
实物图
外壳

总结

源码,PCB,原理图,3D模型都已开源。 下载链接地址:https://download.csdn.net/download/mogusdz/66755182

😊😊😊😊😊😊😊😊😊😊😊😊
如有不对的地方,请指正!欢迎交流!
😊😊😊😊😊😊😊😊😊😊😊😊

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小宋好像有点东西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值