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

Registrador de datos GPS, análisis espacial y Azure IoT Hub.

Componentes y suministros

Arduino UNO
× 1
Raspberry Pi 2 Modelo B
× 1
Adafruit Ultimate GPS Breakout
× 1
Conector de conector de barril de 9 V
× 1
batería de 9V (genérica)
× 1
Foto resistor
× 1
LED (genérico)
3 transparentes, 1 rojo, 1 amarillo y 1 verde
× 6
Interruptor de botón SparkFun de 12 mm
× 2
Interruptor deslizante
× 3
Resistencia de 10k ohmios
× 4
Resistencia 221 ohm
× 3
Protoboard sin soldadura de tamaño medio
× 1
Protoboard sin soldadura de tamaño completo
× 1
Cables de puente (genéricos)
× 1
MicroSD Sandisk de 16 GB con adaptador
× 2

Aplicaciones y servicios en línea

Microsoft Windows 10 IoT Core
Microsoft Azure
Arduino IDE
Microsoft Visual Studio 2015
Google Earth Professional
Quantum GIS
Microsoft Windows 10 Enterprise

Acerca de este proyecto

Introducción

La tecnología móvil actual se ha vuelto muy avanzada y fácil de usar con mapas de información SIG disponibles en casi todos los tipos de dispositivos. Este proyecto puede convertirse en una actividad en el aula para enseñar a los niños los conceptos básicos de hardware de código abierto, computación móvil, tecnologías geoespaciales y computación en la nube.

Este proyecto consta de 3 partes:

1) Registrador de datos GPS Arduino

Con ayuda, los niños pequeños podrían construir un dispositivo que registre la información de ubicación del GPS, la medición de la luz y el tipo de objeto que se encuentra. Podrían salir al aire libre y marcar la ubicación de cosas predeterminadas (letreros, árboles, bancos de parque, etc.). Esto proporciona una mejor comprensión del mundo que los rodea y una mejor apreciación de los datos que se muestran en los mapas GIS. Los niveles bajos de luz por la noche en áreas públicas pueden ser un problema de seguridad. Acompañados de un adulto, podrían salir por la noche a tomar medidas de luz para su posterior análisis.

2) Visualización y análisis de SIG

Visualice la ubicación recopilada en el campo en un mapa. Estime los niveles de luz para un área realizando un análisis de interpolación de puntos espaciales y muestre los resultados en un mapa.

3) Uso de Windows 10 IoT Core y Azure IoT Hub

Después de realizar la visualización y el análisis GIS, use Windows 10 IoT Core y Azure IoT Hub para cargar y distribuir los datos. Esto permite que el sistema se amplíe fácilmente para admitir la gestión de datos en miles de recopiladores de datos y dispositivos en el campo.

Registrador de datos GPS Arduino

El siguiente video ofrece una descripción general del dispositivo Arduino Uno GPS Datalogger y una demostración rápida. El código fuente y el diagrama de la placa se pueden encontrar a continuación.

Aquí hay más información sobre los componentes.

Fotorresistor

Estos sensores analógicos miden el brillo de la luz y son muy fáciles de usar. Vea un ejemplo con el código fuente aquí. La lectura analógica medirá 0 - 1023 pero la mayoría de las lecturas estarán por debajo de 200 a menos que la luz sea muy brillante. Cuando construya su dispositivo, pruebe algunas lecturas de luz para saber qué esperar.

Ex. la luz del sol brillante es de aproximadamente 1000, la sombra al aire libre durante el día es de aproximadamente 900 y directamente debajo de una farola por la noche es de aproximadamente 170.

Ranura para Micro SD

Se puede encontrar un buen ejemplo en el IDE de Arduino en Archivo> Ejemplos> SD> Registrador de datos.

Adafruit Ultimate GPS

GPS fácil de usar. Siga los ejemplos aquí para instalar las bibliotecas de GPS en su IDE de Arduino.

LED de estado de corrección de satélites

