Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

IoT:Windows Remote Arduino und universelle Apps

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
SparkFun Bluetooth-Modem - BlueSMiRF Silber
Ich habe die Gold-Version verwendet
× 1

Über dieses Projekt

Hinweis:Siehe die Updates in den Kommentaren unten.

Eine Windows 10 UWP-App kann auf der Remote-Wiring aufgebaut werden Bibliothek, sodass die App mit einem Arduino-Gerät interagieren kann, auf dem Firmata ausgeführt wird. Es wird eine App entwickelt, ähnlich dem Windows Remote Arduino „Blinky“, jedoch mit Funktionserweiterungen. Es führt GPIO (Ausgang UND Eingang) sowie einige analoge E/A durch. Diese App ist funktional identisch mit der Windows 8.1-Version im vorherigen Blog dieser Serie. Dieser Blog arbeitet mit dem gleichen Material (dh wiederholt viel davon) wie der vorherige Blog, jedoch aus dem Kontext der universellen Windows-Plattform (UWP) und nicht dem Kontext der universellen Windows 8.1-App. Das Ziel der App ist Win 10 Desktop, Win 10 Phone und Raspberry PI2 (mit Win 10 IoT). Letzteres Ziel ist jedoch ein "work-in-progress". Dieser Blog kann ohne Bezugnahme auf den vorherigen Blog gelesen werden.

Dieses Projekt wird in meinem Blog unter http://embedded101.com/Blogs/David-Jones/entryid/636/Windows-10-IoT-Windows-Remote-Arduino-and-Universal-Windows-Platform-Apps beschrieben

Das Windows Remote Arduino „Blinky“-Beispiel ist unter ms-iot.github.io.


Universelle Apps und universelle Windows-Plattform-Apps

Universal Apps (UA) erreichten ihren Höhepunkt in Windows 8.1 Sie könnten Apps für Windows Intel Desktop, das ARM RT Surface und das Windows Phone (ARM) in derselben Lösung implementieren. Sie könnten gemeinsamen Code wie Ereignishandler, allgemeine Berechnungen und Daten teilen. XAML-Code musste für das Ziel spezifisch sein. Sie haben lediglich die einzelnen Teilprojekte für jedes Target zusammengestellt. Bei den Kompilierungen wurde der gemeinsame Code eingebunden.

Mit dem „One Windows“-Paradigmenwechsel in Windows 10 kann derselbe Code für alle Ziele, also auch der XAML-Code, für alle Ziele verwendet werden. Das gleiche Projekt muss nur für verschiedene Ziele neu kompiliert werden. Da der UA-Name auf Windows 8-Apps angewendet wurde, wurde ein neuer Name für die wirklich universellen Apps benötigt. Daher wurde der Name Universelle Windows-Plattform-Apps für Windows 10 geprägt.

Alle Windows 10-Plattformen unterstützen UWP-Apps. Es gibt jedoch für jede Plattform spezifische Erweiterungen. Zum Beispiel unterstützen Windows 10 IoT-Erweiterungen GPIO, I2C, SPIO usw. Mobile Erweiterungen unterstützen Telefonfunktionen. UWP bietet eine garantierte Kern-API-Schicht für alle Geräte.


Die Windows 10-Erweiterungs-SDKs. Die Desktop-, Mobile- und IoT-Erweiterungen werden überprüft.

Für diesen Blog verwenden wir das UWP-Template anstelle des UA wie im vorherigen Blog. Wir benötigen keines der Erweiterungs-SDKs.


[1] Richten Sie die Bluetooth-Kommunikation mit dem Arduino-Gerät ein.

Sie können diesen Abschnitt überspringen, wenn Sie die Win 8.1-Aktivität bereits durchgeführt haben.

USB oder Bluetooth können für die Firmata-Kommunikation zwischen dem Arduino-Gerät und dem Windows-Gerät verwendet werden. Für Windows 10 können beide verwendet werden, während für Windows 8.1 nur Bluetooth verwendet werden kann. Für diese Version der App wird Bluetooth verwendet. Ich habe einen Sparkfun Bluetooth Mate Gold verwendet, während der Sparkfun Bluetooth Mate Silver mit dem oben erwähnten "Blinky"-Beispiel verwendet wurde. Der Hauptunterschied besteht darin, dass die Reichweite des Gold bis zu 100 m beträgt, während die des Silbers 10 m beträgt. Die Standard-Handshake-Einstellungen sind ebenfalls unterschiedlich. Diese verfügen beide über eine UART-Schnittstelle auf TTL-Ebene, die sowohl zur Konfiguration des Betriebsmodus des Bluetooth-Geräts als auch zur Interaktion mit der seriellen Schnittstelle von Arduino verwendet werden kann.

Wenn Sie das Bluetooth-Gerät konfigurieren müssen, kann ein Sparkfun- oder Freetronics-USB-Serial- oder Free-Gerät verwendet werden, um das Gerät über ein serielles Desktop-Terminal zu konfigurieren. Sie können das Gerät auch auf die Werkseinstellungen zurücksetzen, indem Sie den PIO6-Pin (eigentlich PIO4) mit High verbinden und dreimal umschalten.

