Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Registrador de dados GPS, análise espacial e Hub IoT do Azure.

Componentes e suprimentos

Arduino UNO
× 1
Raspberry Pi 2 Modelo B
× 1
Adafruit Ultimate GPS Breakout
× 1
9V para conector Barrel Jack
× 1
Bateria de 9 V (genérica)
× 1
Resistor de foto
× 1
LED (genérico)
3 transparentes, 1 vermelho, 1 amarelo e 1 verde
× 6
SparkFun Botão de pressão 12 mm
× 2
Slide Switch
× 3
Resistor 10k ohm
× 4
Resistor 221 ohm
× 3
Tábua de pão sem solda meio tamanho
× 1
Placa de ensaio sem solda em tamanho real
× 1
Fios de jumpers (genérico)
× 1
Sandisk 16GB MicroSD com adaptador
× 2

Aplicativos e serviços online

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

Sobre este projeto





Introdução


A tecnologia móvel atual tornou-se muito avançada e fácil de usar com mapas de informações GIS disponíveis em quase todos os tipos de dispositivos. Este projeto pode ser transformado em uma atividade de sala de aula para ensinar às crianças os conceitos básicos de hardware de código aberto, computação móvel, tecnologias geoespaciais e computação em nuvem.

Este projeto consiste em 3 partes:

1) Arduino GPS Datalogger

Com a ajuda, as crianças podem construir um dispositivo que registre informações de localização do GPS, medição de luz e o tipo de coisa que está sendo localizada. Eles poderiam ir para fora e marcar a localização de coisas predeterminadas (placas, árvores, bancos de parque, etc ...). Isso fornece uma melhor compreensão do mundo ao seu redor e uma melhor apreciação dos dados exibidos nos mapas GIS. Níveis baixos de luz à noite em áreas públicas podem ser uma preocupação de segurança. Acompanhados por um adulto, eles poderiam sair à noite para coletar medições de luz para análises posteriores.

2) Visualização e análise GIS

Visualize a localização coletada no campo em um mapa. Estime os níveis de luz para uma área executando análise de interpolação de ponto espacial e exiba os resultados em um mapa.

3) Usando o Windows 10 IoT Core e o Azure IoT Hub

Depois de realizar a visualização e análise GIS, use o Windows 10 IoT Core e o Azure IoT Hub para carregar e distribuir os dados. Isso permite que o sistema seja facilmente ampliado para oferecer suporte ao gerenciamento de dados em milhares de coletores de dados e dispositivos em campo.





Arduino GPS Datalogger


O vídeo a seguir oferece uma visão geral do dispositivo Arduino Uno GPS Datalogger e uma rápida demonstração. O código-fonte e o diagrama do breadboard podem ser encontrados abaixo.

Aqui estão mais algumas informações sobre os componentes.

Fotorresistor

Esses sensores analógicos medem o brilho da luz e são muito fáceis de usar. Veja um exemplo com o código-fonte aqui. A leitura analógica medirá 0 - 1023, mas a maioria das leituras será inferior a 200, a menos que a luz seja muito brilhante. Ao construir seu dispositivo, experimente algumas leituras de luz para saber o que esperar.

Ex. a luz do sol brilhante é cerca de 1000, a sombra diurna ao ar livre é cerca de 900 e, diretamente sob a luz da rua à noite, é cerca de 170.

Slot Micro SD

Um bom exemplo pode ser encontrado no IDE do Arduino em Arquivo> Exemplos> SD> Datalogger.

Adafruit Ultimate GPS

GPS fácil de usar. Siga os exemplos aqui para instalar as bibliotecas GPS em seu Arduino IDE.

LEDs de status de correção de satélite

Diluição de precisão horizontal (HDOP) é ​​uma medida de precisão posicional X, Y proveniente do GPS. Quanto mais baixo for o valor HDOP, mais precisa é a posição. Se o GPS tiver uma posição, ele retornará o valor HDOP com a posição de latitude e longitude. Mais informações sobre a diluição de precisão do GPS aqui.
  • Vermelho - sem satélite corrigido
  • Amarelo - Correção de satélite com HDOP> 1.5.
  • Verde - correção de satélite com HDOP <=1.5.

