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

Sensortelemetrie 2.0.1

Sensortelemetrie 2.0.1 Stuur temperatuurgegevens naar Microsoft Azure IoT Hub en bewaak de gegevens op afstand vanuit een universele Windows-toepassing. Digitaal geremasterd!

Verhaal

GE-UPDATE:Het Sensor Telemetry-project is digitaal geremasterd. Bijgewerkt vanaf 17 mei 2017 en hernoemd naar Sensor Telemetry 2.0.1

Inleiding

Overzicht

In dit project zullen we een temperatuursensor bewaken (MCP9808 ) en stuur telemetriemetingen naar een Microsoft Azure IoT Hub waar een Stream Analytics job verwerkt de berichten en schrijft ze naar een Azure SQL Database tafel. We gebruiken Mobiele apps om de geschiedenis van de sensormetingen te bekijken.

De applicatie

Het project bevat twee Universele Windows-applicaties (op het Universal Windows Platform, UWP) die ongeveer 99% van de code delen. De ene is gericht op de Raspberry Pi (of ARM) en de andere is gericht op de x86- of x64-platforms.

De IoT-versie van de applicatie draait op de Raspberry Pi en leest de temperatuur uit de MCP9808. De applicatie verzendt telemetriegebeurtenissen naar de Azure IoT Hub en de SignalR middelpunt. Deze versie luistert ook naar opdrachten van de Azure IoT Hub.

De clientversie, gestart op een computer, luistert naar sensorupdates van de SignalR-hub en geeft deze op het scherm weer. Deze versie stuurt ook opdrachten naar de IoT-versie via de Azure IoT Hub.

Technologieën

De applicatie in dit project is gebaseerd op de MVVM (Model-View-ViewModel) patroon en is gemaakt met het Prism bibliotheek en maakt gebruik van Prism.Unity voor de IoC (Inversion of Control) container. Naast deze bibliotheken gebruikt de app de Event Aggregator gevonden in de Prism.Event bibliotheek om zo goed mogelijk een puur gebeurtenisgestuurde architectuur te creëren. De applicatie gebruikt deze bibliotheek om de interne modules te laten communiceren terwijl ze losjes gekoppeld blijven.

De toepassing maakt ook gebruik van SignalR op Azure Mobile App om meerdere exemplaren van de toepassing met elkaar te laten communiceren. De temperatuurmetingen worden "uitgezonden" naar alle clients die op afstand werken, zodat ze temperatuursensormetingen kunnen ontvangen om in de hoofdweergave weer te geven.

Architectuur

In het hart van de applicatie wordt de MCP9808-bibliotheek gebouwd als een apart project dat opnieuw kan worden gebruikt in andere applicaties. Dit project is ontwikkeld als een UWP-bibliotheek die in elke Windows 10-toepassing kan worden gebruikt. Als de bibliotheek wordt gebruikt op een apparaat dat geen I2C . heeft bus retourneert de bibliotheek geen apparaatobject. Deze benadering kan worden gebruikt om een ​​sensor te "detecteren" en de bibliotheek gracieus te negeren wanneer er geen sensor wordt gevonden.

In de UWP-clienttoepassing zijn er verschillende blokken die de algemene toepassing vormen. De weergaven zijn de zichtbare pagina's en elke weergave heeft een weergavemodel dat verantwoordelijk is voor de status van de weergave. Er zijn drie opslagplaatsen:applicatie-instellingen (IApplicationSettingsRepository ), foutopsporingsinformatie (IDebugConsoleRepository ) en het lezen en schrijven van de MCP9808 (ITemperatureRepository ). Er zijn twee concrete klassen gebouwd rond ITemperatureRepository; een omhult de MCP9808-bibliotheek en een is een null-apparaat dat wordt gebruikt wanneer de applicatie niet op de Raspberry Pi draait.

