用户
 找回密码
 注册
发新帖
1#
跳转到指定楼层

【EasyEDA杯】手表二号(STM32+蓝牙4.0+三轴加速度)

  [复制链接]
    还记得手表一号的制作:http://www.ndiy.cn/thread-42852-1-1.html
    如今已经有了半年的时间,我也已经置身社会,不再是一个大学生了。回顾手表一号的制作过程,还历历在目,一个人的制作需要花费的时间和精力太多,要解决的难题也不少。而这次的手表二号也同样如此,本来中途几经放弃,但又重新振作精神,终于在这个初秋把它完成了。
    这次的手表二号与手表一号有重大的改变,几乎是全部焕然一新,虽然最后有些不足,但我觉得自己已经很努力了。
    首先,最大的改变要数外观,之前手表一号用的亚克力外壳,现在我采用了当下比较流行的3D打印技术,其次是表带,采用1.6mm的PU皮表带,再者主控从stc改为cortex-m0内核的stm32f030c8t6,然后是屏幕,为了省电采用的是0.49寸最小的OLED屏幕,最后,加上了三轴加速度芯片ADXL345,以及蓝牙4.0的模块DA14580。下面将依次介绍它们。
    在介绍它们之前,小伙伴们可能很想一睹手表二号的面容了,那我们先说说整个制作过程吧,嘿嘿。
    首先,做完手表一号之后,我为了能用上stm32的芯片做手表,开始学习它,我发现网上大多是stm32f103xxx和stm32f051xxx的教程和开发板,于是先学了,后面发现清风有stm32f030xxx的教程,于是再学它,030和051的芯片非常相似,除了比051少了电压比较器和DAC之外其他基本都相同,但是价格却要便宜很多,这也是我要采用它的原因之一。由于当时资金有限,我就自己做了个最简单的开发板:
IMG_20160804_213451_HDR.jpg
IMG_20160804_213516_HDR.jpg
    怎么样,很丑吧?不过虽然丑,但实用,并且只是做实验用用,不要在意这么多啦。另外说一下,虽然同为LQFP封装,stm32芯片的引脚比stc芯片的引脚要密一些,洞洞板可能有点困难(大神忽略)。
    不知道用这个板子测试了多少次程序,RTC时钟程序,ADXL345各个模式程序,蓝牙4.0模块程序,OLED驱动显示程序,ADC测电压程序,低功耗程序,计步程序等等。总之,漫长啊。。。然后终于是成形了,接着开始画电路和PCB了:
O6Q}LIEIJ591%}$LVW])GFA.png
OUY25DKJ_CFDZB2SVRV1000.png
    采用双面板,尽可能地把面积缩到最小,最终尺寸为20×20mm,这个布线规则要考虑到商家的规定,另外,蓝牙模块天线下不可布线,会严重影响通信。在这个设计阶段我出现了一些错误,首先是OLED电路图画错了,导致PCB也错了,然后已经打样回来了,只好用小刀和飞线改,不过还好只有一条线错误。所以我们设计的时候一定要考虑周到并重复检查,确保无误。还有一个错误就比较致命了,属于设计上错误,下面会重点提及。
IMG_20160814_155549.jpg
IMG_20160814_155616.jpg

    打样回来的PCB,看着还行吧,普通的绿油,普通的板子,哈哈,焊上OLED,额,咋不亮,还好一下子就发现是连线有错误,改过来了,现在的电路图和PCB文件也改过来了。
    好,PCB回来了,再就是根据PCB大小设计外壳了:
MHWP90__5H(DZHYLPDV]MLN.png    
(8){VMAXZV~@8E%BHREEE)B.png
    在某宝上的3D打印看时,说是很多画图软件都可以,不过要stl文件。本人有CAD证书,然而,并没有什么用,还是不会画。在网上看到说CAD主要画平面工程图,立体图虽然也能画,但是不怎么好。所以我打算自学一个画图软件了,有看到3DMAX,不过听说很难学,所以我就找了个简单易学的,也就是Sketchup。在某个自学网上开始学习,终于学得一点皮毛,可以画出像样的图了,不过还是失算了一把,上面看到的是第二次设计的外壳,虽然还是不如人意,但是也勉强过关,第一次设计的就垃圾得不行。结果3D打印了两次,花了米米不说,还浪费了时间,宝宝心里苦啊,但宝宝不哭。
    来看看3D打印效果如何:
IMG_20160803_195513_HDR.jpg
IMG_20160803_195438_HDR.jpg
IMG_20160803_195449_HDR.jpg
IMG_20160803_195456_HDR.jpg
    感觉还行吧,再牵强也只能怪自己画图画得不好,和表带不是很搭,因为树脂是米白色的,表带用的亮白,不过配其他颜色表带就更不行了。可以看到,比起手表一号,这个手表二号又要小很多。
    好,这下终于可以装机测试啦,首先焊接元件到PCB,这里有个元器件焊接有点难度,便是ADXL345了,它采用的是LGA的封装:
