Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Enregistreur GPS avec Analyse Spatiale sur Azure IoT Hub

Composants et Fournitures

Composant Quantité
Arduino UNO 1
Raspberry Pi 2 Model B 1
Adafruit Ultimate GPS Breakout 1
Connecteur 9V vers Jack Barrel 1
Batterie 9V (générique) 1
Photorésistance 1
LED (générique) 6 (3 transparentes, 1 rouge, 1 jaune, 1 verte)
Bouton poussoir 12mm SparkFun 2
Interrupteur à glissière 3
Résistance 10 kΩ 4
Résistance 221 Ω 3
Plaque d'essai demi-format 1
Plaque d'essai format complet 1
Fils de liaison (générique) 1
SanDisk 16 Go MicroSD avec adaptateur 2

Applications et Services en Ligne

À Propos de ce Projet

Introduction

La technologie mobile actuelle intègre des cartes SIG sur presque tous les appareils. Ce projet peut devenir une activité pédagogique pour initier les enfants au matériel open-source, l'informatique mobile, les technologies géospatiales et le cloud computing.

Trois parties composent ce projet :

  1. Enregistreur GPS Arduino - Les enfants construisent un dispositif enregistrant position GPS, luminosité et type d'objet. Ils sortent marquer des emplacements (panneaux, arbres, bancs...), comprenant mieux leur environnement et les données des cartes SIG. Accompagnés d'un adulte, ils peuvent mesurer l'éclairage nocturne pour analyse de sécurité.
  2. Visualisation et Analyse SIG - Affichage des points sur carte, interpolation spatiale des niveaux de lumière, visualisation des résultats.
  3. Windows 10 IoT Core et Azure IoT Hub - Téléchargement et distribution des données, montée en charge facile vers milliers de collecteurs.

Enregistreur GPS Arduino

La vidéo présente le dispositif et une démonstration. Code source et schéma de câblage ci-dessous.

Photorésistance

Capteur analogique mesurant la luminosité (0-1023). Exemples : plein soleil ~1000, ombre jour ~900, sous réverbère nuit ~170.

Emplacement Micro SD

Exemple dans Arduino IDE : Fichier > Exemples > SD > Datalogger.

Adafruit Ultimate GPS

GPS simple d'utilisation. Suivez les exemples pour installer les bibliothèques.

LEDs État Fixation Satellitaire (HDOP)

HDOP (Horizontal Dilution of Precision) mesure la précision X,Y. Plus la valeur est basse, plus la position est précise.

Interrupteurs à Glissière pour Type d'Objet (Binaire)

Trois interrupteurs codent en binaire (base 10 : 0-7). Gauche = 2² (4), Centre = 2¹ (2), Droite = 2⁰ (1).

Exemple :

OFF OFF OFF = 0 = Lecture capteur lumière
OFF OFF ON  = 1 = Banc de parc
OFF ON OFF  = 2 = Roche
OFF ON ON   = 3 = Poubelle
ON OFF OFF  = 4 = Arbre
ON OFF ON   = 5 = Cabine téléphonique
ON ON OFF   = 6 = Réverbère
ON ON ON    = 7 = Fontaine d'eau

Bouton

Chaque pression ajoute une ligne CSV sur la carte MicroSD :

LATITUDE,LONGITUDE,VALEUR_LUMIERE,TYPE_OBJET

Exemple données CSV :

40.77221,-73.97392,105,5
40.77139,-73.97394,60,1
40.77051,-73.97460,150,6
40.77225,-73.97650,25,3
40.77171,-73.97462,43,2
40.77283,-73.975033,54,1

Pourquoi pas d'écran LCD ?

Visualisation et Analyse SIG

Visualisation des Points GPS

Insérez la MicroSD dans un PC Windows 10 avec Google Earth Pro. Copiez le fichier texte, ajoutez l'en-tête LATITUDE,LONGITUDE,LIGHT_VALUE,FEATURE_TYPE, sauvegardez en .CSV. Importez dans Google Earth Pro (version Pro requise pour import CSV). Créez des styles d'icônes par type d'objet.

Enregistreur GPS avec Analyse Spatiale sur Azure IoT Hub

Analyse Spatiale avec QGIS

QGIS (gratuit, open-source) permet l'interpolation spatiale sur l'attribut luminosité pour identifier zones bien/insuffisamment éclairées.

  1. Charger limites, sentiers, infos de la zone.
  2. Enregistreur GPS avec Analyse Spatiale sur Azure IoT Hub
  3. Charger les points du CSV. Appliquer symbologie/étiquettes pour voir valeurs lumière.
  4. Enregistreur GPS avec Analyse Spatiale sur Azure IoT Hub
  5. Interpoler les données ponctuelles pour estimer les valeurs entre points connus.
  6. Enregistreur GPS avec Analyse Spatiale sur Azure IoT Hub
  7. Collecter plus de mesures et les charger dans QGIS.
  8. Enregistreur GPS avec Analyse Spatiale sur Azure IoT Hub
  9. Relancer l'interpolation sur le jeu de données étendu.
  10. Enregistreur GPS avec Analyse Spatiale sur Azure IoT Hub

