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

Suivi GPS avec Helium, Azure IoT Hub et Power BI

Composants et fournitures

Module de prototypage d'atome d'hélium
× 1
Arduino Zero
× 1
Adafruit Ultimate GPS Breakout
× 1
Planche à pain (générique)
× 1

Applications et services en ligne

Microsoft Azure
Arduino IDE

À propos de ce projet

À propos de ce projet

Helium existe pour aider les développeurs à créer des appareils connectés, sécurisés et à faible consommation d'énergie. Dans ce projet, nous allons utiliser le module de prototypage Helium Atom avec un Arduino Zero et Adafruit Ultimate GPS Breakout pour envoyer des données de manière transparente à Azure IoT Hub, puis à un rapport Power BI pour visualiser les données.

Vous pouvez en savoir plus sur les produits sans fil à faible consommation, sécurisés et longue portée d'Helium et acheter tout le matériel requis sur helium.com/store.

Matériel

La première chose que vous devrez faire est de connecter votre module de prototypage Helium Atom à l'adaptateur Arduino Helium Atom, puis à votre Arduino. Nous utilisons un Arduino Zero pour ce guide, mais vous pouvez utiliser un Uno, Due, M0 ou tout autre Arduino que vous souhaitez.

Une fois que vous avez connecté l'Atom à l'Arduino, vous devriez avoir quelque chose qui ressemble à ceci :

Ensuite, nous devrons attacher l'Adafruit Ultimate GPS Breakout au sandwich Arduino. Nous allons utiliser une maquette ici juste pour rendre les choses plus faciles et plus claires, mais vous pouvez tout aussi facilement câbler le module GPS directement à l'Arduino. Votre câblage doit être sous la forme :

Arduino 5v -> VIN GPS

Arduino GND -> GND GPS

Arduino D12 -> TX GPS

Arduino D10-> GPS RX

Vous devriez avoir quelque chose qui ressemble à ceci une fois que vous avez terminé :

Ok, maintenant que nous avons configuré le côté Arduino, nous devons connecter et alimenter l'élément hélium. Si vous avez un élément cellulaire, il vous suffit de l'allumer et d'attendre que la lumière prenne une couleur sarcelle. C'est ça. Si vous disposez d'un élément Ethernet ou si vous préférez utiliser une connexion Ethernet pour votre élément cellulaire, branchez le port Ethernet de votre élément sur un port compatible DHCP comme l'arrière d'un modem câble ou d'un routeur sans fil. Une fois que vous allumez l'élément et que le voyant à l'avant de l'élément devient vert, vous êtes prêt à partir.

Maintenant que vous avez la configuration matérielle Arduino et Atom et que l'élément est sous tension et connecté, il est temps de configurer tout cela dans le tableau de bord Helium.

Tableau de bord et canaux d'hélium

Tout d'abord, nous devons ajouter notre Atom et notre Element à notre compte utilisateur dans le tableau de bord. Si vous n'avez pas de compte utilisateur mais que vous avez du matériel en main, veuillez nous envoyer un e-mail à [email protected], sinon connectez-vous avec les informations d'identification que vous avez reçues lors de l'achat de votre matériel chez Helium.

Une fois connecté, nous devrons d'abord activer notre élément. En cliquant sur Éléments sur la gauche, puis Ajouter un nouveau en haut à droite vous amène au bon endroit. Tapez les 4 derniers du MAC l'adresse et le HVV à partir de l'étiquette au dos de l'élément, donnez-lui un nom et ajoutez éventuellement des balises. Cliquez sur Activer l'élément pour le faire avancer.

Nous devrons ensuite répéter le même processus pour l'atome. Encore une fois, cliquez sur Atoms sur la gauche, et Ajouter un nouveau , et fournissez le MAC et HVV à partir de l'étiquette Atom, ajoutez éventuellement des balises et cliquez sur Activer Atom .

