1.项目的开始
做这个项目的初衷,首先自己是小白,需要项目经验,同时老师布置了一个大作业,然后我的想法是这个大作业的作品是检测甲醛气体之类的。但我上网搜索之后发现一个辰哥单片机的博主,他做的那个空气质量检测项目还不错,然后决定复刻这个项目。
复刻项目的开始(声明代码一定要手敲)
首先你得选材,你的各个模块必须测试过,而且你必须十分的清晰各个模块代码以及手册,操作的·具体流程。选好模块之后,我的建议是可以用面包板测试一下这个系统是否能正常的运行(主要是检查自己的代码能否跑起来)。博主也是把各个模块测试完毕之后,再选择PCB打板。
2.模块的选择上
(1).基础功能:
在我第一次测试中,这个项目只能进行各个模块数值的OLED显示,还有按键的切换OLED页面进行阈值的设置,当浓度到达阈值时会报警。
(2).后续改进(问题的出现):
但后面我加上了ESP8266这个模块,因为我觉得项目写在简历上必须有点水平才行,加上这个模块后问题就多起来了。首先,最初的设计版本也是有ESP8266的但不知道为什么一开始的这个模块就有问题,连接上串口后发AT指令无法返回OK。后面直接又买了一块ESP8266-01s的同时买了一块烧录模块。我重新把固件烧录进去后,旧的那块ESP8266才起作用,但还有其他未知的问题,这里项目使用的是ESP8266-01S,使用后因为是USART串口通信,但单片机(STM32F103C8T6)只有三个串口,JW01使用了一个,ESP8266-01S使用一个,DC01使用一个,是不是刚刚使用完全。但我在加入ESP8266-01时为了观测是否能正常通信,我额外接了一个CH340串口通信模块,观察是否能正常接收到指令。那问题就来了,我必须要放弃一个模块,后面我是把JW01换成MS1100。解决问题的方法,1,模拟软件USART通信,2.间歇通信,3重新选择模块。我选择的是3.重新选择模块,为什么选择三,因为方法三最简单,最高效(省时间)。
(3).测试问题的解决:
测试环节我发现当我用ONENET平台下发数据时,下发风扇停止的指令老是卡住,系统直接卡死不动,当我用debug调试时发现程序卡死在
void HardFault_Handler(void) { /* Go to infinite loop when Hard Fault exception occurs */ while (1) { } }我直接ai查起:得到的答案是大概率是栈的内存不足。
我把栈的大小从200改成400后问题解决,代码成功跑成。
最关键的一点debug调试这一项技能一定要会。
3.心得体会
其实还有很多注意事项,这里我不在细讲,但你自己要清楚做项目就是要解决各种问题,这是宝贵的经验,无论你用什么手段,重要的是解决问题。