C# Entwicklung + Arduino/Genuino

Gerade im privaten Umfeld erfreuen sich die Arduino/Genuino Boards großer Beliebtheit um alle Arten von IoT  Projekten umzusetzen.  Auch im kommerziellen / professionellen Umfeld erfreuen sich die Boards großer Beliebtheit um prototypische Umsetzungen von Projekten bzw. Geschäftsideen schnell und kostengünstig zu verproben. Um Arduino Boards anzuprogrammieren kann die Open Source Arduino IDE erwendet werden. Die Programmierung von sog. Sketchen (d. h. Programme die auf den Arduino Boards ausgeführt werden) ähnelt C/C++ und ist einfach zu erlernen.

Für C# / VisualBasic.NET oder generell Windows Runtime Entwickler welche die Hardware Möglichkeiten eines Arduino nutzen möchten gibt es noch eine zusätzliche Möglichkeit. Windows Remote Arduino ist eine Open Source Windows Runtime Komponente die es ermöglicht die analogen und digitalen Ports eines Arduino Uno von einem beliebigen Windows 10 Device aus zu benützen. Gerade wenn ein User Interface, UMTS, WiFi, Storage etc.  zusammen mit dem Arduino Board benötigt wird lohnt es sich ggf. ein günstiges Windows 10 Device zusammen mit dem Arduino einzusetzen. Auf dem GitHub Account des Projektes findet sich eine einfache Step-by-Step Anleitung um ein Windows 10 Device via USB, Bluetooth, WiFi oder Ethernet mit dem Arduino zu verbinden.

Folgt man der Anleitung, verbindet den Arduino z. B. via USB, lädt die notwendige Firmata Implementierung auf den Arduino und beginnt in Visual Studio mit einem leeren UWP Projekt, könnenzwar mittels UsbSerial.listAvailableDevicesAsync()

RemoteArduiono_01

 

alle verbundenen Arduino(s) (in diesem Falle über USB angebunden) ohne Fehler ermittelt werden. Versucht man jedoch die Kommunikation mit dem Arduiono mittels .begin() RemoteArduiono_02aufzubauen. Kommt es zu folgender Fehlermeldung

UsbSerial::connectToDeviceAsync failed with a Platform::Exception type. (message: Catastrophic failure Unable to initialize the device. Did you forget your USB device capabilities in the manifest? SerialDevice::FromIdAsync returned null.)

Selbst wenn im Manifest der UWP Applikation explizit der Zugriff auf den USB Port erlaubt wurde tritt der Fehler auf. RemoteArduiono_03

Trotzdem gibt die Fehlermeldung den entscheidenden Hiweis auf fehlende Capabilities im Manifest der Applikation. Um die Kommunikation mit dem Arduino erfolgreich durchführen zu können, muß die folgende Device Capability im Manifest eingetragen werden:

<DeviceCapability Name=“serialcommunication“>
      <Device Id=“any“>
        <Function Type=“name:serialPort“ />
      </Device>
    </DeviceCapability>
  </Capabilities>

RemoteArduiono_04

 

Nach einem nochmaligem Deploy der UWP App kann auch die Kommunikation mit dem Arduino erfolgreich initiiert werden.