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 de données GPS, analyse spatiale et Azure IoT Hub.

Composants et fournitures

Arduino UNO
× 1
Raspberry Pi 2 Modèle B
× 1
Adafruit Ultimate GPS Breakout
× 1
Connecteur 9V vers Barrel Jack
× 1
Batterie 9V (générique)
× 1
Résistance photo
× 1
LED (générique)
3 transparents, 1 rouge, 1 jaune et 1 vert
× 6
Interrupteur à bouton-poussoir SparkFun 12mm
× 2
Interrupteur à glissière
× 3
Résistance 10k ohm
× 4
Résistance 221 ohm
× 3
Planche à pain sans soudure demi-taille
× 1
Planche à pain sans soudure pleine grandeur
× 1
Câbles de raccordement (générique)
× 1
MicroSD Sandisk 16 Go avec adaptateur
× 2

Applications et services en ligne

Microsoft Windows 10 IoT Core
Microsoft Azure
Arduino IDE
Microsoft Visual Studio 2015
Google Earth Professional
SIG quantique
Microsoft Windows 10 Entreprise

À propos de ce projet

Présentation

La technologie mobile actuelle est devenue très avancée et facile à utiliser avec des cartes d'informations SIG disponibles sur presque tous les types d'appareils. Ce projet peut être transformé en une activité en classe pour enseigner aux enfants les bases du matériel open source, de l'informatique mobile, des technologies géospatiales et du cloud computing.

Ce projet se compose de 3 parties :

1) Enregistreur de données GPS Arduino

Avec de l'aide, les jeunes enfants pourraient construire un appareil qui enregistre les informations de localisation GPS, la mesure de la lumière et le type d'objet localisé. Ils pourraient sortir et marquer l'emplacement de choses prédéterminées (panneaux, arbres, bancs de parc, etc.). Cela permet une meilleure compréhension du monde qui les entoure et une meilleure appréciation des données affichées sur les cartes SIG. Les faibles niveaux d'éclairage la nuit dans les espaces publics peuvent être un problème de sécurité. Accompagnés d'un adulte, ils pouvaient sortir la nuit pour collecter des mesures de lumière pour une analyse plus approfondie.

2) Visualisation et analyse SIG

Visualisez la localisation collectée sur le terrain sur une carte. Estimez les niveaux de luminosité d'une zone en effectuant une analyse d'interpolation spatiale des points et affichez les résultats sur une carte.

3) Utilisation de Windows 10 IoT Core et Azure IoT Hub

Après avoir effectué la visualisation et l'analyse SIG, utilisez Windows 10 IoT Core et Azure IoT Hub pour télécharger et distribuer les données. Cela permet au système d'évoluer facilement pour prendre en charge la gestion des données sur des milliers de collecteurs de données et d'appareils sur le terrain.

Enregistreur de données GPS Arduino

La vidéo suivante donne un aperçu de l'enregistreur de données GPS Arduino Uno et une démonstration rapide. Le code source et le diagramme de la maquette peuvent être trouvés ci-dessous.

Voici quelques informations supplémentaires sur les composants.

Photorésistance

Ces capteurs analogiques mesurent la luminosité de la lumière et sont très simples à utiliser. Voir un exemple avec le code source ici. La lecture analogique mesurera 0 - 1023 mais la plupart des lectures seront inférieures à 200 à moins que la lumière ne soit très brillante. Lors de la construction de votre appareil, essayez quelques lectures légères pour savoir à quoi vous attendre.

Ex. la lumière du soleil est d'environ 1000, l'ombre extérieure pendant la journée est d'environ 900 et directement sous un réverbère la nuit est d'environ 170.

Slot Micro SD

Un bon exemple peut être trouvé dans l'IDE Arduino sous Fichier> Exemples> SD> Enregistreur de données.

GPS ultime d'Adafruit

GPS facile à utiliser. Suivez les exemples ici pour installer les bibliothèques GPS dans votre IDE Arduino.

Voyants d'état des correctifs satellites

