标签:
实习阶段的经历是大学阶段最美好的一段经历。
设备内容:设计一个走步机将用户的运动步数和心跳数采集出来,让后发送给主机,主机将数据上传至服务器端,服务器将用户数据下发至用户手机的APP上
用户可以和将数据和好友分享并且可以以后和超市建立合作,当达到指定数的步数时候,换取例如洗衣液等产品。
实习主要负责运动步数和心跳的采集,和数据上传,包括从机显示界面设计。
主控芯片:STM32F103VET6
运动步数的采集:
运动步数传感器采用霍尔传感器,安装时在走步机的摇臂上安装一块磁铁,然后在走步机固定杆上前后各安装两个霍尔传感器,计数办法是用户运动一个来回算作一步。
霍尔传感器模块的设计:
霍尔传感器选择:SS495A1
SS495A1 是高精度线性输出霍尔元件。该元件特点是:内部有温度补偿电路并由激光对电阻 进行修正, 使零点温漂为±0. 04%/℃, 灵敏度漂移为+0. 02.
SS495A1的输出直接接到74HC14的施密特触发器上,输出变成二值化,这样数据检测起来就很简单了。
程序上采用外部中断进行数据捕获,霍尔传感器输出线上拉,输出线触发中断模式选择下降沿触发,共分为前后两个传感器,所以每个传感器对应一个中断,
进中断将采集成功标志位置1,当前后的两个中断的标志位都为1时,将计数的变量加1,以此往复技术下去,变量类型32位整形数据,足够用。
心跳采集:
由于对于心跳采集的办法不是很熟悉,心跳采集模块买的现成的模块,大体的原理是这样,通过手柄上的金属电极获取人体手掌上的心电信号,再经过放大滤波等信号调理后,提取R波并整形输出,最终使心率信号转化为单片机可以直接测量的方波信号。
心跳采集的一个主要的问题是,怎么通过软件滤除干扰信号,最后通过跟模块买家交流得知,干扰主要是尖峰信号,为了更好的滤除干扰,两个波峰信号的之间的时间间隔小于250ms既可以判断称为是干扰信号,滤除即可。然后将正确的采集信号取倒数乘以60就是所得的心率数据。
以上是工作中最核心的两个工作,这两个功能的实现基本功能就完成了,精简程序后就是解决怎么跟主机通讯的问题了。
与主机间通讯,为保证数据的正确无误通讯协议是必须的,这也是自己第一次正规的跟其他人一起共用一个既定的协议,之前做的东西协议都是自己定义的,反正自己看得懂就是了。这次是很正规的协议,包含必须的两字节帧头,心跳包,功能码,数据位数加数据码,CRC校验。
首先是初次开机上电,应答主机的群发呼叫信号,确认在线,并将自身设备唯一标识码发送给主机,方便主机备注设备,这里的自身设备唯一标识码利用的是STM32出厂标识码12字节,将标识码读出来以后,就可以作为设备的唯一标识码,无需自己编码。
然后主机下发一张二维码,和网络时间,从机负责将二维码显示出来,将网络时间与自身时间进行比对,一切以网络时间为准,重新设置下DS1302时钟芯片。从机接收到数据后应答主机收到。
用户扫描完二维码以后,主机会下发开始工作指令,从机接到工作指令,将界面切换至计数显示界面,同时开始步数统计和心跳统计,同时开启定时器,当用户的两项数据不再更新时,在30S以外时,认为用户离线,同时关闭统计,将数据上传至主机,将界面切换至最终计数结果界面,主机接收到数据以后,下发应答指令,并且附带一张全新的二维码,收到主机的应答指令后,将各项参数清零并将新的二维码显示出来,至此完成了全部工作流程,之后就是反复的重复上述功能。
心跳机制:
在通信期间一直周期进行的就是心跳机制,心跳机制是双方确认彼此在线的唯一方式。
重应答机制:
例如:主机下发某项工作指令,从机没有及时应答,主机会反复发几次,如果还没收到应答,但是心跳存在,就默认系统出现故障。
标签:
原文地址:http://www.cnblogs.com/achao123456/p/5294888.html