一板网电子技术论坛

风筝
发表于: 2018-5-15 23:51:12 | 显示全部楼层

有两款设备统治着爱好者电子产品的世界:Arduino和树莓派(Raspberry Pi)。在世界各地的工作室都可以看到两者的身影。对于不熟悉的人来说,它们可能看起来非常类似:它们都是带有电阻、电容的电路板,ICU焊接在顶部,接口从侧面引出。


然而,如果我们仔细看一看的话,Arduino和树莓派在架构和设计目的上各有不同。我们编写了本篇文章以阐明这些差异,并帮助您决定哪个才适合您的想法。


什么是树莓派?

第一代的Raspberry Pi于2012年上市,起初它的设计目的是作为一款教育工具,可以帮助教孩子们学习编写代码。从那以后,它在课堂之外获得了快速发展;世界各地的业余爱好者们将RPi纳入各种各样的项目中。


最新版本的Raspberry Pi 3(B +型号)配备了1.4Ghz四核处理器和双频无线局域网,可连接显示器或电视机的HDMI输出,以及各种USB输入,可以接入鼠标、键盘和手机充电器等。

raspberry-pi.jpg

什么是Arduino?

Arduino在2008年首次发布,并作为Atmel微控制器的开源原型板销售。正如我们将发现的,微控制器与Raspberry Pi的微处理器完全不同。


Arduinos可以很容易地连接到面包板,并增加了称为Shields的专用扩展板。由于Arduino硬件是开源的,因此有许多变种可供选择。最流行的UNO Rev 3是基于Atmel的ATmega328。包括连接到MCU所需的一切,以及LED、电压调节器和复位按钮等附加组件。

Arduino-uno.png

看一下每个设备的重要规格是我们的第一个线索,他们彼此非常不同。我们已经使用了每个产品线最新的版本,但其他人可能已经很容易地说明了这一点:


Arduino UNO Rev3
  Raspberry Pi Model 3 B +
时钟
16MHz
1.4GHz
内存
32kb
1 GB
GPIO引脚
14
40
工作电压
5V
5V

首先我们很容易注意到,Raspberry Pi的Broadcom BCM2837的主频为1.4Ghz,而Arduino的Atmel微控制器的主频为16Mhz。通过简单的算术就可以明白,一个比另一个快大约一百倍。


你会发现在其他领域有类似的差异。 Raspberry Pi拥有1 GB的RAM,而Arduino仅提供几千字节的内存。 Arduino有一个USB端口,而Raspberry Pi有几个,还有HDMI,一个RJ45连接器和内置的无线连接。


那么为什么你可能会想,在Raspberry Pi在如此多的关键领域中表现出色的时候,Arduino是否还会非常流行?为了找到答案,我们需要探索微处理器和微控制器之间的差异。


那么微控制器和微处理器有什么区别?

正如我们已经提到的,在每个Arduino的中心是一个称为微控制器的黑色IC单元。无论是旧的28引脚DIP(双列直插式)封装还是更现代化的SMD(表面贴装器件),这个小芯片都包含了实际计算内容所需的一切:有一个微处理器、一个定时器、一些存储器、以及MCU与外界通信的I / O端口。这个组件实际上才是做Arduino的工作;该板的其余部分和Arduino软件可以帮助您与其进行交互。


Raspberry Pi的工作方式非常不同,并且与台式PC有很多共同之处。其核心是一个Broadcom CPU,它连接到RAM、外部存储器和电路板上其他地方的端口。它运行的操作系统可处理计算机的基本功能,运行程序、控制HDMI、USB和RJ45端口,并呈现图形界面以向用户显示。


这种架构使Raspberry Pi能够完成Arduino及其微控制器无法做到的事情。但是对于某些应用程序来说,这种完整的计算机将是麻烦且不必要的。考虑电脑键盘中的电路。它可以监视一组活动的开关,并将击键事件报告给您的计算机。你会在家中找到许多设备,这些设备包含微型微控制器单元,这些单元免除了资源匮乏的功能,如操作系统或图形用户界面(甚至是引导加载程序),能够便宜而高效地完成工作。


操作系统

通常情况下,Raspberry Pi运行称为Raspbian的Linux专用版本。它针对Pi进行了优化,旨在充分利用电路板的架构,从而提供最可能的用户体验。据说,没有什么能够阻止创意Pi用户将完全不同的操作系统安装到他们的设备上。有几十种可供选择,包括Ubuntu、OSMC和RetroPie;因此,每个Raspberry Pi都不是成为游戏机或媒体中心的全新发布版本。


尽管大约2KB的Arduino闪存存储器专门用于一种称为引导加载程序的特殊固件,但缺乏完整的操作系统,因此不能像Raspberry Pi那样运行程序。相反,它会启动并执行您使用Arduino IDE提供的指令,这些指令可以在基于Windows,Mac或Linux的机器(包括Raspberry Pi)上运行。


因此,您将在单独的机器上进行实际的编程。这给我们带来了另一个重要考虑:成本!


成本

在成本方面,这两款产品具有可比性,最新的RPI价格为35美元,Arduino UNO的价格相对较低,为20美元。然而,每个设备的家族都相对宽泛;最小的树莓派Raspberry Pi Zero仅售5美元。


