从设计到制造:Arduino用于定制电子产品

文章作者:Jacob Beningo

在本系列的第二部分中,Jacob Benigno将深入了解Arduino以及专业开发人员如何从中受益。

*参见“从设计到制造”系列的第一部分,详细介绍了制造物联网工业控制器的原型过程:*设计制造:工业控制器原型

尽管Arduino在业余爱好者和电子爱好者中很受欢迎,但在专业嵌入式系统开发人员中却臭名昭著。我必须承认,在很长一段时间里,我也认为Arduino是如此简单,它几乎对专业开发人员毫无用处。但我改变主意了。
我发现,在过去几年的许多场合,使用Arduinos和Arduino shields快速原型在推动项目向前发展方面是非常宝贵的。尽管Arduino抽象简单,但也可能是因为它的抽象简单,Arduino一直是将抽象概念转化为明确产品的关键。因此,让我们进一步了解Arduino,以及专业开发人员如何从中受益。
Arduino硬件平台
Arduino对专业开发人员最强大的方面之一是支持它的硬件生态系统。每个Arduino板和衍生产品都有一个标准的硬件接口,允许定制设计的电子设备堆叠在处理器板上,以充实嵌入式系统的原型。大多数开发人员都知道,这种定制的电子板被称为“盾牌”,可以在板上安装任何类型的电子设备,如电机驱动器、传感器、执行器、led或应用程序需要的任何东西。Arduino在爱好者中的普及极大地帮助了嵌入式系统专业人员,因为其结果是为几乎所有可以想象得到的现成应用程序提供了各种各样的Arduino盾牌。
这是我最喜欢的盾牌之一图1,是Sparkfun的防雨罩。这个屏蔽提供了一系列模拟和数字传感器,非常适合于嵌入式系统课程的教学。但如果您有不同的要求,在几乎所有电子供应商的网站上快速搜索,就会发现几十种商用和库存的各种Arduino盾牌。Arduino盾牌通常很便宜,根据传感器和内置电子设备的收集情况,成本不到50美元。

(12081 - 01)
__Figure 1:__ *Sparkfun Weather Shield *

专业开发人员还可以利用Arduino硬件平台与感兴趣的商业设备进行接口。使用CAN、SPI、RS-485、以太网和其他设备接口的可用屏蔽,可以为概念验证或一次性客户演示执行快速原型制作活动。只需几百美元,开发人员就可以很容易地组装一个完整的嵌入式系统硬件表示,并编写一些“脏代码”使其能够正常工作。

Arduino硬件接口在过去几年中略有变化,最新版本基于UNO R3引脚。标准接口包括6个模拟输入,14个数字输入,输出,一个专用的I2C通道,然后杂项电源轨道和参考。UNO R3 pinout的一个例子可以在下面找到图2。

(ArduinoR3PinOuts)
__Figure 2:__ *Arduino Uno R3 Standard Pinout(来源https://github.com/Bouni/Arduino-Pinout)* .

Arduino shield接口是为低成本、低引脚计数微控制器设计的,这可能是专业嵌入式系统开发人员需要更多的问题。微控制器公司试图解决这个问题,他们为自己更强大的处理器创建开发板,同时追随Arduino shield的足迹。然后,他们扩展了标题以获得额外的功能。通过以同样的方式扩展它们的头部,开发人员可以为这些利用额外功能的增强开发板构建自己的自定义盾牌。然而,他们仍然可以购买现成的Arduino盾牌,仍然与开发板兼容。NXP FRDM-26Z和FRDM-64F是微控制器公司如何利用Arduino屏蔽接口,然后扩展这些功能的主要例子(还有许多其他的例子;只要选择你最喜欢的,并检查自己的网站)。

Arduino软件平台

Arduino不仅仅是硬件;这是一个完整的硬件和软件原型系统。从专业开发人员的角度来看,它的软件开发环境和库还有很多不足之处,但是了解Arduino如何处理软件开发仍然是很有用的。

首先,一个开发人员检查Arduino网站——Arduino。cc -将会发现在谈论软件的时候有一些非常奇怪的语言正在进行。Arduino为普通大众发明了一个概念,叫做“草图”,对专业开发者来说就是“写代码”。草图实际上只是一个软件项目,但术语草图来源于Arduino最初是作为一个快速原型开发工具开发的,对象是那些对软件或电子产品知之甚少的人,比如艺术家。

接下来,一个可能的Arduino开发人员将发现Arduino编程语言用于编写Arduino设备。没听过Arduino编程语言吗?这是因为Arduino编程语言实际上就是C/ c++。他们所称的“Arduino语言”实际上只是一组库,这些库为控制微控制器外设提供了一组一致的api。

作为专业开发人员,Arduino库可以为快速原型提供快速通道。例如,控制数字输入/输出引脚的API调用是digitalWrite()和digitalRead()。有大量不同的库函数用于内部微控制器外设和外部设备控制,如eeprom和电机控制器。开发人员可以选择使用这些库,或者编写自己的库。然而,许多库调用往往效率低下,而且没有对速度或大小进行优化,因此任何开发工作都需要仔细注意内置库的实时响应。

Arduino软件是开源的,可以用于任何目的,但开发人员和管理人员需要记住,该软件是为原型目的开发的。代码不是为了容错、安全或在任何生产环境中使用而编写的。开发者仍然需要经历整个生产过程才能将产品推向市场。不过,Arduino至少可以在早期证明该系统可以工作,而不是花上几个月的时间才失败。

结论
专业开发人员可以利用Arduino生态系统快速原型并证明嵌入式系统概念。现有的Arduino库可用于快速和肮脏的开发,但许多开发人员将找到想要的软件开发环境,可能会选择使用自己的开发工具和环境。尽管软件平台中的专业缺陷,但使用Arduino屏蔽和硬件环境的使用提供了一个很好的机会,可以通过使用易于使用的盾牌来帮助加速发展。只是不要忘记Arduino是为了快速原型设计而不是开发生产意向系统。

留下你的评论