La dilución de precisión horizontal (HDOP) es una medida de precisión posicional X, Y procedente del GPS. Cuanto menor sea el valor de HDOP, más precisa será la posición. Si el GPS tiene una posición, devolverá el valor HDOP con la posición de latitud y longitud. Más información sobre la dilución de precisión de GPS aquí.

  • Rojo:sin corrección de satélites
  • Amarillo:solución de satélite con HDOP> 1.5.
  • Verde:solución de satélite con HDOP <=1.5.

Interruptores deslizantes de tipo de función binaria

Se utilizan tres interruptores deslizantes para la representación binaria de la base 10 0 - 7. El interruptor más a la izquierda representa 2 ^ 2 o 4. El interruptor central representa 2 ^ 1 o 2. El interruptor más a la derecha representa 2 ^ 0 o 1. Sumando los valores basados en el estado del conmutador da el número 0 - 7 en base 10 que corresponde al tipo de característica que se recopila. Idealmente, la persona que usa el registrador de datos GPS Arduino entendería lo que significa el código.

Por ejemplo:

  OFF OFF OFF =0 0 0 =0 =Lectura del sensor de luz OFF OFF ON =0 0 1 =1 =Banco de estacionamiento OFF ON OFF =0 1 0 =2 =Rock OFF ON ON =0 1 1 =3 =Basura CanON APAGADO APAGADO =1 0 0 =4 =Árbol ENCENDIDO APAGADO ENCENDIDO =1 0 1 =5 =Teléfono público ENCENDIDO APAGADO =1 1 0 =6 =Farola ENCENDIDO ENCENDIDO =1 1 1 =7 =Fuente de agua  

Botón

Cada vez que se presiona el botón, el dispositivo agrega una línea de texto de valores separados por comas (CSV) a datalog.csv en la tarjeta microSD.

Los datos tienen el formato de:

LATITUD, LONGITUDE, LIGHT_VALUE, FEATURE_TYPE

  • LATITUD y LONGITUD vienen del GPS.
  • LIGHT_VALUE es la lectura analógica del fotorresistor.
  • FEATURE_TYPE es el valor 0 - 7 dependiendo de la configuración de encendido / apagado de los 3 interruptores binarios descritos anteriormente.

Ejemplo de datos 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  

¿No tiene pantalla LCD?

Los múltiples LED podrían haber sido reemplazados por una pantalla LCD 1602 y algunos botones más, pero hubo problemas.

  • Tener el código para el GPS, la ranura para tarjetas microSD y una pantalla LCD 1602 se compilaría y desplegaría en el Arduino Uno, pero la ranura para tarjetas microSD no era estable. La extracción de la pantalla LCD estabilizó la ranura de la tarjeta microSD, por lo que se agregaron LED para proporcionar suficiente notificación al usuario. El uso de un dispositivo Arduino con más recursos como el MEGA probablemente permitiría una pantalla LCD 1602 junto con el GPS y la ranura para tarjetas microSD.
  • La batería de 9V es conveniente para el registrador de datos GPS Arduino, pero la batería no dura mucho cuando se alimenta la pantalla LCD 1602. No era un componente crítico, por lo que tenía que desaparecer.

Visualización y análisis GIS

Visualización de los puntos GPS

Tener datos GIS en formato CSV es genial, pero no muy útil a menos que pueda verlos en un mapa. Expulsa la tarjeta microSD del Arduino GPS Datalogger e insértala en una computadora con Windows 10 con Google Earth Professional instalado. Vaya aquí para obtener instrucciones de instalación y licencia. Copie el archivo de texto de la tarjeta microSD a la computadora y ábralo en un editor de texto. Agregue la siguiente línea como encabezado de columna en la parte superior del archivo de texto y guárdelo como un archivo .CSV.

LATITUD, LONGITUDE, LIGHT_VALUE, FEATURE_TYPE

Con Google Earth Professional, vaya al menú Archivo y seleccione Importar ... Busque el archivo .CSV e impórtelo. Revise las opciones para crear diferentes estilos de mapa para los íconos que representan los diferentes tipos de características y muestre las ubicaciones de los puntos en Google Earth Professional. Se debe utilizar la versión Professional de Google Earth. La versión normal de Google Earth no tiene la capacidad de importar un archivo .CSV.