IMG_20160804_214001_HDR.jpg
IMG_20160804_214011_HDR.jpg
    小也就算了,引脚都在背面,在网上搜这种封装的焊法,其工厂工艺是SMT机,打钢板,送回流焊,当时就觉得要用热风枪,只可惜热风枪在家里,没办法,电烙铁硬上了。为啥要急着硬上呢?因为当时马上就要毕业了,想在毕业前送给她,这个手表由于前面的各种已经拖了好久了。
    结果,坑爹的事情就此发生,之前我说过有个设计上致命的错误,那就是我在ADXL中断2端口与单片机中断端口之间接了个三极管(为什么要接三极管,后面讲ADXL功能时会提到),结果导致低功耗测试通过不了,一直有个3ma左右的大电流,于是我对模块进行一一排查,然后检查到ADXL芯片输入的电流达3ma,当时我认为虽然ADXL和单片机通信成功了,但是或许中断端口发生了短路,于是用烙铁强行把ADXL345拆下来,结果可想而知,报废了一块PCB和一片ADXL345。之后我又想通过飞线的办法将ADXL飞上去,结果又报废一片ADXL345,这芯片的引脚太弱了,加温时间稍长就脱落了。。。
    这是我做手表二号最惨痛的教训,随后耽搁了好长一段时间不想理它,也是忙毕设去了。然后后面又想做事得有始有终啊,所以有了下面这个奇形怪状:
IMG_20160804_213805_HDR.jpg
    哈哈,直接将ADXL模块上的挖下来,飞线上去,这就尴尬了不。然后一检查,我去,还是有3ma大电流,然后才发现大电流来自三极管,我的心好痛啊,我恨不得把那个三极管碎尸万段,因为之前的ADXL345确实是焊接好了。
    唉~终于,我还是回到了家,用上了热风枪,轻松解决无后患。
    当然,三极管是不能用了,思索再三,改了程序解决了问题,上续电路图中已经改了,但是PCB文件还没改,仍然有个三极管。
IMG_20160803_195216_HDR.jpg
IMG_20160807_170528.jpg
IMG_20160804_213812_HDR.jpg
IMG_20160807_170542.jpg
    好,prefect!额,松香加得有点多,不怎么漂亮哈。可以用清洁剂洗掉,不过那瓶清洁剂被高铁的阿姨收走了,说是会爆炸,我就只能呵呵了。
    有木有注意到我的蓝牙模块,是的,就在ADXL345旁边,它非常小,也是我找了好久能买到的最小蓝牙模块了,仅有5×7mm,并且是蓝牙4.0,可以达到低功耗目标。
IMG_20160804_213740_HDR.jpg
    弄坏了一个,心又碎了一地,不过还好不是蛋碎了一地。这种蓝牙模块嘛,对于我们这些平民DIY人士而言价格还是相当可观的。
    焊好之后当然就是各种测试啦,通过测试来修改程序,这有是一个漫长的过程。。。
IMG_20160803_195318_HDR.jpg
IMG_20160803_195338_HDR.jpg
    好的,屏幕成功点亮,装机吧!
IMG_20160803_203235_HDR.jpg
IMG_20160812_215506.jpg

    额,别想着装机就完了啊,还是要引出烧录引脚,还是要测试要改程序,不用说,漫长,因为我并没设计按键,一切操作都要看ADXL345的了,所以必须带手上测试。
    最后,程序定型了,不过仍然有很多需要改进的地方,但不能老是拖着,所以也算圆满结束啦。最终装机,拆除多余测试线:
IMG_20160812_215519.jpg
    只剩两根充电线,充电接口为安卓手机通用接口。
IMG_20160803_203246_HDR.jpg
IMG_20160814_155930.jpg
IMG_20160814_155945.jpg
IMG_20160814_155935.jpg
    赶紧戴上瞧瞧,嘿嘿,有模有样的,就是表壳略大,还有表耳的设计不好。
IMG_20160814_155821.jpg
IMG_20160814_155838.jpg

    充电中,背面可见4颗小螺丝。