La dilution horizontale de précision (HDOP) est une mesure de la précision de la position X,Y provenant du GPS. Plus la valeur HDOP est basse, plus la position est précise. Si le GPS a une position, il renverra la valeur HDOP avec la position de latitude et de longitude. Plus d'informations sur la dilution de précision GPS ici.

  • Rouge - Pas de relevé satellite
  • Jaune – Correction satellite avec HDOP > 1.5.
  • Vert - Correction satellite avec HDOP <= 1.5.

Commutateurs à glissière de type de fonction binaire

Trois commutateurs à glissière sont utilisés pour la représentation binaire de la base 10 0 - 7.  Le commutateur le plus à gauche représente 2^2 ou 4.  Le commutateur central représente 2^1 ou 2.  Le commutateur le plus à droite représente 2^0 ou 1.  Ajout des valeurs basées sur l'état du commutateur donne le nombre de 0 à 7 en base 10 qui correspond au type de fonctionnalité collectée. Idéalement, la personne utilisant l'enregistreur de données GPS Arduino comprendrait la signification du code.

Par exemple :

OFF OFF OFF =0 0 0 =0 =Lecture du capteur de lumièreOFF OFF ON =0 0 1 =1 =Banc de parcOFF ON OFF =0 1 0 =2 =RockOFF ON ON =0 1 1 =3 =Ordures CanON OFF OFF =1 0 0 =4 =TreeON OFF ON =1 0 1 =5 =PayphoneON ON OFF =1 1 0 =6 =LampadaireON ON ON =1 1 1 =7 =Fontaine à eau 

Bouton 

Chaque fois que le bouton est enfoncé, l'appareil ajoute une ligne de texte de valeurs séparées par des virgules (CSV) à datalog.csv sur la carte microSD.

Les données sont au format :

LATITUDE,LONGITUDE,LIGHT_VALUE,FEATURE_TYPE

  • LATITUDE et LONGITUDE  viennent du GPS.
  • LIGHT_VALUE  est la lecture analogique de la photorésistance.
  • FEATURE_TYPE  est la valeur 0 - 7 en fonction des réglages marche/arrêt des 3 commutateurs binaires décrits ci-dessus.

Exemple de données CSV :

40.77221,-73.97392,105,540.77139,-73.97394,60,140.77051,-73.97460,150,640.77225,-73.97650,25,340.77171,-73.97462,43,240.77283,-73.975033,54,1 

Pas d'écran LCD ?

Les multiples LED auraient pu être remplacées par un écran LCD 1602 et quelques boutons supplémentaires, mais il y a eu des problèmes.

  • Avoir le code pour le GPS, la fente pour carte microSD et un écran LCD 1602 compilerait et se déploierait sur l'Arduino Uno, mais la fente pour carte microSD n'était pas stable. Le retrait de l'écran LCD a stabilisé la fente pour carte microSD, de sorte que des LED ont été ajoutées pour fournir une notification suffisante à l'utilisateur. L'utilisation d'un appareil Arduino avec plus de ressources tel que le MEGA permettrait probablement un écran LCD 1602 avec le GPS et la fente pour carte microSD.
  • La batterie 9 V est pratique pour l'enregistreur de données GPS Arduino, mais la batterie ne dure pas longtemps lors de l'alimentation de l'écran LCD 1602. Ce n'était pas un élément critique, donc ça devait disparaître.

Visualisation et analyse SIG

Visualisation des points GPS

Avoir des données SIG au format CSV est génial mais pas très utile à moins que vous ne puissiez les voir sur une carte. Éjectez la carte microSD de l'enregistreur de données GPS Arduino et insérez-la dans un ordinateur Windows 10 sur lequel Google Earth Professional est installé. Allez ici pour les instructions d'installation et de licence. Copiez le fichier texte de la carte microSD sur l'ordinateur et ouvrez-le dans un éditeur de texte. Ajoutez la ligne suivante comme en-tête de colonne en haut du fichier texte et enregistrez-la en tant que fichier .CSV.

LATITUDE,LONGITUDE,LIGHT_VALUE,FEATURE_TYPE

