自动化学院的全栈养成
from 文叶
前言
声明:这里的全栈指的是软硬件全栈,不是指web开发的前后端全栈
众所周知,上每力的自动化学院是个好地方,它好就好在啥也没有 —— 某不愿意透露姓名的学长面对采访时如是说道
软件
C语言,道法基础
我发现自动化学院很多同学都会说“诶呀编程学不好没关系”,然后C语言这门课开摆,或者当成一门平平无奇的副科(比如思修近代史),但是这是错误的!C语言非常重要,一定要好好学!大学的课,可以有取舍,但是千万不能舍了这门课。
有的同学可能确实想好好学,但是他只会上课听老师循规蹈矩按部就班,或许考场上考的分数还不错,能混个85+甚至90,但是到后面一旦需要编程就寄了。根本问题在于,学校教的那些东西还不远足以让你熟练运用C语言进行编程。 举个例子,到了大二,自动化学院会搬到杨浦校区,然后会有一些学院特色竞赛(指的是杨浦这里只有自动化学院在管的竞赛,临港是其他学院管),比如机器人、电赛、智能车、AB杯、西门子杯,这些竞赛都是需要你编程的,特别是电赛和智能车,如果你不会C语言或者掌握程度不够,同时又想参加这两个,那么学习压力会翻倍,因为你还要学习硬件基础,软件部分理论上只需要学习单片机的C语言开发即可。总不能全部指望队友吧。当然了,如果你都不感兴趣那当我没有说,但是这篇指南就是写给对软硬件全栈感兴趣的同学看的,所以默认你会尝试一个特色竞赛。 再举个例子,可能有同学想参加数学建模,这个时候就要用到matlab了,也有人会用python。有的同学会说matlab又不是C语言,我就学一门matlab就完事了。但是,编程语言都是相通的,学好C语言,对掌握其他语言大有裨益。如果C语言学不好,很难说能学好其他编程语言。
说完了C语言对于自动化学院同学的重要性,再说说如何修炼。我给出的方法是,多实践,做你感兴趣的题目就可以。我记得我当年就是从猜拳、一元二次方程计算器这种小程序开始写起来,注意不能直接抄网上的,一定要自己写一遍。这个时候可以参考网上计算机专业学习C语言的方法。有同学可能说我又不是计算机专业的,事实上自动化(包括测控核控智科)作为交叉学科,对编程能力的真正要求是很高的,只是我们学院(学校)水,仅此而已。除非你说以后不想读研、不想做技术岗,或者不想参加什么比赛,只想躺平。
智能车,劝退环节
上文说到自动化学院有特色竞赛,这里专门劝退其中的智能车竞赛。原因如下
- 没有足够的经费,太穷了.jpg
- 没有好的培训流程。除了自学,还是自学,自己或队友的自学能力差一点,就会万劫不复。这里给出一个简单的自评标准,即除了学校课程之外,根据掌握了其他技能或专业知识的程度来自评,例如不报班的情况下学习了其他外语、编程语言、数学知识、艺术技能(作画作曲)。有一个小提示,可以直接看大三的专业课书籍,比如自控原理、计算机测控技术,会很有帮助。
- 没有工程化,没有有效传承,除了踩坑,还是踩坑,还有重复劳动。前辈的代码可读性和复用性都很低,也没有方便开发的库和工具。反观强校早已自成体系
- 在我们学院的特色竞赛中,准备时间长(起码全力准备半年,遇上疫情更要命),容错率低(参见第2条),获奖率低,没有保底,意味着一旦车没能按要求跑完一圈,那就是一个寄,电赛的获奖率就比智能车高。最终导致性价比低
- 很可能出现你自己或者队友想着广撒网多捞鱼,同时准备一堆比赛,或者是其他原因,然后导致这个比赛不上心。这里参见第4条,我们学院的这个比赛容错率很低,临港那边会好很多,因为有成体系的培训流程和足够的资源。一旦组内出现这种情况,无论你是否是组长,都请立刻开组会并及时解决,要么继续全力做下去,要么直接弃赛然后换个比赛。
如果有勇士想挑战自我,愿意浪费一年(一年内只能报一个特色竞赛,一旦没获奖导致你这一年差不多寄了),那也是没有问题的。只要做好舍我其谁的心理准备即可。
电赛虽然也有这些毛病,但是它的容错率高,获奖率高,所以更加推荐。以下是个人根据各方消息进行主观排名
学习困难度:智能车>电赛>机器人
获奖容易度:机器人>电赛>智能车
综合性价比:机器人(如有兴趣可以提早抱薛阳老师大腿)>电赛>智能车
技术收益比(指参加竞赛能学到的东西):智能车(难肯定学到的多)>电赛,机器人没有直接接触过所以不评价
计算机软件课,道法进阶
说到底这门课的核心,其实就是计算机专业的数据结构和数据库,只是难度相对低一点,更像是通识课而不是专业基础课。
数据结构,怎么说呢,现在大概没什么用,但是不经意间大概或许会有用(好吧我没用上)。所以可以不熟练(对自动化学院的同学来说),但请确保在当时就搞懂它的概念。 数据库同上,注意大三下可能有软件实践课,需要你设计数据库系统,学校老师要求VB,但是也可以自己用qt,甚至web前后端的那一套,需要提前学好,否则时间不够,只有一周开发。
硬件
电路原理,模电,数电
这三门课是以后学习专业课的基础,掌握程度越高越好。 其中,模电难度大,且不做电赛其实也用不上多少,要求可以降低。推荐自学清华出版的教材,不建议使用学校统一教材,我换了教材后很多东西豁然开朗。建议学习模电的时候自己仿真,检验理论。
建议使用b站和mooc自学。
单片机
说到硬件又不得不提到学院的特色竞赛了。智能车的单片机用的是恩智浦、英飞凌、灵动,电赛用的是TI德州仪器(学院统一,实际比赛只会有一题指定,其他不限)。这些单片机的特点是,难上手。如果你没有其他单片机的基础就直接上手这些,那我佩服你的自信和勇气。不用怕学院规定,竞赛是为你自己打的。所以我的建议是,先从简单的入手,我的路线是arduino到stm32(标准库)再到恩智浦(逐飞库),也可以直接从stm32(标准库或hal)开始。注意这一阶段一定要在大二的第一学期就完成,第二学期就要学竞赛指定型号的单片机了,否则时间来不及。实践项目按网上的教程来就好。
PCB
如果不是自己设计原理图,只是根据已有的原理图自己布局布线,甚至都不需要学模电数电,难度并不高。所以,不要怕,只要学就行了。学会双面板即可。实践项目按网上的教程来就好。我是从设计stm32最小系统板入手的。 但是layout完成得自己焊接,这里比较吃经验,建议找学长在旁边指导,以保证安全,也可以看b站教程,包括电烙铁热风枪及其他设备的使用。焊接过程中注意通风!!!我是建议自己买一套设备放家里,随时可以用。
封装
有了PCB,那离最终的产品还少了一个壳。有两种方案,第一种是3D打印,设计完成后可以找张传林老师(联系方式可以自行查找,搜索能力也是自学能力的一部分)借3D打印机。第二种是亚克力+铜柱螺母简单糊弄一下,设计文件发给某宝店铺。
补充
自动化学院消息极其闭塞,希望新生能尽早意识到这一点并发挥自己的社交才能。 典型例子,如志愿者活动、各类竞赛报名组队找指导老师等等。指导老师请找正经做项目或者做科研的老师,不要随便找自己的任课老师,很可能有坑。
竞赛通知网址:https://www.saikr.com/
如果决心走技术流,可以不关注志愿者,想刷综测分除外。
如果要参加互联网+之类的科创竞赛,请抱住硕士或者精英班中的精英的大腿,不建议对此类竞赛抱有太大希望。
如果想往嵌入式方向发展,建议转专业去电信。转专业我记得是年级前15%。总绩点在各科绩点基础上,按各科学分加权求和,所以学分高的一定要好好学。