Análisis espacial con Quantum GIS (QGIS)

QGIS es un popular SIG de código abierto gratuito con el instalador y los tutoriales disponibles aquí. Con QGIS, puede realizar un análisis espacial en el atributo del sensor de luz para la ubicación del GPS para identificar áreas con iluminación suficiente e insuficiente durante la noche en un área pública como un parque.

Paso 1:cargue el límite, los senderos para caminar y otra información relevante sobre el área que se está evaluando por iluminación insuficiente.

Paso 2:cargue los puntos del archivo .CSV provenientes del registrador de datos GPS en el mapa QGIS. Aplique la simbología de puntos y las etiquetas para que pueda ver visualmente los valores de luz.

Los puntos mostrarán los valores del sensor de luz para que pueda ver dónde está brillante (azul) y dónde está oscuro (rojo). Ver solo los datos de puntos no es suficiente cuando se intenta analizar el área más grande.

Paso 3:realice una interpolación en los datos de los puntos para comprender mejor el área circundante y entre los puntos. La interpolación se usa cuando tiene datos para ciertas ubicaciones y desea estimar los valores entre las ubicaciones conocidas. Más información sobre la interpolación aquí.

La interpolación proporciona una mejor imagen de los valores de luz dentro del parque. Este análisis se puede mejorar proporcionando más lecturas de sensores de luz en ubicaciones conocidas.

Paso 4:recopile más lecturas del sensor de luz y cárguelas en QGIS.

Paso 5:vuelva a ejecutar la interpolación en el conjunto de datos más grande.

Puede ver que la segunda interpolación muestra un patrón similar a la primera interpolación, pero tiene más detalles debido a los puntos adicionales.

Usando Windows 10 IoT Core y Azure IoT Hub.

Ampliación

El registrador de datos GPS Arduino es un dispositivo económico y simple que puede registrar información del sensor en una tarjeta microSD. Estos dispositivos podrían estar distribuidos geográficamente para recopilar información. Administrar la información que proviene de estos dispositivos podría ser una tarea desafiante si necesita diseñar un sistema para hacerlo.

Al utilizar Windows 10 IoT Core y Azure IoT Hub como la base de un sistema de mensajería, la cantidad de dispositivos se podría escalar fácilmente a miles de dispositivos que suministran información.

Primero pruebe estos ejemplos

Antes de continuar, se recomienda encarecidamente que siga el tutorial Introducción a Azure IoT Hub para .NET. El tutorial de introducción lo llevará a través de los pasos para crear una cuenta de prueba de Azure, configurar un Azure IoT Hub y desarrollar las muestras principales que le permitirán enviar y recibir mensajes de IoT Hub.

Descargue también el Explorador de dispositivos de Azure IoT Hub para una fácil administración de los dispositivos de Windows 10 IoT Core que se conectan a su Azure IoT Hub. Descargue la fuente y / o el instalador desde aquí.

Windows 10 IOT Core en Raspberry Pi 2

Con una máquina de desarrollo de Windows 10, descargue Windows 10 IoT Core para Raspberry Pi 2 y actualice una tarjeta micoSD con Windows IoT Image Helper.

Monte la tarjeta microSD en la Raspberry Pi 2, conéctela a ethernet y asegúrese de que esté en la lista de Windows IoT Core Watcher en la máquina de desarrollo cuando se inicie.

Conecte un botón en una placa de pruebas como se muestra en la imagen de abajo. Vea el esquema al final de esta página. También se pueden encontrar enlaces al siguiente código fuente en la parte inferior de esta página.

Aplicación universal de Windows para carga de datos

