问题背景说来话长,在去年选毕设的时候,计算机的毕设95%都是游戏开发和后端开发(后端数据库配前端页面展示),这些东西我实在不会,唯一会的就是其中为数不多的单片机开发。而唯一的深度学习项目难度过大当作研究生毕设也不为过,后期老师提供的一些python项目也没及时看到,阴差阳错的选了这个毕设。
设计思路
大概的要求是:基于Arduino实现倒车雷达,并在电脑端绘制实时的倒车影像。这个产品其实已经存在于市面上,也有幸见过一次倒车雷达,因此对倒车雷达的基本概念有了初步了解。
所以很容易得到这个设计的思路:
- 按毕设要求,车辆的主控芯片选择Arduino;
- 使用超声波模块测量距离,当倒车过程中距离小于某个安全值时采取紧急制动;
- 因需要将距离数据发送给PC端用于绘制实时影象,因此数据的发送借助蓝牙模块实现;
- 既然Arduino将距离发送回PC,那么就在PC端写一个图形化的上位机,用于发送控制指令,如前进、后退等。
以及相关注意事项:
- 在正常开车时不能开启倒车雷达。因为在堵车时,后面的车离自己很近,但此时不能制动,防止车祸发生;
- 实时影象可以考虑Wifi图传,但价格我承受不起,所以选择非实际影象,而是制作动画代替;
- 可以考虑在车的两侧添加超声波模块,用于反馈倒车时车身两侧的距离。但IO口不够,因此只添加车身后侧的超声波;
- PCB难以绘制,Altium Designer学到一半就放弃。实在搞不懂什么时候放电阻、电容、电感等。确切的说电路等相关知识并不是计算机专业必须要会和要求掌握的东西,所以选择面包板偷工减料。
结语
左图是两年前做的,包括:蓝牙、电机、液晶、加速减速、避障、巡迹等常见功能;右图是今年的做的,只有雷达、电机和蓝牙,更多的是PC端的上位机。
在这两周的开发中,也遇到了各种难以解决的bug,好在我智勇双全(文档丰富)。不过,也正因如此,我也选择了彻底放弃开发单片机的幻想。在三年前大一结束转专业的时候,我大概花了一个晚上去分析我到底是转专业去计算机呢,还是去电子信息呢,还是去自动化专业呢?毕竟以当时的成绩还是能想去哪里就去哪里的。
想去计算机是因为发现代码很有趣,大一自学了C语言and看着别人的python,都挺好玩的样子;想去电子信息是因为在大一的时候自学了C51单片机,发现单片机做出来的诸如:四旋翼、飞思卡尔智能车等东西也很有趣。当时以极低的分数考上大学,大一的专业都是调剂的,好不容易有了能凭自己兴趣选专业的机会不能错过。
大概在斟酌了专业的发展前景和研究方向后,还是选择了计算机专业,当时单纯的以为自动化等专业还得去车间,像个电焊工一样带着护目镜作业。事实证明,这个选择终究是正确的。经过这几天的开发,总结了我认为的电子方向的缺陷(仅仅是我片面的观点,电子专业的看管求放过):
- 程序执行不便,每次执行程序都是:修改ino、接线烧录、拔线、启动PC端、观察结果,某次执行不对还得重复这个流程。
- bug难以调试。当软件出问题时,可以很方便的查文档、debug去解决;但硬件层面的bug并不是能轻易解决的,如某个模块内部的一个电路被击穿了,供电电压不够导致模块不稳定而烧坏,或者是不小心把某个线路弄坏了。这种硬件问题对计算机专业的人来说很难准确定位和解决。如上次调试了好久的bug,以为是驱动问题,代码问题,库依赖问题,最后才发现只是那个蓝牙模块坏了。
- 烧钱。承接第一个缺陷,蓝牙模块坏了是个大问题,根本不知道如何维修别人集成好的电路。因质量问题、电子元件寿命、错误操作等多个原因都可能导致模块损坏,甚至是快递的途中颠簸坏了,都会导致金钱白白的流失。而软件开发则不要钱(当然是选择免费工具),且不会因误操作和寿命问题导致软件损坏,大不了更新嘛。
- 也是最重要的一点,我没学过电路、模电、电磁场等专业课。所以我只适合开发软件,硬件对我来说到处都是知识盲区。
因此,尽管我能用所学知识做出相应的产品,但我也不会在去选择单片机开发这条路,也算是了却了一件心事吧。(单纯的开发不涉及任何硬件的软件除外)
当然我不是在贬低电子这个专业,只是我不适合。这个世界离不开电子这个专业,从常见的手机、充电宝,到大街上的电子灯,到一般的蓝牙耳机,包括我写这篇文章用的键盘、鼠标和电脑,到不常见的机器人控制芯片,这都离不开电子这个专业。
等彻底完结了再去发后面的设计过程。