我先说一下我自己的经历。 我在大二的时候开始接触微控制器。 我做硬件已经有五六年了。 我也是Arduino中文社区的版主。 然后我在快大四的时候开始对Linux和操作系统感兴趣。 研究生从EE转到CS; 他刚刚毕业,正在绿工厂AI实验室从事深度学习算法研究。
所以无论是Arduino还是Raspberry Pi,我都玩得很透。 哈哈,我们先介绍一下软件和硬件开发的区别和联系,然后给出学习建议~
首先是一些视频:
迷你巡线机器人QBot
改进的磁悬浮装置
我还自己设计了“Raspberry Pi”板↓
接下来回答问题:新手想玩硬件,应该买单片机还是树莓派?
这个问题其实不太准确。 提问者首先要知道“玩硬件”是什么概念。 硬件的定义过于宽泛。 事实上,任何技术都在某种程度上与硬件相关(即使是纯粹的算法工程师也必须考虑硬件,只有架构才能设计出最优算法)。
我觉得发帖者想说的是嵌入式硬件开发
在嵌入式开发中,具体可以分为几类:底层可以包括模拟电路(射频、电源等)和数字逻辑电路(FPGA、CPLD等); 上层有汇编开发(如Bootloader,纯硬件相关); 上层有内核驱动开发(连接硬件和软件); 再往上是操作系统层,各种APP应用软件都在这一层; 继续抽象,就是软件框架和算法层面。
那么让我们来看看吧。 Arduino的开发其实属于Kernel层,是裸机程序,而树莓派一般是在操作系统层(不考虑驱动开发),所以提问者应该知道他们的本质区别。 。
抽象层次越高,某个功能就越容易实现,但相应的自由度也会较低。 所以这个问题可能还不直观。 给大家展示一下我之前做过的几个项目:
这是我之前的回答之一。 在这个回答中,我介绍了制作迷你机器人的过程,包括从纯Arduino实现的第一代到纯APP实现的最新模型的效果:
不知道作者看完问题后最感兴趣的是哪个机器人? 如果是前两者,那么Arduino就适合你。 对于这种玩具设计,Arduino有一个天然的优势,那就是无数的开源硬件库; 而如果题主觉得最后一个在手机上实现的机器人比较有趣,那么可能更适合APP开发,无论是Raspberry Pi的Linux还是Android和ios。
当然,如果主题不想限制他的知识边界,那么结合软件和硬件的技术堆栈是可行的方法(只有孩子才能做出选择,你想要他们全部:D)。
例如,我在上面链接的答案中也提到,Vector机器人实际上运行了一个操作系统,允许我们直接使用python编程来实现一些功能。 但是,我想用它来控制智能家居,但它不提供给我。 相关接口怎么办? 没有底层硬件和驱动的支持,我们的自由度就仅限于SDK的范围。 这也是我决定从头开始重新设计机器人的初衷。
就我自己的经历来说,我一开始接触电子设计是从学习51单片机开始的(大一就学完了C语言)。 当时我用51做了一些电子钟、简单的汽车等; 然后无意中我一定接触到了Arduino,然后我就感觉开源硬件的世界向我敞开了。 我沉迷于成为一名创客,无法自拔。 使用Arduino一段时间后,我已经熟悉了它,并且可以自己设计Arduino板和编写Bootloader。 直到那时我才参与其中。 Arduino是8位单片机的天花板,就是性能,所以开始学习STM32。 上面的磁悬浮是基于STM32的。 对于此类需要运行复杂控制算法的项目,Arduino已经无法胜任; DIY已经达到了一定的水平。 你肯定会想要追求更专业的作品,所以你需要开始思考产品化中的技术:PCB设计、结构设计、工业设计、软件封装……用做产品的思路和技术来玩项目,这就是什么是创客的最高境界。
说了这么多,针对这个问题,给大家提几点建议:
1.从Arduino入手,找几个开源项目熟悉一下开发流程,最重要的是培养兴趣和成就感。
2. 使用哪种硬件平台和工具取决于你想要做什么。 没有通用工具。
3.不要限制你的知识。 没有人说你不能使用 Raspberry Pi 来玩转微控制器。 电子世界乐趣无穷,前进的每一寸都带来欢乐:D
长期以来,我一直致力于各种富有想象力的项目。 如果不介意的话也可以点击关注哦~我会不定期更新项目
对了,微博@_Zhihui
我的其他回答: