Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

IoT:Windows Remote Arduino en universele apps

Componenten en benodigdheden

Arduino UNO
× 1
SparkFun Bluetooth-modem - BlueSMiRF Zilver
Ik heb de gouden versie gebruikt
× 1

Over dit project

Opmerking:zie de updates in de opmerkingen onderaan.

Een Windows 10 UWP-app kan worden gebouwd op de Remote-Wiring bibliotheek zodat de app kan communiceren met een Arduino-apparaat waarop Firmata draait. Er is een app ontwikkeld, vergelijkbaar met het Windows Remote Arduino "Blinky"-voorbeeld, maar met toevoeging van functies. Het voert zowel GPIO (output AND input) als een aantal analoge IO uit. Deze app is functioneel hetzelfde als de Windows 8.1-versie in de vorige blog in deze serie. Deze blog werkt met hetzelfde materiaal (dwz herhaalt veel ervan) als de vorige blog, maar vanuit de context van Universal Windows Platform (UWP) in plaats van Windows 8.1 Universal App-context. Het doel voor de app is Win 10 desktop, Win 10 telefoon en Raspberry PI2 (met Win 10 IoT). Dit laatste doelwit is echter een "work-in-progress". Deze blog kan gelezen worden zonder verwijzing naar de vorige blog.

Dit project wordt gedetailleerd beschreven op mijn blog op http://embedded101.com/Blogs/David-Jones/entryid/636/Windows-10-IoT-Windows-Remote-Arduino-and-Universal-Windows-Platform-Apps

Het Windows Remote Arduino “Blinky” voorbeeld is op ms-iot.github.io.


Universele apps en universele Windows-platformapps

Universele apps (UA) bereikten hun hoogtepunt in Windows 8.1 Je zou apps kunnen implementeren die gericht zijn op Windows Intel desktop, de ARM RT Surface en de Windows Phone (ARM), allemaal in dezelfde oplossing. Ze kunnen gemeenschappelijke code delen, zoals gebeurtenishandlers, algemene berekeningen en gegevens. XAML-code moest specifiek zijn voor het doel. Je hebt zojuist de afzonderlijke deelprojecten voor elk doel samengesteld. Tijdens de compilaties werd de gemeenschappelijke code opgenomen.

Met de "One Windows" paradigmaverschuiving in Windows 10 kan dezelfde code voor alle doelen, inclusief de XAML-code, voor alle doelen worden gebruikt. Hetzelfde project moet gewoon opnieuw worden gecompileerd voor verschillende doelen. Met de UA-naam toegepast op Windows 8-apps, was een nieuwe naam nodig voor de echt universele apps. Vandaar dat de naam Universal Windows Platform-apps is bedacht voor Windows 10.

Alle Windows 10-platforms ondersteunen UWP-apps. Maar er zijn extensies die specifiek zijn voor elk platform. Windows 10 IoT-extensies ondersteunen bijvoorbeeld GPIO, I2C, SPIO enz. Mobiele extensies ondersteunen telefoonfuncties. Enz. UWP biedt een gegarandeerde kern-API-laag op alle apparaten.


De Windows 10-extensie-SDK's. De Desktop-, Mobile- en IoT-extensies zijn aangevinkt.

Voor deze blog gebruiken we de UWP-template in plaats van de UA zoals in de vorige blog. We hebben geen van de extensie-SDK's nodig.


[1] Stel de Bluetooth-communicatie met het Arduino-apparaat in.

Je kunt dit gedeelte overslaan als je de Win 8.1-activiteit al hebt gedaan.

USB of Bluetooth kan worden gebruikt voor de Firmata-communicatie tussen het Arduino-apparaat en het Windows-apparaat. Voor Windows 10 kunnen beide worden gebruikt, terwijl voor Windows 8.1 alleen Bluetooth kan worden gebruikt. Voor deze versie van de app wordt Bluetooth gebruikt. Ik gebruikte een Sparkfun Bluetooth Mate Gold, terwijl de Sparkfun Bluetooth Mate Silver werd gebruikt met het "Blinky" -voorbeeld waarnaar hierboven wordt verwezen. Het belangrijkste verschil is dat het bereik van het goud tot 100 meter is, terwijl dat van het zilver 10 meter is. De standaard handshake-instellingen zijn ook anders. Deze hebben beide een UART-interface op TTL-niveau die zowel kan worden gebruikt voor het configureren van de bedrijfsmodus van het Bluetooth-apparaat als voor interactie met de seriële poort van Arduino.

Als u het Bluetooth-apparaat moet configureren, kan een Sparkfun- of Freetronics USB-Serial- of Free-apparaat worden gebruikt om het apparaat te configureren via een seriële desktopterminal. Je kunt het apparaat ook terugzetten naar de fabrieksinstellingen door de PIO6 (de eigenlijke PIO4)-pin op hoog te zetten en drie keer te wisselen.

