发布日期:2022-04-17 点击率:28
事实证明,开源的 Arduino 概念已在业余爱好者和创客中取得巨大成功。同时此概念亦被专业设计人员所接受,用于早期开发和原型设计,最近又被用于完整设计。随着诸如可穿戴设备和健康监测之类应用的出现,这两类用户都需要在越来越小的电路板外形尺寸中,实现更高的性能和更多的功能。
本文简要讨论了如何使用 Arduino 板来满足创客和专业人士对低功耗、空间受限型应用中的高性能和功能需求。然后介绍并展示了如何从 Arduino 家族的最新成员——来自 Seeed Technology Co. 的 Seeeduino XIAO——着手来启动项目。
许多业余爱好者和设计人员都对开发小物理尺寸的产品感兴趣,以便部署在空间受限的环境中,包括可穿戴设备。这些通常是智能电子系统,常常基于微控制器与检测与显示设备的组合。有时,这些产品可用作高科技饰品。有时,则可紧贴和/或佩戴在皮肤表面上,可供检测、分析和传输身体数据,例如体温、心率和脉搏氧合,以及环境数据。还有些时候,可为佩戴者提供即时的生物反馈。
对于这类设计,很多业余爱好者和创客都使用 Arduino 微型计算机开发板。于是,越来越多的专业工程师也开始将这些开发板用作评估和原型开发平台,以便加快 IC、传感器和外设的评估速度并降低成本。
这类用户通常从 A000073 Arduino Uno Rev3 着手,该板被誉为“人手必备的入门开发板”(图 1)。该开发板基于 Atmel(现为 Microchip Technology)的 ATMEGA328P-AUR 微控制器。这款 5 V 处理器提供 14 个数字输入/输出 (I/O),其中 6 个可提供脉冲宽度调制 (PWM) 功能,以及 6 个模拟输入引脚,在必要时也可用作数字 I/O。此外,在数字 I/O 引脚 2 和 3 上还支持两个外部中断,以及 UART、SPI 和 I2C 接口各一个。
图 1:Arduino Uno Rev3 开发板基于运行频率为 16 MHz 的 8 位 ATmega328P 微控制器。其排针封装是称作盾板的庞大子板生态系统的基础,包括 14 个数字 I/O 引脚、6 个模拟输入引脚,以及各种电源、接地和参考引脚。(图片来源:Arduino.cc)
此开发板具有 8 位数据路径和 16 MHz 时钟的限制,再加上 Arduino Uno 仅提供 32 KB 的闪存程序存储器和 2 KB 的 SRAM;除此之外,尺寸为 68.6 x 53.4 mm (36.63 cm2),这对于许多应用来说太大了。
如要减少该微处理器开发板的物理尺寸,一种方法是迁移到 ABX00028 Arduino Nano Every,后者基于 Atmel 的 ATMEGA4809-MUR 微控制器(图 2)。程序存储器比 Arduino Uno 多 50% (48 KB),SRAM 容量是 Arduino Uno 的 3 倍 (6 KB)。与 Arduino Uno 一样,Arduino Nano Every 也基于 5 V 处理器,该处理器提供 14 个数字 I/O 以及 6 个模拟输入引脚,而这些引脚在必要时也可用作数字 I/O。此外,与 Uno 一样,Nano Every 也提供 UART、SPI 和 I2C 接口各一个。但是,与仅支持两个外部中断的 Uno 不同,Nano Every 的所有数字引脚都可以用作外部中断。
图 2:Arduino Nano Every 是传统 Arduino Nano 的升级版,但采用更强大的处理器 ATMEGA4809,拥有比 Arduino Uno 多 50% 的程序存储器,而且由于 SRAM 达到 3 倍大 (6 KB),所以变量空间更大。(图片来源:Arduino.cc)
虽然 Arduino Nano Every 仍有 8 位数据总线的限制,但具有更快的时钟 (20 MHz) 和更多的存储空间(48 KB 闪存和 6 KB SRAM)。对于尺寸受限的项目更重要的是,Arduino Nano Every 仅为 45 x 18 mm (8.1 cm2)。
另一个流行选择方案是来自 SparkFun Electronics 的 DEV-13736 Teensy 3.2,该板可以使用 Arduino 的集成开发环境 (IDE) 进行编程(图 3)。在 I/O 方面,这款 3.3 V 开发板得到大幅强化,它有 34 个数字引脚,其中 12 个支持 PWM,以及 21 个高分辨率模拟输入。
图 3:Teensy 3.2 是一款试验板友好型小型开发板,由 PRJC.com 的 Paul Stoffregen 设计。这款用户友好的开发板为业余爱好者、学生和专业工程师带来了低成本的 32 位 Arm® Cortex®-M4 平台。(图片来源:PRJC.com)
Teensy 3.2 采用 NXP 的 MK20DX256VMC7R Kinetis K20 微控制器。K20 采用 32 位 Arm Cortex-M4 处理器内核,运行频率为 72 MHz,并具有 256 KB 闪存和 64 KB SRAM。对于尺寸受限的项目来说,特别值得关注的是,Teensy 3.2 的尺寸为 35 x 18 mm (6.3 cm2),大约是 Arduino Nano Every 的四分之三。
尽管 Teensy 3.2 只有 6.3 cm2,但这对于许多应用来说仍然太大。对于那些寻求更小、更强大平台的人来说,解决方案就在庞大的 Arduino 生态系统中。一种相对较新的选择是 Seeed Technology 的 Seeeduino XIAO(图 4),尺寸仅为 23.5 x 17.5 mm (4.11 cm2),相当于一张标准邮票的大小。Seeeduino XIAO 的设计人员还很注重超低成本。
图 4:试验板友好型 Seeeduino XIAO 是目前 Seeeduino 系列中最小的 Arduino 兼容微控制器开发板,为用户提供性能强大的 32 位 Arm Cortex-M0+ 处理器,运行频率为 48 MHz。(图片来源:Seeed Studio)
XIAO 采用来自 Atmel 的 ATSAMD21G18A-MUT SAMD21G18 微控制器。该微控制器采用 32 位 Arm Cortex-M0+ 处理器内核,运行频率为 48 MHz,并由 256 KB 的闪存和 64 KB 的 SRAM 提供支持。
虽然 XIAO 仅提供 11 个数据引脚,但每个引脚都可以用作数字 I/O 或模拟输入(图 5)。其中 10 个引脚支持 PWM,1 个引脚配备数模转换器 (DAC),从而提供真正的模拟输出能力。此外,XIAO 还支持 UART、SPI 和 I2C 接口各一个。
图 5:所有 11 个数据引脚均可用作数字 I/O(D0 至 D10)或模拟输入(A0 至 A10)。此外,A0 可用作真模拟输出,D4 和 D5 可用作 I2C 接口,D6 和 D7 可用作 UART 接口,D8、D9 和 D10 可用作 SPI 接口。(图片来源:Seeed Studio)
一般来说,使用 Seeeduino XIAO 与使用其他 Arduino 或兼容 Arduino 的开发板一样简单,但也有一些值得注意的技巧与诀窍。
确保使用最新版本的 Arduino IDE 是一个很好的着手点。接下来,访问 Seeeduino XIAO Wiki,获得有关如何使用适当的开发板管理器来增强 Arduino IDE 的说明。
许多 Seeeduino XIAO 项目(可穿戴和其他项目)将涉及使用基于 WS2818 的三色 NeoPixel(来自 Adafruit),例如每米带 144 个 NeoPixel 的 2970 灯带(图 6)。
图 6:在 Seeeduino XIAO 上,单个引脚可用于单独控制数百个三色 NeoPixel,例如来自 Adafruit 的黑色灯带上的每米 144 个 NeoPixel。(图片来源:Adafruit.com)
一个潜在的问题是,虽然传统的 Arduino 开发板可以继续使用旧版本的 Adafruit NeoPixel 库,但 Seeeduino XIAO 需要最新且最好的版本。
如果安装了旧版 NeoPixel 库,奇怪和混乱的错误信息可能会随之而来。解决方法是从系统中删除所有旧版本的库,然后按照 Adafruit NeoPixel Überguide 上的说明安装最新且最好的版本。
一个潜在的担忧是 NeoPixel 对其数据引脚上的过冲和欠冲很敏感。而问题是,来自现代微控制器的信号快速边缘变化率可能导致此类特性。解决方法是在 NeoPixel 链中尽可能靠近第一个元件串联一个电阻(图 7)。像 Stackpole Electronics Inc. 的 CF14JT390R 碳膜电阻器这样的 5% 公差、1/4 W、390 Ω 的电阻器就是一个合适的选择。
图 7:串联电阻尽可能靠近链中第一个 NeoPixel,这样可消除 MCU 数据流边缘上的过冲和欠冲。(图片来源:Max Maxfield)
另一个与 NeoPixel 相关的问题是 Seeeduino XIAO 的 3.3 V 数字输出可能不足以驱动 NeoPixel 的 5 V 数据输入。一种解决办法是使用来自 SparkFun 的 BOB-12009 逻辑电平转换器分线板(图 8)。
图 8:SparkFun 的 BOB-12009 逻辑电平转换器提供四个双向通道,可用于在 3.3 V 和 5 V 域之间转换信号。(图片来源:Adafruit.com)
NeoPixel 应用只需要一个单向通道。BOB-12009 的问题在于它提供了四个双向通道,对于空间受限的项目来说是一个相对较大的解决方案,而对于成本敏感的项目来说则是一个相对昂贵的解决方案。一个简单的替代方案是使用一个 Comchip Technology 的 1N4001 二极管(图 9)。
图 9:使用一个 1N4001 二极管提供 0.7 V 的压降,可以迫使“牺牲的”NeoPixel 充当电压电平转换器角色。(图片来源:Max Maxfield)
NeoPixel 将逻辑 1 视为高于 0.7 * VCC 的电压。在此例中,NeoPixel 将逻辑 1 视为 0.7 * 5 = 3.5 V。
通过具有 0.7 V 正向压降的 IN4001 二极管为“牺牲的” Pixel(像素)供电,结果是产生 VCC 为 5 - 0.7 = 4.3 V 的供电电压,这意味着它将逻辑 1 视为 0.7 * 4.3 = 3.01 V。反过来,这意味着 Seeeduino XIAO 的 3.3 V 信号足以驱动牺牲的像素。同时,牺牲像素的 4.3 V 输出足以驱动链中下一个 NeoPixel 的数据输入。
早期的 Arduino 开发板如 8 位、16 MHz 的 Arduino Uno,物理尺寸大,容量和性能受限。如今,Arduino 生态系统包括的开发板种类繁多,涵盖了各种形状、尺寸和功能。
对于可穿戴设备等尺寸受限的项目,Seeeduino XIAO 提供了运行频率为 48 MHz 的 32 位 Arm-Cortex-M0+ 处理器内核,并配备 256 KB 闪存和 64 KB SRAM。所有这些都呈现在一个试验板友好型小平台上,尺寸只有 4.11 cm2,同时还具有广泛的生态系统支持。
下一篇: PLC、DCS、FCS三大控
上一篇: 利用现成元器件设计低