1. 概述

相信很多朋友已经在玩 Arduino了,而且一般都是使用官方的Arduino IDE来写程序控制Arduino硬件。为了能够实现更加方便的控制,微软在Windows IoT计划中推出了Windows Remote Arduino。简单来说,Windows Remote Arduino是一个开源的Windows运行时组件,通过它,我们可以使用蓝牙、USB、WiFi或者是以太网这四种连接方式中的任意一种来控制Arduino硬件。因此,在Windows 10这个统一的大平台下,我们可以使用Windows 10系统的PC、平板、手机,甚至是树莓派等运行IoT Core的设备来控制Arduino硬件。Windows Remote Arduino提供的功能包括:

(1)GPIO控制(模拟和数字)

Digital Write

Digital Read

Analog Write

Analog Read

Setting the pin mode for any pin

Receive events when values change / are reported.

(2)I2C接口通信

(3)Firmata用户自定义协议

2. 上位机环境准备

这里将运行Windows的PC、Surface、或者Windows Phone统称为上位机,我们可以使用以下三种方法中的任意一种来完成上位机的环境设置:

上述三种方式的难以程度依次升高。其中,第一种适用于简单的使用场景,用户无需编写代码就可以通过下载的Windows Remote Arduino Experience来完成Arduino设备的控制。第二种适用于编写自己的UWP应用场景,通过引用Windows Remote Arduino包,在自己编写的程序中完成Arduino设备的控制。第三种需要手动将Windows Remote Arduino源代码工程添加到自己的工程中来,这种方式可以获得的自由度最大,用户可以根据自己的需求定制Windows Remote Arduino。

这里,以第一种方法为例,打开微软商店,直接在PC或者Mobile上安装Windows Remote Arduino Experience应用,该应用是UWP应用。

3. Arduino设置

Windows Remote Arduino建立在Firmata protocol基础之上,因此,我们首先需要在Arduino硬件设备上烧写对应的代码。在安装Arduino IDE的时候,StandardFirmata是默认安装的,用户可以按照以下的步骤进行程序的烧写:

    1. 通过USB接口连接Arduino设备,这里以Arduino UNO为例。
    2. 启动Arduino IDE
    3. 通过Tools > BoardTools > Port选择对应的板类型和端口号。
    4. 通过File > Examples > Firmata > StandardFirmata,打开该工程。
    5. 点击Upload,将StandardFirmata sketch烧写到Arduino UNO中。

如果用户仅仅希望通过USB来控制Arduino设备的话,到这里已经完成了Arduino的设置工作。如果用户希望通过蓝牙来控制Arduino设备,那么,首先,PC上需要有蓝牙模块,其次,Ardunio上也需要连接一个蓝牙模块,具体可以参考这个文章《hook up a Bluetooth device to the Arduino》。另外,如果用户希望通过WiFi来控制Arduino设备,那么,Arduino需要一个WiFi Shield,具体可以参考这个文章《hook up a Wi-Fi device to the Arduino》。

4. PC操作

打开Windows Remote Arduino Experience应用程序,连接类型选择USB,速率选择57600。如果此时Arduino已经正确连接了PC的USB接口,则会自动显示Arduino Uno(COM*),用户只需点击Connect就可以连接Arduino设备了,如下图所示,

之后,应用程序界面分别包含了Digital、 Analog、PWM这三个页面,用户可以点击对应的页面进行远程控制和数据读取。以Pin 13为例,默认是Output的Low,通过点击更改电平,如下图所示。

观察Arduino Uno的板载Pin 13连接的LED灯,即可发现其状态已经点亮,如下图所示。

5. 使用以太网连接

笔者手头有W5100的Ethernet Shield,所以尝试了这种方式。注意,这种方式下,我们需要重新烧写Arduino的sketch。具体步骤如下:

    1. 登陆Github,下载standard-firmata-networking
    2. 解压,拷贝lib目录下的EthernetStream文件夹到本地的Arduino libraries目录。
    3. 打开standard-firmata-ethernet.ino
    4. 插上W5100 Ethernet Shield,将Arduino Uno通过USB连接到PC。
    5. 点击Upload烧写sketch。

烧写完成以后,可以将W5100 Ethernet Shield通过网线连接到TPLink上,查看其自动获得的IP地址,当然,用户也可以修改standard-firmata-ethernet.ino的代码,设置其IP地址。

然后,在PC或者Mobile上打开Windows Remote Arduino Experience应用程序,连接类型选择Network

,速率选择57600。IP地址处填写Arduino获得的IP地址,端口号默认为5000(也可以通过standard-firmata-ethernet.ino进行修改)。

点击连接之后,同样可以按照上面第4节的内容控制Arduino了。

参考链接:

1. http://ms-iot.github.io/content/en-US/win10/WRA.htm

2. Download the Windows Remote Arduino Experience app from the Microsoft Store

3. Install the NuGet package

4. Manually add the Windows Remote Arduino project files to a new Visual Studio solution

5. hook up a Bluetooth device to the Arduino

6. hook up a Wi-Fi device to the Arduino

7. https://github.com/ms-iot/remote-wiring/

8. https://github.com/ms-iot/remote-wiring/#notes-on-wifi-and-ethernet

