找回密码
 立即注册

QQ登录

只需一步,快速开始

新手想玩硬件,买单片机还是树莓派好?



这个问题本人应该比较有发言权了
先说一下我自己的经历,我从大二开始入门单片机,硬件至今做了有五六年了,目前也是Arduino中文社区的版主;然后差不多大四的时候开始对Linux和操作系统感兴趣,研究生从EE转到了CS方向;目前刚刚毕业,在某绿厂AI实验室做深度学习算法方面的研究工作。
所以不管是Arduino还是树莓派,我都算玩得比较彻底了哈哈,下面先介绍一下软硬件开发的区别和联系,然后会给出学习建议~

先上几个视频:


迷你巡线机器人QBot


改进磁悬浮装置


逗比钟
也自己设计过“树莓派”单板

49.jpg


50.jpg

接下来回答题主的问题:新手想玩硬件,买单片机还是树莓派好?
这个问题其实还不是很准确,题主首先要知道“玩硬件”是个什么概念,硬件是个太宽泛的定义,实际上任何技术都是多少和硬件相关的(哪怕是纯算法工程师,也要考虑硬件架构才能设计出最优算法)。
我想楼主想说的应该是嵌入式硬件开发
在嵌入式开发中,具体分下来:底层可以到模拟电路(射频、电源等),数字逻辑电路(FPGA、CPLD等);上层一点有汇编开发(比如Bootloader,纯硬件相关);再上层一点有Kernel驱动开发(连接硬件和软件);再往上就是操作系统层级了,各种APP应用软件就在这一层;继续往上抽象,就是软件框架和算法层面了。
所以我们来看看,Arduino的开发其实属于Kernel那一层,也就是裸机程序,而树莓派则一般在操作系统那一层(不考虑驱动开发),这样题主应该就知道他们的本质区别了。
抽象的层级越高,要实现某个功能会越来越容易,但是相应的自由度会越低。

不知道题主看完觉得对哪个机器人最感兴趣?如果是前两个的话,那么Arduino适合你,对于这种玩具类的设计Arduino有天然的优势,那就是数不清的开源硬件库;而如果题主觉得最后那个手机实现的机器人比较有趣的话,那么可能更适合做APP开发,不论是树莓派的Linux还是Android和ios也好。
当然如果题主不想限制自己的知识边界,那么软硬件结合的技术栈才是王道(小孩子才做选择,你全都要 )。
比如上面链接回答中我也提到了,那个Vector机器人其实就运行了操作系统的,允许我们直接用python编程来实现一些功能,但我想实现用它来控制智能家居,而它却没有给我提供相关接口怎么办?如果没有底层硬件和驱动的支持,我们的自由度就只限于SDK的范畴了。这也是我决定自己重新从硬件开始设计那个机器人的初衷。
对于我自己的经历经验来说,我最早是从学习51单片机开始入门电子设计的(大一学完了C语言),当时用51就是制作一些电子钟,简单的小车之类的;然后偶然中的必然遇上了Arduino,才感觉开源硬件世界向我打开了大门,沉迷于当创客无法自拔;使用Arduino很长一段时间之后,已经熟悉到可以自己设计Arduino板卡、编写Bootloader,这时候才触及Arduino作为8位单片机的天花板,也就是性能,所以又转而开始学习STM32,上面的那个磁悬浮就是基于STM32的,对于这样需要运行复杂控制算法的项目来说,Arduino已经力不从心;DIY到了一定程度,肯定会想追求更专业的作品,于是你需要开始思考产品化中的技术:PCB设计、结构设计、工业设计、软件封装...用做产品的思路和技术去玩项目,这才是创客的最高境界。
说了这么多,对于题主有几点建议:
1.从Arduino入手,找几个开源项目熟悉开发流程,最重要的是培养兴趣和成就感
2.用什么硬件平台以及工具取决于你想做什么东西,没有万能的工具
3.不要局限自己的知识边界,没有人说玩单片机就不能用树莓派了,电子世界其乐无穷,进一寸有一寸的欢喜
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册