Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Seguimiento GPS mediante Helium, Azure IoT Hub y Power BI

Componentes y suministros

Módulo de creación de prototipos de átomos de helio
× 1
Arduino Zero
× 1
Adafruit Ultimate GPS Breakout
× 1
Breadboard (genérico)
× 1

Aplicaciones y servicios en línea

Microsoft Azure
Arduino IDE

Acerca de este proyecto

Acerca de este proyecto

El helio existe para ayudar a los desarrolladores a construir dispositivos conectados, seguros y de bajo consumo. En este proyecto, analizaremos el uso del módulo Helium Atom Prototyping con Arduino Zero y Adafruit Ultimate GPS Breakout para enviar datos sin problemas a Azure IoT Hub y luego a un informe de Power BI para visualizar los datos.

Puede obtener más información sobre los productos inalámbricos de largo alcance, seguros y de bajo consumo de energía de Helium y comprar todo el hardware necesario en helium.com/store.

Hardware

Lo primero que deberá hacer es conectar su módulo Helium Atom Prototyping al adaptador Helium Atom Arduino y luego a su Arduino. Estamos usando un Arduino Zero para esta guía, pero puede usar Uno, Due, M0 o cualquier otro Arduino que desee.

Una vez que haya conectado el Atom al Arduino, debería tener algo parecido a esto:

A continuación, necesitaremos conectar Adafruit Ultimate GPS Breakout al sándwich Arduino. Vamos a usar una placa de pruebas aquí solo para hacer las cosas más fáciles y claras, pero podría conectar fácilmente la conexión del GPS directamente al Arduino. Su cableado debe tener la forma de:

Arduino 5v -> GPS VIN

Arduino GND -> GPS GND

Arduino D12 -> GPS TX

Arduino D10-> GPS RX

Debería tener algo que se vea así una vez que haya terminado:

Bien, ahora que tenemos el lado de Arduino configurado, necesitamos conectar y encender el elemento de helio. Si tiene un elemento celular, solo tiene que encenderlo y esperar a que la luz se torne de color verde azulado. Eso es. Si tiene un elemento Ethernet, o si prefiere usar una conexión Ethernet para su elemento celular, conecte el puerto Ethernet de su elemento en un puerto habilitado para DHCP como la parte posterior de un módem de cable o enrutador inalámbrico. Una vez que encienda el Element y la luz en el frente del Element se vuelva verde, estará listo.

Ahora que tiene la configuración del hardware Arduino y Atom, y la Element está encendida y conectada, es hora de configurar todo esto en Helium Dashboard.

Panel y canales de helio

Primero, debemos agregar nuestro Átomo y Elemento a nuestra cuenta de usuario en el panel de control. Si no tiene una cuenta de usuario pero tiene equipo a mano, envíenos un correo electrónico a [email protected]; de lo contrario, inicie sesión con las credenciales que recibió cuando compró su hardware en Helium.

Una vez que haya iniciado sesión, primero deberemos activar nuestro elemento. Haciendo clic en Elementos a la izquierda, luego Agregar nuevo en la parte superior derecha te lleva al lugar correcto. Escriba los últimos 4 de la MAC dirección y el HVV de la etiqueta en la parte posterior del Elemento, asígnele un nombre y, opcionalmente, agregue algunas etiquetas. Haga clic en Activar elemento . para ponerlo en marcha.

Luego, tendremos que repetir el mismo proceso para Atom. Nuevamente, haga clic en Átomos . a la izquierda y Agregar nuevo y proporcione el MAC y HVV de la etiqueta Atom, opcionalmente agregue algunas etiquetas y haga clic en Activar Atom .

A continuación, necesitaremos crear un Azure IoT Hub para que actúe como un punto de ingestión de Azure para todos sus dispositivos Helium Atom. Asumiremos que ya tiene una cuenta de Azure, de lo contrario, deberá crear una.

Una vez que haya iniciado sesión en Azure, crearemos un IoT Hub. Haga clic en + en la parte superior izquierda, luego Internet de las cosas , luego IoT Hub :

Deberá tomar algunas decisiones sobre cómo desea configurar su IoT Hub y luego presionar Crear. Le recomendamos que seleccione Anclar al panel . en la parte inferior para que sea más fácil encontrarlo más tarde:

Una vez que haya terminado y el centro haya terminado de implementarse (esto puede demorar unos minutos), haga clic en él desde su panel de control. Para configurar el canal de helio, necesitaremos un dato del interior del concentrador. Desde dentro de IoT Hub, elija Políticas de acceso compartido a la izquierda, seleccione RegistryReadWrite y, a continuación, haga clic en el icono de copia junto a Cadena de conexión:clave principal A la derecha. Esto copiará la cadena de conexión al portapapeles que usaremos en Helium Dashboard. Tenga cuidado de no compartir esta cadena con nadie en quien no confíe. (Solo estamos usando un centro temporal en este ejemplo).

