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

Sensortelemetrie 2.0.1

Sensor Telemetry 2.0.1 Übertragen Sie Temperaturdaten in Microsoft Azure IoT Hub und überwachen Sie die Daten aus der Ferne über eine universelle Windows-Anwendung. Digital überarbeitet!

Geschichte

AKTUALISIERT:Das Sensor Telemetry-Projekt wurde digital überarbeitet. Aktualisiert am 17. Mai 2017 und umbenannt in Sensor Telemetry 2.0.1

Einführung

Übersicht

In diesem Projekt werden wir einen Temperatursensor (MCP9808 ) und senden Sie Telemetriemesswerte an einen Microsoft Azure IoT Hub wobei ein Stream Analytics Job verarbeitet die Nachrichten und schreibt sie in ein Azure SQL Datenbank Tabelle. Wir verwenden Mobile Apps um den Verlauf der Sensormesswerte anzuzeigen.

Die Anwendung

Das Projekt enthält zwei Universelle Windows-Anwendungen (auf der universellen Windows-Plattform, UWP), die etwa 99 % des Codes gemeinsam nutzen. Einer ist auf den Raspberry Pi (oder ARM) ausgerichtet und der andere auf die x86- oder x64-Plattformen.

Die IoT-Version der Anwendung läuft auf dem Raspberry Pi und liest die Temperatur vom MCP9808. Die Anwendung sendet Telemetrieereignisse an Azure IoT Hub und das SignalR Hub. Diese Version lauscht auch auf Befehle von Azure IoT Hub.

Die auf einem Computer gestartete Client-Version hört auf Sensor-Updates vom SignalR-Hub und zeigt sie auf dem Bildschirm an. Diese Version sendet auch Befehle über den Azure IoT Hub an die IoT-Version.

Technologien

Die Anwendung in diesem Projekt basiert auf der MVVM (Model-View-ViewModel)-Muster und wurde mit dem Prisma . erstellt Bibliothek und verwendet Prism.Unity für das IoC (Inversion of Control)-Container. Zusätzlich zu diesen Bibliotheken verwendet die Anwendung den Ereignisaggregator gefunden im Prism.Event Bibliothek, um bestmöglich eine rein ereignisgesteuerte Architektur zu schaffen. Die Anwendung verwendet diese Bibliothek, um den internen Modulen die Kommunikation zu ermöglichen, während sie lose gekoppelt bleiben.

Die Anwendung verwendet auch SignalR in der mobilen Azure-App, damit mehrere Instanzen der Anwendung miteinander kommunizieren können. Die Temperaturmesswerte werden an alle remote ausgeführten Clients „gesendet“, sodass diese Temperatursensormesswerte zur Anzeige in der Hauptansicht empfangen können.

Architektur

Das Herzstück der Anwendung ist die MCP9808-Bibliothek, die als separates Projekt erstellt wurde und in anderen Anwendungen wiederverwendet werden kann. Dieses Projekt wurde als UWP-Bibliothek entwickelt, die in jeder Windows 10-Anwendung verwendet werden kann. Wenn die Bibliothek auf einem Gerät ohne I2C . verwendet wird bus gibt die Bibliothek kein Geräteobjekt zurück. Dieser Ansatz kann verwendet werden, um einen Sensor zu „erkennen“ und die Bibliothek elegant zu ignorieren, wenn ein Sensor nicht gefunden wird.

In der UWP-Clientanwendung gibt es mehrere Blöcke, aus denen die Gesamtanwendung besteht. Die Ansichten sind die sichtbaren Seiten und jede Ansicht hat ein Ansichtsmodell, das für den Status der Ansicht verantwortlich ist. Es gibt drei Repositorys:Anwendungseinstellungen (IApplicationSettingsRepository ), Debugging-Informationen (IDebugConsoleRepository ) und Lesen und Schreiben des MCP9808 (ITemperatureRepository ). Es gibt zwei konkrete Klassen, die um ITemperatureRepository herum aufgebaut sind; Einer umschließt die MCP9808-Bibliothek und einer ist ein Null-Gerät, das verwendet wird, wenn die Anwendung nicht auf dem Raspberry Pi läuft.

