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

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

Komponenten und Zubehör

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

Apps und Online-Dienste

Über dieses Projekt

Helium ermöglicht Entwicklern den Bau von stromsparenden, sicheren und vernetzten Geräten. In diesem Projekt zeigen wir, wie das Helium Atom Prototyping Modul zusammen mit einem Arduino Zero und dem Adafruit Ultimate GPS Breakout verwendet wird, um GPS-Daten nahtlos an den Azure IoT Hub zu senden und diese anschließend in einem Power BI Report zu visualisieren.

Weitere Informationen zu Heliums stromsparenden, sicheren Long-Range-Wireless-Produkten und Bezugsquellen für die Hardware finden Sie unter helium.com/store.

Hardware-Aufbau

Zunächst wird das Helium Atom Prototyping Modul auf den Helium Atom Arduino Adapter gesteckt und dieser mit dem Arduino verbunden. Wir verwenden hier einen Arduino Zero, aber auch ein Uno, Due, M0 oder andere Arduino-Boards funktionieren.

Echtzeit-GPS-Tracking mit Helium, Azure IoT Hub und Power BI
Helium Atom Modul auf Arduino Adapter montiert

Anschließend wird der Adafruit Ultimate GPS Breakout per Breadboard mit dem Arduino verdrahtet (alternativ direkt verlöten):

Echtzeit-GPS-Tracking mit Helium, Azure IoT Hub und Power BI
Verdrahtung des GPS Breakouts auf dem Breadboard

Nun muss das Helium Element mit Strom versorgt und verbunden werden:

Echtzeit-GPS-Tracking mit Helium, Azure IoT Hub und Power BI
Helium Element – Stromversorgung und Netzwerkverbindung

Helium Dashboard & Channels

Im Helium Dashboard werden Atom und Element dem Benutzerkonto hinzugefügt. Falls noch kein Konto besteht, aber Hardware vorliegt, kontaktieren Sie support@helium.com.

  1. Element aktivieren: Links auf Elements klicken, dann oben rechts Add New. Die letzten 4 Stellen der MAC-Adresse und den HVV-Code vom Etikett auf der Rückseite eingeben, Namen vergeben, optional Tags hinzufügen und Activate Element klicken.
  2. Atom aktivieren: Gleicher Vorgang unter Atoms → Add New mit MAC und HVV vom Atom-Etikett.
Echtzeit-GPS-Tracking mit Helium, Azure IoT Hub und Power BI
Element im Helium Dashboard aktivieren
Echtzeit-GPS-Tracking mit Helium, Azure IoT Hub und Power BI
Atom im Helium Dashboard aktivieren

Azure IoT Hub einrichten

Ein Azure-Konto wird vorausgesetzt. Im Azure Portal:

  1. Oben links auf + → Internet of Things → IoT Hub klicken.
  2. Gewünschte Konfiguration wählen, Pin to Dashboard aktivieren und Create klicken.
  3. Nach Bereitstellung (einige Minuten) den IoT Hub im Dashboard öffnen.
  4. Links Shared Access Policies wählen, RegistryReadWrite auswählen und die Connection string—primary key kopieren (Vorsicht: nicht teilen!).
Echtzeit-GPS-Tracking mit Helium, Azure IoT Hub und Power BI
Connection String aus Azure IoT Hub kopieren

Helium Channel für Azure IoT Hub erstellen

Zurück im Helium Dashboard:

  1. Links auf Channels klicken, unter Create New Channel Azure IoT Hub auswählen.
  2. Den kopierten Connection String einfügen, Channel benennen und Create klicken.
  3. Wichtig: Den Channel-Namen merken – er wird im Arduino-Sketch benötigt.
Echtzeit-GPS-Tracking mit Helium, Azure IoT Hub und Power BI
Azure IoT Hub Channel in Helium Dashboard erstellen

Arduino Sketch

Mit eingerichtetem IoT Hub und Helium Channel wird nun der Arduino-Sketch erstellt. Voraussetzung: Installation der Helium Arduino Library und Adafruit GPS Library über den Library Manager in der Arduino IDE (Sketch → Include Library → Manage Libraries).

Echtzeit-GPS-Tracking mit Helium, Azure IoT Hub und Power BI
Helium und Adafruit GPS Libraries installieren

Der Sketch initialisiert das Atom, erstellt einen Channel (namensgleich zum Helium Dashboard), liest GPS-Daten vom Adafruit-Board, formatiert sie als JSON und sendet sie über das Helium-Netzwerk.

/* 
 * Copyright 2017, Helium Systems, Inc. 
 * All Rights Reserved. See LICENCE.txt for license information 
 */
#include "Arduino.h"
#include "avr/dtostrf.h"
#include "Helium.h"
#include 
#include 
#include "wiring_private.h" // pinPeripheral() function

#define atom_serial Serial1
#define PIN_SERIAL2_RX (34ul)
#define PIN_SERIAL2_TX (36ul)
#define PAD_SERIAL2_TX (UART_TX_PAD_2)
#define PAD_SERIAL2_RX (SERCOM_RX_PAD_3)
Uart Serial2(&sercom1, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX);

void SERCOM1_Handler() { Serial2.IrqHandler(); }

Helium helium(&atom_serial);
Channel channel(&helium);

#define gps_serial Serial2
Adafruit_GPS GPS(&gps_serial);