À l'aide de Google Earth Professional, accédez au menu Fichier et choisissez Importer... Recherchez le fichier .CSV et importez-le. Parcourez les options pour créer différents styles de carte pour les icônes représentant les différents types d'entités et affichez les emplacements des points dans Google Earth Professional. La version professionnelle de Google Earth doit être utilisée. La version standard de Google Earth ne permet pas d'importer un fichier .CSV.

Analyse spatiale avec Quantum GIS (QGIS)

QGIS est un SIG open source gratuit populaire avec le programme d'installation et les didacticiels disponibles ici. À l'aide de QGIS, vous pouvez effectuer une analyse spatiale sur l'attribut du capteur de lumière pour la localisation GPS afin d'identifier les zones d'éclairage suffisant et insuffisant la nuit dans un espace public tel qu'un parc.

Étape 1 - Chargez la limite, les sentiers pédestres et d'autres informations pertinentes sur la zone évaluée pour un éclairage insuffisant.

Étape 2 - Chargez les points du fichier .CSV provenant de l'enregistreur de données GPS dans la carte QGIS. Appliquez la symbologie de point et les étiquettes afin que vous puissiez voir visuellement les valeurs de lumière.

Les points afficheront les valeurs du capteur de lumière afin que vous puissiez voir où il fait clair (bleu) et où il fait sombre (rouge). L'affichage uniquement des données ponctuelles n'est pas suffisant lorsque vous essayez d'analyser une zone plus large.

Étape 3 - Effectuez une interpolation sur les données des points pour mieux comprendre la zone entourant et entre les points. L'interpolation est utilisée lorsque vous disposez de données pour certains emplacements et que vous souhaitez estimer les valeurs entre les emplacements connus. Plus d'informations sur l'interpolation ici.

L'interpolation donne une meilleure image des valeurs lumineuses dans le parc. Cette analyse peut être améliorée en fournissant plus de lectures de capteurs de lumière à des emplacements connus.

Étape 4 - Allez collecter plus de lectures de capteur de lumière et chargez-les dans QGIS.

Étape 5 - Réexécutez l'interpolation sur le plus grand ensemble de données.

Vous pouvez voir que la deuxième interpolation montre un modèle similaire à la première interpolation mais elle a plus de détails en raison des points supplémentaires.

Utilisation de Windows 10 IoT Core et Azure IoT Hub.

Mise à l'échelle

L'enregistreur de données GPS Arduino est un appareil simple et bon marché qui peut enregistrer les informations du capteur sur une carte microSD. Ces dispositifs pourraient être largement distribués géographiquement pour collecter des informations. La gestion des informations provenant de ces appareils pourrait être une tâche difficile si vous deviez concevoir un système pour le faire.

En utilisant Windows 10 IoT Core et Azure IoT Hub comme base d'un système de messagerie, le nombre d'appareils pourrait facilement être augmenté jusqu'à des milliers d'appareils fournissant des informations.

Essayez d'abord ces exemples

Avant de continuer, il est fortement recommandé de suivre le didacticiel Prise en main d'Azure IoT Hub pour .NET. Le didacticiel de démarrage vous guidera tout au long des étapes de création d'un compte d'essai Azure, de configuration d'un Azure IoT Hub et de développement des échantillons de base vous permettant d'envoyer et de recevoir des messages IoT Hub.

Téléchargez également Azure IoT Hub Device Explorer pour une administration facile des appareils Windows 10 IoT Core se connectant à votre Azure IoT Hub. Téléchargez la source et/ou le programme d'installation à partir d'ici.

Windows 10 IOT Core sur Raspberry Pi 2

À l'aide d'une machine de développement Windows 10, téléchargez Windows 10 IoT Core pour Raspberry Pi 2 et flashez une carte micoSD à l'aide de Windows IoT Image Helper.

Montez la carte microSD dans le Raspberry Pi 2, branchez-la sur Ethernet et assurez-vous qu'elle est répertoriée dans Windows IoT Core Watcher sur la machine de développement lorsqu'elle démarre.

Connectez un bouton sur une maquette comme le montre l'image ci-dessous. Voir schéma en bas de cette page. Des liens vers le code source suivant peuvent également être trouvés au bas de cette page.

Application Windows universelle pour le téléchargement de données 