Die Klasse Mcp9808TemperatureRepository  überwacht den MCP9808 mithilfe des Timer-Dienstes und veröffentlicht Temperaturinformationen über den internen Ereignis-Aggregator jedes Mal, wenn sich der Temperaturmesswert oder der Alarmstatus ändert. Ein neues Ereignis wird nur gesendet, wenn sich der aktuelle Messwert vom vorherigen Messwert unterscheidet.

Es gibt auch eine Reihe von Diensten, die von IBackgroundService  . definiert werden die im Hintergrund für verschiedene Aktivitäten laufen.

Das Diagramm unten zeigt eine allgemeine Ansicht der Architektur und der Konnektivität zwischen den verschiedenen Blöcken und Diensten.

Telemetriedienst

Dieser Dienst überwacht das Temperaturänderungsereignis (über ein Abonnement) und sendet bei jeder Temperaturänderung eine Nachricht an den Azure Service Bus Event Hub.

Timer-Dienst

Dieser einfache Dienst ist ein Timer, der alle 500 Millisekunden ein Ereignis veröffentlicht und von den Ansichtsmodellen verwendet wird, um die aktuelle Uhrzeit in einer Ansicht anzuzeigen. Es wird auch vom Mcp9808TemperatureRepository  . verwendet um den Sensor einmal pro Sekunde auszulesen. Die Timer-Ereignisargumente enthalten einen Zähler, der mit der mod-Funktion verwendet werden kann, um das Timer-Intervall einfach in die gewünschte Länge zu unterteilen. Es gibt eine Methode namens IsMyInterval(TimeSpan interval) für das Ereignisargument, die die Berechnungen für Sie erledigt. Sie müssen lediglich das Intervall als TimeSpan  . angeben Objekt.

Alarm-Pin-Überwachungsdienst

Dieser Dienst überwacht den Zustand des GPIO-Pins, der mit dem Alert-Pin des MCP9808 verbunden ist. Wenn der Wert des GPIO geändert wird, veröffentlicht dieser Dienst ein Ereignis.

LED-Service

Dieser Dienst ist für das Ein- und Ausschalten der LEDs verantwortlich. Dies erfolgt durch Überwachung (über Abonnement) des Temperaturänderungsereignisses, das auch den Alarmstatus des MCP9808 umfasst. Wenn sich der Alarmstatus ändert, werden die LEDs entsprechend aktualisiert.

Überwachungsdienst auf Knopfdruck

Dieser Dienst überwacht den mit dem Taster verbundenen GPIO-Pin und veröffentlicht ein Ereignis, wenn der Taster losgelassen wird. Dieses Ereignis wird vom Mcp9808TemperatureRepository  . aufgenommen wenn sich das Gerät im manuellen Alarm-Reset-Modus (MCP9808-Interrupt-Modus) befindet. Debug-Ereignisse werden auch veröffentlicht, damit der Status der Schaltfläche in der Debug-Konsole angezeigt werden kann.

Benachrichtigungs-Relay-Dienst

Der Dienst überwacht den SignalR-Hub und den internen Ereignisaggregator und leitet Nachrichten zwischen den beiden basierend auf einer vordefinierten Zuordnung weiter (unter Verwendung der EventRelayMap  Klasse). Dadurch kann die Anwendung im Wesentlichen nur das interne Ereignissystem erkennen und trotzdem Nachrichten mit anderen Instanzen der Anwendung senden und empfangen.

Konsolendienst debuggen

Dieser Dienst überwacht die Anwendungen (per Abonnement) auf Debugging-Ereignisse und fügt sie einer internen Sammlung hinzu. Es implementiert auch DebugConsoleRepository , wodurch die Debug-Konsolenansicht diese Ereignisse in der Anwendung über das Ansichtsmodell anzeigen kann.

Anwendungsinitialisierung

Wenn die Anwendung startet, startet sie die StartPage  zuerst anzeigen, wodurch automatisch das StartPageViewModel . aufgerufen wird . Dieses Ansichtsmodell bringt alles zum Laufen, bevor es in die Hauptansicht gestartet wird.

Erste Schritte

Schaltkreisanforderungen

Die Schaltung erfordert ein großes, lötfreies Steckbrett und optional einen T-förmigen Schuster und ein Flachbandkabel (ich verwende die von Vilros verkaufte Version). Das Steckbrett kann an einer Vielzahl von Orten bezogen werden (ich habe in lokalen Geschäften und bei Amazon gekauft). Die Schaltung verwendet auch einen kurzzeitigen taktilen Druckknopfschalter mit vier Stiften. Es gibt viele Arten; jeder wird tun. Schließlich verwende ich für den Temperatursensor das MCP9808 High Accuracy I2C Temperature Sensor Breakout Board von Adafruit.