Ensuite, nous devrons créer un Azure IoT Hub pour agir en tant que point d'ingestion vers Azure pour tous vos appareils Helium Atom. Nous allons supposer que vous avez déjà un compte Azure, sinon vous devrez en créer un.

Une fois que vous vous êtes connecté à Azure, nous allons créer un hub IoT. Cliquez sur le + en haut à gauche, puis Internet des objets , puis IoT Hub :

Vous devrez faire des choix sur la façon dont vous souhaitez configurer votre IoT Hub, puis appuyez sur Créer. Nous vous recommandons de sélectionner Épingler au tableau de bord en bas pour faciliter la recherche plus tard :

Une fois que vous avez terminé et que le déploiement du hub est terminé (cela peut prendre quelques minutes), cliquez dessus depuis votre tableau de bord. Pour configurer le canal d'hélium, nous aurons besoin d'une information provenant du hub. Depuis l'IoT Hub, choisissez Politiques d'accès partagé sur la gauche, sélectionnez RegistryReadWrite , puis cliquez sur l'icône de copie à côté de Chaîne de connexion—clé primaire sur la droite. Cela copiera la chaîne de connexion dans le presse-papiers que nous utiliserons dans le tableau de bord Helium. Veillez à ne pas partager cette chaîne avec une personne en qui vous n'avez pas confiance. (Nous utilisons simplement un hub temporaire dans cet exemple.)

De retour au tableau de bord Helium, nous devons maintenant créer un canal qui correspond à Azure IoT Hub que vous venez de créer. Tout d'abord, cliquez sur Chaînes sur la gauche, et cliquez sur Azure IoT Hub ci-dessous Créer une nouvelle chaîne . Nous allons coller la Chaîne de connexion nous avons copié d'Azure pour créer la chaîne sur l'hélium :

Donnez un nom à la chaîne, puis appuyez sur Créer . Il est important de se souvenir du nom, car vous en aurez besoin dans votre code Arduino pour envoyer des données à ce canal.

Esquisse Arduino

Avec la configuration d'Azure IoT Hub et la création d'un canal Helium, nous avons maintenant besoin d'un croquis Arduino approprié qui utilise les bibliothèques GPS Helium Arduino et Adafruit pour envoyer des emplacements GPS à Helium, puis à notre nouveau canal Azure.

Tout d'abord, vous aurez besoin à la fois de la bibliothèque Helium Arduino et de la bibliothèque GPS Adafruit installées dans votre IDE Arduino. Le moyen le plus simple d'y parvenir est d'aller dans Esquisse -> Inclure la bibliothèque -> Gérer les bibliothèques menu à partir de l'IDE et recherchez à la fois Helium et Adafruit GPS et appuyez sur Installer .

L'esquisse ci-dessous initialise l'atome, crée un canal qui correspond à Azure IoT Hub Le canal que nous avons créé à l'étape précédente collecte les données GPS de la carte GPS Adafruit, les formate en JSON, puis les envoie sur le réseau Helium.

Il y a plus de détails et de guides pour la bibliothèque Helium Atom Arduino ici.