De klasse Mcp9808TemperatureRepository  bewaakt de MCP9808 met behulp van de timerservice en publiceert temperatuurinformatie via de interne gebeurtenisaggregator telkens wanneer de temperatuurmeting of waarschuwingsstatus verandert. Er wordt alleen een nieuwe gebeurtenis verzonden als de huidige meting afwijkt van de vorige meting.

Er is ook een reeks services gedefinieerd door IBackgroundService  die op de achtergrond draaien voor verschillende activiteiten.

Het onderstaande diagram geeft een overzicht op hoog niveau weer van de architectuur en de connectiviteit tussen de verschillende blokken en services.

Telemetrieservice

Deze service bewaakt de gebeurtenis met temperatuurverandering (via een abonnement) en stuurt een bericht naar de Azure Service Bus Event Hub wanneer de temperatuur verandert.

Timer-service

Deze eenvoudige service is een timer die elke 500 milliseconden een gebeurtenis publiceert en die door de weergavemodellen wordt gebruikt om de huidige tijd in een weergave weer te geven. Het wordt ook gebruikt door de Mcp9808TemperatureRepository  om de sensor elke seconde te lezen. De argumenten voor timergebeurtenissen bevatten een teller die kan worden gebruikt met de mod-functie om het timerinterval eenvoudig in de gewenste lengte te verdelen. Er is een methode genaamd IsMyInterval (TimeSpan-interval) op het gebeurtenisargument die de wiskunde voor u doet. Het enige wat u hoeft te doen is het interval op te geven als een TimeSpan  voorwerp.

Bewakingsservice voor waarschuwingspins

Deze service bewaakt de status van de GPIO-pin die is aangesloten op de waarschuwingspin op de MCP9808. Wanneer de waarde van de GPIO wordt gewijzigd, publiceert deze service een gebeurtenis.

LED-service

Deze service is verantwoordelijk voor het in- en uitschakelen van de LED's. Dit wordt gedaan door (via abonnement) de temperatuurwijziging te monitoren die ook de alarmstatus van de MCP9808 omvat. Wanneer de waarschuwingsstatus verandert, worden de LED's dienovereenkomstig bijgewerkt.

Push Button Monitoring Service

Deze service bewaakt de GPIO-pin die op de drukknop is aangesloten en publiceert een gebeurtenis wanneer de knop wordt losgelaten. Dit evenement wordt opgehaald door de Mcp9808TemperatureRepository  wanneer het apparaat zich in de handmatige alarmresetmodus bevindt (MCP9808-onderbrekingsmodus). Foutopsporingsgebeurtenissen worden ook gepubliceerd zodat de status van de knop kan worden bekeken in de foutopsporingsconsole.

Meldingsrelay-service

De service bewaakt de SignalR-hub en de interne gebeurtenisaggregator en stuurt berichten tussen de twee door op basis van een vooraf gedefinieerde toewijzing (met behulp van de EventRelayMap  klas). Hierdoor is de applicatie in wezen alleen op de hoogte van het interne gebeurtenissysteem en kan ze nog steeds berichten verzenden en ontvangen met andere instanties van de applicatie.

Debug Console-service

Deze service controleert de applicaties (via abonnement) op foutopsporingsgebeurtenissen en voegt ze toe aan een interne verzameling. Het implementeert ook DebugConsoleRepository , waarmee de debug-consoleweergave deze gebeurtenissen in de applicatie kan weergeven via het View Model.

Applicatie-initialisatie

Als de app wordt gestart, wordt de StartPage  gestart view first, die automatisch het StartPageViewModel . aanroept . Met dit weergavemodel wordt alles in gebruik genomen voordat het in de hoofdweergave wordt gestart.

Aan de slag

Circuitvereisten

Het circuit vereist een groot, soldeerloos breadboard en optioneel een T-vormige schoenmaker en lintkabel (ik gebruik de versie die wordt verkocht door Vilros). Het breadboard kan op een groot aantal plaatsen worden verkregen (ik heb gekocht bij lokale winkels en bij Amazon). Het circuit maakt ook gebruik van een tijdelijke tactiele drukknopschakelaar met vier pinnen. Er zijn veel soorten; elke zal doen. Als laatste gebruik ik voor de temperatuursensor de MCP9808 High Accuracy I2C Temperature Sensor Breakout Board van Adafruit.

