17
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Windows Remote Arduinoを試す

Last updated at Posted at 2016-06-13

マイクロソフトがWindows Remote Arduino Libraryというものを公開していたので、試してみました。

#Windows Remote Arduinoとは?

これです。

A remote "Arduino Wiring" interface to control an Arduino compatible device from a Windows 10 Universal Windows Application.

WindowsのUWPアプリから、Arduinoの信号を制御するライブラリです。
UWPアプリなので、Windows 10であれば動かすことができます。(Windows MobileやRaspberry Pi 2でも!)

#ハードウェア
##Arduino
デバイスとして、Arduinoが必要です。
対応しているArduinoは以下のとおり。

今回は、Arduino Uno R3を使います。

20160612C.jpg

##Windows 10
Windows 10のパソコン。

今回は、Surface Pro 2を使います。

20160612D.jpg

##その他
ArduinoとWindows 10の通信は、USBシリアル、Bluetooth、Ethernet/WiFiを使うことができます。
必要に応じて、Arduino Shieldが必要になります。

今回は、USBシリアルで接続します。

#Arduinoにスケッチを書き込む
ArduinoとUWPアプリは、"Firmata"というプロトコルで通信します。
ArduinoがFirmataプロトコルで通信できるようにするために、プログラムを書き込む必要があります。

1.Arduino IDEで、スケッチの例にある、StandardFirmataを開きます。

20160612E.png

2.マイコンボードに書き込みます。

20160612F.png

3.「マイコンボードへの書き込みが完了しました。」と表示されます。

20160612G.png

#UWPアプリを作る

1.Visual Studio 2015を起動して「空白のアプリ(ユニバーサルWindows)」を作成します。

20160612H.png

2.nugetからプロジェクトへ「Windows-Remote-Arduino」をインストールします。

20160612I.png

3.UWPアプリからシリアル通信できるようにするために、Package.appxmanifestにDeviceCapabilityを追加します。

Package.appxmanifest
<?xml version="1.0" encoding="utf-8"?>

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  IgnorableNamespaces="uap mp">

  ...

  <Capabilities>
    <Capability Name="internetClient" />
    <DeviceCapability Name="serialcommunication">
      <Device Id="any">
        <Function Type="name:serialPort"/>
      </Device>
    </DeviceCapability>
  </Capabilities>
</Package>

4.MainPage.xaml.csにコードを追加します。

MainPage.xaml.cs
    public sealed partial class MainPage : Page
    {
        private Microsoft.Maker.RemoteWiring.RemoteDevice device;
        private Windows.System.Threading.ThreadPoolTimer timer;

        public MainPage()
        {
            this.InitializeComponent();

            var connection = new Microsoft.Maker.Serial.UsbSerial("VID_2A03", "PID_0043");
            device = new Microsoft.Maker.RemoteWiring.RemoteDevice(connection);
            device.DeviceReady += DeviceReady;

            connection.begin(57600, Microsoft.Maker.Serial.SerialConfig.SERIAL_8N1);
        }

        private void DeviceReady()
        {
            timer = Windows.System.Threading.ThreadPoolTimer.CreatePeriodicTimer(Timer_Tick, TimeSpan.FromMilliseconds(500));
        }

        private void Timer_Tick(Windows.System.Threading.ThreadPoolTimer timer)
        {
            if (device.digitalRead(13) == Microsoft.Maker.RemoteWiring.PinState.LOW)
            {
                device.digitalWrite(13, Microsoft.Maker.RemoteWiring.PinState.HIGH);
            }
            else
            {
                device.digitalWrite(13, Microsoft.Maker.RemoteWiring.PinState.LOW);
            }
        }

    }

#実行

0.5秒周期で、LEDがチカチカと点滅しました。

20160613B.jpg

20160613C.jpg 20160613D.jpg

17
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?