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

GPS-Tracking mit Helium, Azure IoT Hub und Power BI

Komponenten und Verbrauchsmaterialien

Helium-Atom-Prototyping-Modul
× 1
Arduino Zero
× 1
Adafruit Ultimate GPS Breakout
× 1
Breadboard (generisch)
× 1

Apps und Onlinedienste

Microsoft Azure
Arduino-IDE

Über dieses Projekt

Über dieses Projekt

Helium existiert, um Entwicklern zu helfen, sichere, verbundene Geräte mit geringem Stromverbrauch zu entwickeln. In diesem Projekt gehen wir durch die Verwendung des Helium Atom Prototyping-Moduls mit einem Arduino Zero und Adafruit Ultimate GPS Breakout, um Daten nahtlos an Azure IoT Hub und dann an einen Power BI-Bericht zu senden, um die Daten zu visualisieren.

Unter helium.com/store können Sie mehr über die stromsparenden, sicheren und weitreichenden drahtlosen Produkte von Helium erfahren und die erforderliche Hardware kaufen.

Hardware

Das erste, was Sie tun müssen, ist, Ihr Helium Atom Prototyping-Modul an den Helium Atom Arduino-Adapter und dann an Ihren Arduino anzuschließen. Wir verwenden ein Arduino Zero für diese Anleitung, aber Sie können ein Uno, Due, M0 oder jedes andere Arduino verwenden, das Sie möchten.

Sobald Sie das Atom mit dem Arduino verbunden haben, sollten Sie etwas haben, das wie folgt aussieht:

Als nächstes müssen wir den Adafruit Ultimate GPS Breakout am Arduino-Sandwich befestigen. Wir werden hier ein Steckbrett verwenden, um die Dinge einfacher und klarer zu machen, aber Sie können den GPS-Breakout genauso einfach direkt mit dem Arduino verbinden. Ihre Verkabelung sollte folgendes haben:

Arduino 5v -> GPS-FIN

Arduino GND -> GPS GND

Arduino D12 -> GPS-TX

Arduino D10-> GPS-RX

Sie sollten etwas haben, das so aussieht, wenn Sie fertig sind:

Ok, jetzt, da wir die Arduino-Seite der Dinge eingerichtet haben, müssen wir das Helium-Element anschließen und einschalten. Wenn Sie ein Cellular Element haben, müssen Sie es nur einschalten und warten, bis das Licht eine blaugrüne Farbe annimmt. Das ist es. Wenn Sie über ein Ethernet Element verfügen oder eine Ethernet-Verbindung für Ihr Cellular Element bevorzugen, stecken Sie den Ethernet-Port Ihres Elements in einen DHCP-fähigen Port wie die Rückseite eines Kabelmodems oder Wireless-Routers. Sobald Sie das Element einschalten und das Licht an der Vorderseite des Elements grün leuchtet, können Sie loslegen.

Nachdem Sie nun das Arduino- und Atom-Hardware-Setup abgeschlossen haben und das Element eingeschaltet und angeschlossen ist, ist es an der Zeit, dies alles im Helium-Dashboard einzurichten.

Helium-Dashboard und -Kanäle

Zuerst müssen wir unser Atom und Element zu unserem Benutzerkonto im Dashboard hinzufügen. Wenn Sie kein Benutzerkonto haben, aber Geräte zur Hand haben, senden Sie uns bitte eine E-Mail an [email protected]. Andernfalls melden Sie sich mit den Zugangsdaten an, die Sie beim Kauf Ihrer Hardware von Helium erhalten haben.

Nachdem wir uns eingeloggt haben, müssen wir zuerst unser Element aktivieren. Klicken auf Elemente links, dann Neu hinzufügen oben rechts bringt Sie an die richtige Stelle. Geben Sie die letzten 4 des MAC ein Adresse und der HVV Geben Sie dem Etikett auf der Rückseite des Elements einen Namen und fügen Sie optional einige Tags hinzu. Klicken Sie auf Element aktivieren um es in Gang zu bringen.

Wir müssen dann den gleichen Vorgang für das Atom wiederholen. Klicken Sie erneut auf Atome auf der linken Seite und Neu hinzufügen , und liefern Sie den MAC und HVV aus dem Atom-Label, fügen Sie optional einige Tags hinzu und klicken Sie auf Atom aktivieren .

Als Nächstes müssen wir einen Azure IoT Hub erstellen, der für alle Ihre Helium Atom-Geräte als Aufnahmepunkt für Azure fungiert. Wir gehen davon aus, dass Sie bereits über ein Azure-Konto verfügen, andernfalls müssen Sie eines erstellen.