Het circuit kan worden gebouwd zonder de schoenmaker. Volg gewoon het alternatieve breadboard-diagram aan het einde van het project.

Circuitmontage

Gebruik deze handleiding om het circuit samen te stellen en gebruik het diagram onderaan de pagina als richtlijn (let op:de kleur van de draden is optioneel en is gekozen om het circuit gemakkelijk te volgen wanneer het is gebouwd).

  • Plaats elk van de vier LED's op het breadboard.
  • Sluit het ene uiteinde van een 220 Ω . aan weerstand aan op de anode van elke LED en sluit het andere uiteinde van de weerstand aan op de 3V3 (pin 1 of 17) op de Raspberry Pi. Alle vier de LED-anodes moeten worden aangesloten op 3V3  via een 220 Ω weerstand. U kunt het beste een van de + . gebruiken rails op je breadboard voor de 3V3-aansluitingen.
  • Sluit de kathode van de blauwe LED aan op GPIO 18  (pin 12) op de Raspberry Pi.
  • Sluit de kathode van de groene LED aan op GPIO 23  (pin 16) op de Raspberry Pi.
  • Sluit de kathode van de rode LED aan op GPIO 12  (pin 32) op de Raspberry Pi.
  • Sluit de kathode van de gele LED aan op GPIO 16  (pin 36) op de Raspberry Pi.
  • Plaats de MCP9808 op het breadboard.
  • Verbinden Vdd  op de MCP9808 naar de 3V3  op de Raspberry Pi.
  • Verbind GND op de MCP9808 naar GND op de Raspberry Pi. Aarding op de Raspberry Pi kan een van de volgende pinnen zijn:6, 9, 14, 20, 25, 30, 34 en 39.
  • Verbinden SCL op de MCP9808 naar SCL op de Raspberry Pi (pin 5).
  • Verbinden SDA op de MCP9808 naar SDA op de Raspberry Pi (pin 3).
  • Verbind een 10K Ω weerstand tussen de Alert pin op de MCP9808 en 3V3 op de Raspberry Pi.
  • Verbind de Alert  pin de MCP9808 vast aan de GPIO 6  (pin 31) op de Raspberry Pi.
  • Plaats de drukknopschakelaar op het breadboard.
  • Sluit een kant van de switch aan op GPIO 5 (pin 29) op de Raspberry Pi.
  • Sluit de andere kant van de switch aan GND  op de Raspberry Pi.
  • Verbind een 10K Ω weerstand tussen de GPIO 5  en 3V3 op de Raspberry Pi.

Hieronder staan ​​enkele foto's van het circuit dat ik met de schoenmaker heb gebouwd.


Microsoft Azure-vereisten

Als u geen Azure-account hebt, moet u er een maken. U kunt een tegoed van $ 200 krijgen wanneer u uw account start. Ga naar azure.com  en klik op de link GRATIS ACCOUNT . Als u al een account heeft, logt u in op de portal op portal.azure.com .

OPMERKING:deze handleiding is geen volledige handleiding voor het configureren van Azure. Mogelijk moet u vertrouwd raken met het portaal als u het nog nooit eerder hebt gebruikt. Ik zal de stappen die nodig zijn voor dit project zo goed mogelijk doorlopen.

Laat uzelf tijdens het hele installatieproces aangemeld bij de Azure-portal. Je zult er vaak naar terug moeten verwijzen.

