掌控未来,就从Windows远程Arduino开始!
项目简介
Windows远程Arduino是一个强大的开源Windows运行时组件库,旨在让开发者通过蓝牙、USB、WiFi或以太网控制Arduino板。无论你是C++/CX、C#还是JavaScript开发者,只要将这个组件引入你的项目,就能在任何WinRT语言中直接使用其功能。它基于Firmata协议,而该协议已在Arduino IDE的预装库中实现。
简而言之 尝试Windows远程Arduino体验版应用, 开始你的远程Arduino项目之旅!
简单试用
Windows远程Arduino是软件与物理世界的桥梁,借助Windows 10的强大功能,我们可以为Windows手机、Surface Pro 3、桌面电脑甚至是Raspberry Pi 2打开新世界的大门。只需将设备配对到Arduino,就可以用指尖触碰现实!
我们还推出了一款名为Windows远程Arduino体验的通用Windows应用,无需编写代码即可探索GPIO、模拟输入和PWM功能,包括在Windows IoT Core设备如Raspberry Pi 2上操作!该应用是开源的,下载并部署它,你的探索之旅即刻启程!
- 将StandardFirmata上传至Arduino,记下其设置的波特率。
- 从Windows商店下载Windows远程Arduino体验,或直接在Visual Studio下载源码进行部署。
- 连接设备时确保选择正确的波特率。蓝牙设备可能需要特定的波特率,StandardFirmata和Windows远程Arduino两者间的设置需一致。
开始你的远程Arduino项目
只需五步,你就可以创建自己的项目!
- 向Arduino上传StandardFirmata
- 创建项目或使用示例项目
- 选择连接方法。串行通信如USB和蓝牙有一些设置需要检查,还有关于如何配置蓝牙设备的完整指南。也可以使用以太网或WiFi,但需要额外的硬件。
- 验证Windows解决方案中的
package.appxmanifest
文件是否包含了必要的设备功能。 - 查看使用说明,开始编写你的远程Arduino代码!
功能特性
Windows远程Arduino开箱即用的功能包括:
- GPIO — 模拟和数字I/O
- digitalWrite — 数字写入
- digitalRead — 数字读取
- analogWrite — 模拟写入
- analogRead — 模拟读取
- pinMode — 设置任何引脚的模式
- 事件监听 — 当值变化或报告时接收事件
- I2C/TwoWire — 发送/接收通过I2C与其他设备的数据
- 自定义协议 — 通过Firmata SysEx命令实现自定义协议
微控制器
Arduino系列是一种基于开放平台的微控制器,设备简单可编程,可以处理GPIO等基本任务,以及更复杂的I2C通信协议。利用简单的Arduino“草图”,你可以快速将传感器和其他设备接入Arduino,赋予硬件指令。
然而,像Arduino这样的微控制器受到单线程性质的限制。Windows远程Arduino则将物理控制的全部功能与Windows设备(如多线程、原生文件系统、简便的互联网访问等)的强大软件能力结合在一起,开启新的可能性。
Windows 10
Windows 10推出了通用Windows平台(UWP)的概念。这意味着开发者可以开发一个适用于所有运行Windows 10设备的解决方案,包括Windows Phone 10和Raspberry Pi 2。只需在你的解决方案中包含Windows远程Arduino库,就能把任何Windows设备变成Arduino的远程编程界面!现在,你可以利用Windows 10操作系统的力量,通过多线程、数据存储、互联网访问和自然用户体验,为Arduino开辟全新的高级功能和创新项目。
支持的主板
以下列出了一些经过充分测试,使用本库所有连接方法的主板。未列出的主板并不意味着不兼容,只是尚未经过测试和验证。实际上,大多数主板都能与Windows远程Arduino配合使用,只要它们能够运行StandardFirmata或其他理解Firmata协议的草图。
Arduino
- Uno
- Leonardo
- Mega
DFRobot
- Bluno
- Bluno Beetle
软件架构
实现采用三层结构设计,每层都作为Windows运行时组件的入口点。大多数制造商可以只使用最顶层(RemoteWiring),它的接口几乎与Arduino Wiring完全相同,提供了基础的GPIO和通过I2C与其他设备通信的指令。大部分制造商可能永远不需要更多的东西。然而,对于要创建复杂行为的想法,制作者可以选择直接与Firmata层交互。
层级
架构中有三个层级;它们是接口、协议和传输。每一层都是下面层级的消费者,因此依赖于它们。然而,一层永远不会依赖其上面的任何层。分层构造使得可以随时更换或直接使用任意一层的实现。按照层级顺序,它们分别是:
- RemoteWiring(接口)
- Firmata(协议)
- Serial(传输)
例如,Firmata层会翻译RemoteWiring层请求到Firmata协议,然后传递给Serial层,由其将数据传送到Arduino(反之亦然)。Firmata层不知道Serial实现的具体情况,也不知道实际使用的传输方式。相反,Firmata层完全不知道RemoteWiring层的存在,因此可以用于非常高级的项目需求!
RemoteWiring
RemoteWiring层的主要接口类是RemoteDevice,这是大多数情况下应该使用的主API入口点。它提供了一个几乎与Arduino Wiring API相同的接口,如果你自己写过Arduino草图,应该很熟悉。然而,几乎所有通过这一层的调用都会被导向下方的Firmata层,所以只有在项目需要非常高级的行为时才需要绕过或扩展这一层!
Firmata
Firmata的实现直接来源于Firmata仓库,做了最小程度的修改(例如移除arduino/hardware依赖),并被封装在一个透明的Windows运行时组件库类中,称为UwpFirmata。
包装器没有改变或添加功能,只提供了参数平滑(例如char *
-> String
)和范式转换(例如callbacks
-> events
)。这一层完全独立于上方的RemoteWiring层,因此可以作为一个完全功能的Firmata实现!
UwpFirmata利用Windows操作系统的一个优势是可以在后台线程读取输入,而不是局限于单一的执行线程。大多数情况下,这个线程是由库自行创建和管理的。但是,如果你选择自己构建Firmata层(即创建UwpFirmata对象),可以选择启用此功能或者自己处理。如果项目不需要从Arduino读取输入(或想要自己处理输入),可以去高级使用部分了解更多信息。
探索你的创造力,用Windows远程Arduino打开无限可能!
- CangjieCommunity为仓颉编程语言开发者打造活跃、开放、高质量的社区环境Markdown00
- redis-sdk仓颉语言实现的Redis客户端SDK。已适配仓颉0.53.4 Beta版本。接口设计兼容jedis接口语义,支持RESP2和RESP3协议,支持发布订阅模式,支持哨兵模式和集群模式。Cangjie032
- 每日精选项目🔥🔥 推荐每日行业内最新、增长最快的项目,快速了解行业最新热门项目动态~ 🔥🔥02
- qwerty-learner为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workersTSX022
- Yi-CoderYi Coder 编程模型,小而强大的编程助手HTML07
- advanced-javaAdvanced-Java是一个Java进阶教程,适合用于学习Java高级特性和编程技巧。特点:内容深入、实例丰富、适合进阶学习。JavaScript085
- taro开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/TypeScript09
- CommunityCangjie-TPC(Third Party Components)仓颉编程语言三方库社区资源汇总05
- Bbrew🍺 The missing package manager for macOS (or Linux)Ruby01
- byzer-langByzer(以前的 MLSQL):一种用于数据管道、分析和人工智能的低代码开源编程语言。Scala04