La seconde interpolation montre un motif similaire mais plus détaillé grâce aux points supplémentaires.

Utilisation de Windows 10 IoT Core et Azure IoT Hub

Montée en Charge

L'enregistreur Arduino est simple et peu coûteux. Gérer les données de milliers de dispositifs géographiquement dispersés est un défi. Windows 10 IoT Core et Azure IoT Hub comme base de messagerie permettent une montée en charge aisée.

Prérequis : Exemples de Démarrage

Suivez le tutoriel "Getting Started with Azure IoT Hub for .NET" : création compte Azure, configuration IoT Hub, exemples d'envoi/réception. Téléchargez aussi Azure IoT Hub Device Explorer pour l'administration.

Windows 10 IoT Core sur Raspberry Pi 2

Depuis un PC Windows 10 : téléchargez Windows 10 IoT Core pour RPi2, flashez une MicroSD avec Windows IoT Image Helper. Insérez la carte, connectez Ethernet, vérifiez l'apparition dans Windows IoT Core Watcher. Connectez un bouton sur plaque d'essai (schéma en bas).

Enregistreur GPS avec Analyse Spatiale sur Azure IoT Hub

Application Universelle Windows pour Envoi de Données

Visual Studio 2015 : Nouveau projet > Application Universelle Windows > Modèle "Blank App". Nom : IoTHubClientSendEvent. NuGet : Microsoft.Azure.Devices.Client et Newtonsoft.Json. Ajouter référence "Windows IoT Extensions for UWP" pour GPIO.

Dans MainPage.xaml.cs :

using Windows.Devices.Gpio;
using Newtonsoft.Json;
using Microsoft.Azure.Devices.Client;
using System.Text;

// Variables
private const int buttonPin = 6;
private GpioPin buttonGPIO;
static DeviceClient deviceClient;
static string deviceId = "MakerChallengeDevice2";
static string uploadFile = "data.csv";

// Classe pour sérialisation JSON
class evData {
  public string id { get; set; }
  public string data { get; set; }
}

// Dans constructeur MainPage()
deviceClient = DeviceClient.CreateFromConnectionString("DEVICE_CONNECTION_STRING", TransportType.Http1);
initGPIO();

// Initialisation GPIO
private void initGPIO() {
  var gpio = GpioController.GetDefault();
  buttonGPIO = gpio.OpenPin(buttonPin);
  if (buttonGPIO.IsDriveModeSupported(GpioPinDriveMode.InputPullUp))
    buttonGPIO.SetDriveMode(GpioPinDriveMode.InputPullUp);
  else
    buttonGPIO.SetDriveMode(GpioPinDriveMode.Input);
  buttonGPIO.DebounceTimeout = TimeSpan.FromMilliseconds(50);
  buttonGPIO.ValueChanged += buttonPin_ValueChanged;
}

// Gestion clic bouton
private void buttonPin_ValueChanged(GpioPin sender, GpioPinValueChangedEventArgs e) {
  if (e.Edge == GpioPinEdge.FallingEdge) {
    sendMessageToIOTHub();
  }
}

// Envoi vers Azure IoT Hub
private static async void sendMessageToIOTHub() {
  string myString;
  var msg = new evData();
  if (File.Exists(uploadFile)) {
    myString = System.IO.File.ReadAllText(uploadFile);
  } else {
    myString = "Just checking in!!";
  }
  msg.id = deviceId;
  msg.data = myString;
  var messageString = JsonConvert.SerializeObject(msg);
  var message = new Message(Encoding.ASCII.GetBytes(messageString));
  await deviceClient.SendEventAsync(message);
}

Compiler en Debug x86, puis passer en Release ARM et "Remote Machine" pour déploiement sur le RPi2.

Enregistreur GPS avec Analyse Spatiale sur Azure IoT Hub

Astuce : Avant déploiement, clic droit projet > Propriétés > Package Manifest > Onglet Packaging > Changer "Package Name" (ex: IoTHubClientSendEvent) pour identification facile dans l'interface web Windows 10 IoT Core.

Build > Deploy Solution. Dans IoT Core Watcher : clic droit appareil > "Webbrowser Here". Connectez-vous (Administrateur local), onglet Apps, sélectionnez l'application déployée, cliquez Start.

Enregistreur GPS avec Analyse Spatiale sur Azure IoT Hub

Application Universelle Windows pour Réception Messages Azure IoT Hub

Visual Studio 2015 : Nouveau projet > Application Console C# Windows. Nom : IoTEventHubReceiver. NuGet : WindowsAzure.ServiceBus et Newtonsoft.Json.

using System.IO;
using System.Threading;
using Newtonsoft.Json;
using Microsoft.ServiceBus.Messaging;

class evData {
  public string id { get; set; }
  public string data { get; set; }
}