Nachdem Sie sich bei Azure angemeldet haben, erstellen wir einen IoT Hub. Klicken Sie auf das + oben links, dann Internet der Dinge , dann IoT Hub :

Sie müssen einige Entscheidungen treffen, wie Sie Ihren IoT Hub einrichten möchten, und dann auf Erstellen klicken. Wir empfehlen Ihnen, An Dashboard anheften auszuwählen unten, um es später leichter wiederzufinden:

Wenn Sie fertig sind und die Bereitstellung des Hubs abgeschlossen ist (dies kann einige Minuten dauern), klicken Sie in Ihrem Dashboard darauf. Um den Heliumkanal einzurichten, benötigen wir eine Information aus dem Hub. Wählen Sie im IoT Hub Richtlinien für den gemeinsamen Zugriff Wählen Sie links RegistryReadWrite , und klicken Sie dann auf das Kopiersymbol neben Verbindungszeichenfolge – Primärschlüssel auf der rechten Seite. Dadurch wird die Verbindungszeichenfolge in die Zwischenablage kopiert, die wir wieder im Helium-Dashboard verwenden. Geben Sie diese Zeichenfolge nicht an Personen weiter, denen Sie nicht vertrauen. (Wir verwenden in diesem Beispiel nur einen temporären Hub.)

Zurück im Helium-Dashboard müssen wir nun einen Kanal erstellen, der dem gerade erstellten Azure IoT Hub zugeordnet ist. Klicke zuerst auf Kanäle auf der linken Seite und klicken Sie auf Azure IoT Hub unten Neuen Kanal erstellen . Wir werden die Verbindungszeichenfolge einfügen Wir haben aus Azure kopiert, um den Kanal auf Helium zu erstellen:

Gib dem Kanal einen Namen und klicke dann auf Erstellen . Es ist wichtig, sich den Namen zu merken, da Sie ihn in Ihrem Arduino-Code benötigen, um Daten an diesen Kanal zu senden.

Arduino-Skizze

Nachdem der Azure IoT Hub eingerichtet und ein Helium-Kanal erstellt wurde, benötigen wir jetzt eine geeignete Arduino-Skizze, die die Helium-Arduino- und Adafruit-GPS-Bibliotheken verwendet, um GPS-Standorte an Helium und dann weiter an unseren neu erstellten Azure-Kanal zu senden.

Zunächst benötigen Sie sowohl die Helium-Arduino-Bibliothek als auch die Adafruit-GPS-Bibliothek, die in Ihrer Arduino-IDE installiert sind. Am einfachsten erreichen Sie dies über Skizze -> Bibliothek einschließen -> Bibliotheken verwalten . Menü aus der IDE und suchen Sie nach Helium und Adafruit-GPS und klicken Sie auf Installieren .

Die folgende Skizze initialisiert das Atom, erstellt einen Kanal, der dem Azure IoT Hub entspricht Der Kanal, den wir im vorherigen Schritt erstellt haben, sammelt GPS-Daten vom Adafruit GPS-Board, formatiert sie in JSON und sendet sie dann über das Helium-Netzwerk.

Weitere Details und Anleitungen zur Helium Atom Arduino-Bibliothek finden Sie hier.