void setup() {
  pinPeripheral(10, PIO_SERCOM);
  pinPeripheral(12, PIO_SERCOM);
  Serial.begin(115200);
  Serial.println("Starting");

  helium.begin(helium_baud_b115200);

  Serial.print("Connecting - ");
  int status = helium.connect();
  while (status != helium_status_OK) {
    status = helium.connect();
  }
  Serial.println("Succeeded");

  int8_t result;
  Serial.print("Creating Channel - ");
  status = channel.begin("Hackster Guide", &result);
  if (helium_status_OK == status && result == 0) {
    Serial.println("Succeeded");
  } else {
    Serial.println("Failed");
  }
  delay(1000);

  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())) return;
  }

  if (timer > millis()) timer = millis();
  if (millis() - timer > 2000) {
    timer = millis();

    if (GPS.fix) {
      char lat[10];
      char lon[10];
      char data[100];
      dtostrf(GPS.latitudeDegrees, 4, 4, lat);
      dtostrf(GPS.longitudeDegrees, 4, 4, lon);
      sprintf(data, "{\"lat\": \"%s\", \"lon\": \"%s\"}", lat, lon);

      int8_t result;
      Serial.print("Sending - ");
      int status = channel.send(data, strlen(data), &result);
      if (helium_status_OK == status && result == 0) {
        Serial.print("Successfully sent ");
        Serial.println(data);
      } else {
        Serial.println("Failed");
      }
    } else {
      Serial.println("No GPS fix!");
    }
  }
}

Neuen Sketch in der Arduino IDE erstellen (File → New), Code einfügen, Arduino per USB verbinden und Upload (Pfeil-rechts-Icon) klicken.

Nach wenigen Sekunden blinken die Atom-LEDs rot/blau, dann gleichmäßig rot – das Atom ist mit dem Helium-Netzwerk verbunden. Die GPS-FIX-LED blinkt langsam rot, bis ein Satellitenfix vorliegt (besser bei Fensternähe oder im Freien).

Im Serial Monitor (Tools → Serial Monitor) lassen sich Debug-Ausgaben verfolgen: Verbinden, Channel-Erstellung, dann „No GPS fix!“ bis zum ersten Fix.

Datenübertragung prüfen

Im Helium Dashboard unter Channels → aktiven Azure-Channel wählen. Im Event Log sollten Einträge mit Zeitstempel, Datengröße und Routing-Status (erfolgreich an Azure) erscheinen.

Echtzeit-GPS-Tracking mit Helium, Azure IoT Hub und Power BI
Event Log im Helium Dashboard – erfolgreiche Datenübertragung

Im Azure IoT Hub unter Device Explorer sollte das Helium Atom Gerät unter seiner MAC-Adresse gelistet sein. Ein Klick bestätigt die automatische Sicherung per hardware-signiertem X.509-Zertifikat.

Echtzeit-GPS-Tracking mit Helium, Azure IoT Hub und Power BI
Gerät im Azure IoT Hub mit X.509-Zertifikat

Daten in Power BI bringen

Voraussetzung: Power BI Konto und Workspace. Ein Azure Stream Analytics Job leitet Daten vom IoT Hub an Power BI weiter.

  1. Im Azure Portal: New → Stream Analytics Job suchen, Create.
  2. Nach Deployment: Inputs → Add → Alias vergeben, Source: IoT Hub, passenden Hub wählen, Rest Defaults.
  3. Outputs → Add → Sink: Power BI → Power BI Konto autorisieren, Workspace und Tabellennamen wählen.
  4. Query → Abfrage erstellen, die Input auf Output mapped (SELECT * INTO [Output] FROM [Input]). Speichern.
  5. Auf Overview → Start klicken. Nach Minuten fließen Daten in Power BI.
Echtzeit-GPS-Tracking mit Helium, Azure IoT Hub und Power BI
IoT Hub als Input für Stream Analytics Job
Echtzeit-GPS-Tracking mit Helium, Azure IoT Hub und Power BI
Power BI als Output konfigurieren
Echtzeit-GPS-Tracking mit Helium, Azure IoT Hub und Power BI
Query: Daten vom IoT Hub an Power BI weiterleiten

Visualisierung in Power BI

  1. Power BI Workspace öffnen → + Create → Report → Dataset vom Stream Analytics Job wählen → Create.
  2. Rechts die Karten-Visualisierung (Weltkugel-Icon) wählen.
  3. Felder: lat → Latitude, lon → Longitude ziehen. Optional EventProcessedUTCTime → Tooltips.
  4. Save – fertig! Die Karte zeigt nun den Standort des Helium Atom.
Echtzeit-GPS-Tracking mit Helium, Azure IoT Hub und Power BI
GPS-Tracking Karte in Power BI

Fazit

Mit Helium, Azure IoT Hub und Power BI lässt sich eine vollständige Echtzeit-GPS-Tracking-Lösung ohne eigene Netzwerkinfrastruktur aufbauen. Die Helium-Abstraktion über Channels macht die Cloud-Integration besonders einfach und sicher.

Herstellungsprozess

  1. RFID-Anwesenheitssystem mit Arduino & Python – Daten direkt in phpMyAdmin (XAMPP) speichern
  2. GPS-Datenlogger mit räumlicher Analyse auf Azure IoT Hub
  3. Universelle Android-Fernbedienung mit Arduino, 1Sheeld & IR-Steuerung
  4. Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
  5. Echtzeit-IoT-Herzfrequenzmonitor mit Arduino & MAX30100
  6. Fernsteuerung eines Roboterarms per IoT: Eigenbau mit Arduino MKR1000
  7. Smart IoT-Glas bauen: Füllstand überwachen mit ESP8266, Arduino & Ultraschall
  8. Frequenz & Tastverhältnis präzise messen mit Arduino UNO
  9. Echtzeit-Entfernungsmessung mit Arduino Sonar & Processing-Visualisierung
  10. Azure IoT Schwimmbadsteuerung: Smarte Sensoren & Fernüberwachung