Microsoft Windows 桌面与 Arduino 聚首:创客的梦想?

作者:European Editors

投稿人:DigiKey 欧洲编辑

创客社区总有源源不断的新创意。许多创意围绕技术的使用展开,提出全新的服务提供和交付方法。还有一些以前看来不可能的创意为许多人开启了全新的生活方式。对于许多拥有创意、希望一展宏图的人而言,将产品设计从纸面变为现实所面临的挑战可能令人生畏。崭露头角的企业家认识到,率先抢占市场至关重要,并且对能否取得快速发展有着决定性的影响。ArduinoRaspberry PiBeagleBone Black 等嵌入式单板计算机 (SBC) 已迅速成为许多创客的首选平台。绝大多数 SBC 使用 Linux 作为首选的操作系统。不过,尽管 Linux 为设计注入了许多灵活性和特色,但要学习使用 Linux 的确需要对其有一定程度的了解,而这可能给不太有信心使用开源操作系统的人造成较大的障碍。Arduino 可能是一个例外,因为它没有使用操作系统。但这丝毫没有削弱在简化嵌入式设计与真实世界对接所面临挑战和编程简易性方面人们对 Arduino 的信任度。Arduino 在创客社区极受欢迎,尤其是不熟悉电子领域的创客;大家一致认可,Arduino 重新激发了电子爱好者的兴趣,进而开启了众多新产品创意的想象空间。

在新产品的开发方面,许多创客面临的挑战在于,如何设计产品原型,将 Arduino 的最大优势与用户和应用所熟悉的 Microsoft® Windows 结合起来。通过提供 SPI、I2C 和 UART 等众多连接选项,以及 GPIO、PWM 和 ADC 外设,毫无疑问,Arduino 提供了极其可靠和强大的方法,将设计与真实世界相连并进行感测。从应用开发的角度出发,您很可能已经能够娴熟地使用 Microsoft Visual Studio IDE 与 C#、Java 和 Python 等语言开发桌面应用,而不是使用 Linux。直到最近,还没有一种简单的方法能够将不同的 Windows 桌面与 Arduino 整合起来,但来自 DFRobot 的一款名为 LattePanda 的 SBC 却承诺可以做到这一点(图 1)。

DFRobot 的 LattePanda 图片

图 1:DFRobot 的 LattePanda。

LattePanda 本质上是一个极其紧凑的单板 Windows 计算机,其中预装了 Microsoft Windows 10 家庭版,包含一个以 1.8 Ghz 频率运行的 Intel® Cherry Trail Atom Z8350 四核微处理器,以及一个 Arduino 兼容型 Atmel Atmega32u4 协处理器。请注意,这是一个完整的 Windows 10 系统,而不是缩水的 IoT 版本。提供两种型号,32 GB e-MMC 存储和 2 GB RAM 版本,或 64 GB 存储和 4 GB RAM 版本。此外还提供不含激活 Windows 10 密钥的 LattePanda 板。作为标准连接选项,LattePanda 包含 USB 2.0 和 USB 3.0、一个 100 Mbps 以太网端口、HDMI 输出、一个 3.5 mm 音频插口、一个 microSD 插座、蓝牙 4.0 和 Wi-Fi。图 2 描述了 LattePanda 的主要组件和接口。该板通过一个微型 USB 插座,使用单个 5 VDC、2.5 A 电源供电。确保电源适配器在工作期间能够供应至少 2.3 安电流,以免 LattePanda 在启动时重置。LattePanda 的尺寸仅为 88 mm x 70 mm (3.46" x 2.76"),可轻松地用于空间受限的设计。为了协助放入外壳,LattePanda 板的论坛中提供了它的机械规格和 3D 模型文件。将该板装入狭窄的空间后,建议通过风扇提供强制风冷,并采用合适的散热装置,因为该板在正常工作期间温度较高。可以将一套定制的铜质散热器与 LattePanda 配合使用。该板上提供一个 5 VDC 风扇电源。

LattePanda 的主要组件和接口示意图

图 2:LattePanda 的主要组件和接口。

除了 Windows 操作系统以外,该板还预载了 Microsoft 的 Visual Studio 和 Arduino IDE。通过使用合适的虚拟网络计算 (VNC) 终端应用(例如 TightVNC),或通过将 LattePanda 1074 x 600 7 英寸 LCD 显示面板与其对应的触摸屏相连,该板可以进行“无头”操作。显示器和电容触摸板均通过 FFC 电缆和 ZIF 插座连接到 LattePanda。