De vuelta en Helium Dashboard, ahora necesitamos crear un canal que se asigne al Azure IoT Hub que acaba de crear. Primero, haga clic en Canales . a la izquierda y haga clic en Azure IoT Hub debajo de Crear nuevo canal . Vamos a pegar la Cadena de conexión copiamos de Azure para crear el canal en helio:

Dale un nombre al canal y luego presiona Crear . Es importante recordar el nombre, ya que lo necesitará en su código Arduino para enviar datos a este canal.

Bosquejo de Arduino

Con la configuración de Azure IoT Hub y un canal de helio creado, ahora necesitamos un Arduino Sketch adecuado que utilice las bibliotecas de GPS Helium Arduino y Adafruit para enviar ubicaciones de GPS a Helium y luego a nuestro canal de Azure recién creado.

En primer lugar, necesitará tanto la biblioteca Helium Arduino como la biblioteca Adafruit GPS instaladas en su Arduino IDE. La forma más fácil de lograr esto es ir a Sketch -> Incluir biblioteca -> Administrar bibliotecas dentro del IDE y busque Helium y Adafruit GPS y presiona Instalar .

El siguiente boceto inicializa Atom, crea un canal que coincide con Azure IoT Hub El canal que creamos en el paso anterior, recopila datos GPS de la placa Adafruit GPS, lo formatea en JSON y luego lo envía a través de la red Helium.

Hay más detalles y guías para la biblioteca Helium Atom Arduino aquí.

  / * * Copyright 2017, Helium Systems, Inc. * Todos los derechos reservados. Consulte LICENCE.txt para obtener información sobre la licencia * / #include "Arduino.h" #include "avr / dtostrf.h" #include "Helium.h" #include  #include  #include "wire_private .h "// función pinPeripheral () #define atom_serial Serial1 // para GPS #define PIN_SERIAL2_RX (34ul) // Número de descripción de pin para PIO_SERCOM en D12 #define PIN_SERIAL2_TX (36ul) // Número de descripción de pin para PIO_SERCOM en D10 #define PAD_SERCOM (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_Hlerial_TX) () {) } Helio helio (&atom_serial); Channel channel (&helium); // Cosas de GPS #define gps_serial Serial2 Adafruit_GPS GPS (&gps_serial); void setup () {pinPeripheral (10, PIO_SERCOM); pinPeripheral (12, PIO_SERCOM); Serial.begin (115200); Serial.println ("Iniciando"); // Comience la comunicación con Helium Atom // La velocidad en baudios difiere según la placa admitida // y está configurada en Board.h helium.begin (helium_baud_b115200); // Conecta el Atom a la red Helium Serial.print ("Conectando -"); int status =helium.connect (); while (status! =helium_status_OK) {status =helium.connect (); } Serial.println ("Correcto"); // Comienza a comunicarte con el canal. Esto solo debería tener que // hacerse una vez. // // NOTA:asegúrese de haber creado un canal coincidente en el resultado de Helium Dashbaord int8_t; Serial.print ("Creando canal -"); status =channel.begin ("Guía de piratas informáticos", &resultado); if (helium_status_OK ==estado &&resultado ==0) {Serial.println ("Correcto"); } else {Serial.println ("Fallido"); } retraso (1000); // Iniciar GPS GPS.begin (9600); GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); GPS.sendCommand (PGCMD_NOANTENNA); retraso (2000); } uint32_t timer =millis (); bucle vacío () {char c =GPS.read (); if (GPS.newNMEAreceived ()) {if (! GPS.parse (GPS.lastNMEA ())) return; } if (temporizador> millis ()) temporizador =millis (); if (millis () - temporizador> 2000) {temporizador =millis (); // reinicia el temporizador if (GPS.fix) {char lat [10]; char lon [10]; datos de char [100]; dtostrf (GPS.latitudeDegrees, 4, 4, lat); dtostrf (GPS.longitudeDegrees, 4, 4, lon); // formatea un objeto JSON de lat / lon para enviarlo a Azure sprintf (data, "{\" lat \ ":\"% s \ ", \" lon \ ":\"% s \ "}", lat, lon); // Envía los datos de ubicación al canal configurado int8_t result; // la respuesta del Helium Router Serial.print ("Sending -"); int status =channel.send (datos, strlen (datos), &resultado); // estado es la respuesta de la conexión en serie Atom if (helium_status_OK ==estado &&resultado ==0) {Serial.print ("Enviado con éxito"); Serial.println (datos); } else {Serial.println ("Fallido"); }} else {Serial.println ("¡No hay GPS fijo!"); }}}  