Inicie Visual Studio 2015 en una computadora con Windows 10 y elija Archivo> Nuevo> Proyecto. Elija la plantilla Aplicación en blanco para la Aplicación universal de Windows. Llame al nuevo proyecto IoTHubClientSendEvent. Con Nuget, incorpore Microsoft.Azure.Devices.Client y Newtonsoft.Json. También agregue una referencia para las extensiones de Windows IoT para UWP para obtener acceso al GPIO en la Raspberry Pi2.

Una vez que Visual Studio esté listo, agregue las siguientes declaraciones using en la parte superior de la página Mainpage.xaml.cs para traer las bibliotecas necesarias para comunicarse con Azure e interactuar con los pines GPIO:

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

Agregue las siguientes variables y constantes a la clase MainPage. El valor de deviceId debe ser el nombre del dispositivo configurado en el Explorador de dispositivos de Azure IoT Hub.

  private const int buttonPin =6; private GpioPin buttonGPIO; static DeviceClient deviceClient; cadena estática deviceId ="MakerChallengeDevice2"; cadena estática uploadFile ="data.csv";  

Agregue una clase evData para la serialización JSON, también agréguela a la clase MainPage.

  class evData {ID de cadena pública {get; colocar; } datos de cadena pública {get; colocar; }}  

Agregue estas 2 líneas a la función MainPage. Obtenga el valor de

DEVICE_CONNECTION_STRING desde el Explorador de dispositivos de Azure IoT Hub como se describe anteriormente.

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