当考虑使用各种外设 IO 时,经过深思熟虑后,采用的是 Windows 和 Arduino 的组合。图 3 描述了可用的引脚分配。Atom 和 Atmega32u4 均可提供信号,Arduino 的绝大部分功能则通过一个 24 针双排插座连接。Atom IO 可以在图 3 的 U1 区域找到。所有 20 个 GPIO 引脚(模拟引脚 A0 – A5 和数字引脚 D0 – D13)均使用 5 V 逻辑电平,并且可用作输入或输出,其中 12 个可单独设置作模拟输入使用。请参阅图 3 的 U2 区域。将任何传感器或设备连接到 IO 时,确保它们也使用 5 V 逻辑电平。如果要采用 3.3 VDC 设备,则需要逻辑电平转换器。每个模拟引脚都有 10 位分辨率,从 0 到 5 VDC 输入电压范围提供 1024 个值。引脚 D3、D5、D6、D9、D10 和 D13 可用作 8 位 PWM 输出。此外,D7、D3、D2、D1 和 D0 还可在多种不同条件下用于触发外部中断。按照 Arduino 的传统,有一个连接到 D13 的 LED,可使用标准闪烁 LED 代码操作。

LattePanda – 外设引脚分配图片

图 3:LattePanda – 外设引脚分配。

请注意,有些 Arduino 引脚 D9、D10、D11、A0、A1 和 A2 既出现在核心 Arduino 连接器中,又可与 DFRobot 重力传感器配合使用。

引脚可以从 Atmega32u4 内核上运行的应用和从 Atom 访问。除了标准的基于 GPIO 的 IO 以外,还可从针座实现通过 I2C 和 SPI 进行的串行通信。此外还提供了一个 6 位 ICSP 连接器。得益于附带的与 Visual Studio 配合使用的 LattePanda Firmata 开源库,Windows 应用可以轻松地使用 Arduino GPIO 引脚。这使得任何应用都能通过使用类函数来访问和控制任何引脚。在此处可以找到可用库函数的详细说明以及单独的可下载 Visual Studio C# 示例文件。

使板载 LED 闪烁的 Visual Studio 代码的截图(单击查看全尺寸)

图 4:使板载 LED 闪烁的 Visual Studio 截图。

为了检查确认一切正常工作,图 4 中显示了调用 Firmata 类库的 Visual Studio C# 代码。此代码在运行时会使板载的 LED 闪烁。熟悉基于 C 的 Arduino 代码结构和函数的读者将会注意到,这些类函数与 Arduino 草图中所用的类函数非常相似。

可使用一组专为 LattePanda 板定制设计的传感器,进一步简化利用该板创建应用的过程。重力传感器入门套件由共计 14 个传感器及其连接电缆组成,包括温度、光、气体和火焰传感器、一个模拟旋转传感器、数字按钮、各种彩色 LED,以及一个继电器模块。此套件将插到 LattePanda 板上的一排六个 3 引脚重力连接器中,图 3 中注明了其引脚分配。

LattePanda 板的 I2C 总线提供了另一种连接传感器、致动器和显示器的便利方法。Firmata 库提供了必要的类函数,可使用 wireBegin、wireRequest 和 didI2Cdatareceive 函数直接向 Visual Studio 应用收发数据。以下示例展示了 Adafruit 中一个 I2C 3 轴加速计评估板的用法。该评估板使用来自 Analog Devices 的 ADXL345 超低功耗高分辨率 3 轴 MEMS 传感器。如图 5 所示,将该 MEMS 传感器连接到 LattePanda。

Adafruit ADXL345 3 轴 MEMS 传感器到 LattePanda 的接线图图片

图 5:Adafruit ADXL345 3 轴 MEMS 传感器到 LattePanda 的接线图。

电源由引脚 22 (5 V) 和 21 (GND) 提供,I2C 连接到引脚 6(黄色电线 SDA)和引脚 8(蓝色电线 SCL)。

图 6 中的源代码展示了使用默认传感器地址 0x53 和默认测量范围 0x2D (2 G) 写入的传感器板。然后将数据从传感器连续读回,并解析为 X、Y 和 Z 轴读数,以显示在控制台屏幕上。

