Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
120 lines (89 sloc) 12.2 KB

Breastfeeding_clock

哺乳记录器,记录宝宝的哺乳时间,大小便时间、补水时间,以及距离上次相关事件的时间间隔。

开发过程记录

2018年3月29日23:33

使用储物柜的源代码,调通PA0-PA7作为12864的数据线;增加资料,主要是红外感应的资料;修改引脚分配表;DXP文件定义一些引脚。

2018年3月31日23:00

关于电源这方面,之前没有做过电源的升压电路,也为安全考虑不敢轻易尝试。所以在淘宝购买了现成的充电宝的升压电路板,有过压过流保护,可以放心使用。
连接稳压电源时USB_5V负责给主板供电、给电池充电;
没有连接外部电源时,开关拨到电池供电端,此时就由电池给主板提供5V电源。

2018年4月1日(补)

元件选择封装,错误检查,PCB布局。

2018年4月2日23:30

修改部分元器件封装,修改原理图(将一些不确定,不需要插座的元件做成PIN1、空置引脚全部引出)
PB2(BOOT1)接地。
PCB电源布线、12864布线。

2018年4月17日20:00

前面这段时间确定了PCB,并且打了样板。在老家焊接并初步调试完成。
之前准备采用热释电红外作为感应模组,通过对手头现成的热释电红外模块(BISS0001)的测试发现其感应范围太大,不适合做近距离的感应。
经同事点拨,红外对管似乎更适合我的需求。
使用明哥的寻迹小车上的红外对管测试之后发现确实能很好的满足我的需求,遂淘宝下单买了两个红外对管模块--抱愧一对红外对管,一个LM393比较器。

2018年4月18日22:50

由于之前预留的micro usb接口需要飞线,并且暂时用不到串口下载功能,故没有使用CH340。今天将CH340电路中的一个NPN三极管的电路改造成了12864的背光电源开关,由单片机的PA15引脚控制。代码已经实现相关功能。等红外对管收到之后可以配合红外对管对12864的背光电源进行管理,达到降低功耗的目的。 这部分电路回头做在DXP里,第二版的时候再搞一下。

2018年4月21日0:50(21日发现bug)

将正点原子的实时时钟相关代码移植过来,并进行相关测试。中间发现秒更新放在秒中断里面的话屏幕上会出现一些乱码,随着时间的推移会越来越多。网上不少人讲是时序的问题,但是我的12864驱动已经使用很长时间,所以不会存在时序不对的问题。单步测试后发现时间更新显示函数自带的屏幕刷新功能影响了显示,具体原因未知,屏蔽此函数内的屏幕刷新功能之后显示正常。
增加“查看”之后的二级界面(暂时不会MD的表格功能,回头补)

2018年4月21日18:06

今日凌晨所调试的屏幕刷新出现乱码,是因为频繁的刷新导致的。遂将主循环中的刷新函数去掉,放在秒中断中进行刷新。
另,频繁刷新导致乱码的问题可能是因为ST7920相关引脚没有做外部上拉,导致单片机操作上拉速度跟不上,电压还没达到要求就已经开始进行数据传输,导致出频繁刷新出现乱码。【此问题可在下次打板时留下测试电路,以供验证本次猜测。】已经使用1K电阻验证,行不通。可能是电阻太小,导致电流过大,各管脚出现串联现象?未知,待验证。

2018年4月22日23:32

今日对EEPROM空间的使用进行了划分,由于后面要更换更大的AT24CM01,所以给各个Item设置了一个Base_Address,后面只需要更改基地址就行。第五字节存储一个0x55,用作初始化判断;10、20、30、40起始位置之后的十个字节存储索引,实际只用两个字节存储当前已经存了几条信息。
偏移计算: 索引信息X6(每条信息所占空间)+Base_Address【会做表的时候再来添加,信息都在笔记本上写着。】
今日还将流程走到显示列表的界面,发现有些之前没考虑到的问题。时间差的计算倒腾了一下午,各种伪代码写了三大页。晚饭后还是把之前的所有方案全部推翻了,三百多行的代码直接删掉。如果有运行速度更快、占用空间更小的方案出现,那之前的代码写的再漂亮也会在新方案出来的那一刻变成一堆一文不值的乱码。主要是因为之前考虑的不定因素太多了,导致代码不好编写。其实真是的需求、使用环境中并不会出现那些不定因素,因为其他代码也对不定因素进行了限制。

2018年4月23日23:26

使用10K排阻上拉12864的数据线,经过测试还是有些效果的。回头功能完成之后再将其他引脚也使用10K电阻拉高,以提升其驱动能力。
再次推翻之前的时间差计算方式,使用一个基准时间,计算秒数来对比。省去计算负数的可能。

2018年4月24日23:59

今天有点过头了,距离项目结束越来越近,人越显得兴奋。每个功能的逐步完善,均能够给自己带来极大的愉悦感。
完善时间差的计算函数、完善存储函数、编写列表刷新函数。睡觉啦

2018年4月25日23:59

列表刷新函数功能有些混乱,未完成正常的列表移动显示功能。基础算法和指针的移动没有协调好,初步判断为指针在某一步的时候反向移动导致出现问题。反应在显示屏上是时间列表在某一步排序反了。睡觉啦

2018年4月26日23:29

将AT24C02更换为AT24CM01,存储空间由16KB扩大为128KB。128KB=131072字节=0x20000字节。程序中的P0位就是最高的那半个字节2,启示表达起来就是0x19999右移16位之后的0x01,所以P0位只有两种状态,就是0和1.
准备再次奋战列表功能的时候发现屏幕突然暗了,测量之后发现电池电压只有2.4V了,充电几分钟之后变成2.58V。证明了电池的欠压保护还是起到了作用的,电池还能继续使用。功能模块完成以后可以考虑添加分压电阻,接上STM32引脚来测量电池电量。就这样了,收拾东西,明天晚上回家了。睡觉啦

2018年5月4日

前面这些天回了趟老家,项目进展稍有延迟。
不过延迟并不代表没有什么都没有做,这期间将列表上下翻页的算法彻底的搞了一下,经过测试还算比较稳定的.
修改了计算时间差的一个小BUG,出现这个bug的原因是在计算时间差小数的时候忽略了秒计数的累加超过小时的情况,以至于会出现3600秒本来是1.0小时,结果计算为1.10小时这种情况。将小数位直接 %10就解决问题
对连续记录时间进行了限制,即在上次记录之后多长时间内不应该再次产生该事件的防错机制。
初步设定的时间:
哺乳:1小时
补水:1小时
小便:0.5小时
大便:1小时
这个时间我本来是给每一个事件设定了一个计数器,后来实际Debug过程中发现直接拿前面算好的时间差是更方便的。所以一个项目中如果不去认真考虑的话会产生很多垃圾代码,上位机体现可能不是很明显,但嵌入式开发过程中就会出现各种问题,最常见的就是存储空间不够了,垃圾代码过多,僵尸代码不及时处理会拖慢系统的运行效率,也给阅读代码的人带来很大的阻碍。严格审查代码切记切记!
4号这天将红外对管控制显示屏背光的相关代码进行了添加。
具体功能为:
1、开机背光亮起2分钟
2、任何按键都能唤醒背光2分钟
3、红外触发背光亮起2分钟
启示我考虑的是将12864的主电源也接在一起,这两天将代码完善之后可以实际测试一下。
另外12864来回按键出现乱码的问题依然存在,这是一个遗留的大问题,后面还需要尝试各种操作:重新焊线,热熔胶固定焊接头等等....

2018年5月6日 19:33