Die Schaltung kann ohne Schuster gebaut werden. Folgen Sie einfach dem alternativen Steckbrettdiagramm am Ende des Projekts.

Schaltungsbaugruppe

Verwenden Sie diese Anleitung, um die Schaltung zusammenzubauen, und verwenden Sie das Diagramm unten auf der Seite als Richtlinie (Hinweis:Die Farbe der Drähte ist optional und wurde ausgewählt, um die Schaltung zu vereinfachen folgen, wenn es gebaut wird).

Unten sind einige Fotos von der Schaltung, die ich mit dem Schuster gebaut habe.


Microsoft Azure-Anforderungen

Wenn Sie kein Azure-Konto haben, müssen Sie eines erstellen. Sie können ein Guthaben von 200 USD erhalten, wenn Sie Ihr Konto eröffnen. Gehe zu azure.com  und klicken Sie auf den Link KOSTENLOSES KONTO . Wenn Sie bereits ein Konto haben, melden Sie sich beim Portal unter portal.azure.com an .

HINWEIS:Dieses Handbuch ist kein vollständiger Leitfaden zum Konfigurieren von Azure. Möglicherweise müssen Sie sich mit dem Portal vertraut machen, wenn Sie es noch nie zuvor verwendet haben. Ich werde die für dieses Projekt erforderlichen Schritte so gut ich kann durchgehen.

Lassen Sie sich während des gesamten Einrichtungsprozesses beim Azure-Portal angemeldet. Sie müssen oft darauf zurückgreifen.

Azure IoT Event Hub-Setup



Gerät erstellen

Für Azure IoT Hub muss jedes Gerät aus Sicherheitsgründen eindeutig identifiziert und im Hub registriert werden. Ein Gerät kann mit dem Azure SDK und Code registriert werden, aber für dieses Projekt verwenden wir den Geräte-Explorer, der im Azure SDK verfügbar ist.




Azure SQL-Datenbankeinrichtung

Die Telemetriedaten werden in einer Azure SQL-Datenbank gespeichert. Verwenden Sie das Portal, um die Datenbank zu erstellen.




Datenbanktabelle erstellen

Die verwendete Tabelle wird manuell erstellt. Die Code First-Bereitstellung kann in mobilen Apps verwendet werden, die erstellte Tabelle ist jedoch nicht mit Stream Analytics kompatibel.




App Service-Plan erstellen

Der App Service Plan ist zum Erstellen eines App Service erforderlich.

App Service erstellen ( Mobile App

Die Website und der SignalR-Hub werden mit einem App Service ausgeführt.



Azure Stream Analytics-Setup

Der Stream Analytics-Auftrag überwacht Datenereignisse auf dem IoT Hub und schreibt sie in eine SQL Server-Datenbank. Der Job besteht aus einer Eingabe (dem IoT Hub) und einer Ausgabe (der SQL-Tabelle) und einer Abfrage, die auswählt, welche Felder verwendet werden sollen.





Konfiguration der Software

Laden Sie über den Repository-Link unten auf der Seite entweder den Code als ZIP-Datei herunter oder klonen Sie das Repository auf Ihren Computer und öffnen Sie das Projekt in Visual Studio .

Mobile App konfigurieren und veröffentlichen

Die Webanwendung (im Webordner) muss im Azure App Service veröffentlicht werden.



Enter the IoT Hub Credentials

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



Enter the Mobile App URL

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

Read More Detail :Sensor Telemetry 2.0.1


Herstellungsprozess

  1. Was ist Sensorkalibrierung – Definition und Anwendung
  2. Herzschlagsensor – Funktion und Anwendung
  3. Was ist ein O2-Sensor?
  4. TMP006-Temperatursensor-Python-Bibliothek mit Raspberry Pi,
  5. Bewegungssensor mit Raspberry Pi
  6. Raspberry Pi Bodenfeuchtigkeitssensor
  7. DS18B20-Sensor testen
  8. Raspberry Pi-Temperatursensor
  9. Sensortelemetrie 2.0.1
  10. Emotionssensor / EEG