面向初学者的嵌入式编程:Arduino还是Raspberry Pi?[关闭]


32

我是计算机科学专业的学生,​​并且渴望扩展我在嵌入式编程和电气工程方面的知识。

我在这里已经读到,使用像Arduino微控制器这样的工具是一个很好的开始。

我主要是Java和Python程序员,但有一些C ++经验。此外,我还喜欢ArchLinux。

我想做的一个小项目是通过Arduino / Pi上的Wi-Fi 控制一些灯泡

从我看过的书中,Pi和Arduino都是面向学生的,但我想不出哪一种更适合像我这样的人,他们想了解计算机的底层工作原理。

作为一个初学者,我会遇到很多问题,因此,一个庞大而有用的社区(我听说Pi有)是一大优势。

那么哪一个更适合自学的初学者:Arduino还是Raspberry Pi?

提前致谢。

编辑:

从您的许多精彩答案以及这些有价值的 文章中,我得出以下结论

结论

  1. 我选择Arduino作为嵌入式编程的切入点,因为它是比Pi更简单的系统,并使我更容易接近金属。

  2. 深入学习是有价值的:我以后可能会研究AVRmbed微控制器,以了解有关计算底层细节的更多信息。

  3. 两种设备都允许我在没有操作系统的情况下进行编程,而这正是我想要的(首先)。

  4. 我还发现 项目使用一个PI控制一个Arduino。我发现这很吸引人,因为这两种设备都非常便宜,而且我喜欢使用可以在Pi上运行的Linux的功能。

  5. 另外,我发现这本书应该可以帮助我在尝试Arduino的同时学习更多有关电气工程的知识。

  6. 用Arduino进行灯泡项目似乎很困难。但是没关系。我确定我可以想到其他激励性的项目,也可以在这里这里获得灵感。

谢谢大家的答案。


2
Arduino更简单。我建议这对于“自学初学者”来说是一个更好的起点。Arduino当前拥有更多的附加组件制造商社区,例如“盾牌”(插入式子板)。Pi物有所值,但我认为与许多Arduino变体相比,Pi的底层接口(GPIO数量,I2C等)更少。如果您对低级的东西不太感兴趣,我会使用Pi。
RedGrittyBrick

Answers:


35

如果您真的想“了解计算机如何在低层工作”,那么可以说Arduino和Raspberry Pi都不适合。这两个平台(它们的硬件和软件)都是专门为隐藏低级细节而设计的,以使那些关心这些细节的人可以通过创建嵌入式应用程序轻松实现其高级目标。

相反,我建议选择具有相对“干净”指令集架构的CPU系列,并学习如何使用汇编语言对其进行编程。例如,我在PDP-11小型计算机上做了很多早期编码,该计算机具有(非常好)非常干净的16位体系结构。有人告诉我TI MSP430系列非常相似。在现代的8位系列中,可以说AVR比PIC干净一些。或者您可以去老学校看看M68K甚至Z80。

因此,这实际上取决于您的实际目标:您是要创建嵌入式应用程序,还是要研究处理器本身?

如果您想从前者开始,然后再转移到后者,那么也许您应该现在就从Arduino开始,然后再迁移到对底层AVR处理器进行编程。

我之所以提出此建议,部分是由于您建议的应用程序的简单性质,另一部分是由于迁移路径。在Pi上迁移到低级编程要困难得多。它基于复杂的SoC,而要使其正常运行,就需要大量的软件“基础结构”。使用AVR,如果您愿意,可以轻松地编程到“裸机”。


谢谢,我想开始创建嵌入式应用程序,也许以后再研究处理器。
Matthias Braun

1
您可以毫无问题地编程Pi裸机,而无需了解任何基础结构。只需忽略视频,音频和网络,您就会拥有一块带有大量RAM的快速ARM芯片,该芯片可以从SD卡中加载。或者,将引导加载程序放在SD卡上,然后使用串行端口将应用程序下载到RAM。
Wouter van Ooijen

2
对于烧毁和崩溃的裸机开发,配备了Arduino的Arduino随时可以启动引导加载程序,并且大大简化了启动要求(即将其视为ATMEGA开发板)
Chris Stratton 2012年

13

Arduino可以与Arduino SDE一起使用,后者以“隐藏”的方式提供一些功能,但是它也可以与普通汇编器,C或C ++(以及可能与许多其他语言一起使用),但似乎不常见)。有各种各样的扩展板可供选择,称为“ Shields”,大多数情况下都带有与Arduino SDE集成的支持软件。组合多个盾牌可能很棘手。以太网是可能的,但这扩展了功能。USB主机堆栈是AFAIK所无法提供的。

最初的Arduino包含一个AVR芯片,但也有基于PIC和LPC(ARM)芯片的替代产品。

Raspberry Pi被设计为运行缩小版Linux的单板计算机。因此,可以使用多种语言(从汇编程序到Python,以及介于两者之间的所有语言,包括C和C ++)进行编程。它可以是USB主机,因此添加USB WiFi加密狗应该没有问题。Pi PCB有一个IO连接器,上面有一些可用的针脚,您可以从Linux应用程序访问这些针脚,但感觉有点笨拙。