Con las bibliotecas instaladas, cree un nuevo boceto ( Archivo -> Nuevo desde dentro del IDE de Arduino) y pegue el código anterior. Conecte su sándwich Arduino / Atom a través de USB y presione Cargar botón que parece una flecha hacia la derecha.

Después de unos segundos, debería ver que las luces de Atom comienzan a parpadear en rojo y azul, y luego se establecen en un patrón de parpadeo rojo constante. Esto significa que el Atom ahora está conectado a la red Helium. El GPS FIX La luz también debe parpadear con un patrón rojo lento. Una vez que esto se detiene, el módulo GPS se ha fijado en su ubicación y comenzará a enviar datos a Helium. Es útil intentar colocar el GPS cerca de una ventana o, idealmente, estar completamente afuera.

Puede consultar el Serial Monitor ( Herramientas -> Monitor de serie ) desde el IDE de Arduino para ver la salida de depuración. Debería ver mensajes que muestren la conexión, la creación de un canal y luego una secuencia de ¡Sin corrección de GPS! mensajes hasta que se adquiera una señal de satélite.

Verificando que los datos se envíen correctamente

Ahora que Arduino, Atom y GPS están en funcionamiento, podemos volver al panel de Helium y asegurarnos de que los datos lleguen al canal de Azure.

Haciendo clic en Canales a la izquierda y luego seleccionando el canal de Azure que ya creó en Canales activos La sección debería llevarlo a una vista detallada; si se desplaza hacia abajo, se mostrará el Registro de eventos, donde, con suerte, verá algo como la captura de pantalla a continuación. Esto muestra la marca de tiempo y el tamaño de los datos, además de informar si se enrutaron correctamente a Azure:

Si echa un vistazo a Azure IoT Hub en el Explorador de dispositivos navegación también debería ver su dispositivo Helium Atom en la lista debajo de su dirección MAC. Al hacer clic en él, también se confirmará que hemos asegurado este dispositivo automáticamente, sin necesidad de configuración alguna, mediante un certificado X509 firmado por hardware.

Ingresar los datos en Power BI

Asumiremos que ya tiene una cuenta de Power BI configurada y un área de trabajo ya creada. (Si no es así, diríjase a www.powerbi.com y configure uno).

Con la configuración de su cuenta de Power BI, ahora necesitaremos crear un trabajo de Azure Stream Analytics para tomar los datos de Azure IoT Hub y entregarlos a Power BI.

Desde el panel de Azure, haga clic en Nuevo . en la parte superior izquierda y busque Trabajo de análisis de secuencias , seleccionándolo una vez que aparezca. Haga clic en Crear . en la parte inferior izquierda, seleccione las opciones y presione crear para configurarlo.

Una vez implementado, necesitaremos decirle al trabajo de transmisión que use IoT Hub como entrada y Power BI como salida. Desde la página Trabajo de transmisión, haga clic en Entradas . en el menú de la izquierda, luego Agregar .

Asigne al trabajo un alias (nombre), luego seleccione IoT Hub desde el menú desplegable de fuentes. Elija el IoT Hub apropiado del menú desplegable de IoT Hub y deje todo lo demás como predeterminado. Deberías terminar con algo parecido a esto:

Una vez que se crea la entrada, crearemos una salida que se conecta a Power BI. En la página Trabajo de transmisión, haga clic en Salidas . en el menú de la izquierda y luego Agregar . Elegiremos Power BI del fregadero desplegable. Luego, deberá autorizar su cuenta de Power BI y seleccionar el área de trabajo que desea usar. Crea un nombre para la mesa. Terminarás con algo como esto:

El paso final es crear una consulta que vincule la entrada con la salida. Nuevamente, haga clic en Consulta . en el menú de la izquierda. Querrá que su consulta esté básicamente en la forma que coincida con la captura de pantalla a continuación, dependiendo de cómo nombró sus entradas y salidas del paso anterior. Esto seleccionará todos los datos provenientes de IoT Hub y los enviará al espacio de trabajo de Power BI.

Presione Guardar en la parte superior izquierda, y suponiendo que haya nombrado todo correctamente, casi ha terminado. Ahora regrese a la página Descripción general y presione Iniciar en la barra de navegación superior y, después de unos minutos, tendrá la transmisión de datos a Power BI.