Chaves deslizantes de tipo de recurso binário

Três interruptores deslizantes são usados ​​para a representação binária da base 10 0 - 7. O interruptor mais à esquerda representa 2 ^ 2 ou 4. O interruptor central representa 2 ^ 1 ou 2. O interruptor mais à direita representa 2 ^ 0 ou 1. Adicionando os valores com base no estado do switch fornece o número de base 10 de 0 - 7 que corresponde ao tipo de recurso que está sendo coletado. Idealmente, a pessoa que usa o Arduino GPS Datalogger entenderia o que o código significa.

Por exemplo:
  OFF OFF OFF =0 0 0 =0 =Sensor de luz ReadingOFF OFF ON =0 0 1 =1 =Banco de estacionamento OFF ON OFF =0 1 0 =2 =RockOFF ON ON =0 1 1 =3 =Lixo CanON OFF OFF =1 0 0 =4 =TreeON OFF ON =1 0 1 =5 =Payphone ON OFF =1 1 0 =6 =LamppostON ON ON =1 1 1 =7 =Fonte de água  

Botão

Cada vez que o botão é pressionado, o dispositivo acrescenta uma linha de texto com valores separados por vírgula (CSV) ao datalog.csv no cartão microSD.

Os dados estão no formato de:

LATITUDE, LONGITUDE, LIGHT_VALUE, FEATURE_TYPE
  • LATITUDE e LONGITUDE vêm do GPS.
  • LIGHT_VALUE é a leitura analógica do fotorresistor.
  • FEATURE_TYPE é o valor de 0 a 7 dependendo das configurações liga / desliga das 3 chaves binárias descritas acima.

Exemplo de dados 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  

Sem tela LCD?

Os vários LEDs poderiam ter sido substituídos por uma tela LCD 1602 e mais alguns botões, mas houve problemas.
  • Ter o código para o GPS, slot para cartão microSD e um LCD 1602 seria compilado e implantado no Arduino Uno, mas o slot para cartão microSD não era estável. A remoção do LCD estabilizou o slot do cartão microSD, então LEDs foram adicionados para fornecer notificação ao usuário suficiente. Usar um dispositivo Arduino com mais recursos, como o MEGA, provavelmente permitiria um LCD 1602 junto com o GPS e o slot para cartão microSD.
  • A bateria de 9 V é conveniente para o Arduino GPS Datalogger, mas a bateria não dura muito ao ligar o display LCD 1602. Não era um componente crítico, então tinha que ser eliminado.





Visualização e análise GIS


Visualizando os pontos GPS

Ter dados GIS no formato CSV é ótimo, mas não muito útil, a menos que você possa vê-los em um mapa. Ejete o cartão microSD do Arduino GPS Datalogger e insira em um computador Windows 10 com o Google Earth Professional instalado. Clique aqui para obter instruções de instalação e licenciamento. Copie o arquivo de texto do cartão microSD para o computador e abra-o em um editor de texto. Adicione a seguinte linha como um título de coluna na parte superior do arquivo de texto e salve-o como um arquivo .CSV.

LATITUDE, LONGITUDE, LIGHT_VALUE, FEATURE_TYPE

Usando o Google Earth Professional, vá até o menu Arquivo e escolha Importar ... Procure o arquivo .CSV e importe-o. Vá até as opções para criar diferentes estilos de mapa para os ícones que representam os diferentes tipos de recursos e exibir os locais dos pontos no Google Earth Professional. A versão profissional do Google Earth deve ser usada. A versão normal do Google Earth não tem a capacidade de importar um arquivo .CSV.

Análise espacial com Quantum GIS (QGIS)