尽管它不是为使用这种方式而设计的,但对Raspberry Pi裸机(=没有任何操作系统)进行编程是没有问题的。现在,您可以直接,快速地访问IO引脚,但是您失去了运行Liunux驱动程序的能力,因此添加WiFi将很困难。到目前为止,针对APi的RaPi的硬件​​扩展(带有随附的软件库)不如针对Arduino的扩展,但我的直觉是这可能会改变。

总而言之,我想您都不会错,但是如果您真的想要WiFi,我建议您将RaPi与Linux配合使用。


1
Raspberry Pi的缺点之一是缺少官方文档。它主要是绝密的Broadcom专有产品,只有凡人无法接触。如果需要ARM速度,那么还有其他平台的裸机工作文档要好得多,与Raspberry Pi相比,这些平台便宜且易于获得。另一方面,与来自Texas Instruments,STmicro或Freescale的各种廉价ARM套件相比,Raspberry Pi更接近“真实计算机”。
AndrejaKo 2012年

3
AFAIK缺少视频和音频部分的文档(但是我读到这些部分的驱动程序现在是开源的,因此,如果要使用这些部分,至少有某种形式的文档。)如果您假装这些部分不存在,您需要花很多钱(RAM和CPU能力)。谁在乎您是否不想在典型的微控制器应用程序中使用其他东西?我不需要成熟的图形引擎。如果我需要一个像素级的接口,那就在那里。
Wouter van Ooijen

与普通的嵌入式设备相比,不仅是音频和视频,而且pi的GPIO文档非常稀疏。
克里斯·斯特拉顿

1
使用可用的文档,使用GPIO完全没有问题。有没有发现问题?
Wouter van Ooijen

4

在我看来,可以归结为:您要在OS还是在硬件本身上进行编程(某种程度上是自己制作OS)?

使用RaspberryPi,您几乎将要使用Debian Linux。很好,Linux真的很有用。如果您了解了这一点,则可以继续使用其他PC,服务器等。如果您熟悉Python,因为它很容易在Pi上进行开发,因此您可能会再次使用Python进行编程。

另一方面,如果您想查看对很小,便宜和低功耗的东西进行编程的感觉,请尝试使用Arduino。您所有的代码都在那块小芯片上运行,您甚至可以将它从开发板上移除(如果是DIP芯片),然后将其放在面包板上,亲自了解一下,使一台基本的小型计算机正常工作所需的硬件数量。至少对我来说这真是太神奇了。您编写的所有内容都将在该芯片上运行,因此整个“ OS”将成为您的小运行循环。Arduino IDE /语言很好入门,但是以后了解C / C ++将会非常有用。如果您真的很了解这一点,则可以在其他微控制器(如ARM Cortex M芯片或TI的MSP430)上轻松使用C技能,以实现真正的低功耗。

如果您更想学习EE和嵌入式语言,我建议您选择Arduino,主要是因为为EE部件制作自己的电路非常容易。您不能很容易地将Raspberry Pi的芯片移至自己的板上,也很难与硬件打交道。也几乎是一个Linux系统。那时只需启动一个VM并在那里学习Linux。


3

真正合适的方法取决于任务的细节。

如果您需要wifi,您可能会发现Raspberry Pi是更具成本效益的解决方案,因为您可以使用便宜的wifi加密狗。

但是,pi有一些复杂性-在软件方面,尽管您具有Linux配置方面的经验,并且在电源方面也有限制-一些wifi加密狗将直接起作用,而其他wifi加密狗则需要电源集线器或焊接旁路在多熔丝周围。

在Arduino路径上,除非您获得一个实现完整网络堆栈并模拟串行通道的wifi适配器,否则最终将使用大部分可用内存进行网络实现;人们会这样做,但它可能非常适合。

出于观点考虑,这两个平台都不是真正适合此任务的平台-相对于作为嵌入式构建块的理想选择,由于其功率限制,悬垂的SD卡固定架和保留的文档,pi显得更像是一个玩具,而且Arduino的价格几乎没有板载资源。就是说,尽管有很长的历史,将数字I / O入侵基于linux的wifi路由器,但并没有很多比它更好的替代品,而且其中一些现在具有竞争力的价格便宜/紧凑。


3

我建议使用mbed处理器。在C ++中,它在高层抽象(入门)之间取得了很好的平衡,然后您可以下降到C并以较低的水平开始使用。

一旦您适应了中断,定时和读取信息(模拟和数字)的速度并感到满意,然后就可以移至简单的PIC。我喜欢16F886,它将使您更好地了解寄存器级别的实际情况。使用Hi-Tech C编译器作为起点,除非您确实愿意,否则无需进行汇编。

使用PIC,您可以开始担心功耗,程序大小,存储器,时序延迟。

从那里您可以返回到mbed或arduino之类的更大处理器,因为您知道自己对内部情况有更好的了解。


2

我从Arduino入手,当我了解它的工作原理后,我转到了Pic,可以说它成功了。我使用Arduino做了一些华丽的项目,这很容易,因为在网络上您有很多代码示例。Raspberry pi仍在增长,没有像Arduino那样多的帮助。因此,我认为,我建议您从Arduino开始,并在达到一定水平后转向微控制器。


2
我没有看发布的时间,它只是出现在建议的主题中,我只想提供帮助。
ManuelJoaquín2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.