事情要从去年开始说起了。去年暑假做完电赛,自我感觉对单片机的了解和应用足够之后,便开始了新一段的学习。那时候我选择了DSP,其实现在的我还是很佩服当时我的选择的,毕竟当时整个科协还没人学DSP,我只能在全校找学DSP的同学。就是这时候我认识了五系的黄杰学长,在这里要对黄杰学长表示由衷的感谢,因为他对我的学习提供了很大的帮助。也是在他的帮助下,我算是踏入了DSP的大门,开始学习2812,相当于DSP的入门级片子。
当我学了一段时间2812之后,感觉不到它和单片机的分界,尽管它具备很多单片机所没有的特性,但我还是没有那种踏入一个新的世界的感觉。也许这就是为什么外界说C2000都是高级点的单片机的原因吧。
以后我便放下了2812,开始学另一种高级的DSP-C5000。也就是从这时候开始,我产生了用它做项目的想法。经过一段时间的商议和不断的上网查论文资料。我和老翟准备一起做一个家居智能小车。主要功能是用机械小车载着一个摄像头,把摄像头采集到的数据经过解码以后通过wifi传到互联网,再到另一端进行数据的编码,并把图像显示到液晶上。另外还增加了几个附属模块,第一个是利用GSM模块控制小车的移动,就是可以用手机短信控制小车的前进后退,第二个是利用红外模块进行对家用电器的控制。
这里说一下,当这个方案完全定型的时候,就已经到了14年寒假了。我觉得这个方案就为我们这次项目失败埋下了伏笔。因为软件任务太多了,可能是我们选定的项目偏向软件的原因。现在想来我应该再找一个软件一起做。不过这个还不算是我们失败的根本原因,因为到现在软件任务最难的部分已经完成了,但是毁在了细节上。
之后就是不断的方案和器件选型的调整。首先我们想[size=10.5000pt]到的是用侯老师提供的达芬奇套件进行图像处理,暑假的时候也对这个套件进行了几天的研究。但是后来发现尽管这个套件很适合做这个项目,但是没有仿真器。这就是很纠结的一个问题了,ti官网有卖仿真器,但是花费要好几K,所以我们只能放弃了这种套件。另换了另一个C6000的套件。这个套件最终也没有被采用,因为这种DSP缺少我们进行视频处理的视频接口,而且没有解码电路。这样说吧,我们进行嵌入式软件开发重要的是有一个稳定可靠的平台,如果我们把我们辛苦敲好的代码在一块不稳定的电路上运行,结果发现不能运行,那我们就不知道究竟是硬件还是软件的问题。这是一个非常恶心的问题。
经过这一番波折之后,就已经到了大二下开学了,到了这一步算是走投无路的我得知了我们学校以为研究生导师那里有很多图像处理套件。我马上决定给老师打电话,我清楚的记得我当时给老师说的是:”陈老师您好,我是八系的李浩哲,我想用dsp做图像处理,但是没钱买套件,请问您能不能借我一套,可以的话我就给您干活,不能的话就算了。”为什么这么说。因为我也明白这样的套件对于每个研导来说都是不多的,几万一套的套件,我不敢肯定他能不能拿出来给一个完全不了解的本科生去用。所以我只能这么说。所幸的是陈老师很慷慨,直接让我去找他,并和我聊了很多,之后我便顺利借到了图像处理套件。
回忆起来,这段时间是我整个做项目的这三个月最顺利收获最大的一段时间,也是在这里我真切的了解了图像处理,并调试出了这个部分。在这里对陈老师表示真挚的感谢,谢谢!
接下来就准备调试wifi.模块,这里还是遇到了之前的问题。具体问题涉及项目比较深我就不多说了。最终我们还是放弃了wifi这个模块,准备固定摄像头在一个地方(之前确定的是车载摄像头),用网线传输数据,在网页上查看视频。因为这个技术现在比较成熟了,所以我调的很顺利。接下来便剩下了GSM模块,最后的问题也出在这里。
在这里不得不说到我的心态问题,或许是走到这一步我已经把整个项目最重要也是最困难的一部分完成了,剩下的附属模块我便轻浮的以为不值一提了。也是从这时候开始有了松懈。在这个时候就已经四月中旬了(四月三十号之前交作品),最后调试GSM模块的时候我没有仔细看用户手册,直接上手调,用上位机控制GSM,成功;用单片机和上位机通信发指令,成功;最后用单片机连接GSM控制收发短信。失败。
我们的项目进程此时卡在了这里,程序没问题,板子没问题,连一块就是不好使。为了这个问题我们连着包了两天宿,我跟老翟尝试了各种电路各种猜想结果还是不行。最后我们舍弃了串口直接跳线连接单片机和GSM,好使了。
当天晚上我们开开心心回寝室之余,我还在思考为什么调试通过了。结果是我也不明白。因为通过这两晚的摸索我对这个电路也有了系统的了解,但是还是不明白为什么调试通过了。但是事实就是好使了,我便没有在意。
第二天中午,我来到实验室,接着调试,还是好使。我清空了一下液晶,添加了显示短信的程序,[size=10.5000pt]开始联调。准备调试完整给老翟看看。写完程序之后,再上电,发现[size=10.5000pt]整个系统已经烧了。
接下来我们查电路查了好久。还是不明白为什么会烧。当天晚上老翟看到电路背面有标注,大致意思就是板子和上位机通信要怎么跳帽,和单片机通信要怎么跳帽。
事情到这里就明了了。我们终于明白了为什么之前的调试不通,可是板子已经烧了。
当时是4月27号,距离交作品还有两天。
当晚我们系科委开会,因为我和老翟都是科委,都一起去了。到了会议室谁都没心思听。就接着商量以后的事。老翟问我假如调好GSM之后,车载的红外模块好使了没有。
到这里我才想起来之前我们找一个大一的学弟帮我们做红外模块,但是到现在他早就不干了。我也没有在意这件事。觉得这个模块简单,应该不是问题。到现在才想起来。晚了。
太浮躁。
除了在项目开始的时候我系统的想过这个项目以后,我就没有再现在系统的角度看过这个项目。只是着眼于局部,直到调完最困难的模块以后这个错误的观点被我无限放大。觉得剩下的都是小事,没问题。
然后我们最后就折在了小事上。
突然想起来这个问题好像不是第一次犯了。去年省赛的时候也是,当我完成了整个软件系统的时候,同样开始了松懈,没有太在意剩下的细节。最后在测评的时候被老师抓住一个bug扣了两个指标的分。最后只拿了二等奖。
千里之堤,溃于蚁穴。
整个项目做到这里在我眼里就已经是失败中的失败了。坑了队友,觉得很对不起。但是这至少也是一个教训,一个惨痛的教训。不要狂,不要心浮气躁,不要觉得你完成了大部分就可以轻松。你需要用百分之三十的努力完成前百分之七十,再用百分之七十的小心完成最后百分之三十。
失败了,或许有点后悔,但是无所谓。我们还年轻,还有好多年。我们还有足够的精力去战斗。痛定思痛,我觉得这次收获很大,大于这次比赛带来的奖。或许今年的国家立项要无缘了。当做教训吧,希望记清楚这次教训。