/* * Copyright 2017, Helium Systems, Inc. * Alle Rechte vorbehalten. Siehe LICENCE.txt für Lizenzinformationen */ #include "Arduino.h" #include "avr/dtostrf.h" #include "Helium.h" #include  #include  #include "wiring_private .h" // pinPeripheral() Funktion #define atom_serial Serial1//for GPS #define PIN_SERIAL2_RX (34ul) // Pinbeschreibungsnummer für PIO_SERCOM auf D12 #define PIN_SERIAL2_TX (36ul) // Pinbeschreibungsnummer für PIO_SERCOM auf D10 #define PAD_SERIAL2_TX (UART_TX_PAD_2) // SERCOM-Pad 2 #define PAD_SERIAL2_RX (SERCOM_RX_PAD_3) // SERCOM-Pad 3 Uart Serial2(&sercom1, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX);void SERCOM1. }Helium Helium(&atom_seriell); Kanalkanal (&helium); // GPS-Sachen #define gps_serial Serial2 Adafruit_GPS GPS (&gps_serial);void setup () { pinPeripheral(10, PIO_SERCOM); pinPeripherie(12, PIO_SERCOM); Serial.begin(115200); Serial.println("Starten"); // Beginnen Sie die Kommunikation mit dem Helium-Atom // Die Baudrate ist je nach unterstütztem Board unterschiedlich // und wird in Board.h konfiguriert helium.begin(helium_baud_b115200 ); // Verbinden Sie das Atom mit dem Helium-Netzwerk Serial.print ("Connecting -"); int-Status =helium.connect(); while (status !=helium_status_OK) { status =helium.connect(); } Serial.println ( "Erfolgreich"); // Beginnen Sie mit der Kommunikation mit dem Kanal. Dies sollte nur // einmal durchgeführt werden müssen. // // HINWEIS:Bitte stellen Sie sicher, dass Sie einen passenden Kanal im Helium Dashbaord int8_t Ergebnis erstellt haben; Serial.print ( "Kanal erstellen - "); status =channel.begin("Hackster-Anleitung", &result); if (helium_status_OK ==Status &&Ergebnis ==0) { Serial.println ("Erfolgreich"); aufrechtzuerhalten. Sonst { Serial.println ( "Fehlgeschlagen"); } Verzögerung (1000); // Init GPS GPS.begin (9600); GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); GPS.sendCommand(PGCMD_NOANTENNA); Verzögerung (2000); }uint32_t Timer =millis(); Void Schleife () { Zeichen c =GPS.read (); if (GPS.newNMEAreceived()) { if (!GPS.parse(GPS.lastNMEA())) zurück; } if (timer> millis()) timer =millis(); if (millis() - Timer> 2000) { Timer =millis(); // Timer zurücksetzen if (GPS.fix) { char lat [10]; char lon[10]; Zeichendaten[100]; dtostrf(GPS.latitudeDegrees, 4, 4, lat); dtostrf(GPS.longitudeDegrees, 4, 4, lon); //Formatieren eines JSON-Objekts von lat/lon zum Senden an Azure sprintf(data, "{\"lat\":\"%s\", \"lon\":\"%s\"}", lat, lon); // Sende die Standortdaten an den konfigurierten Kanal int8_t result; // die Antwort vom Helium-Router Serial.print ("Senden - "); int status =channel.send(data, strlen(data), &result); // Status ist die Antwort von der seriellen Atom-Verbindung if (helium_status_OK ==Status &&Ergebnis ==0) {Serial.print ("Erfolgreich gesendet"); Serial.println (Daten); aufrechtzuerhalten. Sonst { Serial.println ( "Fehlgeschlagen"); } } else { Serial.println ("Kein GPS-Fix!"); } } }  

Erstellen Sie mit den installierten Bibliotheken eine neue Skizze (Datei -> Neu aus der Arduino IDE) und fügen Sie den obigen Code ein. Schließen Sie Ihr Arduino/Atom-Sandwich über USB an und klicken Sie auf Hochladen Schaltfläche, die wie ein Pfeil nach rechts aussieht.

Nach ein paar Sekunden sollten Sie sehen, dass die Atom-Lichter rot und blau blinken und sich dann in einem konstanten roten Blinkmuster niederlassen. Das bedeutet, dass das Atom jetzt mit dem Helium-Netzwerk verbunden ist. Das GPS FIX Das Licht sollte auch mit einem langsamen roten Muster blinken. Sobald dies aufhört, hat das GPS-Modul Ihren Standort ermittelt und beginnt, Daten an Helium zu senden. Es hilft, das GPS in der Nähe eines Fensters oder idealerweise ganz draußen zu platzieren.

Sie können den Serienmonitor überprüfen (Tools -> Serial Monitor ) aus der Arduino-IDE heraus, um die Debug-Ausgabe anzuzeigen. Sie sollten Meldungen sehen, die eine Verbindung herstellen, einen Kanal erstellen und dann eine Folge von Kein GPS-Fix! Nachrichten, bis ein Satelliten-Fix erfasst wird.

Überprüfen, ob die Daten richtig gesendet werden

Nachdem Arduino, Atom und GPS jetzt betriebsbereit sind, können wir zum Helium-Dashboard zurückkehren und sicherstellen, dass die Daten den Azure-Kanal erreichen.

Klicken auf Kanäle auf der linken Seite und wählen Sie dann den Azure-Kanal aus, den Sie bereits in den Aktiven Kanälen erstellt haben Abschnitt sollte Sie zu einer Detailansicht bringen - wenn Sie hier nach unten scrollen, sollten Sie das Ereignisprotokoll anzeigen, in dem Sie hoffentlich so etwas wie den Screenshot unten sehen. Dies zeigt den Zeitstempel und die Größe der Daten sowie einen Bericht darüber, ob sie erfolgreich an Azure weitergeleitet wurden:

Wenn Sie sich Ihren Azure IoT Hub unter dem Geräte-Explorer ansehen Navigation sollten Sie auch Ihr Helium Atom-Gerät unter seiner MAC-Adresse sehen. Wenn Sie darauf klicken, wird auch bestätigt, dass wir dieses Gerät automatisch und ohne erforderliche Konfiguration mit einem hardwaresignierten X509-Zertifikat gesichert haben.

Übertragen der Daten in Power BI

Wir gehen davon aus, dass Sie bereits ein Power BI-Konto eingerichtet und einen Arbeitsbereich bereits erstellt haben. (Wenn nicht, gehen Sie zu www.powerbi.com und richten Sie eins ein.)

Mit der Einrichtung Ihres Power BI-Kontos müssen wir jetzt einen Azure Stream Analytics-Auftrag erstellen, um die Daten aus Azure IoT Hub zu übernehmen und an Power BI bereitzustellen.

Klicken Sie im Azure-Dashboard auf Neu oben links und suchen Sie nach Stream Analytics Job , wählen Sie es aus, sobald es angezeigt wird. Klicken Sie auf Erstellen Wählen Sie unten links die Optionen aus und klicken Sie auf Erstellen, um es einzurichten.

Nach der Bereitstellung müssen wir den Streamingauftrag anweisen, IoT Hub als Eingabe und Power BI als Ausgabe zu verwenden. Klicken Sie auf der Seite "Streaming-Job" auf Eingaben aus dem linken Menü, dann Hinzufügen .

Geben Sie dem Job einen Alias ​​(Namen) und wählen Sie dann IoT Hub aus dem Quellen-Dropdown. Wählen Sie den entsprechenden IoT Hub aus der IoT Hub-Dropdown-Liste aus, und lassen Sie alles andere als Standard. Am Ende sollte etwas so aussehen:

Sobald die Eingabe erstellt wurde, erstellen wir eine Ausgabe, die eine Verbindung zu Power BI herstellt. Klicken Sie auf der Seite "Streaming-Job" auf Ausgaben aus dem linken Menü und dann Hinzufügen . Wir wählen Power BI aus der Senke Dropdown-Liste. Sie müssen dann Ihr Power BI-Konto autorisieren und den Arbeitsbereich auswählen, den Sie verwenden möchten. Erstellen Sie einen Namen für die Tabelle. Am Ende erhalten Sie so etwas:

Der letzte Schritt besteht darin, eine Abfrage zu erstellen, die die Eingabe mit der Ausgabe verknüpft. Klicken Sie erneut auf Abfrage aus dem linken Menü. Sie sollten Ihre Abfrage grundsätzlich in der Form haben, die dem Screenshot unten entspricht, je nachdem, wie Sie Ihre Eingaben und Ausgaben aus dem vorherigen Schritt benannt haben. Dadurch werden alle vom IoT Hub kommenden Daten ausgewählt und an den Power BI-Arbeitsbereich ausgegeben.

Klicken Sie oben links auf Speichern, und wenn Sie alles richtig benannt haben, sind Sie fast fertig. Kehren Sie nun zur Übersichtsseite zurück und klicken Sie auf Start in der oberen Navigationsleiste, und nach ein paar Minuten werden Daten in Power BI gestreamt.

Visualisieren in Power BI

Jetzt, da die Daten fließen, können wir eine schnelle Visualisierung in Power BI erstellen, um uns zu zeigen, wo sich alles auf einer Karte befindet.

Gehen Sie zu Ihrem Power BI-Arbeitsbereich und klicken Sie auf + Erstellen in der oberen rechten Ecke und wählen Sie Melden . Sie wählen dann das Dataset aus, das Sie im Azure-Streaming-Job erstellt haben, und klicken auf Erstellen . .

Als nächstes wählen wir die Kartenvisualisierung im rechten Bereich aus, sie sieht aus wie ein weißer Globus. Ganz rechts sehen Sie die Datenfelder, die wir vom Arduino gesendet haben. Ziehen Sie lat nach Breitengrad und lon zu Längengrad im Fenster links. Sie können auch EventProcessedUTCTime drag ziehen zu Tooltips, wenn Sie sehen möchten, wann es beim Mouseover gesendet wurde. Klicken Sie dann oben rechts auf Speichern. Das ist es! Sie haben jetzt eine Karte, die die Position Ihres Helium-Atoms zeigt, das an den Arduino angeschlossen ist.