Azure IoT Event Hub-installatie

  • Selecteer Nieuw  in het linkermenu van het portaal.
  • Selecteer Internet of Things
  • Selecteer Iot Hub
  • Voer een unieke naam in voor uw hub.
  • Selecteer een abonnement.
  • Onder Brongroep selecteer Nieuw maken en voer een naam in voor uw groep. Houd er rekening mee dat u deze groep zult gebruiken voor alle Azure-resources die tijdens dit project zijn gemaakt.
  • Kies een locatie (probeer alle bronnen in dezelfde regio te houden om de kosten laag te houden ).
  • Als dit uw eerste IoT-hub is, selecteert u Prijs- en schaallaag. Selecteer vervolgens F1 gratis . U kunt één gratis niveau in uw account hebben.
  • Klik ten slotte op maken  en wacht tot de IoT Hub is gemaakt.
  • Klik op IoT Hub in het linkermenu om de nieuwe hub te zien.
  • Klik op de nieuwe hub om een ​​overzicht van de details te zien. U moet deze weergave later raadplegen.


Een apparaat maken

De Azure IoT Hub vereist dat elk apparaat om veiligheidsredenen uniek wordt geïdentificeerd en geregistreerd in de hub. Een apparaat kan worden geregistreerd met behulp van de Azure SDK en code, maar voor dit project gebruiken we de Device Explorer die beschikbaar is in de Azure SDK.

  • Download de Azure SDK van GitHub van https://github.com/Azure/azure-iot-sdk-csharp door het zip-bestand op te halen of de repository te klonen.
  • Als je het zipbestand hebt gedownload, vouw het dan uit naar een map op je schijf.
  • Open de map azure-iot-sdk–csharp-master\tools\DeviceExplorer .
  • Open het DeviceExplorer-project in Visual Studio.
  • Voer de applicatie uit.
  • Ga terug naar de Azure Portal en selecteer uw IoT Hub. Klik op het Beleid voor gedeelde toegang link en selecteer iothubowner . Klik op de kopie  knop naast de Verbindingsreeks – primaire sleutel .
  • Plak deze tekenreeks in het venster Apparaatverkenner in het tekstvak met het label IoT Hub-verbindingsreeks .
  • Klik op de Update  knop.
  • Wijzigen in het Management tabblad in de Device Explorer en klik op Maken .
  • Typ een naam voor uw apparaat (bijvoorbeeld TemperatureDevice1 ).
  • Zorg ervoor dat de Sleutels automatisch genereren  selectievakje is ingeschakeld en klik op Maken .
  • Klik op Gereed .
  • U moet later terugkeren naar deze applicatie om de verbindingsreeks van het apparaat op te halen.



Azure SQL-database instellen

De telemetriegegevens worden opgeslagen in een Azure SQL-database. Gebruik de portal om de database te maken.

  • Klik op SQL-databases in het portaalmenu.
  • Klik op de Toevoegen knop.
  • Voer een naam in voor de database (bijv. SensorTelemetry)
  • Selecteer een abonnement.
  • Voor Brongroep kies Bestaande gebruiken en selecteer Sensortelemetrie uit de vervolgkeuzelijst.
  • Klik op de serverlink om een ​​nieuwe server in te stellen.
  • Voer een naam in voor de server.
  • Voer een gebruikersnaam in (u hebt deze later nodig, dus onthoud deze ).
  • Voer een wachtwoord in (je hebt dit later nodig, dus onthoud het ).
  • Kies een locatie (probeer alle bronnen in dezelfde regio te houden om de kosten laag te houden ).
  • Klik op Selecteren .
  • Klik op Prijsniveau .
  • Selecteer Basis .
  • Klik op Selecteren .
  • Klik op Maken .
  • Klik op de nieuwe server in de SQL Server-lijst,
  • Klik op de Serverfirewall instellen om toegang vanaf uw computer tot de SQL Server toe te staan.
  • Voer een naam in voor de verbinding en uw externe IP-adres in het Begin-IP- en Eind-IP-bereik.
  • Klik op de weglatingstekens om de invoer op te slaan.
  • Klik op Opslaan  om het IP-adres op te slaan.



Maak de databasetabel