Bluetooth Mate hat die gleiche Pinbelegung wie das Sparkfun FTDI Basic und kann daher austauschbar verwendet werden. Sie können den Bluetooth Mate nicht direkt an ein FTDI Basic Board anschließen (Sie müssen TX und RX austauschen). Diese Konfiguration kann mit einem seriellen Desktop-Terminal verwendet werden, wobei das FTDI-Gerät über USB mit dem Desktop verbunden ist, um das Bluetooth-Gerät zu konfigurieren (oder um das Bluetooth-Gerät für die serielle Kommunikation vom Desktop aus zu verwenden.

Die standardmäßigen seriellen TTL-UART-Einstellungen sind:

  • · Baudrate 115.200
  • · 8 Bit
  • · Keine Parität
  • · 1 Stoppbit
  • · Hardware-Flusskontrolle aktiviert (bei Mate Silver ist dies None)
  • · Serial Port Profile (SPP):FireFly-WXYZ
    wobei WXYZ die letzten 4 Ziffern der BT-MAC-Adresse des Geräts sind.
  • · Passwort 1234

Beachten Sie, dass das Gerät bis zu 8 Gerätepaare speichern kann.

Die Dokumentation für das Bluetooth-Gerät finden Sie unter:
http://www.sparkfun.com/datasheets/Wireless/Bluetooth/rn-bluetooth-um.pdf

Die Firmata-Konfiguration ist für eine Baudrate von 57600, die geändert werden muss oder das Bluetooth-Gerät dafür konfiguriert. Für diese Übung werden wir die Firmata-Konfiguration ändern, was der einfachere Ansatz ist. Der Hardware-Steuerungsfluss kann auch durch die Konfiguration des Bluetooth-Geräts gehandhabt werden, aber für diese Übung wird durch die Verbindung von RTS mit CTS gehandhabt.

Während das Bluetooth-Gerät auf einem Breadboard montiert und von dort mit dem Arduino-Gerät verbunden werden kann, habe ich mich dafür entschieden, eine Buchse dafür auf einem Prototyping Shield zu montieren.

Ein 6-poliger Arduino Shield Header wurde an den TTL-UART-Pins mit der Buchse nach außen auf das Bluetooth-Gerät gelötet. Die Pins wurden um 900 nach unten gebogen, damit das Gerät senkrecht in einen anderen Schirmträger gesteckt werden kann. Über die BT-Buchse kann es dann bei Bedarf direkt mit einem ähnlich montierten FTDI-Basismodul verbunden werden. Später wurde ein Draht an PIO6 (PIO4) des Bluetooth-Moduls zum Zurücksetzen auf die Werkseinstellungen angelötet.

Abbildung 3 Bluetooth-Modul mit geschirmtem Header an UART-Pins und geschirmten Headern

Ein 8-Schild-Header wurde in der Mitte des Prototypen-Schildes unten montiert. Fügen Sie auch Header an der Außenseite der Abschirmung hinzu, damit sie direkt in den Uno gesteckt werden kann.

Abbildung 4 Arduino Prototype Shield zur Montage des Bluetooth-Moduls

Das Bluetooth-Modul wird dann mit Blick auf die GPIO-Pins in Richtung der Pins 0 und 1 (Rx/Tx) eingesetzt, wobei die gelbe Position frei bleibt. Einer davon kann als temporärer Ort für das Kabel zum Zurücksetzen auf die Werkseinstellungen verwendet werden.

Abbildung 6 Montiertes Bluetooth-Modul auf einem Arduino-Gerät


[2] Firmata einrichten

Sie können diesen Abschnitt überspringen, wenn Sie die Win 8.1-Aktivität bereits durchgeführt haben.

Hinweis: Die UART-Pins 0 und 1 des Arduino Uno sind nicht verfügbar, wenn er über USB von der Arduino-IDE programmiert wird. Dieselben Pins sind mit der TTL-UART-Schnittstelle des Bluetooth-Moduls verbunden, wenn es für die Firmata-Kommunikation angeschlossen ist. Wenn das Arduino-Gerät in diesem Abschnitt programmiert werden soll, sollte das Bluetooth-Gerät daher nicht verbunden sein.

2.1 Angenommen, Sie haben zuvor für ein Arduino (Uno)-Gerät entwickelt, erstellen Sie ein neues Standard-Firmata-Shield:

2.2 Es ist eine Änderung vorzunehmen, die Baudrate. Suchen Sie in der IDE nach 57600. Ersetzen Sie 115200. Speichern Sie die Skizze, ich habe sie Firmata_115200 genannt. Programmieren Sie das Uno und dieser Teil ist fertig.


[3] Richten Sie den Universal App Firmata-Software-Stack ein

Dieser Abschnitt unterscheidet sich nur geringfügig von der Aktivität von Win 8.1.

Der Software-Stack besteht aus drei Schichten:

Die Remote-Wiring API implementiert Eigenschaften (Konfiguration), Methoden und Ereignisse auf konzeptionell hohem Niveau für die Arduino-Hardware-Interaktion. Zum Beispiel GPIO (zB Get und Set Pin, On Pin geändert usw.). Es kommuniziert mit der Firmata-Schicht unter Verwendung des Firmata-Protokolls. Firmata kommuniziert den Stack über das serielle Protokoll, das als Bluetooth- und USB-Seriell-Transportschichten in der seriellen Schicht implementiert ist. Die USB-Option ist für Windows 8.1 nicht verfügbar.

Dieser aufgerufene Software-Stack ist für zwei Quellen verfügbar:

  1. https://github.com/ms-iot/windows-remote-arduino-samples
  2. https://github.com/ms-iot/remote-wiring/

Beide enthalten die Versionen Windows 8.1 und Windows 10. Während die Windows 10-Versionen beider Versionen erstellt werden, habe ich festgestellt, dass Windows 8.1 der zweiten Version nicht erstellt wird. Ich habe die Version von Visual Studio 2015 RC verwendet:

  • Microsoft Visual Studio Community 2015 RC
  • Version 14.0.22823.1 D14REL
  • Microsoft .NET Framework
  • Version 4.6.00076

3.1 Laden Sie die erste Version herunter. Um dies richtig zu tun, müssen Sie das Repository klonen (nicht die ZIP-Datei herunterladen):

  • Installieren Sie git oder GitHub
  • Geben Sie in der Git-Shell oder GitHub-Desktop-Shell (es ist Powershell) Folgendes aus einem geeigneten Verzeichnis ein:
    git-Klon --rekursiv https://github.com/ms-iot/windows-remote-arduino-samples.git

    Die Verzeichnisstruktur von dem, was Sie erhalten, ist:

Windows-Remote-Arduino-Beispiele     o Fernverkabelung        Microsoft.Maker.win8_1       Microsoft.Maker.win10      Quelle     o win8_1       o win10

Die letzten beiden Ordner (win8_1 und win10) sind nur Beispiel-Apps (einschließlich des „blinky“-Beispiels), die wir vorerst ignorieren. Beide Maker-Versionen verwenden denselben Quellordner, daher benötigen wir für Windows 10 nur:

Windows-Remote-Arduino-Beispiele      o Fernverkabelung        Microsoft.Maker.win10           Quelle

    in einen passenden Ordner. Ich schlage eine im Stammverzeichnis des Laufwerks vor, beispielsweise c:\wras10, da ich festgestellt habe, dass bei einem ARM-Build einige Fehler auftreten können, die mit zu langen Pfadnamen zusammenhängen. Vielleicht möchten Sie auch die .md-Dateien als Referenz kopieren. Diese können in VS geöffnet werden.

    3.2 Öffnen Sie die Lösungsdatei in Microsoft.Maker.win10

    3.3 Legen Sie das Ziel auf Win32 fest, um die Lösung zu erstellen.

    Drei Builds sind fertig. Eine für jede der drei Ebenen im Software-Stack..

    3.4 Machen Sie dasselbe für die ARM-Konfiguration. Wenn Sie einen x64-Computer haben, möchten Sie vielleicht auch diesen Build ausprobieren.


    [4] Erstellen Sie die HW-LED-UWP-App

    In diesem Abschnitt gibt es einen "Kurzschluss" für diejenigen, die die vorherige Win 8.1-Aktivität durchgeführt haben.

    Bei dieser ersten Version der App/s schaltet eine Software-Taste eine Hardware-LED ein und eine andere schaltet sie aus. Die LED wird an GPIO-Pin 5 angeschlossen.

    In der „Blinky“-Dokumentation heißt es, dass es eine Reihe von Möglichkeiten gibt, diese Bibliotheken zu erhalten und zu verwenden. Letztendlich wird Nuget der Weg sein, aber das ist noch nicht verfügbar. Sie können diese erstellten Versionen in Ihrem Entwicklungssystem allgemein referenzieren. Am einfachsten ist es, die erforderliche universelle App zur Lösung hinzuzufügen und darauf zu verweisen. Wir werden diese Methode verwenden.

    4.1 Fügen Sie der Lösung eine neue universelle C#-Windows Blank-App hinzu. (Achtung diesmal nicht Windows 8.1):

    Geben Sie ihm einen passenden Namen. Ich habe mein wrauwp aufgerufen:Windows Remote Arduino Universal App UWP.
    Beachten Sie, dass diesmal nur EIN Projekt erstellt wurde (UWP). Der XAML- und CSharp-Code ist für die Desktop- und die mobile Version der App identisch. Der Unterschied liegt in der Zusammenstellung.

    Die seriellen und Bluetooth-Funktionen werden im Paket-Manifest benötigt:

    4.2 Öffnen Sie das package.appmanifest im Texteditor (nicht dessen GUI) mit View Code. Die Internet-Client-Funktionalität ist unten enthalten. Ändern Sie diesen Abschnitt zu:

    In packkage.appmanifest

                                       

    Wenn wir USB-Seriell anstelle von Bluetooth-Seriell auf dem Desktop verwenden würden, würden wir eine Funktion dafür hinzufügen.

    Ein Verweis auf jede der relevanten Softwareschichten ist erforderlich:

    4.3 Referenzen Firmata, RemoteWiring und Serial für den Desktop-UA hinzufügen (auch hier nur für ein Projekt erforderlich):

    TIPP:Für diejenigen, die bereits das vorherige Windows 8.1 gemacht haben, können Sie jetzt Folgendes kurzschließen :

    • Kopieren Sie den Raster-XML-Code aus diesem Projekt in MainPage.xaml in diesem neuen Projekt.
    • Sie können jetzt mit dem Testen der App auf dem/den Ziel(en) fortfahren

    Für diejenigen, die hier fortfahren …

    4.4 Ändern Sie das Grid-XAML beider UAs in:

    MainPage.xaml:Benutzeroberfläche
                                     

      Kommentar Wir haben dieses Mal nur eine MainPage.cs, da es nur ein App-Projekt gibt ... Ein Windows.
      Zuvor gab es eine für den Desktop und eine für das Telefon, die wir gemeinsam gemacht haben, indem wir eine Version in das Teilprojekt "Share" platziert haben.

      Der gesamte cs-Code verweist auf MainPage.cs

      4.7 Fügen Sie in der MainPage-Klasse die folgenden Deklarationen am Anfang der Klasse hinzu:

      MainPage.cs-Deklarationen

      //USB wird unter Win8.1 nicht unterstützt. Um die Schritte zur USB-Verbindung zu sehen, lesen Sie stattdessen die win10-Lösung. BluetoothSerielles Bluetooth; RemoteDevice arduino;   // Die verwendeten Pins. Hinweis:Tatsächliche Pinn-Nummern. private const int LED_PIN =5;

        4.8 im MainPage-Konstruktor, nach InitializeComponent() hinzufügen:

        In MainPage() der Konstruktor

        Bluetooth =neue BluetoothSerial("FireFly-748B"); arduino =neues RemoteDevice (Bluetooth); bluetooth.ConnectionEstablished +=OnConnectionEstablished;

          Ersetzen Sie FireFly-748B durch Ihr SPP.

          4.9 Implementieren Sie OnConnectionEstablished, indem Sie der Klasse den folgenden mthod hinzufügen:

          OnConnectionEstablished() hinzufügen

          privater Void OnConnectionEstablished() {     //Schaltflächen im UI-Thread aktivieren!     var action =Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() => {         this.OnButton.IsEnabled =true;         das. OffButton.IsEnabled =true;           arduino.pinMode(LED_PIN, PinMode.OUTPUT);     })); }

            4.10 Und schließlich fügen Sie der Klasse die Ereignishandler für die Schaltflächen hinzu:

            Schaltflächenereignishandler hinzufügen

            private void OnButton_Click(object sender, RoutedEventArgs e) {     //Schalte die an Pin 5 angeschlossene LED EIN     arduino.digitalWrite(5, PinState.HIGH); }   private void OffButton_Click(Objektsender, RoutedEventArgs e) {     //Schalte die an Pin 5 angeschlossene LED aus     arduino.digitalWrite(5, PinState.LOW); }

              4.11 Testen Sie die UWP-App in x86-, x64- und ARM-Konfigurationen


              [5] Bereitstellen und Testen der universellen Apps.

              In diesem Abschnitt werden wir die Hardware-LED mit dem Arduino-Gerät verbinden und die App auf dem Desktop und einem Windows 10 Phone ausführen*

              Testen Sie auf Ihrem Desktop

              5.1 Legen Sie die Desktop-App als Startprojekt fest

              5.2 Setzen Sie das Ziel auf x86 und Local Machine. Erstellen Sie die Desktop-UWP-App neu

              5.3 Verbinden Sie den Arduino Pin 5 mit einer Hardware-LED. Stellen Sie GND, VCC und einen geeigneten Widerstand in Reihe bereit.

              Wie in einem früheren Blog in Bezug auf . erwähnt Windows 10 IoT Raspberry PI 2 GPIO Ich verwende ein Entwicklungsboard, um meine Test-IOs wie LEDs, Schalter usw. zu implementieren. Wenn Sie kein ähnliches Board haben, möchten Sie vielleicht das „Blinky“-Hardwarekonfiguration Sie müssen jedoch die Polarität der Pin-Einstellung in Schaltflächen-Handlern umkehren.

              5.4 Schalten Sie das Arduino-Gerät ein und koppeln Sie das Bluetooth-Modul mit Ihrem Desktop (Passkey=1234). .. Ich gehe davon aus, dass Sie wissen, wie das geht.

              5.5. Führen Sie die App aus.

              5.6 Sie werden wahrscheinlich gefragt, ob es in Ordnung ist, dass die App eine Verbindung zum Bluetooth-Gerät herstellt. OK

              5.7 Testen Sie die Funktionalität der App. Setzen Sie einen Breakpoint in den Button-Handlern und prüfen Sie, ob Sie debuggen können.

              5.8 Wiederholen Sie 4.1 bis 4.6 für x64, wenn Sie einen 64-Bit-Desktop haben.

              5.9 Deaktivieren Sie Bluetooth auf Ihrem Desktop

              Testen Sie jetzt Ihr Windows 10 Phone, vorausgesetzt, das Telefon ist für die Entwicklung konfiguriert.

              5.10 Schalten Sie Ihr Telefon ein, gehen Sie zu Einstellungen/Bluetooth und schalten Sie es ein. Mit dem Bluetooth-Modul koppeln (Passkey =1234).

              5.11 Fortfahren mit der Windows Universal-App als Startprojekt ..

              5.12 Setzen Sie das Ziel auf ARM,, Gerät und neu erstellen

              5.11 Verbinden Sie das Telefon über USB Serial mit dem Desktop und stellen Sie die App bereit.

              Jetzt den Raspberry PI 2 testen

              DAS IST EINE ARBEIT IN ARBEIT. SIEHE HINWEIS AM ENDE DIESES ABSCHNITTs

              5.13 Der Remote-Debugger ist bereits auf dem für Win 10 IoT konfigurierten RPI2 installiert und aktiv.

              5.14 Ermitteln Sie die IP-Adresse des RPI2, zB mit dem Windows IoT Core Watcher

              5.15 Stellen Sie in den Projekteigenschaften-Debug das Ziel auf Remote-Computer, Keine Authentifizierung und geben Sie die IP-Adresse ein

              5.16 Erstellen Sie die UWP-App neu

              5.17 Stellen Sie die App auf dem RPI2 bereit und testen Sie sie.

              Ich habe noch nicht die RPI2-Version, um eine Bluetooth-Verbindung herzustellen:

              • Bluetooth wird hauptsächlich noch nicht unterstützt
              • Bitte hinterlassen Sie Kommentare, wenn Sie Ideen oder Erfolg damit haben.
              • Ich werde hier aktualisieren, wenn ich Fortschritte mache
              Der Bluetooth-Dongle wird auf dem RPI2 geladen

              [6] "Verschönern" Sie die Benutzeroberfläche

              Im Folgenden wird die Benutzeroberfläche verschönert und die Schaltflächen Bluetooth Connect und Disconnect hinzugefügt.

              6.1 Ändern Sie den UI GRID-XAML-Code in (PS:Beachten Sie die Änderung der vorherigen Schaltflächenrasterzeilen ):

              Fügen Sie zwei Schaltflächen &

              hinzu

                                                                                           

              Code

              • WindowsRemoteArduino_Win10.zip
              WindowsRemoteArduino_Win10.zipC#
              An extended version of "Blinky"
              Input, Output, Analog Input
              Fancier UI
              No preview (download only).

              Schaltpläne


              Herstellungsprozess

              1. Raspberry Pi Universal-Fernbedienung
              2. Windows IoT:Tür zur Gesichtserkennung
              3. Windows 10 IoT Core und SHT15
              4. Windows 10 IoT Core für Raspberry Pi 3 Model B+
              5. GoPiGo v2 mit Windows IoT
              6. Die Apps und Geräte, die Remote-Lieferkettenteams unterstützen
              7. Universelle Fernbedienung mit Arduino, 1Sheeld und Android
              8. LCD-Animation und -Spiele
              9. Leitfaden zu PCBs und IoT
              10. Cisco stellt IoT-Fernüberwachungslösungen für IT und OT vor