Bluetooth Mate heeft dezelfde pin-out als de Sparkfun FTDI Basic, en dus kunnen ze door elkaar worden gebruikt. je kunt de Bluetooth Mate niet rechtstreeks aansluiten op een FTDI Basic-bord (je moet TX en RX verwisselen). Die configuratie kan worden gebruikt met een seriële desktopterminal, met het FTDI-apparaat USB aangesloten op de desktop, om het Bluetooth-apparaat te configureren (of om een ​​Bluetooth-apparaat te gebruiken voor seriële communicatie vanaf de desktop.

De standaard TTL UART seriële instellingen zijn:

  • · Baudrate 115.200
  • · 8 bits
  • · Geen pariteit
  • · 1 stopbit
  • · Hardware stroomregeling ingeschakeld (op Mate Silver is dit Geen)
  • · Serieel poortprofiel (SPP):FireFly-WXYZ
    waarbij WXYZ de laatste 4 cijfers zijn van het BT MAC-adres van het apparaat.
  • · Wachtwoord 1234

Houd er rekening mee dat het apparaat maximaal 8 apparaatkoppelingen kan opslaan.

De documentatie voor het Bluetooth-apparaat is te vinden op:
http://www.sparkfun.com/datasheets/Wireless/Bluetooth/rn-bluetooth-um.pdf

De Firmata-configuratie is voor een baudrate van 57600 die moet worden gewijzigd of het Bluetooth-apparaat daarvoor is geconfigureerd. Voor deze oefening zullen we de Firmata-configuratie wijzigen, wat de gemakkelijkere benadering is. De hardwarestroom van controle kan ook worden afgehandeld door het Bluetooth-apparaat te configureren, maar voor deze oefening wordt afgehandeld door RTS te verbinden met CTS.

Hoewel het Bluetooth-apparaat op een Breadboard kan worden gemonteerd en van daaruit op het Arduino-apparaat kan worden aangesloten, heb ik ervoor gekozen om er een socket voor op een Prototyping Shield te monteren.

Een 6-pins Arduino Shield Header werd op het Bluetooth-apparaat gesoldeerd op de TTL UART-pinnen met de socket naar buiten gericht. De pinnen zijn 900 naar beneden gebogen, zodat het apparaat verticaal in een andere shield-header kan worden gestoken. De BT-aansluiting kan vervolgens worden gebruikt om deze rechtstreeks aan te sluiten op een soortgelijke gemonteerde FTDI-basismodule als configuratie vereist is. Later werd er een draad gesoldeerd aan PIO6 (PIO4) op de Bluetooth-module om de fabrieksinstellingen te herstellen.

Afbeelding 3 Bluetooth-module met shield-header op UART-pinnen en shield-headers

Een kop met 8 schilden werd onderaan in het midden van het prototypeschild gemonteerd. Voeg ook headers toe aan de buitenkant van het schild, zodat het rechtstreeks op de Uno kan worden aangesloten.

Afbeelding 4 Arduino Prototype Shield voor montage van de Bluetooth-module

De Bluetooth-module wordt vervolgens in de richting van de GPIO-pinnen geplaatst, in de richting van de pinnen 0 en 1 (Rx/Tx), waarbij de gele locatie vrij blijft. Een daarvan kan worden gebruikt als tijdelijke locatie voor de fabrieksresetdraad.

Afbeelding 6 Gemonteerde Bluetooth-module op Arduino-apparaat


[2] Firmata instellen

Je kunt dit gedeelte overslaan als je de Win 8.1-activiteit al hebt gedaan.

Opmerking: De UART-pinnen 0 en 1 van de Arduino Uno zijn niet beschikbaar wanneer deze via USB wordt geprogrammeerd vanaf de Arduino IDE. Deze zelfde pinnen zijn verbonden met de TTL UART-interface van de Bluetooth-module wanneer deze is aangesloten voor Firmata-communicatie. Daarom, wanneer het Arduino-apparaat in deze sectie moet worden geprogrammeerd, mag het Bluetooth-apparaat niet worden aangesloten.

2.1 Ervan uitgaande dat u eerder een Arduino (Uno)-apparaat hebt ontwikkeld, maakt u een nieuw Standard Firmata-schild:

2.2 Er moet één wijziging worden aangebracht, de Baudrate. Zoek in de IDE naar 57600. Vervang het 115200. Sla de schets op, ik noemde het Firmata_115200. Programmeer de Uno en dit deel is gedaan.


[3] De Universal App Firmata-softwarestack instellen

Dit gedeelte is alleen iets anders dan de Win 8.1-activiteit.

De softwarestack bestaat uit drie lagen:

De Remote-Wiring API implementeert eigenschappen (configuratie), methoden en gebeurtenissen op een conceptueel hoog niveau voor Arduino-hardware-interactie. Bijvoorbeeld GPIO (bijv. Get and Set Pin, On Pin gewijzigd etc). Het communiceert met de Firmata-laag via het Firmata-protocol. Firmata communiceert down the stack via het seriële protocol dat is geïmplementeerd als Bluetooth- en USB-seriële transportlagen in de seriële laag. De USB-optie is niet beschikbaar voor Windows 8.1.

Deze softwarestack genaamd is beschikbaar voor twee bronnen:

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

Beide bevatten versies van Windows 8.1 en Windows 10. Hoewel de Windows 10-versies van beide versies zullen worden gebouwd, heb ik geconstateerd dat Windows 8.1 van de tweede niet zal bouwen. Ik gebruikte de Visual Studio 2015 RC-versie:

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

3.1 Download de eerste versie. Om dit goed te doen, moet je de repository klonen (download de zip niet):

  • Installeer git of GitHub
  • Voer in de git-shell of GitHub Desktop Shell (het is Powershell) het volgende in vanuit een geschikte map:
    git clone --recursive https://github.com/ms-iot/windows-remote-arduino-samples.git

    De directorystructuur van wat je krijgt is:

windows-remote-arduino-samples     o bedrading op afstand        Microsoft.Maker.win8_1       Microsoft.Maker.win10      bron     o win8_1       o win10

De laatste twee mappen (win8_1 en win10) zijn slechts voorbeeld-apps (inclusief het "blinky" voorbeeld) die we voorlopig zullen negeren. Beide Maker-versies maken gebruik van dezelfde bronnenmap, dus voor Windows 10 hebben we het volgende nodig:

windows-remote-arduino-samples      o bedrading op afstand        Microsoft.Maker.win10           bron

    naar een geschikte map. Ik raad er een aan in de root van de schijf, bijvoorbeeld c:\wras10, omdat ik heb ontdekt dat je een aantal fouten kunt krijgen met een ARM-build die te maken heeft met te lange padnamen. Misschien wilt u ook de .md-bestanden kopiëren ter referentie. Deze kunnen in VS worden geopend.

    3.2 Open het oplossingsbestand in Microsoft.Maker.win10

    3.3 Stel het doel in op Win32 om de oplossing te bouwen.

    Er worden drie builds gemaakt. Eén voor elk van de drie lagen in de softwarestack..

    3.4 Doe hetzelfde voor de ARM-configuratie. Als je een x64-machine hebt, zou je die build misschien ook willen proberen.


    [4] Maak de HW LED UWP-app

    Er is een "kortsluiting" in dit gedeelte voor degenen die de vorige Win 8.1-activiteit hebben gedaan.

    Voor deze eerste versie van de app/s zal een softwareknop een hardware-LED inschakelen en een andere zal deze uitschakelen. De LED wordt verbonden met GPIO-pin 5.

    De "Blinky" documentatie zegt dat er een aantal manieren zijn om deze bibliotheken te krijgen en te gebruiken. Uiteindelijk zal Nuget de weg zijn maar dat is nog niet beschikbaar. U kunt op een algemene manier naar deze gebouwde versies verwijzen op uw ontwikkelsysteem. De eenvoudigste manier is om gewoon de vereiste universele app aan de oplossing toe te voegen en ernaar te verwijzen. We zullen die methode gebruiken.

    4.1 Voeg een nieuwe C# Windows Blank Universal-app toe aan de oplossing. (Let deze keer niet op Windows 8.1):

    Geef het een passende naam. Ik noemde de mijne wrauwp:Windows Remote Arduino Universal app UWP.
    Merk op dat er deze keer maar EEN project is gemaakt (UWP). De XAML- en CSharp-code is hetzelfde voor de desktop- en mobiele versies van de app. Het verschil zit 'm in de manier waarop het is samengesteld.

    De seriële en Bluetooth-mogelijkheden zijn nodig in het pakketmanifest:

    4.2 Open package.appmanifest in de teksteditor (niet de GUI) met View Code. De Internet Client-mogelijkheid is onderaan opgenomen. Wijzig deze sectie in:

    In packkage.appmanifest

                                       

    En als we USB-Serial in plaats van Bluetooth-Serial op de desktop zouden gebruiken, zouden we daar een mogelijkheid voor toevoegen.

    Een verwijzing naar elk van de relevante softwarelagen is vereist:

    4.3 Referenties Firmata, RemoteWiring en Serial voor de desktop UA toevoegen (ook dit hoef je maar voor één project te doen):

    HINT:Voor degenen die de vorige Windows 8.1 al hebben gedaan, kunt u nu kortsluiten wat volgt :

    • Kopieer de grid xml-code van dat project naar MainPage.xaml in dit nieuwe project.
    • U kunt nu doorgaan naar het testen van de app op het/de doel(en)

    Voor degenen die hier doorgaan ...

    4.4 Wijzig beide UA's Grid XAML in:

    MainPage.xaml:UI
                                 

    Productieproces

    1. Raspberry Pi universele afstandsbediening
    2. Windows IoT:deur met gezichtsherkenning
    3. Windows 10 IoT Core en SHT15
    4. Windows 10 IoT Core voor Raspberry Pi 3 Model B+
    5. GoPiGo v2 met Windows IoT
    6. De apps en apparaten die externe supply-chain-teams ondersteunen
    7. Universele afstandsbediening met Arduino, 1Sheeld en Android
    8. LCD-animatie en gaming
    9. IOT - Smart Jar met ESP8266, Arduino en ultrasone sensor
    10. Gids voor PCB's en IoT
    11. Cisco introduceert IoT Remote Monitoring-oplossingen voor IT en OT