如何成为IT大佬稚晖君——电子系统设计应具备的基本技能和方法论
快速提高电子技术的必经之路_一些老生常谈的道理
嵌入式AI入坑经历
稚晖君软件硬件开发环境总结
首先,机器学习深度学习这些和硬件是两个领域的内容,个人不建议一起学,注意力不能聚焦的话效果会很差。。而且机器学习对数学要求很高,在数学水平不够的时候很难做出什么比较新奇的东西。最好先把硬件底子学好,软件部分知识可以同时学,硬件基础一定要打好。。。个人认为分为以下几个阶段吧。提示:本回答只针对稚晖君嵌入式基础部分的学习路线。
第一阶段:数理基础
这个阶段主要是打基础,题主是高中生就先把数理基础打好,比如高等数学和线性代数还有复变函数。之后在学电路分析和模电还有信号与系统还有自动控制原理的时候会很有用。。而这些都只是后面具体应用的理论基础而已。。所以这阶段很重要,一定要重视再重视。。本人就是当年数学拖了很多后腿
第二阶段:专业基础
这个阶段的内容就比较多了,但是如果第一阶段学的不错这个阶段会比较舒服。这个阶段主要分为两大类的学习内容:计算机基础和电子基础。
先说电子基础吧。
**电路分析。**首先要学这个,否则无法进行后续模电的学习。
模电,此部分是后续课程高频电路的前置课程,这个学不好高频就费劲了。。模电这部分知识还是很重要的,尤其是在后期做通信还有电源的时候,比如你需要做一个驱动电路来驱动电机。
数电应该是这个电子阶段最简单的内容了,你在学的时候会发现和其他的难度不在一个次元上面。。提示,数电是计算机组成原理的前置课程。
下面是计算机基础。
**C语言。**不用多说,0生1,1生汇编,汇编生c,c生万物。。必须学透。
C++。面向对象编程,麻烦是麻烦了点,但是运行效率高啊。。时间足够的话,它能做任何事情,很强大,武器库必备。比如写个上位机,qt就是得用c++。
**计算机组成原理,**程序底层运行原理,汇编语言,必学。最好和单片机组成原理一块看。一个是基于x86架构,一个基于arm架构。x86的不必说,arm建议先学stm32, 比较简单容易上手, 等熟悉之后可以上更复杂的, 暂时学这两个后面做东西也足够了。
数据结构与算法,指针plus和算法。。必学。前置课程为c语言。
其实这个时候就能够自己画板子写程序来做一些小东西玩一玩了,但是想做机器人,无线通信等一些高端操作还需要进行下一步的学习
**操作系统,**最近稚晖君出了一期关于foc的视频,里面控制芯片跑的就是freertos实时嵌入式操作系统,如果要做一些复杂的操作,这个也必学。这个最好等到组原学完之后在学,会更能理解如何调动底层,如果有时间最好自己手撸个小型系统,不需要多稳定,实现功能就ok。
**计算机网络。**计算机专业4大门之一,必学。想搭博客网络不懂是不行滴。
第三阶段:专业进阶(分方向)
控制方向:首先需要学信号与系统,然后就是**自动控制原理,**等等, 不是很了解。
通信方向:信号与系统,高频电子电路,电磁场与电磁波,通信原理,射频电路,天线,无线通讯,很多通信协议。。
纯计算机方向:算法导论,网络编程, 各种web框架 等等
个人建议第一年要将主要精力放在理论学习上面,实验室可以去,但是要适度。。争取在第一年把数理基础搞定,然后在学专业知识基础的时候适当和实践结合,其实当你专业知识基础学完之后,就差不多能够进行基本电路的设计了。
最后建议! 学完这些也只能算是入门了,个人认为想要达到稚辉君的水平没有3-4年的持续努力是很难的,很多人10年都不一定可以做到。所以一定要把基础打牢, 前期过于急躁对于后面的学习会造成很大困扰!! 坚实的基础是事半功倍的前提!!!
简单理解一下,你本质想成为一个创客。
个人理解的技能树包含:
由于不是很懂结构和后期,这块我也正在学习,2020-07-19 暂时将直接熟悉的那一块给加上。后续补全。
这人很不简单,他大学四年你可以看成是EE 电子工程,参加了无数电子大赛,拿了无数奖,他四年的电子工程生涯也给他带来了扎实的机器学习数学基础,包括微积分,线性代数,概率统计。
之后他做cs的硕士,自然把他的电子知识带进去,开始做嵌入式机器学习,最后去了oppo研究院。学过机器学习的都知道,数学扎实,机器学习并不难。
我看他的作品,硬件知识储备相当丰厚,没有4年实打实的学习不太可能达到他的水准。
你们要想达到他的说准,大学一定要搞电子,学校需要电子强校。
然后沿着他的轨迹走就可以了。
软件基础:c,cpp,Python,涉及硬件还需要懂一些汇编,Androidstudio编写软件。(后端)java ssm三件套写博客用的还要懂点前端css吧。
电路基础:数电,模电,pcb
机器学习基础:起码吴恩达视频得入门,李航的书得看透,能熟练使用各种算法完成图像识别,语音识别等程序的实现。
硬件产品:arduino,s3c2440,树莓派(博客服务器)都得搞透,还有各种芯片的特性
其他:起码英语六级的阅读水平,这样才能看懂比较牛逼的英文文献不断提高。
3d打印软件的使用,会熟练使用电烙铁
我从他视频里看到的就这么多,真的实在太牛逼了,我有他一项能力都可以找到很好的工作了,感觉自己研究生毕业都难以望其项背,实在是太厉害了。
放一张卓晴老师的图来做一些基础知识方面的补充。
想要达到稚晖君的水平,首先你本科专业最好是电子信息工程,学高等数学+线代+概率论(理工基础),汇编(stm32启动代码要用),c语言(底层驱动的编写),电路(模数基础)。模电+数电(硬件重中之重)。信号与系统(重中之重)。单片机原理及应用,嵌入式系统。学会这些,你已经是一名合格的嵌入式工程师了。
机械专业:本人是电子信息,不太了解……
计算机专业:计算机组成原理,c++语言,操作系统,数据结构,计算机网络,软件工程,数据库。
使用软件方面:ad,ps,pr,cad,3d……
其实稚晖君的成长路线,就是一名全栈嵌入式工程师,pcb会画,uboot会移植,上层应用会写。这里面最难练的就是pcb。不是说他难,主要是别内容学习,只需要时间跟一点点金钱。你要是想pcb搞深,钱要花不少。
这不是基础的问题,而是学习方法和积累的问题,这些根本性的东西导致了大多数人无法达到稚晖君的程度。
举个例子,稚晖君有一大批项目都有LCD显示屏的应用,也有无线传输,而这种模块化的东西都是可以不断积累的。而大多数人都是每次重新开始,做完一个项目就放到一边然后去从下一个项目重头开始,没有积累成自己随时可用的工具,所以浪费了大量的时间。
第二,对各种库的应用和积累。稚晖君有很多应用都是借助了现有库,比如开源的视觉库。这需要广泛的学习和积累。一个人的能力终究还是有限的,所以需要借助外界的底层工具和开源工具。
第三,从视频中可以看出,稚晖君的专业能力在于电机和控制系统,属于高级工程师级别。而CAD建模水平也是较强,且不断提升,可以看出他会经常使用一些新的建模功能。
其实中国很多博士在专业能力上都是超过稚晖君的,只是由于没有经历或者兴趣做一些完整的机器人系统,所以没有那么直观的震慑力。相同的研究方向,想做出真正有理论创新价值的研究难度一般比工程项目要高得多(很多工程类论文按价值更像是数学建模,论效果其实远不如很多常规方法,这种按理来说不应该算是有价值的创新)。
另外,绘制一般的电路板,嵌入式系统这些东西从零开始搞,专心去搞一年也是足够了。CAD只要多去尝试和动手,也不是很困难。控制系统也没有那么难,找几本国外的教材,学好矩阵分析和微积分,对于硕士生来说也并不会难到逆天。
关键问题是,思考一下,一天除去睡觉8小时,剩下的16小时别人是干嘛去了呢?有几个小时是真的心无旁骛地在学习和科研上呢?
除了专业知识之外,我认为还有最重要的一点,把梦想和爱好作为自己的工作,每次看到稚晖大佬肝项目,十分担心这么高强度的投入会拖垮他的身体,而大佬乐此不疲,时间和精力管理也十分有一套,至少到目前,大佬的发量在程序员界属于刚入门级别,而实力却已经超越了绝大部分人。
如果我们能学到专业知识或是时间精力管理以及软硬件工程的能力的任何一点,都能够让我们受用整个职业生涯!
答案肯定的,但是需要一下几个前提:
\1. 大学的基础知识一定要扎实,高数、模拟电子技术、数字电路技术、计算机原理架构、编译原理、单片机原理和架构,还有一种编程语言,C语言是必须的,这些知识一定要学的非常扎实;
2.有了扎实的基础,第二步的就是要去实践了,这个需要你有超强的动手能力。从自己焊接电路板开始吧,熟悉各种电子元器件,使用规则、在电路中的作用,技术指标。然后学会画电路板,编程,测试,不断地实践,不断地折腾,自己能完成10个以上项目实践,就会有点感觉啦!已经可以根据需求去解决一些问题了。
3.嵌入式软硬件这块搞的差不多了,就可以去学习一下网络编程,服务器后端编程,算法设计、前端、APP等,这些对于嵌入式搞的很好的工程师,都没有太大问题,基本属于触类旁通,只要你肯花时间,都能学得会、学得好。
4.要学会做项目总结,每做一个都要把自己在做的过程中遇到的问题、解决办法都写下来,不断积累知识和经验,进行深度的思考;
5.最最重要的一点,用兴趣驱动,学会坚持,遇到问题和困难不轻言放弃。要相信没有解决不了的问题,一切都只是时间的问题。
稚晖君是一个能力很强的人,但也别神化了他。
作为一个机器人工程专业的学生,经常逛github上的开源方案,稚晖君借鉴了很多方案,并用业余时间最终整合到了一起,加上了自己很多的想法与设计。这种恐怖的工程管理能力是需要3-5年的比赛经验才能自我驱动的。但是也别太神化了,稚晖君掌握了很多领域的技能,但是这种diy需求和专业需求是不一样的。比如板图,我们考虑的更多的是如何效率最大化,面积更小,器件更少。仿真考虑的针对某控制算法设计一个仿真环境。当然稚晖君拥有着多个领域的素质,这让他进入专业领域会比我们这种会快很多,上手新的方案也会快很多,解决问题也会有更多的思路,这点我是无比羡慕的。但是,真的到了研究型问题的时候该卡住还是会卡住的,大部分问题的突破点都是创新的想法与反复试错后的结果。需要对一个问题,一个领域通透的理解。做出demo很简单,在现有的技术方案上做出突破很难。工科的东西大体都是相同的,不断拓展会让你有更多的认知与想法。到达某一个技术积累点后,你在接受下一个新领域的时候都会感觉到顺畅。但不能本末倒置,你学习是为了探究新的领域和增强自己对旧领域的理解,而不是把市面上的所有技术方案都复现一遍。35岁前应该学习稚晖君那样不断尝试新的领域。35岁后你还想更进一步的话你只能去钻研某个方向。稚晖君能力的来源是他愿意不断尝试而不是上课。所以没必要换专业。稚晖君本科还是生物医学工程的呢。与其转专业不如多打比赛,多实习。
再补充几点吧,也是这段时间在机器人公司当机器人软件实习生的感受。
1.你需要从零开始搭建一个机器人平台吗?
完全不需要,事实上你根本不可能从零搭建一个机器人平台。FOC驱动器好做。行星齿轮也好做。电机的编码器呢?高精度电机呢?甚至你考虑过如何降低抓取过程中的机械振动问题吗?做小作坊的手工demo对于一个专业领域的人来说,只是图一乐。真指望培养出更具体的能力也只有项目管理和自我驱动力了。然而上班和学习已经够忙了,除非真的感兴趣真的没必要。学习新领域是一件很折磨人的事情。
2.你需要学习硬件知识吗?
首先你要明确,什么叫硬件知识。模拟电路算的话,数字电路算吗?微机原理算硬件知识吗?这些已经是高度抽象化的了。事实上,哪怕是清北的微机原理和计算机组成原理。也不会和你讲的太过深入。现代的片上系统,晶体管都是几亿个起步,难道需要你一个个晶体管手写吗?HDL硬件描述语言也是高度抽象化的。哪怕是专业人士对于这些也是用编程语言描述硬件后用EDA生成后做点小修小补。真的会让你从数电,乃至模电底层去做吗?你要是想做机器人的驱动器部分,那你必须要学模电。但是也是学会信号放大器和反馈信号的部分就行了,专业一点你甚至得懂材料力学,电机学,工程电磁场。这些机器人专业甚至不会教给你,自动化教了你,你也不会做。
况且,哪怕是FPGA设计,无论是intel的oneAPI还是别的,大趋势都是都是类C语言封装好的。开发方式也就是软件工程的那一套。除非你转行学集成电路设计,不然对你来说能学会算法设计和软件工程,面向对象,最好懂点操作系统和计网,对机器人软件开发是绰绰有余。想透彻理解计算机组成原理,懂得如何用门电路设计一个浮点数计算,如何设计一个ALU,没必要,请把专业的事情留给专业的人来做,这些也不是你上课就会学会的事情。软件工程这些内容入门,学学调调内存,搞搞基本的通讯协议和多线程,做做基础开发,对于一个工科本科毕业生一年是足够的了。多余的时间请留给数学,学学复变函数,实变函数和随机过程。学学计算方法,数值分析把计算机回归到计算这件本质的事情上。
3.你想成为稚辉君到底是喜欢技术还是DIY的乐趣。稚辉君干的事情本质上就是DIY。DIY是一件充满乐趣和发挥自己主观能动性的事情,学技术是一件不断练习,不断尝试,试错总结的过程。请不要妄想用一件快乐的事情达到本需要经历痛苦才能达到的目标。这是本末倒置,稚辉君本身就是技术大神才能如此快乐的DIY。想当技术大神,请耐心做项目,写博客和技术文档。先当好快乐的码农才能当快乐的大神。
新年快乐,已经年底了,最近业务不忙了,再补充几点吧:
1.我没有觉得稚辉君能力不如读博的意思。我的意思是术业有专攻。国内拉跨的AP制度,导致目前大学教育能培养出你学习的习惯和研究的品味就不错了。学到本事那是想都不敢想的事情。大学弄清楚自己到底想干什么。并且愿意在接下来的读研和工作中研究下去就已经很不错了。
2.机器人专业要不要转计算机。
别转!别转!别转!这年头是个电子信息类都要学写代码。只要你愿意一直干工程。往后写代码这件事对你来说是日常。大学这几年与其去计算机专业瞎卷,不如老老实实做几个大项目,或者找一份靠谱的实习认真去做做。我严重怀疑这年头天天劝你转码的都是卖课的。劝你看的教科书都是劝退的那种。
劝零基础的人看c++ prime 学c++。好比劝老外看辞海学中文。那玩意本质就是c++的一个操作手册,你看那玩意有什么用?我的第一门语言是Java。c++是看 《数据结构 c++语言描述》学的。这玩意只能边做边学。好比王者荣耀新出了一个英雄,你肯定是边玩边看技能介绍。谁会把技能介绍背下来再去练英雄的。别听知乎上那群半路转码的信息民工说什么“没人完全懂c++”。这好比你说没人完全会玩韩信。这不是废话吗。高灵活度的语言全看个人理解。实际情况的处理方法太多了。只能精益求精。
3.DIY精神是什么
一个工科生业余爱好是做点diy,这就好比一个文科生业余爱好是写小作文。本质是你精神上的自留地。你想通过DIY学知识,好比把自留地薅涂了去种棉花。这是主动去当工具人啊。
别卷了,请热爱你的生活。
4.机器人软件行业怎么样
今年秋招挺离谱的。给钱比互联网白菜价高不少。小鹏软件45w+起步全包。云鲸智能slam岗甚至最高能到8w*16薪。宇树科技也4w+一个月。我同学本科去大疆在没准备面试的情况下都要到了45w+。只能说疫情给自动化行业填了把柴,加上市面上优质资产和在疫情期间能逆向发展的企业太少了。泡泡吹的有点大的离谱。估计疫情结束后马上就会因为大多数技术离落地还有很大距离迎来小寒冬。反正我对中国金融行业人才的投资能力感到无语。一个个眼光和品味都差的很。
事实上,目前机器人能落地的行业还是不多。基本都是传统的高利润企业求抬高股价转型。像房地产公司,碧桂园,恒大现在来搞机器人一样。要么就是快递和粮食类对运输效率极度敏感的企业会考虑自动化。不然就珠三角这种一个村能生产出全世界牙签的恐怖生产效率+低利润率的模式。除非哪天真的完完全全招不到工了,根本没有转型的动力。
论前景,机器人肯定不如物联网和数字能源。这一行真的看兴趣。
5.找工作需要哪些技能 我需要进入那些行业
强烈建议各位学弟学妹学会使用互联网平台。说真的你boss直聘上多挂几份不同岗位的简历看看那些企业的hr招你就行了,哪些技能重要,自己简历上先填上,看填上哪个,找你的hr多就学哪个。快毕业了,建议打造一份自己的理想简历。写上你希望自己会的技能,然后再去学。比如我现在填的就是FPGA算法加速和数字图像处理。工科生还是稀缺人才,只要你有基本技能,在一线二线活得体面还是轻轻松松的。技术岗除了个别公司没那么卷。你要是有点做出有用的创新的能力,公司恨不得把你供起来。只要你热爱技术,保持一个学习的习惯就好了。35岁优化都是半路转码的外包们骗人的。你算算现在互联网公司35岁的那都是什么人。都是10年就左右入局的。移动互联网发展红利吃的一干二净。不转行的早就财富自由了。你现在码农的高工资只是舔这些人的盘子。腾讯40多岁的程序员们基本都是各个项目部的骨干。
6.如何学写代码
知乎上把写代码吹的太神了。你不会写代码的主要原因是你不会写代码。这听着是一句废话。但就和我用王者荣耀的例子一样。代码本质是计算机的编码语言。你得用,才能会。国内很多人不会写代码主要原因是现在软件开发的方式实在是花里胡哨。普通人入门确实困难,而且还有Windows这个编译器环境极度恶劣的垃圾操作系统占据了中国人的计算机使用市场,导致很多人对计算机是什么根本就没有清晰的认识,也没有良好的使用计算机的。而且国内这个拉跨的英语教育,让很多人根本就没有学习一门新语言的能力。我去培训机构赚外快的时候,居然有人在背c++的基础语法你敢信????语言是拿来用的,不是拿来背的。做项目才是学习语言的第一方式。无论英语还是编程,你都得去经常表达才能学会。
我强烈建议你买一台续航长的老二手笔记本电脑装上Ubuntu,再上某知名购物软件买个梯子的端口。作为你的主力机使用。相信我,坚持一个月之后你会感谢我的。
感谢邀请,让我看到一个牛人,其实一开始是不想回答的,问题上说软硬兼通,有什么好说的,我上学那会,模电,数电都需要学,软硬都会的人也不算少。为了严谨,我还是去B站搜了这个人,没想到只看了最新的2个视频,就给我惊呆了!
我写20多年代码了,牛人同事包括从本科就在清华上的博士、科大少年班的大牛等,也不是没见过牛人,但像视频博主这么不讲武德的,还真没见过!
我只看了迷你显示器和FOC驱动器这两个最新的视频,里边展示出的能力就已经令我汗颜了,不会还有其它我没看到的能力吧?特意在电脑上回答此问题,以示尊重。
从这2个视频上看,至少展现了以下不同职位的能力:
1、结构工程师
自己设计布局,自己制图,自己操作cnc,自己组装,这完全是一个合格的结构工程师啊。
2、电路工程师
自己画板,自己联系工厂,自己准备BOM清单,自己焊接,自己调试,作为电路工程师,完全合格!
3、嵌入式软件工程师
自己移植实时操作系统,自己写驱动,自己与自己硬件上电联调,又一个合格职位……
4、算法工程师
这两个视频展示的算法不多,达到入门级,也许其它视频有更高的算法功底吧,以后有时间了我再多看点他视频再改。
5、移动端APP工程师
同样展示不多,入门级,实际水平有待我继续看视频。
6、上位机软件工程师
虽然只是一闪而过,但看的出来合格水平是没问题的。
7、软件测试工程师、硬件测试工程师
这两个视频里没怎么展现,没办法评价,能做出成品,达到入门级应该是有的。
8、市场推广
这个我不专业,评价不准确,我想B站有64万粉丝,入门级的市场推广水平总归是能达到吧。
9、销售
同样我不专业,但能写PPT讲清楚自己的产品,做个销售助理还是没问题的。
总结
看到了吗?发现了吗?他一个人就把一个公司至少10人开发团队的事都做了,只要给他配上场地、工人、后勤、他自己就成为一个厂家了呀!还有什么好说的,膜拜!
当然,还有另外一种可能,毕竟我不认识他,请允许我恶意揣测一下,视频里的人背后有一个团队在支持他,他只是一个讲解员。
至于问题中说的想学他,我建议,想玩嵌入式,可以先买开发版,研究研究软件,画板焊接这些相比软件,要更容易学一些。其他能力以后有机会了慢慢来吧,不要上来就对标这个,人活一辈子不容易,别给自己那么大压力,有些人天生就是学霸,羡慕不来。
计科学生搞硬件DIY一般来说有几个困难:
1. 硬件实验环境比较复杂占地
众所周知计算机几乎是所有工科中实验环境最友好的了,这大概也是为什么没毕业的学生都能出活。硬件的实验环境,首先你得有板子吧?其次你得有空间(物理上),要么乱七八糟的东西放不下。
2. 硬件的参考资料比较难找
以我的经验,搞软件的这帮人是最喜欢写不求回报文章和博客的,质量先不论,数量是相当多的。看多了辨别能力也就有了。硬件这边也不知道是从业人士少还是怎么样,至少就中文社区来讲,资料很少,而且非常 old style 经常在论坛分享东西。非常不方便。
如果厂商有英文资料,建议直接看原版 DataSheet ,别费劲搞二手资料了。
3. 硬件需要钱
钱确实是个问题,尤其对于学生来讲。得益于中国电子产业的发展,硬件价格已经大幅下降了,但是基本设备还是经常要个一两百。这方面电子方向的学生确实有好处,有相关实验室的话,大量的仪器的钱是省了。自己搞的话,仪器一年也用不上几次,就买不了好的,也容易坑自己。
4. 硬件调试相对困难
硬件调试确实没有软件方便。在有操作系统的环境下调试软件相比硬件不要简单太多。硬件相比软件来说更加黑盒。内部状态很多但是不容易暴露。如果真的要往这方面发展,一定要注意调试工具和器材。有调试总线的MCU调试还是相对简单的,纯硬件故障就需要自己动手测量了。
不过话说回来,工程师调试的思路是相通的。能调试软件Bug,思路上调试硬件Bug也没问题,就是多花时间。
近期评论