QGIS é um popular GIS de código aberto com o instalador e tutoriais disponíveis aqui. Usando o QGIS, você pode realizar uma análise espacial no atributo do sensor de luz para a localização GPS para identificar áreas de iluminação suficiente e insuficiente à noite em uma área pública, como um parque.

Etapa 1 - Carregue o limite, trilhas para caminhada e outras informações relevantes sobre a área sendo avaliada quanto à iluminação insuficiente.

Etapa 2 - Carregar os pontos do arquivo .CSV vindos do registrador de dados GPS para o mapa QGIS. Aplique a simbologia e os rótulos do ponto para que você possa ver visualmente os valores da luz.

Os pontos exibirão os valores do sensor de luz para que você possa ver onde está claro (azul) e onde está escuro (vermelho). Visualizar apenas os dados do ponto não é suficiente ao tentar analisar a área maior.

Passo 3 - Faça uma interpolação nos dados do ponto para obter um melhor entendimento da área ao redor e entre os pontos. A interpolação é usada quando você tem dados para determinados locais e deseja estimar os valores entre os locais conhecidos. Mais informações sobre interpolação aqui.

A interpolação fornece uma imagem melhor dos valores de luz dentro do parque. Esta análise pode ser melhorada fornecendo mais leituras do sensor de luz em locais conhecidos.

Passo 4 - Vá coletar mais leituras do sensor de luz e carregue-as no QGIS.

Etapa 5 - Execute novamente a interpolação no conjunto de dados maior.

Você pode ver que a segunda interpolação mostra um padrão semelhante ao da primeira interpolação, mas tem mais detalhes por causa dos pontos adicionais.





Usando o Windows 10 IoT Core e o Azure IoT Hub.


Ampliando

O Arduino GPS Datalogger é um dispositivo simples e barato que pode registrar informações do sensor em um cartão microSD. Esses dispositivos podem ser amplamente distribuídos geograficamente para coletar informações. Gerenciar as informações provenientes desses dispositivos pode ser uma tarefa desafiadora se você precisar projetar um sistema para fazer isso.

Usando o Windows 10 IoT Core e o Azure IoT Hub como a base de um sistema de mensagens, o número de dispositivos pode ser facilmente ampliado para milhares de dispositivos que fornecem informações.

Experimente primeiro estes exemplos

Antes de continuar, é altamente recomendável que você siga o tutorial Introdução ao Hub IoT do Azure para .NET. O tutorial de introdução irá guiá-lo através das etapas de criação de uma conta de avaliação do Azure, configuração de um Hub IoT do Azure e desenvolver os principais exemplos que permitem enviar e receber mensagens do Hub IoT.

Baixe também o Azure IoT Hub Device Explorer para facilitar a administração dos dispositivos Windows 10 IoT Core conectando-se ao Azure IoT Hub. Baixe o código-fonte e / ou o instalador aqui.

Windows 10 IOT Core no Raspberry Pi 2

Usando uma máquina de desenvolvimento do Windows 10, baixe o Windows 10 IoT Core para Raspberry Pi 2 e atualize um cartão micoSD usando o Windows IoT Image Helper.

Monte o cartão microSD no Raspberry Pi 2, conecte-o à ethernet e certifique-se de que ele esteja listado no Windows IoT Core Watcher na máquina de desenvolvimento ao inicializar.

Conecte um botão em uma placa de ensaio, conforme mostrado na imagem abaixo. Veja o esquema no final desta página. Links para o código-fonte a seguir também podem ser encontrados na parte inferior desta página.

Aplicativo universal do Windows para upload de dados

Inicie o Visual Studio 2015 em um computador Windows 10 e escolha Arquivo> Novo> Projeto. Escolha o modelo de aplicativo em branco para o aplicativo universal do Windows. Chame o novo projeto IoTHubClientSendEvent. Usando o Nuget, inclua Microsoft.Azure.Devices.Client e Newtonsoft.Json. Adicione também uma referência para as extensões de IoT do Windows para o UWP para obter acesso ao GPIO no Raspberry Pi2.