控制Arduino的利器-Windows Remote Arduino的更多相关文章

  1. [转] 控制Arduino的利器-Windows Remote Arduino

    原文地址:控制Arduino的利器-Windows Remote Arduino 1. 概述 相信很多朋友已经在玩 Arduino了,而且一般都是使用官方的Arduino IDE来写程序控制Ardui ...

  2. 基于Proteus仿真的Arduino学习(1)——Arduino Uno最小系统及LED的简单使用

    一.前言:  A.Arduino简介 Arduino是由一个欧洲开发团队于2005年冬季开发.其成员包括Massimo Banzi.David Cuartielles.Tom Igoe.Gianluc ...

  3. Arduino基础入门篇-进入Arduino的世界

    写在前面,首先是发现有网友对Arduino做了介绍,而且介绍比较清晰到位,就引用过来了. 文章出处:https://blog.csdn.net/TonyIOT/article/details/8091 ...

  4. Windows Remote Shell(WinRM)使用介绍

    最近,为了实验我们安装了台Windows Server Core的服务器,没有图形界面的系统总会给人一种很完全的感觉,我们本着安全到底的想法,使用了Windows Remote Shell 的管理方式 ...

  5. 远程管理服务 Windows Remote Management (WS-Management)

    Windows Remote Management (WS-Management) Windows 远程管理(WinRM)服务执行 WS-Management 协议来实现远程管理.WS-Managem ...

  6. Arduino + RFID 读取 IC 卡 Arduino uno中获得RFID的UID 并通过串口转发RFID卡号

    RFID简介:射频识别即RFID(Radio Frequency IDentification)技术,又称无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定 ...

  7. 短信控制的 智能插头(sim900a arduino uno)

    https://www.arduino.cn/thread-19432-1-2.html 1.所需工具:(1)arduino UNO,(2)sim900a模块,(3)单路继电器,(4)220v ac转 ...

  8. Arduino UNO开发板、Arduino CNC Shield V3.0扩展板、A4988驱动板、grbl固件使用教程

    前言 CNC Shield V3.0可用作雕刻机,3D打印机等的驱动扩展板,板上一共有4路步进电机驱动模块的插槽,可驱动4路不进电机,而每一路步进电机都只需要2个IO口,也就是说,6个IO口就可以很好 ...

  9. 【Arduino】旋转编码器的Arduino使用方法

    以前用CRT显示器的时候,调整显示器的时候用一个圆盘转动和点击的方法就可以实现选择菜单和修改设置项的值,比多个按钮的方式方便很多. 鼠标滚轮也是这种操作方法,旋转+点击,只是方向不同.最近在网上买了旋 ...

随机推荐

  1. C算法编程题(七)购物

    前言 上一篇<C算法编程题(六)串的处理> 有些朋友看过我写的这个算法编程题系列,都说你写的不是什么算法,也不是什么C++,大家也给我提出用一些C++特性去实现问题更方便些,在这里谢谢大家 ...

  2. 解决 android 高低版本 webView 里内容 自适应屏幕的终极方法

    转载请声明出处(http://www.cnblogs.com/linguanh/) 一,先说下我的情况,大家可以对号入座(嫌无聊请跳过) 我的项目要求是这样的,先从数据库里面拿出来html标签,因为加 ...

  3. 移动端用js与jquery实时监听输入框值的改动

    背景: 在一次移动端H5开发中,需要监听输入框值的实时变动. onchange事件肯定抛弃,因为只能失去焦点才触发. 而keyPress在Android可以触发,iOS不可以. 又不想用Android ...

  4. 4.Struts2转向类型详解

    struts2中提供了多种视图转向类型,类型由type属性指定,如: dispatcher:请求转发(默认值) redirect:重定向到页面 redirectAction:重定向到Action pl ...

  5. 实际案例:在现有代码中通过async/await实现并行

    一项新技术或者一个新特性,只有你用它解决实际问题后,才能真正体会到它的魅力,真正理解它.也期待大家能够多分享解一些解决实际问题的内容. 在我们遭遇“黑色30秒”问题的过程中,切身体会到了异步的巨大作用 ...

  6. python处理空格脚本

    博客园上传代码时拷贝vs里面的代码不能直接粘贴,否则空格会不符合要求 去掉空格代码 # -*- coding: utf-8 -*- '''打开delSpace.txt文本并删除每行开头的八个空格''' ...

  7. 微信JSApi支付~集成到MVC环境后的最后一个坑(网上没有这种解决方案)

    返回目录 大叔第一人 之前写了关于微信的坑<微信JSApi支付~坑和如何填坑>,今天将微信的jsapi支付封装到了MVC环境里,当然也出现了一些新的坑,如支付参数应该是Json对象而不是J ...

  8. jquery 和 css 属性

    offset()获取标签离左上角的位置,离顶部和左部的距离.离整个屏幕的左上角的距离. position() 相对于某一个标签的位置.离父标签的距离.离父标签的左上角的距离. height(), wi ...

  9. javascript的 Object 和 Function

    一. javascript 的 内置对象: Object 和 Function javascript所有东西,包括 Function 都是对象 . Array  其实是一个 Function 类型的对 ...

  10. IDE有毒

    程序员按项目性质大致有三种:写Demo的.写Proto的.写成品的:按项目开发周期大致有:写开头的.写中间的.写结尾的. Demo是样品,主要是表面上初步实现,临时忽悠客户用的,不一定要求继续演化: ...