De gebruikte tabel wordt handmatig aangemaakt. Code First-implementatie kan worden gebruikt in mobiele apps, maar de gemaakte tabel is niet compatibel met Stream Analytics.

  • Open Visual Studio.
  • Selecteer SQL Server Object Explorer uit de Weergave menu.
  • Klik met de rechtermuisknop op de SQL-server  object en selecteer SQL Server toevoegen .
  • Blader door de Azure-databases en selecteer de database die u in de vorige stap hebt gemaakt.
  • Voer uw gebruikersnaam en wachtwoord in en klik op Verbinden .
  • Breid de items van de objectverkenner uit totdat je de database ziet die je hebt gemaakt.
  • Klik met de rechtermuisknop op deze database en kies Nieuwe zoekopdracht .
  • Kopieer het SQL-script onderaan deze projectpagina en plak het in het Visual Studio-codevenster.
  • Selecteer Uitvoeren  van de SQL  menu om het script uit te voeren.
  • Als u het tabelobject in de verkenner uitvouwt, wordt de nieuw gemaakte tabel met de naam SensorReadings weergegeven. .



Maak het App Service Plan

Het App Service Plan is vereist voor het maken van een App Service.

  • Selecteer App Service-abonnementen in het portalmenu.
  • Voer een naam in voor het abonnement.
  • Voor Brongroep kies Bestaande gebruiken en selecteer Sensortelemetrie uit de vervolgkeuzelijst.
  • Kies een locatie.
  • Klik op Prijsniveau en selecteer B1 Basic .
  • Klik op Maken .