IMG_20160814_160012.jpg
    点亮!我无法形容此刻的心情!
    下面来看一下演示视频吧!首先不足之处先做说明哈,由于ADXL345和OLED屏幕共用I2C总线,所以导致有些冲突,显示可能会有点问题,但是看时间绝对是没有问题的。另外,计步功能不够完善。还有就是,熄灭之后不能马上尝试唤醒,必须等待两秒左右,这个后面讲。其他问题欢迎指正。
    首先是首次上电开机测试视频:


    然后是各功能演示,视频倒了是由于我只有一个人,自拍自演不好弄,对不住大家了!



    还有一个利用单双击操作的视频不知怎么上传不了,算了。
    下面我将介绍各芯片模块和我的设计,没有图片了哦,纯文字讲解。
    一,主控STM32F030C8T6,具有64K的flash,程序空间足够,我仅用了30K,用到的外设:RTC,配32.768K爱普生贴片无源晶振,提供准确时间,I2C,与ADXL345和OLED显示屏通信,USART,用于调试以及与蓝牙4.0模块通信,ADC和DMA,检测电池电量,在这里我采用两个100k的电阻分压检测,其耗电20ua左右,本想用更大的电阻,但是会检测不准。
    二,ADXL345三轴加速度计,具有低功耗能力,待机0.1ua,休眠23ua,具有敲击检测、静止活动检测、自由落体检测(没有用到)、自动休眠、FIFO等功能,具备两个外部输出中断。流程:上电时,打开敲击中断检测单击与双击并通过中断1控制CPU,CPU进入待机前将其自动休眠和活动静止功能打开,检测到活动时,通过中断2唤醒CPU,当进入计步模式时,打开FIFO功能和水印中断。这就是它的三个模式。其中要实现也是非常困难,有许多寄存器要配置,比如敲击阈值,敲击持续时间,敲击延迟,敲击窗口,中断使能,中断映射,活动阈值,静止阈值等等。每个功能都有对应的轴检测,比如,我唤醒使用的活动中断就是检测X轴,也就是与手臂垂直的那个轴,所以快速地转一下手会将其唤醒。
    之前所说的一个问题,就是为什么要加那个三极管呢?因为它的两个中断要么全设置成低电平触发,要么全高电平,但是CPU待机唤醒需要在WKUP引脚给一个高电平(低电平复位不行,因为ADXL在中断数据未被读走前一直保持中断,那么CPU将不能正常工作),而其他中断要低电平,所以加上三极管做非门用。后面程序改为换模式时更换中断设置解决了此问题。
    三,蓝牙4.0,芯片为DA14580,小米手环1里面也是这个芯片,它为cortex-m0内核,这样我的手表里面还是m0双核呢,哈哈
    四,充电芯片和稳压芯片为TP4057和RT9193.
    五,低功耗设计,注意事项:
        烧录完程序boot0会接地运行程序,这时要去掉上拉电阻,否则有损耗
        CPU停机模式一定要关闭ADC,DMA等外设,没关闭前1ma左右,关闭后300ua
        ADXL345可通过降低电压来降低功耗,U=2.5V时,测量23ua,待机0.1ua
        降低CPU主频,48M下16ma,16M下8ma,8M下6ma
        关闭不使用的外设时钟
        实测:CPU待机4ua,OLED休眠6ua,关闭0ua,ADXL345待机5ua
        由于我的设计没有按键,ADXL345不能待机,只能休眠
    六,计步功能简要说明,(我也是参考网上的,大家有兴趣可以去搜去研究)
        如果记10~100次数包含一个步伐,则速度为0.2s/步~2s/步,这是正常范围
        为使数据平滑,需要使用数字滤波器,即求平均值法
        系统持续更新三个轴数据,找到MAX和MIN,求平均值即为动态阈值,假设每采样50次更新一次,则确定动态阈值后,接下来50次可判定个体是否迈出步伐
        步伐迈出定义:当加速度曲线跨过动态阈值下方时,加速度曲线斜率为负值
        峰值检测:根据X,Y,Z轴中变化最大的一个轴计算步数,如果加速度太小则忽略
        排除无效震动:时间窗口和计数规则。(排除高频震动和低频震动)


    关于是否开源的问题,之前看到有人的资料被拿到网上去卖,所以有些顾忌,开源是为了增加大家一起学习一起进步的,切不可用于商业用途,在这里我的资料设置一些权限,如果有需要的可以在下面留言,有问题的也可以在下面留言。


    OK!以上是我所有的阐述,欢迎大家询问和指教,再次感谢论坛,感谢大家,这两年里,在论坛学到了很多很多,从最开始的什么也不会到现在的一些制作,都来自论坛的帮助,真的很感谢大家!














USR.zip

37.04 KB, 阅读权限: 100, 下载次数: 0, 下载积分: 下载币 -5

pcb和电路图.zip

540.88 KB, 阅读权限: 100, 下载次数: 1, 下载积分: 下载币 -5

评分

参与人数 7下载币 +43 刀币 +43 收起 理由
a1061492840 + 5 赞一个!
流星也会永恒 + 6 + 6 精品文章
hxrong + 6 + 6 原创内容 给力
玩转 + 8 + 8 赞一个!
茅草屋 + 10 + 5 支持DIY精神!
diyxue + 8 + 8 很给力!
疯爱 + 10 支持折腾

查看全部评分

设计的挺好   给你点赞
回复

使用道具 举报

还有一点忘了说,就是感觉蓝牙模块没实现什么特别的功能,感觉有点浪费,是这样的,因为我自己不会做app,所以没办法,只能说,以后再努力吧
回复

使用道具 举报

楼主  3D打印一般在什么价位?给个参考
回复

使用道具 举报

楼主做的不赖,赞一个
回复

使用道具 举报

会机械制图,又会设计电路板,还会写程序!楼主就是全才的大神啊!!!!!!!!!
回复

使用道具 举报

会机械制图,又会设计电路板,还会写程序!楼主就是全才的
回复

使用道具 举报

原创好帖,点赞了。,。,
回复

使用道具 举报

不错  楼主能给权限下载吗
回复

使用道具 举报

感觉STM32的时钟不是很准。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回顶部