10年前,我就是通过智能小车这个项目找到工作,成功入行的。
一些套件的购买记录和当时的笔记,很庆幸还能找到,不然大家以为我是键盘侠。
看了很多不同的文章,具备实际参考意义的不多,最大的问题就是方向错误。
首先出发点就错了,如果你一开始就要又要考虑结构、又要考虑硬件、又要考虑画PCB、又要考虑单片机编程、等你做出来黄花菜都凉了。
任何一个项目,哪怕再简单,都涉及到不同领域的专业知识,分别由不同职位的工程师去负责。
整个项目涉及的知识体系,发现没一个你会的,你上来就想吃下整个知识体系,不是白日做梦吗?
不过,即便如此,并不意味着你需要花费很长的时间才能把它做出来。
我从事单片机工作10年,做过很多项目,每个项目对我多多少少都是一个挑战。
有很多让我焦头烂额的问题,毫不夸张地说,每走一步都有问题需要解决,但每次我总能完成。
掌握多少知识不重要,重要的是你的学习方法。
我总结了几个一直屡试不爽的方法,只要这些方法做,2-3个月完全能把智能小车做出来:
1.找现成的开发板
只要你有不懂的,首先不是去网上收集乱七八糟的教程资料,而是到某宝看看有没有相关开发板。
开发板已经把整个项目核心的东西都帮你整理好了,你不再需要像无头苍蝇一样乱撞,直接按开发板学就行了。
2.找懂的人带
曾经我也是一个白嫖怪伸手党,自以为占了便宜,其实白白浪费很多时间,进步龟速。
现在我要学什么,都会考虑到时间成本,毕竟对于一个30多的人来说,时间太宝贵了。
找个懂的人,做过的人带是最快的,但是你要考虑一个问题:为什么别人要帮你?
我经常会碰到一些新手,一上来就问一堆问题,还有就是发一段代码让我帮他找问题,像我欠了他一样。
对于这种人,心情好了我会回一句:我为什么要帮你?
心情不好了,直接拉黑。
一两个问题,别人可能处于热心帮你,但是你一堆问题,谁会无偿帮你?
那去哪里找懂的人带你?
还是可以去某宝,也可以去某鱼,也可以到一些技术群里。
这块不要太抠,除非你自身有被别人利用的价值,否则只能砸钱。
砸多了,以后别人也愿意跟你玩了,有时也不是看钱,真正有能力的根本不会在乎你那点钱。
主要是认可你会做人,谁也不愿意和傻x交往来消耗自己。
从某个层面来看,能花钱找到别人带你,或许会成为你人生的一个机遇。
3.找供应商提供技术支持
这个暂时不适合智能小车这种项目,这里就先不讲了。
以上是方法论,这个主要是认知层面的提升。
下面我再来讲一下术的层面,也就是智能小车制作都需要掌握哪些知识。
前面我们要从一个点入手,也就是先把软件搞定,再向面扩展,比如说硬件设计、PCB Layout等等(看兴趣,一般没必要)。
硬件基础
我们的定位决定我们要掌握哪些知识,比如说我是单片机工程师,那我绝对不会去研究硬件如何设计。
一般我也建议先把软件搞定,硬件可以根据你前面购买的那个开发板学习,学到看懂原理图就够了。
比如说以前我那个智能小车是几个MOS管搭建了一个H桥电路去驱动电机。
我们只需要看懂就行了,不用纠结为什么要这样去设计。
其他电路也是一样,以看懂为原则,知道信号怎么输入单片机,单片机怎么控制外围电路哪些接口、协议就可以了。
这个针对性学是最快的,也就是把智能小车的原理图都学懂。
现在开发板一般都有配套教程,看着教程看就行了。
2.单片机
以前大多数智能小车都是用STC的51单片机做的,现在还有一些用STM32,因为功能强大了一些。
我建议新手买51单片机开发的就可以了,至少可以HOLD得住。
STM32单片机基本上不会配置寄存器去使用外设,而是直接用库,或者用stm32cubemx图形化配置外设。
这样看起来好像很简单,直接用别人现成的东西,但是不利于新手对单片机底层原理的理解。
这块基础缺失,会导致你以后的路很坎坷,每走一步都是问题,一出现问题无从下手。
51单片机则必须要配置寄存器去使用单片机外设,这样一个项目下来其实提升还是很大的。
单片机和c语言是同步学习的,如果C语言没什么基础,可以看无际单片机编程的教程,是基于单片机平台讲解的,市面上大多数都是基于上位机。
前期不要好高骛远,如果没基础,先从最基本的点灯开始。
把智能小车所需要的外设全部学完以后,再去实现智能小车这个项目的逻辑功能,比如说电机PWM驱动、超声波、红外信号检测等等。
不要一来就去啃整个项目的代码,越看越迷茫,越看越焦虑。
3.学习其他附加模块
智能小车一般是一个主控板(STC单片机外围电路+电机驱动+显示),除此以外要实现寻迹、避障等功能还需要另外加一些模块。
比如说超声波模块、红外寻迹避障模块、甚至是蓝牙模块等等。
主要是学习单片机是用什么协议或接口跟这些模块通讯,获取数据怎么去处理和控制电机。
整个项目的难点或许就在PID算法了,这个取决于你的车方向和速度能否达到极致,能否在最短的时间按照指定的轨迹到达终点。
等你把整体功能完成以后,再去优化PID算法,网上也有很多资料和现成代码,可以参考。
掌握以上几点,基本上就能把智能小车做出来了。