/* * Copyright 2017, Helium Systems, Inc. * Tous droits réservés. Voir LICENCE.txt pour les informations de licence */ #include "Arduino.h" #include "avr/dtostrf.h" #include "Helium.h" #include  #include  #include "wiring_private .h" // fonction pinPeripheral() #define atom_serial Serial1//for GPS #define PIN_SERIAL2_RX (34ul) // Numéro de description de la broche pour PIO_SERCOM sur D12 #define PIN_SERIAL2_TX (36ul) // Numéro de description de la broche pour PIO_SERCOM sur D10 #define PAD_SERIAL2_TX (UART_TX_PAD_2) // Pavé SERCOM 2 #define PAD_SERIAL2_RX (SERCOM_RX_PAD_3) // Pavé SERCOM 3 Uart Serial2(&sercom1, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX);(void SER {COM1_Handler()); }Hélium hélium(&atom_serial); Canal de canal(&helium);//GPS stuff #define gps_serial Serial2 Adafruit_GPS GPS(&gps_serial);void setup() { pinPeripheral(10, PIO_SERCOM); pinPeripheral(12, PIO_SERCOM); Serial.begin(115200); Serial.println("Démarrage"); // Commencer la communication avec Helium Atom // Le débit en bauds diffère selon la carte prise en charge // et est configuré dans Board.h helium.begin(helium_baud_b115200 ); // Connectez l'Atom au réseau Helium Serial.print("Connexion - "); état int =helium.connect(); while (status !=helium_status_OK) { status =helium.connect(); } Serial.println("Réussi"); // Commence à communiquer avec le canal. Cela ne devrait être fait // qu'une seule fois. // // REMARQUE :Veuillez vous assurer que vous avez créé un canal correspondant dans le résultat Helium Dashbaord int8_t ; Serial.print("Création du canal - "); status =channel.begin("Hackster Guide", &result); if (helium_status_OK ==status &&result ==0) { Serial.println("Succeeded"); } else { Serial.println("Échec"); } délai(1000); //Init GPS GPS.begin(9600); GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); GPS.sendCommand(PGCMD_NOANTENNA); retard (2000); }uint32_t timer =millis(); boucle vide() { char c =GPS.read(); if (GPS.newNMEAreceived()) { if (!GPS.parse(GPS.lastNMEA())) return ; } if (timer> millis()) timer =millis(); if (millis() - timer> 2000) { timer =millis(); // réinitialiser la minuterie if (GPS.fix) { char lat[10]; char lon[10]; données de caractère[100] ; dtostrf(GPS.latitudeDegrés, 4, 4, lat); dtostrf(GPS.longitudeDegrés, 4, 4, lon); //formater un objet JSON de lat/lon à envoyer à Azure sprintf(data, "{\"lat\":\"%s\", \"lon\":\"%s\"}", lat, lon); // Envoie les données de localisation au canal configuré int8_t result; //la réponse du routeur hélium Serial.print("Envoi - "); int status =channel.send(data, strlen(data), &result); //status est la réponse de la connexion série Atom if (helium_status_OK ==status &&result ==0) { Serial.print("Envoyé avec succès "); Serial.println(données); } else { Serial.println("Échec"); } } else { Serial.println("Pas de repère GPS !"); } } }  