从昨天一直到现在中间基本上把程序固定了,昨晚开始弄直隼。下手之前觉得没什么,可一旦开始动手便感觉到了困难。所以说各行各业都有各自的运行轨迹,不能再没有任何尝试抑或浅尝之后便断定这东西很简单,很好搞。实际动手操作过才能下结论。好了不写了,得抓紧时间干活了,这两天我才吃了两顿饭。一直觉得时间不够用,恨不得一天二十四小时都在干活。刚刚短信提示TTP229的板子快递到了,待会明哥回来吃过饭后把板子焊接完毕再睡觉咯。

2018年5月25日

前面这段时间一直在弄木盒子,越弄越发现真不不好搞。今天上班时想到了屏幕乱码是不是电源引起的呢?经过给显示屏单独供电测试之后发现问题不在电源。所以后面还是得把寻找问题的重点放在屏幕底层驱动上面~

2018年6月6日23:16

今天发现是RTC秒中断里面的SHOWTIME函数导致出现乱码的,一瞬间想起来之前也发现了这个问题,但是没有引起我的重视。今天仔细一想,还真是这里的问题。因为showtime函数里面有屏幕刷新函数,而屏幕刷新函数里面又带有延时函数。在中断里面调用延时函数是一大忌讳,我已经在这上面吃了几次亏了。虽然这次只有几微秒的延时,但还是搞得自己差点崩溃,不过好在最后的最后还是被细心的我找到了问题所在(hiahiahiahia^_^)。

其实,把刷新函数放在住循环里面处理的话也有问题。就是每一个秒中断不能及时的被显示出来。这就会导致在主界面上面看到秒计数一会儿快一会儿慢。
一个问题解决之后就得想着另一个问题了,一个是主界面秒计数(这个不解决也行,优先级靠后);在一个就是电量消耗的问题。今天更新的版本中我已经

将屏幕持续点亮的时间从两分钟降低到了1分钟,以此来节约电量。再者再完善过列表显示的逻辑之后再继续测试功耗的大小。说到列表显示就再多说几句,列

表显示之前是已经测试过没问题了的,这两天发现还是有一点小bug的,不知道是代码没有保存还是怎么的。明天再详细的看一下吧。睡觉了,安安

2018年6月7日22:36

昨天发现列表显示还是有点问题,今天查了下代码发现一点bug,修改之后初步测试通过。

2018年6月11日00:36

测试了功耗,将万用表串联在升压电路之后到主板之间的线路上测得:屏幕亮起的时候124.8mA;屏幕灭掉的时候74mA。升压电路还有损耗,所以估算使用时长约为60H. 精修木盒,将不平整的契合部分使用木挫修平整,使用木屑填充小缝隙,木片填充大缝隙,使用502固定,等待502干了之后再挫一遍。

2018年6月15日 23:33

今天使用小型平锉将契合部分锉了一下,然后发到木工论坛。有师傅说还可以继续打磨,抛光一下。

2018年6月17日 23:45

今天使用吊磨,套上80目的砂带狠狠地打磨了一下。将之前开的榫的差距给补了一点,看起来不是坑坑洼洼的了。木板厚一些还是有好处的,这次差不多磨掉了3mm左右。明天是用砂纸稍微抛光一下看看。

2018年6月18日 使用砂纸打磨到1000目,时间比较紧,没有继续打磨。网上买了蜂蜡也没到,所以暂时没有烫蜡。

2018年6月21日

功能补全,因为之前测试的时候一直都是拿哺乳这一项来进行的,其他项没有相关的流程代码,今天把其他三项的流程代码添加了上来。并且在菜单项里面添加了清空的功能,经过初步测试是没有什么问题的。

2018年6月24日

今天把屏幕持续点亮时间从之前限定的2分钟缩短为1分钟了,省电为主。况且任何操作都会重置倒计时,所以不用担心操作时间不够的问题。

##到此为止,此项目基本完结。后面如果再有更新也只是日志文档的完整,与项目具体内容无关。
                             ——2018年6月24日 李亚东