显示设置和读取 ADXL345 3 轴 MEMS 的 C# 代码图片(单击查看全尺寸)

图 6:显示通过 I2C 接口设置和读取 ADXL345 3 轴 MEMS 传感器的 C# 代码。

以上两个示例不仅说明了使用 LattePanda 创建应用的速度之快,也明证了在此板提供的预先认证的平台上可以快速开发应用并部署到市场的事实。使用 SBC 的设计不需要从头开始开发合适的嵌入式设计,消除了相关的 NRE 成本、风险和上市时间,因此可以在几周的时间内完成产品实现。通过让设计上市和制造出客户装置,就可以确保取得先发优势,如果产量足以支持商业案例,则工程团队可以充分利用 LattePanda 论坛提供的机械模型,为定制设计准备物料清单。

在许多可能的 LattePanda 应用中,将其用于物联网 (IoT) 解决方案也是一种非常理想的选择。它有足够的计算和连接资源,从众多以有线和无线方式连接的传感器实时读取数据,汇总结果,然后通过 Wi-Fi 或以太网通信将其转发到云分析平台。这种网关方法在工业物联网 (IIoT) 应用中无疑受到了欢迎。这种方法被称为“雾”计算,其对于持续的云连接的依赖性较低,因为一些控制功能可以在本地实现,而无需等待云应用的响应。例如,在达到某个温度点后打开空调装置。有了位于网关本地的温度传感器和装置致动器,较冷空气需求就可以得到满足,而不会产生通信费用,无需控制延迟,也不需要云计算资源。

Microsoft 的 Azure 物联网中心平台是一种流行的云计算平台,完全支持 LattePanda SBC。GitHub 存储库记录了使该板与 Azure 平台通信所涉及的过程。除此以外,LattePanda 也提供了相关信息。为了平稳地完成开发和测试过程,Microsoft 提供了 Node.js 示例文件来测试到物联网中心的连接。在下载这些示例之前,您需要先使用 Azure 门户设置一个 Azure 帐户,并创建一个新的物联网设备(图 7)。

Azure 物联网中心入口图片

图 7:创建新的 Azure 物联网中心入口。

图 8 显示了如何设置中心入口详细信息以及如何命名主机。此过程提供了用于识别 LattePanda 上的传感器并将其绑定到 Azure 物联网中心的凭据(连接字符串和访问密钥)。完成此过程后,接着可以编辑提供的“simple_sample_device.js”文件并输入连接字符串,然后构建并运行代码。在 Azure 物联网中心内,DeviceExplorer 实用工具功能提供了一种方法来观察该中心正在从 LattePanda 收到的消息。

Azure 物联网中心 – 注册新设备图片

图 8:Azure 物联网中心 – 注册新设备。

建立满意的通信后,您便准备好使用 Azure 的服务来处理您的应用设计了。例如,您可以使用 Azure 存储服务来建立传感器读数表。Azure Stream Analytics 和 Azure Power BI 是另外两个 Azure 应用示例,它们可以解析、分析和显示来自传感器数据的值和趋势。

光传感器 Node.js 示例图片

图 9:显示 Azure 存储函数的光传感器 Node.js 示例。

图 9 中描述的 Node.js 代码示例从连接到引脚“A0”的重力光传感器读取值,并将其存储在 Azure 存储表中。与 Azure 存储通信的函数标示在红框内。

在 LattePanda 上进行开发非常轻松。它是一个受到良好支持的平台,具有大量厂商文档、一个在线交流论坛,以及自己的包含机械模型、库和代码示例的 GitHub 存储库。而且,核心操作系统 Microsoft Windows 10 受到了极好的支持,可使用众多商用开发环境和应用。此外,Arduino 协处理器还拥有广泛的出版物、开发人员和编程资源社区。Arduino IDE 可能是您能找到的最无处不在的 IDE。Microsoft Visual Studio 是理想的 IDE 搭档,支持使用 C#、Python 和 F#/.Net 等各种流行的编程语言进行开发。

结论

LattePanda 为创客社区引入了一个全新概念。它能将 Arduino 轻松实现与真实世界对接的优势与广大 Windows 开发人员社区及其应用结合起来,极大地拓宽了嵌入式设计的范围,开启了无尽的新产品可能。

免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。

关于此作者

European Editors

关于此出版商

DigiKey 欧洲编辑