Une fois les bibliothèques installées, créez une nouvelle esquisse (Fichier -> Nouveau depuis l'IDE Arduino) et collez le code ci-dessus. Connectez votre sandwich Arduino/Atom via USB et appuyez sur Télécharger bouton qui ressemble à une flèche vers la droite.

Après quelques secondes, vous devriez voir les lumières Atom commencer à clignoter en rouge et bleu, puis s'installer dans un motif de clignotement rouge constant. Cela signifie que l'Atom est maintenant connecté au réseau Hélium. Le GPS FIX la lumière devrait également clignoter avec un motif rouge lent. Une fois que cela s'arrête, le module GPS a déterminé votre position et commencera à envoyer des données à Helium. Il est utile d'essayer de placer le GPS près d'une fenêtre ou idéalement d'être complètement à l'extérieur.

Vous pouvez vérifier le Serial Monitor (Outils -> Moniteur série ) depuis l'IDE Arduino pour voir la sortie de débogage. Vous devriez voir des messages indiquant la connexion, la création d'un canal, puis une séquence de Pas de repère GPS ! messages jusqu'à ce qu'une position satellite soit acquise.

Vérifier que les données sont envoyées correctement

Maintenant que l'Arduino, l'Atom et le GPS sont opérationnels, nous pouvons revenir au tableau de bord Helium et nous assurer que les données parviennent au canal Azure.

En cliquant sur Chaînes sur la gauche, puis en sélectionnant le canal Azure que vous avez déjà créé dans les Canaux actifs La section devrait vous amener à une vue détaillée - faire défiler vers le bas devrait vous montrer le journal des événements, où vous verrez, espérons-le, quelque chose comme la capture d'écran ci-dessous. Cela affiche l'horodatage et la taille des données, ainsi qu'un rapport indiquant si elles ont été acheminées avec succès vers Azure :

Si vous jetez un œil à votre Azure IoT Hub sous Device Explorer navigation, vous devriez également voir votre appareil Helium Atom répertorié sous son adresse MAC. En cliquant dessus, vous confirmerez également que nous avons sécurisé cet appareil automatiquement, sans aucune configuration requise, à l'aide d'un certificat X509 signé par le matériel.

Introduire les données dans Power BI

Nous supposerons que vous avez un compte Power BI déjà configuré et un espace de travail déjà créé. (Sinon, rendez-vous sur www.powerbi.com et configurez-en un.)

Avec la configuration de votre compte Power BI, nous devons maintenant créer une tâche Azure Stream Analytics pour récupérer les données d'Azure IoT Hub et les transmettre à Power BI.

Depuis le tableau de bord Azure, cliquez sur Nouveau en haut à gauche et recherchez Stream Analytics Job , en le sélectionnant une fois qu'il apparaît. Cliquez sur Créer en bas à gauche, sélectionnez les options et appuyez sur Créer pour le configurer.

Une fois déployé, nous devrons dire à la tâche de streaming d'utiliser l'IoT Hub en tant qu'entrée et Power BI en tant que sortie. Depuis la page Streaming Job, cliquez sur Entrées dans le menu de gauche, puis Ajouter .

Donnez un alias (nom) à la tâche, puis sélectionnez IoT Hub à partir de la liste déroulante des sources. Choisissez l'IoT Hub approprié dans la liste déroulante IoT Hub et laissez tout le reste par défaut. Vous devriez vous retrouver avec quelque chose ressemblant à ceci :

Une fois l'entrée créée, nous allons créer une sortie qui se connecte à Power BI. Sur la page Tâche de streaming, cliquez sur Sorties dans le menu de gauche, puis Ajouter . Nous choisirons Power BI du évier menu déroulant. Vous devrez ensuite autoriser votre compte Power BI et sélectionner l'espace de travail que vous souhaitez utiliser. Créez un nom pour la table. Vous obtiendrez quelque chose comme ceci :

La dernière étape consiste à créer une requête qui relie l'entrée à la sortie. Encore une fois, cliquez sur Requête du menu de gauche. Vous voudrez que votre requête se présente essentiellement sous la forme qui correspond à la capture d'écran ci-dessous, en fonction du nom que vous avez donné à vos entrées et sorties à l'étape précédente. Cela sélectionnera toutes les données provenant de l'IoT Hub et les affichera dans l'espace de travail Power BI.

Appuyez sur Enregistrer en haut à gauche, et en supposant que vous ayez tout nommé correctement, vous avez presque terminé. Revenez maintenant à la page Aperçu et appuyez sur Démarrer dans la barre de navigation supérieure, et après quelques minutes, vous aurez des données en streaming dans Power BI.

Visualisation dans Power BI

Maintenant que les données circulent, nous pouvons effectuer une visualisation rapide dans Power BI pour nous montrer où tout se trouve sur une carte.

Rendez-vous sur votre espace de travail Power BI et cliquez sur + Créer dans le coin supérieur droit et sélectionnez Signaler . Vous sélectionnez ensuite l'ensemble de données que vous avez créé dans Azure Streaming Job et appuyez sur Créer .

Ensuite, nous choisirons la visualisation de la carte dans le volet de droite, elle ressemble à un globe blanc. À l'extrême droite, vous verrez les champs de données que nous avons envoyés depuis l'Arduino. Faites glisser lat vers Latitude et lon à Longitude dans le volet de gauche. Vous pouvez également faire glisser EventProcessedUTCTime aux info-bulles si vous voulez voir quand il a été envoyé au survol de la souris. Appuyez ensuite sur Enregistrer en haut à droite. C'est ça! Vous aurez maintenant une carte indiquant l'emplacement de votre atome d'hélium attaché à l'Arduino.

Code

  • Atom + Arduino + Adafruit GPS
Atom + Arduino + Adafruit GPSC/C++
/* * Copyright 2017, Helium Systems, Inc. * Tous droits réservés. Voir LICENCE.txt pour les informations de licence*/#include "Arduino.h"#include "avr/dtostrf.h"#include "Helium.h"#include #include #include "wiring_private .h" // fonction pinPeripheral()#define atom_serial Serial1//for GPS#define PIN_SERIAL2_RX (34ul) // Numéro de description de la broche pour PIO_SERCOM sur D12#define PIN_SERIAL2_TX (36ul) // Numéro de description de la broche pour PIO_SERCOM sur D10#define PAD_SERIAL2_TX (UART_TX_PAD_2) // Pavé SERCOM 2#define PAD_SERIAL2_RX (SERCOM_RX_PAD_3) // Pavé SERCOM 3Uart Serial2(&sercom1, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX);(void SER_COM1_Handler()); Canal de canal(&helium);//GPS stuff#define gps_serial Serial2Adafruit_GPS GPS(&gps_serial);void setup() { pinPeripheral(10, PIO_SERCOM); pinPeripheral(12, PIO_SERCOM); Serial.begin(115200); Serial.println("Démarrage"); // Commencer la communication avec Helium Atom // Le débit en bauds diffère selon la carte prise en charge // et est configuré dans Board.h helium.begin(helium_baud_b115200); // Connectez l'Atom au réseau Helium Serial.print("Connexion - "); état int =helium.connect(); while (status !=helium_status_OK) { status =helium.connect(); } Serial.println("Réussi"); // Commence à communiquer avec le canal. Cela ne devrait être fait // qu'une seule fois. // // REMARQUE :Veuillez vous assurer que vous avez créé un canal correspondant dans le résultat Helium Dashbaord int8_t ; Serial.print("Création du canal - "); status =channel.begin("Hackster Guide", &result); if (helium_status_OK ==status &&result ==0) { Serial.println("Succeeded"); } else { Serial.println("Échec"); } délai(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())) return ; } if (timer> millis()) timer =millis(); if (millis() - timer> 2000) { timer =millis(); // réinitialiser la minuterie if (GPS.fix) { char lat[10]; char lon[10]; données de caractère[100] ; dtostrf(GPS.latitudeDegrés, 4, 4, lat); dtostrf(GPS.longitudeDegrés, 4, 4, lon); //formater un objet JSON de lat/lon à envoyer à Azure sprintf(data, "{\"lat\":\"%s\", \"lon\":\"%s\"}", lat, lon); // Envoie les données de localisation au canal configuré int8_t result; //la réponse du routeur hélium Serial.print("Envoi - "); int status =channel.send(data, strlen(data), &result); //status est la réponse de la connexion série Atom if (helium_status_OK ==status &&result ==0) { Serial.print("Envoyé avec succès "); Serial.println(données); } else { Serial.println("Échec"); } } else { Serial.println("Pas de repère GPS !"); } }}

Processus de fabrication

  1. Système de présence utilisant Arduino et RFID avec Python
  2. Enregistreur de données GPS, analyse spatiale et Azure IoT Hub.
  3. Télécommande universelle utilisant Arduino, 1Sheeld et Android
  4. Voltmètre DIY utilisant Arduino et Smartphone
  5. Moniteur de fréquence cardiaque utilisant l'IoT
  6. Utiliser l'IoT pour contrôler à distance un bras robotique
  7. IOT - Smart Jar utilisant ESP8266, Arduino et capteur à ultrasons
  8. Mesure de la fréquence et du cycle de service à l'aide d'Arduino
  9. Piscine Azure IoT