Démarrez Visual Studio 2015 sur un ordinateur Windows 10 et choisissez Fichier> Nouveau> Projet. Choisissez le modèle d'application vierge pour l'application Windows universelle. Appelez le nouveau projet IoTHubClientSendEvent. À l'aide de Nuget, importez Microsoft.Azure.Devices.Client et Newtonsoft.Json. Ajoutez également une référence pour les extensions Windows IoT pour l'UWP pour accéder au GPIO sur le Raspberry Pi2.

Une fois que Visual Studio est prêt, ajoutez les instructions using suivantes en haut de la page Mainpage.xaml.cs pour apporter les bibliothèques nécessaires pour parler à Azure et s'interfacer avec les broches GPIO :

à l'aide de Windows.Devices.Gpio ;à l'aide de Newtonsoft.Json ;à l'aide de Microsoft.Azure.Devices.Client ;à l'aide de System.Text ; 

Ajoutez les variables et constantes suivantes à la classe MainPage. La valeur deviceId doit être le nom de l'appareil configuré dans l'explorateur d'appareils Azure IoT Hub.

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

Ajoutez une classe evData pour la sérialisation JSON, ajoutez-la également à la classe MainPage.

 class evData { public string id { get; ensemble; } données de chaîne publique { get; ensemble; } } 

Ajoutez ces 2 lignes à la fonction MainPage. Obtenez la valeur pour le

DEVICE_CONNECTION_STRING à partir de l'explorateur d'appareils Azure IoT Hub comme décrit ci-dessus.

deviceClient =DeviceClient.CreateFromConnectionString("DEVICE_CONNECTION_STRING", TransportType.Http1);initGPIO(); 

Ajouter une fonction pour initialiser le GPIO

private void initGPIO(){ var gpio =GpioController.GetDefault(); boutonGPIO =gpio.OpenPin(boutonPin); // Vérifiez si les résistances de rappel d'entrée sont prises en charge if (buttonGPIO.IsDriveModeSupported(GpioPinDriveMode.InputPullUp)) buttonGPIO.SetDriveMode(GpioPinDriveMode.InputPullUp); else boutonGPIO.SetDriveMode(GpioPinDriveMode.Input); // Définir un délai d'attente anti-rebond pour filtrer le bruit de rebond du commutateur à partir d'un bouton appuyez sur buttonGPIO.DebounceTimeout =TimeSpan.FromMilliseconds(50); // Inscrivez-vous à l'événement ValueChanged afin que notre fonction buttonPin_ValueChanged // soit appelée lorsque le bouton est enfoncé buttonGPIO.ValueChanged +=buttonPin_ValueChanged; } 

Ensuite, ajoutez une fonction à appeler pour le gestionnaire de clic sur le bouton.

private void buttonPin_ValueChanged(GpioPin sender, GpioPinValueChangedEventArgs e) { // envoie un message lorsque les boutons sont enfoncés if (e.Edge ==GpioPinEdge.FallingEdge) { sendMessageToIOTHub(); } } 

Ajoutez la fonction sendMessagetoIOTHub() pour envoyer un message à 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 ="Je viens d'enregistrer !!"; } msg.id =deviceId; msg.data =maChaîne; var messageString =JsonConvert.SerializeObject(msg); var message =new Message(Encoding.ASCII.GetBytes(messageString)); wait deviceClient.SendEventAsync(message); } 

Compilez la solution pour le Debug x86 par défaut pour vous assurer qu'il fonctionne. Ensuite, changez la cible en Release ARM et sélectionnez Remote Machine.

Si le périphérique Windows 10 IOT Core est sur le réseau, Visual Studio 2015 le verra et vous permettra de le définir comme cible de déploiement.

Astuce rapide :

Avant de déployer l'application sur Windows IOT Core, cliquez avec le bouton droit sur le projet et choisissez les propriétés. Dans le panneau Application, cliquez sur le bouton Package Manifest. Cliquez sur l'onglet Emballage et remplacez le nom du package par un nom donné (par exemple, IoTHubClientSendEvent ). Si vous ne le faites pas, il sera difficile d'identifier votre application dans l'interface Web Windows 10 IOT Core.