特别是在Arduino的情况下,投资可能不会止步于此。您的野心可能需要购买一个或两个可堆叠屏蔽板,或一组电阻,传感器,跳线和IC单元。更重要的是,只要你完成了一个项目并开始理解在你面前展现的可能性,你可能会订购越来越多的组件,以及用于存储它们的小抽屉。除此之外,还有能够托管Arduino IDE的设备的成本。


相比之下,Raspberry Pi的软件驱动方法只需要一些额外的组件:您需要一个显示器,一个鼠标和一个键盘,以及将所有东西都连接在一起所需的电缆。


编写第一个程序

在开始使用Raspberry Pi之前,您需要先安装并配置操作系统。幸运的是,有一个方便的zip文件使得这个过程非常简单:它被称为NOOBS。


要开始使用Arduino,您需要将IDE安装在计算机或平板电脑上,通过USB连接到Arduino开发板。这样,您就可以创建您的第一个项目,该项目可以是制作LED闪烁。你会将LED的管脚插入接口,并编译一个程序,使其开启和关闭。为防止LED烧坏,可以连接一个小电阻和一块面包板。

circuit-with-arduino-led.png


作为想要成为程序员的教育工具,你会期望Raspberry Pi支持一系列的编程语言。事实如此。


对于初次编码人员来说,明显的选择是Python(从中绘制Raspberry Pi中的'Pi')。它的高级和直观性,甚至可以让初学者轻松学习。此外,它是一种“解释性”语言,它在运行时被翻译(相对于必须事先写入机器码的“编译”语言)。

programming-languages.png

Raspbian预装了一个名为IDLE 3的Python IDE,它足够强大,可以创建复杂的程序。然而,它并不是唯一的游戏:很年轻的程序员可能想要开始使用Scratch(大写字母S),而更有经验的程序员最终可以跨越C、C ++或Java。


由于Arduino缺乏解释器,所以它的代码必须在它运行之前编写,编译并上传到Atmel芯片上。当您对代码感到满意时,请按上传。在编译代码和附加的库文件并将结果发送给Arduino之前,IDE将运行错误检查。在进入编译器的过程中,您的代码将被处理以将其转换为C ++程序,然后是机器可读指令。


像Python这样的解释性质使得调试不那么痛苦。无论何时出现错误,您都可以实时看到它们。虽然Arduino IDE确实配备了串行监视器等帮助识别错误的工具,但它仍然具有带来很大可能的挫折感。在一个复杂的Arduino项目中,您可能会花几个小时寻找缺失的分号!

跳转到指定楼层
风筝
发表于: 2018-5-16 11:01:11 | 显示全部楼层

高级语言与低级语言

如果您对编程世界不熟悉,可能不清楚“低级语言”和“高级语言”这些术语的真正含义。让我们花点时间来思考一下。


当你试图想象计算机内部的扩展时,想象一个抽象层次是有用的。在底部,你会发现允许电脑工作的机器码。在顶部,您会发现用户可以轻松进行交互的图形用户界面。


在这两个极端之间,你会发现虚拟的抽象层次,低层次的“汇编”语言居住在较低的层次,而更高的层次则更多的是像Python这样的抽象语言。 Arduino倾向于坐在这个层次结构的底部,而Raspberry Pi支持一系列高级语言,位于顶层。


由于低级语言更接近机器码,因此它们往往效率更高。但这是以易于理解为代价的。如果你是编程世界的新手,那么这可能是需要考虑的事情。


这就是说,这并不意味着Arduino不适合绝对的初学者。如果你有点耐心,对编码原则有一个基本的理解,而你是那种能够找到并消除这些小问题的人,那么Arduino很可能适合你。


图像处理

拥有更多的计算资源可以让Raspberry Pi处理大量数据,并以有趣的方式呈现数据。如果你想绘制一个内容不断变化的条形图,那么树莓派可能是最好的方式。对于驾驶具有多个运动部件的复杂现实世界的机器来说,这非常棒。如果您的项目涉及复杂的计算、视频和触摸屏,那么它可能超出了像Arduino这样的低功耗微控制器的功能。


但是,如果您的数据处理需求更简单,那么Arduino可能更适合您的需求。它会高兴地坐下来,一遍又一遍读取给定引脚上的电压,直到达到某个阈值,然后才执行相关操作。对于这样的应用程序,操作系统和花哨的图形显示是矫枉过正的。但这并不一定意味着Arduino驱动的项目总是很小而且简单 - 通过插入几个移位寄存器、LED驱动器和多路复用器,您可以扩展低级的Arduino的连接潜力,并且可以实现各种角色。你需要做的就是以正确的方式连接引脚。


连接

这两个系统都带有一系列通用输入和输出(或GPIO)。较新的树莓派设备有四十个引脚,而Arduino UNO拥有十四个引脚。这些引脚可以设置为高电平或低电平,或读取输入电压。在每个器件上,可以配置特定的引脚来处理特定的串行协议,包括SPI、I2C和UART。