static string connectionString = "IOT_HUB_CONNECTION_STRING";
static string iotHubD2cEndpoint = "messages/events";
static EventHubClient eventHubClient;

static void Main() {
  eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, iotHubD2cEndpoint);
  SynchMessages();
}

private static async void SynchMessages() {
  while (true) {
    var d2cPartitions = eventHubClient.GetRuntimeInformation().PartitionIds;
    foreach (string partition in d2cPartitions) {
      ReceiveMessagesFromDeviceAsync(partition);
    }
  }
}

private async static Task ReceiveMessagesFromDeviceAsync(string partition) {
  var eventHubReceiver = eventHubClient.GetDefaultConsumerGroup().CreateReceiver(partition, DateTime.UtcNow);
  while (true) {
    EventData eventData = await eventHubReceiver.ReceiveAsync();
    if (eventData == null) continue;
    string data = Encoding.UTF8.GetString(eventData.GetBytes());
    evData d = JsonConvert.DeserializeObject<evData>(data);
    StreamWriter writer = new StreamWriter("c:\\gps\\download\\" + d.id + "." + DateTime.Now.Year + "." + DateTime.Now.Month + "." + DateTime.Now.Day + "." + DateTime.Now.Hour + "." + DateTime.Now.Minute + "." + DateTime.Now.Second + ".csv");
    writer.Write(d.data);
    writer.Close();
    Console.WriteLine(string.Format("Message reçu de {0}.\n{1}", d.id, d.data));
  }
}

Créez le dossier c:\gps\download sur le poste de développement.

Exécution des Applications d'Envoi/Réception

  1. Lancez IoTEventHubReceiver sur le poste de développement (console affichée).
  2. Appuyez sur le bouton GPIO du RPi2 (Windows 10 IoT Core + IoTHubClientSendEvent).
  3. Message "Just checking in!" envoyé → Console affiche : Message received from MakerChallengeDevice2. Just checking in!

Envoi de fichier texte possible (< 256 Ko, limite message Azure IoT Hub). Voir fonctions sendMessageToIOTHub() et ReceiveMessagesFromDeviceAsync().

Windows 10 IoT Core n'autorise pas l'accès aux chemins absolus, mais permet l'accès aux fichiers dans le répertoire de l'exécutable. Pour placer data.csv : clic droit appareil dans IoT Core Watcher > "Open Network Share" > Authentification Administrateur > Parcourir vers :

c$\Data\Users\DefaultAccount\AppxLayouts\[NomApplicationDeployee]

Placez-y data.csv (< 256 Ko). Exemple CSV : Latitude, Longueur, Lumière, Type. Appuyez sur le bouton → Console affiche les données.

Message received from MakerChallengeDevice2.
LAT,LNG,LT,TYP
45.45926,-110.57361,45,6
45.78546,-110.02487,156,3

Pour l'upload de fichiers plus volumineux : voir l'exemple "Upload files to Azure Blob Storage" dans les "Next Steps" du tutoriel .NET.

Résumé

Ce projet montre comment créer un enregistreur GPS Arduino simple, analyser les données collectées, et utiliser le cloud pour les gérer. Nombreuses extensions possibles :

  • Différents types de capteurs sur l'enregistreur Arduino.
  • Upload direct depuis Arduino vers Azure via WiFi, Bluetooth ou Cellulaire.
  • Autres types d'analyse spatiale pour décisions environnementales.
  • Application web de cartographie pour afficher données brutes ou analysées.
  • EventProcessors dans Azure Stream Analytics pour agir sur les données à la réception.

Code

Enregistreur GPS Arduino

Sketch et schéma de câblage : GitHub

Exemple Azure IoT Hub

Application UWP pour Windows 10 IoT Core envoyant messages vers Azure IoT Hub : GitHub

Azure SDK

Azure IoT Device Explorer : GitHub

Exemples Windows 10 IoT Core

GitHub

Schémas

Enregistreur GPS avec Analyse Spatiale sur Azure IoT Hub GPSDataLogger.fzz
Enregistreur GPS avec Analyse Spatiale sur Azure IoT Hub RPi2%20IOT%20Core.fzz

Processus de fabrication

  1. Avnet Silica Présente IA, IoT et Connectivité de Pointe à Embedded World 2019
  2. Surveillance Précise de Température et Humidité avec SHT15 sur Windows 10 IoT Core
  3. Enregistreur de Température et Humidité Arduino avec DHT11 et Shield Ethernet
  4. Bocal Intelligent IoT avec ESP8266, Arduino et Capteur Ultrasonique – Surveillance Temps Réel
  5. Célébrez avec Lumière et Son : Projet Arduino Anniversaire DIY
  6. Module GPS u-blox LEA‑6H 02 : guide d'intégration Arduino et Python
  7. Médiator Motorisé et Pédale d'Effet DIY – Impression 3D et Arduino
  8. Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance
  9. Maîtriser la conception de circuits imprimés pour l'Internet des objets : Guide complet