Allez maintenant dans le menu Générer et choisissez Déployer la solution. Une fois le déploiement terminé, recherchez les appareils Windows 10 IOT Core dans Windows IOT Core Watcher. Cliquez avec le bouton droit sur la ligne et choisissez Navigateur Web ici. Connectez-vous avec l'utilisateur administrateur local et cliquez sur le lien Applications sur la gauche. Sélectionnez le nom de l'application qui vient d'être déployée dans la liste déroulante Applications installées et cliquez sur Démarrer.

Laissons cela pour le moment et développons l'application pour surveiller l'IoT Hub.

Application Windows universelle pour recevoir des messages du hub Azure IOT

Démarrez Visual Studio 2015 sur Windows 10 et créez une nouvelle application de console Windows C#. Nommez le projet IoTEventHubReceiver . À l'aide de Nuget, ajoutez WindowsAzure.ServiceBus et Newtonsoft.Json .

Ajoutez les instructions using suivantes en haut du fichier Program.cs :

à l'aide de System.IO;à l'aide de System.Threading;à l'aide de Newtonsoft.Json;à l'aide de Microsoft.ServiceBus.Messaging ; 

Ajoutez une classe à la classe IoTEventHubReceiver pour les données JSON qui seront désérialisées après avoir été reçues d'Azure IoT Hub.

class evData{ public string id { get; ensemble; } données de chaîne publique { get; ensemble; }} 

Ajoutez des variables pour recevoir des messages d'Azure IoT Hub. Obtenez la valeur de IOT_HUB_CONNECTION_STRING à partir du gestionnaire de périphériques Azure IoT Hub.

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

Ajoutez ces 2 lignes dans la fonction main() pour créer l'EventHubClient et commencer à recevoir des messages :

eventHubClient =EventHubClient.CreateFromConnectionString(connectionString, iotHubD2cEndpoint);SynchMessages();  

Enfin, ajoutez la fonction SynchMessages() pour configurer la boucle continue et ReceiveMessages pour recevoir les messages et les enregistrer sur le disque.

private static async void SynchMessages(){ while (true) { var d2cPartitions =eventHubClient.GetRuntimeInformation().PartitionIds; foreach (partition de chaîne dans d2cPartitions) { ReceiveMessagesFromDeviceAsync(partition); } }}Tâche statique asynchrone privée ReceiveMessagesFromDeviceAsync(partition de chaîne){ var eventHubReceiver =eventHubClient.GetDefaultConsumerGroup().CreateReceiver(partition, DateTime.UtcNow); while (true) { EventData eventData =wait eventHubReceiver.ReceiveAsync(); if (eventData ==null) continue ; données de chaîne =Encoding.UTF8.GetString(eventData.GetBytes()); evData d =JsonConvert.DeserializeObject(données); Writer StreamWriter =new StreamWriter("c:\\gps\\download\\" + d.id + "." + DateTime.Now.Year + "." + DateTime.Now.Mois + "." + DateTime.Now .Day + "." + DateTime.Now.Hour + "." + DateTime.Now.Minute + "." + DateTime.Now.Second + ".csv"); écrivain.Write(d.data); écrivain.Fermer(); Console.WriteLine(string.Format( "Message reçu de {0}.\n{1}", d.id, d.data)); }} 

Sur le poste de développement, créez un dossier "c:\gps\download" pour y enregistrer les messages reçus.

Exécution des applications pour envoyer et recevoir des messages Azure IoT Hub

Démarrez le IoTEventHubReceiver programme sur le poste de développement et attendez que l'écran de la console s'affiche. Ensuite, appuyez sur le bouton connecté au GPIO sur le Raspberry Pi 2 exécutant Windows 10 IoT Core et le IoTHubClientSendEvent programme. Appuyez sur le bouton pour envoyer un message avec le message "Just check in!" texte à Azure IoT Event Hub. La console sur la machine de développement affichera le message suivant une fois le message reçu.

Message reçu de MakerChallengeDevice2.Je viens de m'enregistrer ! 