Code

  • Atom + Arduino + Adafruit-GPS
Atom + Arduino + Adafruit-GPSC/C++
/* * Copyright 2017, Helium Systems, Inc. * Alle Rechte vorbehalten. Siehe LICENCE.txt für Lizenzinformationen*/#include "Arduino.h"#include "avr/dtostrf.h"#include "Helium.h"#include #include #include "wiring_private .h" // pinPeripheral() function#define atom_serial Serial1//for GPS#define PIN_SERIAL2_RX (34ul) // Pinbeschreibungsnummer für PIO_SERCOM auf D12#define PIN_SERIAL2_TX (36ul) // Pinbeschreibungsnummer für PIO_SERCOM auf D10#define PAD_SERIAL2_TX (UART_TX_PAD_2) // SERCOM-Pad 2#define PAD_SERIAL2_RX (SERCOM_RX_PAD_3) // SERCOM-Pad 3Uart Serial2(&sercom1, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX);void SERCOM1. Kanalkanal(&helium);//GPS-Stuff#define gps_serial Serial2Adafruit_GPS GPS(&gps_serial);void setup() { pinPeripheral(10, PIO_SERCOM); pinPeripherie(12, PIO_SERCOM); Serial.begin(115200); Serial.println("Starten"); // Beginnen Sie die Kommunikation mit dem Helium-Atom // Die Baudrate ist je nach unterstütztem Board unterschiedlich // und wird in Board.h konfiguriert helium.begin(helium_baud_b115200); // Verbinden Sie das Atom mit dem Helium-Netzwerk Serial.print ("Connecting -"); int-Status =helium.connect(); while (status !=helium_status_OK) { status =helium.connect(); } Serial.println ( "Erfolgreich"); // Beginnen Sie mit der Kommunikation mit dem Kanal. Dies sollte nur // einmal durchgeführt werden müssen. // // HINWEIS:Bitte stellen Sie sicher, dass Sie einen passenden Kanal im Helium Dashbaord int8_t Ergebnis erstellt haben; Serial.print ( "Kanal erstellen - "); status =channel.begin("Hackster-Anleitung", &result); if (helium_status_OK ==Status &&Ergebnis ==0) { Serial.println ("Erfolgreich"); aufrechtzuerhalten. Sonst { Serial.println ( "Fehlgeschlagen"); } Verzögerung (1000); // Init GPS GPS.begin (9600); GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); GPS.sendCommand(PGCMD_NOANTENNA); delay(2000);}uint32_t timer =millis();void loop(){ char c =GPS.read(); if (GPS.newNMEAreceived()) { if (!GPS.parse(GPS.lastNMEA())) zurück; } if (timer> millis()) timer =millis(); if (millis() - Timer> 2000) { Timer =millis(); // Timer zurücksetzen if (GPS.fix) { char lat [10]; char lon[10]; Zeichendaten[100]; dtostrf(GPS.latitudeDegrees, 4, 4, lat); dtostrf(GPS.longitudeDegrees, 4, 4, lon); //Formatieren eines JSON-Objekts von lat/lon zum Senden an Azure sprintf(data, "{\"lat\":\"%s\", \"lon\":\"%s\"}", lat, lon); // Sende die Standortdaten an den konfigurierten Kanal int8_t result; // die Antwort vom Helium-Router Serial.print ("Senden - "); int status =channel.send(data, strlen(data), &result); // Status ist die Antwort von der seriellen Atom-Verbindung if (helium_status_OK ==Status &&Ergebnis ==0) {Serial.print ("Erfolgreich gesendet"); Serial.println (Daten); aufrechtzuerhalten. Sonst { Serial.println ( "Fehlgeschlagen"); } } else { Serial.println ("Kein GPS-Fix!"); } }}

Herstellungsprozess

  1. Anwesenheitssystem mit Arduino und RFID mit Python
  2. GPS-Datenlogger, räumliche Analyse und Azure IoT Hub.
  3. Universelle Fernbedienung mit Arduino, 1Sheeld und Android
  4. DIY-Voltmeter mit Arduino und Smartphone
  5. Herzfrequenzmesser mit IoT
  6. Einsatz des IoT zur Fernsteuerung eines Roboterarms
  7. IOT - Smart Jar mit ESP8266, Arduino und Ultraschallsensor
  8. Frequenz- und Duty-Cycle-Messung mit Arduino
  9. Sonar mit Arduino und Anzeige bei der Verarbeitung von IDE
  10. Azure IoT Swimming Pool