Agregue una función para inicializar el GPIO

  private void initGPIO () {var gpio =GpioController.GetDefault (); buttonGPIO =gpio.OpenPin (buttonPin); // Compruebe si se admiten resistencias pull-up de entrada if (buttonGPIO.IsDriveModeSupported (GpioPinDriveMode.InputPullUp)) buttonGPIO.SetDriveMode (GpioPinDriveMode.InputPullUp); else buttonGPIO.SetDriveMode (GpioPinDriveMode.Input); // Establecer un tiempo de espera de rebote para filtrar el ruido de rebote del interruptor de un botón presionar buttonGPIO.DebounceTimeout =TimeSpan.FromMilliseconds (50); // Regístrese para el evento ValueChanged para que se llame a nuestra función buttonPin_ValueChanged // cuando se presione el botón buttonGPIO.ValueChanged + =buttonPin_ValueChanged; }  

A continuación, agregue una función para llamar al controlador de clic de botón.

  private void buttonPin_ValueChanged (GpioPin sender, GpioPinValueChangedEventArgs e) {// envía un mensaje cuando se presionan los botones if (e.Edge ==GpioPinEdge.FallingEdge) {sendMessageToIOTHub (); }}  

Agregue la función sendMessagetoIOTHub () real para enviar un mensaje a Azure IoT Hub.

  privado estático asíncrono void sendMessageToIOTHub () {string myString; var msg =new evData (); if (File.Exists (uploadFile)) {myString =System.IO.File.ReadAllText (uploadFile); } else {myString ="¡¡Solo registrándome !!"; } msg.id =deviceId; msg.data =myString; var messageString =JsonConvert.SerializeObject (msg); var mensaje =nuevo mensaje (Encoding.ASCII.GetBytes (messageString)); aguardar deviceClient.SendEventAsync (mensaje); }  

Compile la solución para la depuración x86 predeterminada para asegurarse de que funcione. A continuación, cambie el objetivo a Release ARM y seleccione Remote Machine.

Si el dispositivo Windows 10 IOT Core está en la red, Visual Studio 2015 lo verá y le permitirá configurarlo como el objetivo de implementación.

Sugerencia rápida:

Antes de implementar la aplicación en Windows IOT Core, haga clic con el botón derecho en el proyecto y elija propiedades. En el panel Aplicación, haga clic en el botón Manifiesto del paquete. Haga clic en la pestaña Empaquetado y cambie el nombre del paquete a un nombre dado (por ejemplo, IoTHubClientSendEvent). Si no lo hace, será difícil identificar su aplicación en la interfaz web de Windows 10 IOT Core.

Ahora vaya al menú Generar y elija Implementar solución. Una vez que se complete la implementación, busque los dispositivos Windows 10 IOT Core en Windows IOT Core Watcher. Haga clic derecho en la fila y elija Webbrowser Here. Inicie sesión con el usuario administrador local y haga clic en el enlace Aplicaciones a la izquierda. Seleccione el nombre de la aplicación que acaba de implementar en el menú desplegable Aplicaciones instaladas y haga clic en Iniciar.

Dejemos esto por ahora y desarrollemos la aplicación para monitorear IoT Hub.

Aplicación universal de Windows para recibir mensajes desde Azure IOT Hub

Inicie Visual Studio 2015 en Windows 10 y cree una nueva aplicación de consola de Windows C #. Nombra el proyecto IoTEventHubReceiver . Con Nuget, agregue WindowsAzure.ServiceBus y Newtonsoft.Json .

Agregue las siguientes declaraciones using en la parte superior del archivo Program.cs:

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

Agregue una clase a la clase IoTEventHubReceiver para los datos JSON que se deserializarán después de recibirlos de Azure IoT Hub.

  class evData {ID de cadena pública {get; colocar; } datos de cadena pública {get; colocar; }}  

Agregue algunas variables para recibir mensajes de Azure IoT Hub. Obtenga el valor de IOT_HUB_CONNECTION_STRING del Administrador de dispositivos de Azure IoT Hub.

  cadena estática connectionString ="IOT_HUB_CONNECTION_STRING"; cadena estática iotHubD2cEndpoint ="mensajes / eventos"; EventHubClient estático eventHubClient;  

Agregue estas 2 líneas en la función main () para crear el EventHubClient y comenzar a recibir mensajes:

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

Finalmente agregue la función SynchMessages () para configurar el bucle continuo, y ReceiveMessages para recibir los mensajes y guardarlos en el disco.

  private static async void SynchMessages () {while (true) {var d2cPartitions =eventHubClient.GetRuntimeInformation (). PartitionIds; foreach (partición de cadena en d2cPartitions) {ReceiveMessagesFromDeviceAsync (partición); }}} tarea estática asíncrona privada ReceiveMessagesFromDeviceAsync (partición de cadena) {var eventHubReceiver =eventHubClient.GetDefaultConsumerGroup (). CreateReceiver (partición, DateTime.UtcNow); while (verdadero) {EventData eventData =aguardar eventHubReceiver.ReceiveAsync (); si (eventData ==null) continuar; cadena de datos =Encoding.UTF8.GetString (eventData.GetBytes ()); evData d =JsonConvert.DeserializeObject  (datos); StreamWriter writer =new StreamWriter ("c:\\ gps \\ download \\" + d.id + "." + DateTime.Now.Year + "." + DateTime.Now.Month + "." + DateTime.Now .Día + "." + DateTime.Now.Hour + "." + DateTime.Now.Minute + "." + DateTime.Now.Second + ".csv"); escritor.Escribir (d.data); escritor.Cerrar (); Console.WriteLine (string.Format ("Mensaje recibido de {0}. \ N {1}", d.id, d.data)); }}  

En la estación de trabajo de desarrollo, cree una carpeta "c:\ gps \ download" para guardar los mensajes recibidos.

Ejecución de aplicaciones para enviar y recibir mensajes de Azure IoT Hub

Inicie IoTEventHubReceiver programa en la estación de trabajo de desarrollo y espere a que se muestre la pantalla de la consola. A continuación, presione el botón conectado al GPIO en la Raspberry Pi 2 con Windows 10 IoT Core y IoTHubClientSendEvent programa. Al presionar el botón, se envía un mensaje con el mensaje "¡Solo se está registrando!" texto al Centro de eventos de Azure IoT. La consola de la máquina de desarrollo mostrará el siguiente mensaje después de recibir el mensaje.

  Mensaje recibido de MakerChallengeDevice2. ¡Solo registrándote!  

También es posible enviar el contenido de un archivo de texto como mensaje siempre que el texto sea inferior a 256 KB porque ese es el tamaño máximo actual de mensaje para Azure Iot Hub. Ver sendMessageToIOTHub () función anterior para ver cómo se lee y serializa el archivo, y ver el ReceiveMessagesFromDeviceAsync () función anterior para ver cómo se deserializa el mensaje y se escribe en el archivo.

Actualmente, Windows 10 IoT Core no permite el acceso de archivos a rutas absolutas a través del código, pero después de mucha resolución de problemas, descubrí que puede hacer referencia a un archivo en el mismo directorio que el ejecutable. Generalmente, esta no es la mejor práctica, pero funciona. Para colocar el archivo de texto en la carpeta de la aplicación, haga clic con el botón derecho en el dispositivo en Windows 10 IoT Core Watcher y elija Abrir recurso compartido de red. Autentíquese con el usuario administrador local y navegue hasta:

c $ \ Data \ Users \ DefaultAccount \ AppxLayouts

Busque una carpeta con el nombre de su aplicación implementada y coloque un archivo de texto en ella que pueda ser leído por el ejecutable. Para este ejemplo, el archivo de texto debe llamarse data.csv y debe tener menos de 256 KB. Un buen ejemplo es un archivo CSV que enumera la latitud, la longitud, la lectura del sensor de luz y el tipo de función. Haga clic en el botón conectado a la Raspberry Pi2 GPIO y la consola mostrará lo siguiente:

  Mensaje recibido de MakerChallengeDevice2.LAT, LNG, LT, TYP45.45926, -110.57361,45,645.78546, -110.02487,156,3  

Ampliación de la carga de archivos:si sigue los ejemplos de Introducción a Azure IoT Hub para .NET, encontrará un ejemplo para cargar archivos en Azure Blob Storage en la sección Pasos siguientes.

Resumen

Este proyecto demuestra cómo puede crear un registrador de datos GPS Arduino simple para registrar información, analizar los datos recopilados y utilizar la nube para administrar la información recopilada. Hay muchos puntos de extensión para este proyecto, como:

  • Grabación de información de diferentes tipos de sensores en el registrador de datos GPS Arduino.
  • Cargue la información directamente desde el dispositivo Arduino a Azure mediante WIFI, Bluetooth o celular.
  • Realizar diferentes tipos de análisis espacial para estar mejor equipado para tomar decisiones sobre el medio ambiente.
  • Desarrolle una aplicación web de mapeo para mostrar la información sin procesar o analizada.
  • Utilice EventProcessors en Azure Stream Analystics para actuar sobre los datos tal como los recibe IoT Hub.

Código

Registrador de datos GPS Arduino
Esquema y diagrama de cableado para Arduino GPS Datalogger. Https://github.com/ShawnCruise/ArduinoGPSDataLogger
Ejemplo de Azure IoT Hub
Aplicación universal de Windows para implementar en Windows 10 IoT Core para enviar mensajes a Azure Iot Hub. Https://github.com/ShawnCruise/AzureIotHubExample
SDK de Azure
Obtenga Azure IoT Device Explorer desde aquí. Https://github.com/Azure/azure-iot-sdks/blob/master/tools/DeviceExplorer/doc/how_to_use_device_explorer.md
Ejemplos de Windows 10 IoT Core
Muestras para implementar en Windows 10 IoT Core.https://github.com/ms-iot/samples

Esquemas

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

Proceso de manufactura

  1. Avnet Silica hace una demostración de las tecnologías de IA e IoT en el mundo embebido 2019
  2. Windows 10 IoT Core y SHT15
  3. Registrador de datos de temperatura y humedad
  4. IOT - Smart Jar usando ESP8266, Arduino y sensor ultrasónico
  5. Feliz cumpleaños:luces y sonidos
  6. Módulo GPS u-blox LEA-6H 02 con Arduino y Python
  7. Control total de su televisor con Alexa y Arduino IoT Cloud
  8. ¡Púa de velocidad de guitarra y pedal Stomp!
  9. WiFi ESP8266 y sensor DHT22
  10. Piscina de Azure IoT
  11. Guía de PCB e IoT