OC711

之前逛中景园的店,买了几个0.87寸的12832oled和0.49寸的6432oled,拿到手之后就在想能拿来干什么,结合手头的元件就有了这个玩意。github

根据自定的编号规则,O指oled,C指产自中国,7是0.87寸,1是有一片显示,第二个1是同编号下第一个项目。

本来想用6432当显示的,做的越小越好嘛。结果0.49寸实在是太小了,外形相仿的电池根本撑不起这个oled的功耗,然后就换成12832的屏了。板载SHT20温湿度计,照惯例时钟是DS3231M,单片机STM32F103T8U6,充电管理LTC4054,锂电池是401237,160mah一片。

说起这个单片机,本来想用个STC15W204S的,时钟和显示都是iic器件,挂在一条总线上那8脚明显就够用了嘛,没咋思考就画板子打板子了。板子拿到手开始写程序,当场傻眼,单片机只有4k的rom,光oled的程序include进去也不止4k啊……子函数全包含进去之后编译出来的hex就有十来k,一通操作试图缩减程序大小,没啥显著效果,还是远大于4k,遂放弃STC方案直接换用32。

然后说真的这是我第一个基于32的,截止至现在已经能大致按照预期设计正常运行的项目。之前做的要么还是个pcb空板要么只是个开发板没实际功能……项目的oled代码来自中景园提供,SHT20、DS3231和iic代码来自某GIE电子火控部开源资料,我只是写了一堆胶水程序把这些东西粘在一起。

单片机换32之后,我就直接开始写程序了,第一步配置时钟就卡死我了……因为缩减体积,最初设计上就没配晶振,使用32的HSI时钟源,然后吧……有32cubemx配置还挺简单的,但是cmx出来的程序是hal库的,我手上其他已经完成的部分都是std库的,我不知道这俩能不能共存(我猜不可以)然后头痛了好长时间,最后买了个3213的陶瓷晶振加到板子上了,还是用HSE时钟源。

加完晶振,提交jlc,三天后板子到手,开焊。听说SHT20这种温湿度传感器的感应窗口很娇贵,不能接触助焊剂那种有机蒸汽,遂裁了一块金手指胶带盖上去,用铁板烧法焊上了。其他部分焊接都没什么问题,整体组装之后把之前的程序直接烧进去,然后就gg了……swd直接读不到单片机,屏幕也没显示,当场脑壳爆炸。现在想来大概也许可能是抄来的休眠代码有问题吧……总之又掏出32最小系统板开始改程序,发现主要问题还是iic程序的引脚初始化之类的地方有问题,按照原理图一通修改之后调通了,现在oled能显示了(在最小系统板上)。但是现在OC711上边这个单片机根本读不到没法重新烧写啊淦。问了大佬之后,拿一根漆包线把rst脚飞线出来,接到gnd上,keil里点了下载再断开飞线,烧写成功,显示正常。但是他娘的这个温度显示恒定不变的128度是什么鬼,温度恒定湿度却在变,应该不是iic程序写错了。思考了一下绝对说不定是SHT20的iic太慢读取出错了?打开sysint把系统时钟从48m改到24m,现在正常了,正好降低了单片机频率也能节能一丢丢。

剩下的应该就没什么可说的了,如果有想起来的再附,工程的程序和pcb文件见上边的github。