Assim que o Visual Studio estiver pronto, adicione as seguintes instruções de uso à parte superior da página Mainpage.xaml.cs para trazer as bibliotecas necessárias para falar com o Azure e fazer a interface com os pinos GPIO:
  usando Windows.Devices.Gpio; usando Newtonsoft.Json; usando Microsoft.Azure.Devices.Client; usando System.Text;  

Adicione as seguintes variáveis ​​e constantes à classe MainPage. O valor deviceId deve ser o nome do dispositivo configurado no Azure IoT Hub Device Explorer.
  private const int buttonPin =6; private GpioPin buttonGPIO; static DeviceClient deviceClient; static string deviceId ="MakerChallengeDevice2"; static string uploadFile ="data.csv";  

Adicione uma classe evData para serialização JSON, adicione-a também à classe MainPage.
  class evData {public string id {get; definir; } dados de string públicos {get; definir; }}  

Adicione essas 2 linhas à função MainPage. Obtenha o valor para o

DEVICE_CONNECTION_STRING do Azure IoT Hub Device Explorer conforme descrito acima.


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

Adicione uma função para inicializar o GPIO
  private void initGPIO () {var gpio =GpioController.GetDefault (); buttonGPIO =gpio.OpenPin (buttonPin); // Verifique se os resistores pull-up de entrada são suportados if (buttonGPIO.IsDriveModeSupported (GpioPinDriveMode.InputPullUp)) buttonGPIO.SetDriveMode (GpioPinDriveMode.InputPullUp); else buttonGPIO.SetDriveMode (GpioPinDriveMode.Input); // Define um tempo limite de debounce para filtrar o ruído de salto do switch de um botão pressionado buttonGPIO.DebounceTimeout =TimeSpan.FromMilliseconds (50); // Registre-se no evento ValueChanged para que nossa função buttonPin_ValueChanged // seja chamada quando o botão for pressionado buttonGPIO.ValueChanged + =buttonPin_ValueChanged; }  

Em seguida, adicione uma função para chamar o manipulador de clique de botão.
  private void buttonPin_ValueChanged (GpioPin sender, GpioPinValueChangedEventArgs e) {// enviar uma mensagem quando os botões forem pressionados if (e.Edge ==GpioPinEdge.FallingEdge) {sendMessageToIOTHub (); }}  

Adicione a função sendMessagetoIOTHub () real para enviar uma mensagem ao Hub IoT do Azure.
  assíncrono estático privado void sendMessageToIOTHub () {string myString; var msg =novo evData (); if (File.Exists (uploadFile)) {myString =System.IO.File.ReadAllText (uploadFile); } else {myString ="Apenas fazendo check-in !!"; } msg.id =deviceId; msg.data =myString; var messageString =JsonConvert.SerializeObject (msg); var message =new Message (Encoding.ASCII.GetBytes (messageString)); esperar deviceClient.SendEventAsync (mensagem); }  

Compile a solução para o Debug x86 padrão para ter certeza de que funciona. Em seguida, altere o destino para Liberar ARM e selecione Máquina Remota.

Se o dispositivo Windows 10 IOT Core estiver na rede, o Visual Studio 2015 o verá e permitirá que você o defina como o destino de implantação.

Dica rápida:

Antes de implantar o aplicativo no Windows IOT Core, clique com o botão direito no projeto e escolha propriedades. No painel Aplicativo, clique no botão Manifesto do Pacote. Clique na guia Empacotamento e altere o Nome do pacote para um determinado nome (por exemplo, IoTHubClientSendEvent). Se você não fizer isso, será difícil identificar seu aplicativo na interface da web do Windows 10 IOT Core.

Agora vá para o menu Build e escolha Deploy Solution. Assim que a implantação for concluída, encontre os dispositivos Windows 10 IOT Core no Windows IOT Core Watcher. Clique com o botão direito na linha e escolha Webbrowser aqui. Faça login com o usuário Administrador local e clique no link Aplicativos à esquerda. Selecione o nome do aplicativo recém-implantado na lista suspensa Aplicativos instalados e clique em Iniciar.

Vamos deixar isso por enquanto e desenvolver o aplicativo para monitorar o Hub IoT.

Aplicativo universal do Windows para receber mensagens do Hub IOT do Azure

Inicie o Visual Studio 2015 em um Windows 10 e crie um novo C # Windows Console Application. Nomeie o projeto como IoTEventHubReceiver . Usando o Nuget, adicione WindowsAzure.ServiceBus e Newtonsoft.Json .

Adicione as seguintes instruções de uso ao início do arquivo Program.cs:
  usando System.IO; usando System.Threading; usando Newtonsoft.Json; usando Microsoft.ServiceBus.Messaging;  

Adicione uma classe à classe IoTEventHubReceiver para os dados JSON que serão desserializados após serem recebidos do Hub IoT do Azure.
  class evData {public string id {get; definir; } dados de string públicos {get; definir; }}  

Adicione algumas variáveis ​​para receber mensagens do Hub IoT do Azure. Obtenha o valor para IOT_HUB_CONNECTION_STRING do Gerenciador de Dispositivos do Hub IoT do Azure.
  static string connectionString ="IOT_HUB_CONNECTION_STRING"; static string iotHubD2cEndpoint ="messages / events"; static EventHubClient eventHubClient;  

Adicione essas 2 linhas à função main () para criar o EventHubClient e começar a receber mensagens:
  eventHubClient =EventHubClient.CreateFromConnectionString (connectionString, iotHubD2cEndpoint); SynchMessages ();  

Por fim, adicione a função SynchMessages () para configurar o loop contínuo e ReceiveMessages para receber as mensagens e salvá-las no disco.
  assíncrono privado estático void SynchMessages () {while (true) {var d2cPartitions =eventHubClient.GetRuntimeInformation (). PartitionIds; foreach (partição de string em d2cPartitions) {ReceiveMessagesFromDeviceAsync (partição); }}} private assíncrono static Task ReceiveMessagesFromDeviceAsync (string partition) {var eventHubReceiver =eventHubClient.GetDefaultConsumerGroup (). CreateReceiver (partição, DateTime.UtcNow); while (true) {EventData eventData =await eventHubReceiver.ReceiveAsync (); if (eventData ==null) continue; string data =Encoding.UTF8.GetString (eventData.GetBytes ()); evData d =JsonConvert.DeserializeObject  (dados); StreamWriter writer =new StreamWriter ("c:\\ gps \\ download \\" + d.id + "." + DateTime.Now.Year + "." + DateTime.Now.Month + "." + DateTime.Now .Dia + "." + DateTime.Now.Hour + "." + DateTime.Now.Minute + "." + DateTime.Now.Second + ".csv"); escritor.escrever (d.data); escritor.Close (); Console.WriteLine (string.Format ("Mensagem recebida de {0}. \ N {1}", d.id, d.data)); }}  

Na estação de trabalho de desenvolvimento, crie uma pasta "c:\ gps \ download" para salvar as mensagens recebidas.

Executando os aplicativos para enviar e receber mensagens do Azure IoT Hub

Inicie o IoTEventHubReceiver programa na estação de trabalho de desenvolvimento e aguarde a exibição da tela do console. Em seguida, pressione o botão conectado ao GPIO no Raspberry Pi 2 executando o Windows 10 IoT Core e o IoTHubClientSendEvent programa. Pressionar o botão envia uma mensagem com a mensagem "Apenas fazendo check-in!" texto para o Azure IoT Event Hub. O console na máquina de desenvolvimento exibirá a seguinte mensagem após o recebimento da mensagem.
  Mensagem recebida de MakerChallengeDevice2.Just check-in!  

Enviar o conteúdo de um arquivo de texto como a mensagem também é possível, desde que o texto seja inferior a 256 KB, porque esse é o tamanho máximo atual da mensagem para o Hub Iot do Azure. Veja o sendMessageToIOTHub () acima para ver como o arquivo é lido e serializado, e veja a função ReceiveMessagesFromDeviceAsync () acima para ver como a mensagem é desserializada e gravada no arquivo.

Atualmente, o Windows 10 IoT Core não permite acesso de arquivo a caminhos absolutos por meio do código, mas depois de muitas soluções de problemas, descobri que ele pode fazer referência a um arquivo no mesmo diretório que o executável. Geralmente esta não é a melhor prática, mas funciona. Para colocar o arquivo de texto na pasta do aplicativo, clique com o botão direito do mouse no dispositivo no Windows 10 IoT Core Watcher e escolha Abrir compartilhamento de rede. Autentique-se com o usuário administrador local e navegue até:

c $ \ Data \ Users \ DefaultAccount \ AppxLayouts

Procure uma pasta com o nome de seu aplicativo implantado e coloque um arquivo de texto que possa ser lido pelo executável. Para este exemplo, o arquivo de texto deve ser denominado data.csv e deve ter menos de 256 KB. Um bom exemplo é um arquivo CSV que lista latitude, longitude, leitura do sensor de luz e o tipo de recurso. Clique no botão conectado ao Raspberry Pi2 GPIO e o console exibirá o seguinte:
  Mensagem recebida de MakerChallengeDevice2.LAT, LNG, LT, TYP45.45926, -110.57361,45.645.78546, -110.02487,156,3  

Expandindo no carregamento de arquivo - se você seguir os exemplos de Introdução ao Hub IoT do Azure para .NET, você encontrará um exemplo para carregar arquivos no Armazenamento de Blob do Azure na seção Próximas etapas.





Resumo


Este projeto demonstra como você pode criar um Arduino GPS Datalogger simples para registrar informações, analisar os dados coletados e usar a nuvem para gerenciar as informações coletadas. Existem muitos pontos de extensão para este projeto, tais como:
  • Gravar informações de diferentes tipos de sensores no Arduino GPS Datalogger.
  • Carregue as informações diretamente do dispositivo Arduino para o Azure usando WIFI, Bluetooth ou celular.
  • Execute diferentes tipos de análise espacial para estar mais bem equipado para tomar decisões sobre o meio ambiente.
  • Desenvolva um aplicativo de mapeamento da web para exibir as informações brutas ou analisadas.
  • Use EventProcessors no Azure Stream Analystics para agir sobre os dados conforme eles são recebidos pelo Hub IoT.

Código

Registrador de dados GPS Arduino
Diagrama de esboço e fiação para Arduino GPS Datalogger.https://github.com/ShawnCruise/ArduinoGPSDataLogger
Exemplo do Azure IoT Hub
Aplicativo universal do Windows para implantar no Windows 10 IoT Core para enviar mensagens ao Azure Iot Hub.https://github.com/ShawnCruise/AzureIotHubExample
SDK do Azure
Obtenha o Azure IoT Device Explorer aqui.https://github.com/Azure/azure-iot-sdks/blob/master/tools/DeviceExplorer/doc/how_to_use_device_explorer.md
Amostras do Windows 10 IoT Core
Amostras para implantar no Windows 10 IoT Core.https://github.com/ms-iot/samples

Esquemas

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

Processo de manufatura

  1. Avnet Silica demonstra tecnologias de IA e IoT no mundo incorporado 2019
  2. Windows 10 IoT Core e SHT15
  3. Registrador de dados de temperatura e umidade
  4. IOT - Jar inteligente usando ESP8266, Arduino e sensor ultrassônico
  5. Feliz Aniversário:Luzes e sons
  6. u-blox LEA-6H 02 Módulo GPS com Arduino e Python
  7. Controle total de sua TV usando Alexa e Arduino IoT Cloud
  8. Speed ​​Pick e pedal de pedal da guitarra!
  9. Piscina Azure IoT
  10. Guia para PCBs e IoT