Visualización en Power BI

Ahora que los datos fluyen, podemos hacer una visualización rápida en Power BI para mostrarnos dónde está todo en un mapa.

Dirígete a tu espacio de trabajo de Power BI y haz clic en + Crear en la esquina superior derecha y seleccione Informar . Luego, seleccionará el conjunto de datos que creó en Azure Streaming Job y presionará Crear .

A continuación, elegiremos la visualización del mapa en el panel de la derecha, parece un globo blanco. En el extremo derecho, verá los campos de datos que hemos estado enviando desde Arduino. Arrastra lat a Latitude y lon a Longitud en el panel de la izquierda. También puede arrastrar EventProcessedUTCTime a la información sobre herramientas si desea ver cuándo se envió al pasar el mouse por encima. Luego presione Guardar en la esquina superior derecha. ¡Eso es! Ahora tendrá un mapa que muestra la ubicación de su Helium Atom adjunto al Arduino.

Código

  • Atom + Arduino + Adafruit GPS
Atom + Arduino + Adafruit GPS C / C ++
 / * * Copyright 2017, Helium Systems, Inc. * Todos los derechos reservados. Consulte LICENCE.txt para obtener información sobre la licencia. .h "// función pinPeripheral () # define atom_serial Serial1 // para GPS # define PIN_SERIAL2_RX (34ul) // Número de descripción de pin para PIO_SERCOM en D12 # define PIN_SERIAL2_TX (36ul) // Número de descripción de pin para PIO_SERCOM en 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_TX_SERIAL; helio) { Channel channel (&helium); // GPS # define gps_serial Serial2Adafruit_GPS GPS (&gps_serial); void setup () {pinPeripheral (10, PIO_SERCOM); pinPeripheral (12, PIO_SERCOM); Serial.begin (115200); Serial.println ("Iniciando"); // Comience la comunicación con Helium Atom // La velocidad en baudios difiere según la placa admitida // y está configurada en Board.h helium.begin (helium_baud_b115200); // Conecta el Atom a la red Helium Serial.print ("Conectando -"); int status =helium.connect (); while (status! =helium_status_OK) {status =helium.connect (); } Serial.println ("Correcto"); // Comienza a comunicarte con el canal. Esto solo debería tener que // hacerse una vez. // // NOTA:asegúrese de haber creado un canal coincidente en el resultado de Helium Dashbaord int8_t; Serial.print ("Creando canal -"); status =channel.begin ("Guía de piratas informáticos", &resultado); if (helium_status_OK ==estado &&resultado ==0) {Serial.println ("Correcto"); } else {Serial.println ("Fallido"); } retraso (1000); // Iniciar 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 (); bucle vacío () {char c =GPS.read (); if (GPS.newNMEAreceived ()) {if (! GPS.parse (GPS.lastNMEA ())) return; } if (temporizador> millis ()) temporizador =millis (); if (millis () - temporizador> 2000) {temporizador =millis (); // reinicia el temporizador if (GPS.fix) {char lat [10]; char lon [10]; datos de char [100]; dtostrf (GPS.latitudeDegrees, 4, 4, lat); dtostrf (GPS.longitudeDegrees, 4, 4, lon); // formatea un objeto JSON de lat / lon para enviarlo a Azure sprintf (data, "{\" lat \ ":\"% s \ ", \" lon \ ":\"% s \ "}", lat, lon); // Envía los datos de ubicación al canal configurado int8_t result; // la respuesta del Helium Router Serial.print ("Sending -"); int status =channel.send (datos, strlen (datos), &resultado); // estado es la respuesta de la conexión en serie Atom if (helium_status_OK ==estado &&resultado ==0) {Serial.print ("Enviado con éxito"); Serial.println (datos); } else {Serial.println ("Fallido"); }} else {Serial.println ("¡No hay GPS fijo!"); }}} 

Proceso de manufactura

  1. Sistema de asistencia que usa Arduino y RFID con Python
  2. Registrador de datos GPS, análisis espacial y Azure IoT Hub.
  3. Control remoto universal usando Arduino, 1Sheeld y Android
  4. Voltímetro de bricolaje con Arduino y un teléfono inteligente
  5. Monitor de frecuencia cardíaca con IoT
  6. Uso de IoT para controlar de forma remota un brazo robótico
  7. IOT - Smart Jar usando ESP8266, Arduino y sensor ultrasónico
  8. Medición de frecuencia y ciclo de trabajo con Arduino
  9. Sonda usando arduino y visualización en procesamiento IDE
  10. Control del brillo del LED usando Bolt y Arduino
  11. Piscina de Azure IoT