您甚至可以通过指示引脚快速打开和关闭来模拟0到5之间的电压。这种技术被称为脉宽调制。通过调节每个'开'信号的长度,您将能够数字控制LED的视在亮度或电机的速度。

arduino-pwm-diagram.png


Raspberry Pi拥有板上连接模块,使其适用于物联网项目。没有必要乱用蓝牙和WiFi扩展;一切都融入到一个设备中。因此,如果您希望能够通过电子邮件打开和关闭电灯(您显然希望这样做),那么Raspberry Pi将允许您执行此操作。


就这一点而言,将配备ESP8266的WiFi扩展板插入到Arduino的顶部并不是非常困难。此外,还有Arduino的变种,包括无线互联网,如MKR1000,它将2.4Ghz 802.11 b / g / n Wi-Fi与低功耗MCU相结合。一系列制造商已经开发出专门的Arduino设备来满足各种用途 - 一旦你掌握了其中的一个Arduino,你就可以将这些知识应用到其他设备上。


功耗多少?

功耗对许多项目来说是一个大问题。例如,如果您正在建造一辆遥控车,那么您需要一块可以接收信号,启动电机并执行所有相关计算的电路板,而无需墙上适配器的帮助,并且不会将电池电量耗尽几个小时内。


Raspberry Pi 3 Model B +在1.7W左右闲置。如果你使用的是较小的Raspberry Pi Zero,那么它会下降到0.4W左右。将它与Arduino UNO进行比较,Arduino UNO将运行约0.14W的代码,并且开始看到Arduino自然适合精简的电池驱动项目。

arduino-power.jpg


无论您选择哪种设备,您都可以通过多种方式提高其能效。不仅Arduino和Raspberry Pi有多种变体可供选择,还可以调整系统以获得最大功率效率。例如,如果您不再需要RPI上的显示器,则可以通过禁用HDMI端口来节省电源。根据您的项目需求量身定制您的Raspberry Pi,并且在相同的电池上运行时间可能会相当长。


另一个复杂问题是电力中断。当Windows或Raspbian等操作系统在没有警告的情况下被拒绝电源时,结果可能是代码和软件问题。如果您正在通过写入特定内存位置并突然移除电源,则结果可能会变得混乱。这就是为什么桌面操作系统倾向于坚持正常关闭。老年读者可能会回想起黑色背景上的橙色文字,告诉我们所有人在安全关闭计算机时的情况。


由于Arduino不运行操作系统,这不是问题。只要重新插入代码就可以重新开始运行代码。如果您想让Arduino设备始终以无线方式运行,则只需在地面和5v引脚之间连接5v电池即可。您可以直接或通过电池组扩展板的帮助来做到这一点。


最后,我们还应该考虑项目不会孤立存在。如果您打算购买Arduino驱动伺服电机,或者驱动数十个LED,那么微控制器所消耗的功率将变得无足轻重。对于连接到巨大等离子电视的树莓派也是如此。


那么哪一个最好?

如果从所有这一切中得出一个单一的结论,那就是虽然这两种设备共享表面特征,但它们的目的却是完全不同的。


让我们考虑一个类似的比较:一辆货柜车和一辆轻便摩托车。就像Arduino和Raspberry Pi一样,这些车辆也有着共同之处:它们都带有轮子,它们都可以用来运输东西。但卡车配备了更强大的发动机,更大的车轮以及需要长途运输重型货物的巨大油箱。希望运送几十英里的数十个瓷浴缸的卡车可能会支持卡车的动力。相比之下,希望在短时间内向十几个不同城市中心地址提供十几个比萨饼的餐馆肯定会更喜欢轻便摩托车的相对灵活性。


但是,如果说一辆卡车比一辆摩托车“更好”,这没有什么意义,何况是说一个树莓派比一个Arduino更好。他们每个人都有他们的相对优势,适合不同的目的。

一般来说,Arduino更多是为了面向硬件的项目而构建的,而Raspberry Pi更倾向于软件。如果你想控制电路,那么Arduino提供的动手乐趣是很难打败的。如果你想学习编码,那么Raspberry Pi就是更好的选择。


这可能是因为你的项目需要数据处理能力和硬件控制。既然如此,没有什么能阻止你同时使用Raspberry Pi和Arduino。这两人可以互相打好戏,并有一点说服力。更重要的是,有几种设备可以弥补它们之间的差距。 UDOO系列单板计算机将Raspberry Pi和Arduino集成到同一设备上,而Beaglebone Black则是配备大量GPIO引脚的Pi的有效竞争对手。


我们在这里讨论的两款设备对爱好者的电子产品世界产生了爆炸性影响,帮助数百万潜在发明者和业余程序员实现他们的愿景。无论你选择哪一种,你都可以找到资源来指导你的任务 - 包括论坛上的一些内容!

回复

使用道具 举报

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

本版积分规则

主题 91 | 回复: 123



Archiver|手机版|小黑屋|

GMT+8, 2018-5-26 10:34 , Processed in 0.046875 second(s), 31 queries . Powered by Discuz! X3.4

YiBoard一板网 © 2015-2018 地址:河北省石家庄市长安区高营大街 ( 京ICP备16014155号 )

快速回复 返回顶部 返回列表