Maak de app-service ( Mobiele app

De website en SignalR-hub werken met een App Service.

  • Klik op Nieuw vanuit het portaalmenu.
  • Kies Web+mobiel uit de lijst.
  • Kies Mobiele app .
  • Voer een naam in voor de toepassing.
  • Selecteer een abonnement.
  • Voor Brongroep kies Bestaande gebruiken en selecteer Sensortelemetrie uit de vervolgkeuzelijst.
  • Kies het App Service Plan dat u in de vorige stap hebt gemaakt.
  • App Insights is optioneel.
  • Klik op Maken .


Azure Stream Analytics instellen

De Stream Analytics-taak bewaakt gegevensgebeurtenissen op de IoT Hub en schrijft deze naar een SQL Server-database. De taak zal bestaan ​​uit een invoer (de IoT Hub) en uitvoer (de SQL-tabel) en een query die kiest welke velden moeten worden gebruikt.

  • Kies Nieuw .
  • Selecteer Data + Analytics uit het menu.
  • Selecteer Stream Analytics-taak uit het menu.
  • Voer een unieke naam in voor de taak.
  • Selecteer een abonnement.
  • Kies voor de resourcegroep Bestaande gebruiken en selecteer Sensortelemetrie in de vervolgkeuzelijst.
  • Kies een locatie (probeer alle bronnen in dezelfde regio te houden om de kosten laag te houden ).
  • Klik op Maken .
  • Selecteer Meer diensten> uit het menu.
  • Scroll omlaag naar Streamanalyse en klik op de ster . Hierdoor wordt het vastgezet in het portaalmenu.
  • Klik op Stream Analytics-taken in het portaalmenu.
  • Selecteer de taak die u zojuist hebt gemaakt.
  • Klik op Ingangen .
  • Klik op Toevoegen .
  • Voer een naam in voor de invoer (bijv. SensorTelemetry-Input).
  • Wijzig de bron in IoT Hub .
  • Accepteer de overige standaardwaarden.
  • Klik op Maken .
  • Klik op Uitvoer .
  • Klik op Toevoegen .
  • Voer een naam in voor de uitvoer (bijv. SensorTelemetry-Output).
  • Selecteer SQL-database als de gootsteen.
  • Selecteer de sensortelemetrie-database.
  • Voer de gebruikersnaam in die u hebt opgegeven bij het maken van de databaseserver.
  • Voer het wachtwoord in dat u hebt opgegeven toen u de databaseserver maakte.
  • Voer SensorReadings  . in voor de tafelnaam.
  • Klik op Maken .
  • Selecteer Zoekopdracht .
  • Vervang de tekst [YourOutputAlias] met de naam van de uitvoer (met behoud van vierkante haken).
  • Vervang de tekst [YourInputAlias] met de naam van de invoer (met behoud van vierkante haken).
  • Vervang het sterretje (* ) met deze tekst: [TimestampUtc], Source, Temperature, IsCritical, IsAboveUpperThreshold, IsBelowLowerThreshold
  • Klik op Opslaan  en klik vervolgens op Ja  als daarom wordt gevraagd.
  • Klik op Overzicht  in het Stream Analytics-taakmenu.
  • Klik op de Start  knop.
  • Kies nu.
  • Klik op Start .




De software configureren

Gebruik de repository-link onder aan de pagina om de code te downloaden als zipbestand of kloon de repository naar uw computer en open het project in Visual Studio .

De mobiele app configureren en publiceren

De webtoepassing (in de webmap) moet worden gepubliceerd naar de Azure App Service.

  • Klik met de rechtermuisknop op het project in Visual Studio en selecteer Publiceren .
  • Click Microsoft Azure App Service .
  • Select your App Service from the list (you may need to log in if this is the first time).
  • Click OK .
  • Click Next .
  • Go to the Azure portal
  • Select SQL Databases  from the portal menu.
  • Select your database.
  • Click the Show database connection strings  link.
  • Click the copy button next to ADO.NET  string.
  • Go back to Visual Studio and paste this string into the text box labeled MS_TableConnectionString .
  • Change the user name and password to the values you set when you created the SQL Server.
  • Click Next .
  • Click Publish .
  • When the publish has completed, a browser will be launched pointed at your new web site.


Enter the IoT Hub Credentials

Before running the application, you will need to enter your IoT Hub device credentials into the code.

  • Open the project in Visual Studio.
  • Expand the Sensor Telemetry  project under the UWP  folder and open the code behind for the App.xaml .
  • Scroll down to the section with the definition for IIotHubConfiguration .
  • Open the Device Explorer  project in another instance of Visual Stduio.
  • Click to the Management tab.
  • Right-click the device you created previously.
  • Click the Copy connection string for selected device  option in the menu.
  • Go back to the Sensor Telemetry prject and paste the connection string over the text {YOUR CONNECTION STRING HERE} .
  • Enter the name of the device over the text {YOUR DEVICE ID HERE} .
  • Save this file.
  • Expand the Sensor Telemetry IoT  project and find the code behidn for App.xaml .
  • Scroll down to the section with the definition for IIotHubConfiguration .
  • Copy and paste the same configuration from the previous app.cs  file.


Enter the Mobile App URL

The Mobile App URL also needs to be entered into the code.

  • Open the project in Visual Studio.
  • Expand the Shared  project.
  • Open the UnityConfiguration.cs .
  • Scroll down to the section containng the IMobileServicesConfiguration definition.
  • Open the Azure portal.
  • Click App Services .
  • Select the App Service  you created for this project.
  • Hover the mouse over the URL  and click the Copy  icon.
  • Goback to Visual Studio and paste the URL over the text {YOUR MOBILE SERVICES URL HERE} .

Read More Detail :Sensor Telemetry 2.0.1


Productieproces

  1. Wat is sensorkalibratie-definitie en zijn toepassing
  2. Hartslagsensor – werking en toepassing
  3. Wat is een O2-sensor?
  4. TMP006 Temperature Sensor Python Library met Raspberry pi,
  5. Bewegingssensor met Raspberry Pi
  6. Raspberry Pi Bodemvochtsensor
  7. Test DS18B20-sensor
  8. Raspberry Pi-temperatuursensor
  9. Sensortelemetrie 2.0.1
  10. Emotiesensor / EEG
  11. UnifiedWater v1