L'envoi du contenu d'un fichier texte en tant que message est également possible tant que le texte est inférieur à 256 Ko, car il s'agit de la taille de message maximale actuelle pour Azure Iot Hub. Voir le sendMessageToIOTHub() fonction ci-dessus pour voir comment le fichier est lu et sérialisé, et voir le ReceiveMessagesFromDeviceAsync() fonction ci-dessus pour voir comment le message est désérialisé et écrit dans un fichier.

Actuellement, Windows 10 IoT Core n'autorise pas l'accès aux fichiers aux chemins absolus via le code, mais après de nombreux dépannages, j'ai découvert qu'il pouvait référencer un fichier dans le même répertoire que l'exécutable. En général, ce n'est pas la meilleure pratique, mais cela fonctionne. Pour placer le fichier texte dans le dossier de l'application, faites un clic droit sur l'appareil dans Windows 10 IoT Core Watcher et choisissez Ouvrir le partage réseau. Authentifiez-vous auprès de l'utilisateur administrateur local et accédez à :

c$\Data\Users\DefaultAccount\AppxLayouts

Recherchez un dossier portant le nom de votre application déployée, placez-y un fichier texte pouvant être lu par l'exécutable. Pour cet exemple, le fichier texte doit s'appeler data.csv et doit être inférieur à 256 Ko. Un bon exemple est un fichier CSV répertoriant la latitude, la longitude, la lecture du capteur de lumière et le type d'entité. Cliquez sur le bouton connecté au GPIO Raspberry Pi2 et la console affichera ce qui suit :

Message reçu de MakerChallengeDevice2.LAT,LNG,LT,TYP45.45926,-110.57361,45,645.78546,-110.02487,156,3 

Développer le téléchargement de fichiers :si vous suivez les exemples de mise en route avec Azure IoT Hub pour .NET, vous trouverez un exemple de téléchargement de fichiers vers Azure Blob Storage dans la section Étapes suivantes.

Résumé

Ce projet montre comment créer un simple enregistreur de données GPS Arduino pour enregistrer des informations, analyser les données collectées et utiliser le cloud pour gérer les informations collectées. Il existe de nombreux points d'extension à ce projet tels que :

  • Enregistrement des informations de différents types de capteurs sur l'enregistreur de données GPS Arduino.
  • Téléchargez les informations directement depuis l'appareil Arduino vers Azure via WIFI, Bluetooth ou cellulaire.
  • Effectuez différents types d'analyses spatiales pour être mieux équipé pour prendre des décisions concernant l'environnement.
  • Développer une application Web de cartographie pour afficher les informations brutes ou analysées.
  • Utilisez EventProcessors dans Azure Stream Analystics pour agir sur les données telles qu'elles sont reçues par l'IoT Hub.

Code

Enregistreur de données GPS Arduino
Croquis et schéma de câblage pour Arduino GPS Datalogger.https://github.com/ShawnCruise/ArduinoGPSDataLogger
Exemple Azure IoT Hub
Application Windows universelle à déployer sur Windows 10 IoT Core pour envoyer des messages à Azure Iot Hub.https://github.com/ShawnCruise/AzureIotHubExample
SDK Azure
Obtenez Azure IoT Device Explorer à partir d'ici.https://github.com/Azure/azure-iot-sdks/blob/master/tools/DeviceExplorer/doc/how_to_use_device_explorer.md
Exemples de base de Windows 10 IoT
Exemples à déployer sur Windows 10 IoT Core.https://github.com/ms-iot/samples

Schémas

GPSDataLogger.fzz RPi2%20IOT%20Core.fzz

Processus de fabrication

  1. Avnet Silica présente les technologies d'IA et d'IoT au monde de l'embarqué 2019
  2. Windows 10 IoT Core et SHT15
  3. Enregistreur de données de température et d'humidité
  4. IOT - Smart Jar utilisant ESP8266, Arduino et capteur à ultrasons
  5. Joyeux anniversaire :lumières et sons
  6. module GPS u-blox LEA-6H 02 avec Arduino et Python
  7. Pédale de vitesse et pédale pour guitare !
  8. Piscine Azure IoT
  9. Guide des PCB et de l'IoT