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

Rastreamento GPS usando Helium, Hub IoT do Azure e Power BI

Componentes e suprimentos

Módulo de prototipagem Helium Atom
× 1
Arduino Zero
× 1
Adafruit Ultimate GPS Breakout
× 1
Breadboard (genérico)
× 1

Aplicativos e serviços online

Microsoft Azure
Arduino IDE

Sobre este projeto





Sobre este projeto


Helium existe para ajudar os desenvolvedores a construir dispositivos conectados de baixo consumo de energia. Neste projeto, examinaremos o uso do módulo Helium Atom Prototyping com Arduino Zero e Adafruit Ultimate GPS Breakout para enviar dados perfeitamente para o Hub IoT do Azure e, em seguida, para um relatório do Power BI para visualizar os dados.

Você pode aprender mais sobre os produtos sem fio de baixo consumo, seguros e de longo alcance da Helium e comprar todo o hardware necessário em helium.com/store.





Hardware


A primeira coisa que você precisa fazer é conectar seu módulo de prototipagem Helium Atom ao adaptador Helium Atom Arduino e, em seguida, ao Arduino. Estamos usando um Arduino Zero para este guia, mas você pode usar um Uno, Due, M0 ou qualquer outro Arduino que desejar.

Depois de conectar o Atom ao Arduino, você deve ter algo parecido com isto:

Em seguida, precisaremos anexar o Adafruit Ultimate GPS Breakout ao sanduíche Arduino. Vamos usar uma placa de ensaio aqui apenas para tornar as coisas mais fáceis e claras, mas você poderia facilmente conectar o breakout do GPS diretamente ao Arduino. Sua fiação deve ter a forma de:

Arduino 5v -> GPS VIN

Arduino GND -> GPS GND

Arduino D12 -> GPS TX

Arduino D10-> GPS RX

Você deve ter algo parecido com isto quando terminar:

Ok, agora que temos o lado Arduino das coisas configurado, precisamos conectar e ligar o Helium Element. Se você tem um Elemento Celular, você só precisa ligá-lo e esperar que a luz mude para a cor azul-petróleo. É isso. Se você tiver um elemento Ethernet, ou se preferir usar uma conexão Ethernet para o seu elemento celular, conecte a porta Ethernet do seu elemento em uma porta habilitada para DHCP, como a parte traseira de um modem a cabo ou roteador sem fio. Depois de ligar o Elemento e a luz na frente dele ficar verde, você está pronto para prosseguir.

Agora que você configurou o hardware do Arduino e do Atom, e o Elemento está ligado e conectado, é hora de configurar tudo isso no painel do Helium.





Painel e canais de hélio


Primeiro, precisamos adicionar nosso Atom e Elemento à nossa conta de usuário no painel. Se você não tem uma conta de usuário, mas tem um equipamento em mãos, envie um e-mail para [email protected], caso contrário, faça o login com as credenciais que você recebeu quando comprou o hardware da Helium.

Uma vez logado, primeiro precisamos ativar nosso Elemento. Clicar em Elementos à esquerda, em seguida, Adicionar novo no canto superior direito leva você ao lugar certo. Digite os 4 últimos do MAC endereço e o HVV na etiqueta na parte de trás do elemento, dê um nome a ele e, opcionalmente, adicione algumas tags. Clique em Ativar Elemento para começar.

Teremos então de repetir o mesmo processo para o Atom. Novamente, clique em Átomos à esquerda e Adicionar novo , e fornecer o MAC e HVV no rótulo Atom, opcionalmente, adicione algumas tags e clique em Ativar Atom .

Em seguida, precisaremos criar um Hub IoT do Azure para atuar como um ponto de ingestão para o Azure para todos os seus dispositivos Helium Atom. Vamos supor que você já tenha uma conta do Azure, caso contrário, você precisará criar uma.

Depois de fazer logon no Azure, criaremos um Hub IoT. Clique em + no canto superior esquerdo, em seguida, Internet das coisas , então IoT Hub :

Você precisará fazer algumas escolhas sobre como deseja configurar seu Hub IoT e, em seguida, clicar em Criar. Recomendamos que você selecione Fixar no painel na parte inferior para facilitar a localização mais tarde:

Quando terminar e a implantação do hub (isso pode levar alguns minutos), clique nele no painel. Para configurar o Canal de Hélio, precisaremos de uma informação de dentro do hub. No Hub IoT, escolha Políticas de acesso compartilhado à esquerda, selecione RegistryReadWrite e clique no ícone de cópia próximo a String de conexão - chave primária a direita. Isso copiará a string de conexão para a área de transferência que usaremos no painel do Helium. Tenha cuidado para não compartilhar esta string com ninguém em quem você não confia. (Estamos usando apenas um hub temporário neste exemplo.)

De volta ao Helium Dashboard, agora precisamos criar um canal que mapeie para o Hub IoT do Azure que você acabou de criar. Primeiro, clique em Canais à esquerda e clique em Hub IoT do Azure abaixo Criar novo canal . Vamos colar na String de conexão copiamos do Azure para criar o Canal no Helium:

Dê um nome ao canal e clique em Criar . É importante lembrar o nome, pois você precisará dele no código do Arduino para enviar dados a este canal.





Arduino Sketch


Com o Hub IoT do Azure configurado e um Canal de Hélio criado, agora precisamos de um Arduino Sketch apropriado que use as bibliotecas Helium Arduino e Adafruit GPS para enviar localizações de GPS para Helium e, em seguida, para nosso canal Azure recém-criado.

Em primeiro lugar, você precisará da biblioteca Helium Arduino e da biblioteca Adafruit GPS instaladas em seu Arduino IDE. A maneira mais fácil de fazer isso é acessar Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas menu de dentro do IDE e procure por Helium e Adafruit GPS e clique em Instalar .

O esboço abaixo inicializa o Atom, cria um canal que corresponde ao Hub IoT do Azure O canal que criamos na etapa anterior coleta dados de GPS da placa Adafruit GPS, formata-os em JSON e os envia pela rede Helium.

Há mais detalhes e guias para a biblioteca Helium Atom Arduino aqui.
  / * * Copyright 2017, Helium Systems, Inc. * Todos os direitos reservados. Consulte LICENCE.txt para obter informações sobre a licença * / #include "Arduino.h" #include "avr / dtostrf.h" #include "Helium.h" #include  #include  #include "wiring_private .h "// função pinPeripheral () #define atom_serial Serial1 // para GPS #define PIN_SERIAL2_RX (34ul) // Número de descrição do pino para PIO_SERCOM em D12 #define PIN_SERIAL2_TX (36ul) // Número de descrição de pino para PIO_SERCOM em 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_RX, PAD_SERIAL_RX, PAD_SERIAL2_Terial2 (Serial2) (void2_RialHler) (void2_Rial2) (SERCOM1_Rial2) (void / SERIAL2). } Hélio-hélio (&atom_serial); Canal do canal (&helium); // coisas 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"); // Começa a comunicação com o Helium Atom // A taxa de transmissão difere por placa compatível // e é configurada em Board.h helium.begin (helium_baud_b115200); // Conecte o Atom à Rede Helium Serial.print ("Connecting -"); status interno =hélio.conectar (); while (status! =helium_status_OK) {status =helium.connect (); } Serial.println ("Sucesso"); // Comece a se comunicar com o canal. Isso deve // ​​ser feito apenas uma vez. // // NOTA:Certifique-se de ter criado um canal correspondente no Helium Dashbaord int8_t result; Serial.print ("Criando Canal -"); status =channel.begin ("Guia do Hackster", &resultado); if (helium_status_OK ==status &&result ==0) {Serial.println ("Sucesso"); } else {Serial.println ("Falha"); } atraso (1000); // Init GPS GPS.begin (9600); GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); GPS.sendCommand (PGCMD_NOANTENNA); atraso (2000); } temporizador uint32_t =millis (); loop vazio () {char c =GPS.read (); if (GPS.newNMEAreceived ()) {if (! GPS.parse (GPS.lastNMEA ())) return; } if (timer> millis ()) timer =millis (); if (milis () - cronômetro> 2000) {cronômetro =milis (); // zera o cronômetro if (GPS.fix) {char lat [10]; char lon [10]; dados char [100]; dtostrf (GPS.latitudeDegrees, 4, 4, lat); dtostrf (GPS.longitudeDegrees, 4, 4, lon); // formatar um objeto JSON de lat / lon para enviar ao sprintf do Azure (dados, "{\" lat \ ":\"% s \ ", \" lon \ ":\"% s \ "}", lat, lon); // Envia os dados de localização para o canal configurado int8_t result; // a resposta do Helium Router Serial.print ("Sending -"); int status =channel.send (data, strlen (data), &result); // status é a resposta da conexão serial Atom if (helium_status_OK ==status &&result ==0) {Serial.print ("Enviado com sucesso"); Serial.println (dados); } else {Serial.println ("Falha"); }} else {Serial.println ("Sem GPS fix!"); }}}  

Com as bibliotecas instaladas, crie um novo esboço ( Arquivo -> Novo de dentro do IDE do Arduino) e cole o código acima. Conecte seu sanduíche Arduino / Atom via USB e clique em Upload botão que se parece com uma seta para a direita.

Após alguns segundos, você deve ver as luzes do Atom começarem a piscar em vermelho e azul e, em seguida, se estabelecerem em um padrão intermitente vermelho constante. Isso significa que o Atom agora está conectado à rede Helium. O GPS FIX a luz também deve estar piscando com um padrão vermelho lento. Assim que parar, o módulo GPS fixará sua localização e começará a enviar dados para Helium. Ajuda tentar colocar o GPS perto de uma janela ou, de preferência, completamente ao ar livre.

Você pode verificar o Monitor Serial ( Ferramentas -> Monitor Serial ) de dentro do Arduino IDE para ver a saída de depuração. Você deverá ver mensagens mostrando conexão, criação de canal e, em seguida, uma sequência de Sem GPS fix! mensagens até que uma posição de satélite seja adquirida.





Verificar se os dados estão sendo enviados corretamente


Agora que o Arduino, o Atom e o GPS estão funcionando, podemos retornar ao Helium Dashboard e ter certeza de que os dados estão chegando ao canal do Azure.

Clicar em Canais à esquerda e, em seguida, selecionando o canal do Azure que você já criou nos Canais ativos a seção deve levar você a uma visualização de detalhes - rolar para baixo aqui deve mostrar o Log de eventos, onde você espera ver algo como a captura de tela abaixo. Isso mostra o carimbo de data / hora e o tamanho dos dados, bem como relatórios sobre se eles foram roteados com êxito para o Azure:

Se você der uma olhada em seu Hub IoT do Azure no Device Explorer navegação, você também deve ver seu dispositivo Helium Atom listado sob seu endereço MAC. Clicar nele também confirmará que protegemos este dispositivo automaticamente, sem nenhuma configuração necessária, usando um certificado X509 assinado por hardware.





Colocando os dados no Power BI


Vamos supor que você já tenha uma conta do Power BI configurada e um espaço de trabalho já criado. (Caso contrário, acesse www.powerbi.com e configure um.)

Com a configuração da sua conta do Power BI, agora precisaremos criar um trabalho do Azure Stream Analytics para obter os dados do Hub IoT do Azure e entregá-los ao Power BI.

No painel do Azure, clique em Novo no canto superior esquerdo, e pesquise por Trabalho do Stream Analytics , selecionando-o assim que aparecer. Clique em Criar no canto inferior esquerdo, selecione as opções e clique em criar para configurá-lo.

Depois de implantado, precisaremos dizer ao trabalho de streaming para usar o Hub IoT como uma entrada e o Power BI como uma saída. Na página de Trabalho de streaming, clique em Entradas no menu esquerdo, em seguida, Adicionar .

Dê ao trabalho um alias (nome) e selecione Hub IoT na lista suspensa de fontes. Escolha o Hub IoT apropriado na lista suspensa Hub IoT e deixe todo o resto como padrão. Você deve acabar com algo parecido com isto:

Depois que a entrada for criada, criaremos uma saída que se conecta ao Power BI. Na página de Trabalho de streaming, clique em Saídas no menu esquerdo e, em seguida, Adicionar . Vamos escolher o Power BI do Coletor suspenso. Você terá que autorizar sua conta do Power BI e selecionar o espaço de trabalho que deseja usar. Crie um nome para a tabela. Você vai acabar com algo assim:

A etapa final é criar uma Consulta que vincule a entrada à saída. Novamente, clique em Consultar no menu à esquerda. Você deseja que sua consulta esteja basicamente no formato que corresponde à captura de tela abaixo, dependendo de como você nomeou suas entradas e saídas na etapa anterior. Isso selecionará todos os dados provenientes do Hub IoT e os enviará para o espaço de trabalho do Power BI.

Clique em Salvar no canto superior esquerdo e, supondo que você nomeou tudo corretamente, está quase pronto. Agora volte para a página Visão geral e clique em Iniciar na barra de navegação superior e, após alguns minutos, você terá o fluxo de dados no Power BI.





Visualizando no Power BI


Agora que os dados estão fluindo, podemos fazer uma visualização rápida no Power BI para nos mostrar onde tudo está em um mapa.

Vá para o seu espaço de trabalho do Power BI e clique em + Criar no canto superior direito e selecione Relatório . Em seguida, você selecionará o conjunto de dados que criou no Trabalho de Streaming do Azure e clicará em Criar .

A seguir, escolheremos a visualização do mapa no painel direito, que se parece com um globo branco. À direita, você verá os campos de dados que enviamos do Arduino. Arraste lat para Latitude e lon para Longitude no painel à esquerda. Você também pode arrastar EventProcessedUTCTime para Dicas de ferramentas se quiser ver quando foi enviado ao passar o mouse. Em seguida, clique em Salvar no canto superior direito. É isso! Agora você terá um mapa mostrando a localização do seu Helium Atom anexado ao Arduino.


Código

  • Atom + Arduino + Adafruit GPS
Atom + Arduino + Adafruit GPS C / C ++
 / * * Copyright 2017, Helium Systems, Inc. * Todos os direitos reservados. Consulte LICENCE.txt para obter informações sobre a licença * / # include "Arduino.h" #include "avr / dtostrf.h" #include "Helium.h" #include  #include  #include "wiring_private .h "// pinPeripheral () function # define atom_serial Serial1 // para GPS # define PIN_SERIAL2_RX (34ul) // Número da descrição do pino para PIO_SERCOM em D12 # define PIN_SERIAL2_TX (36ul) // Número da descrição do pino para PIO_SERCOM em 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_SERIAL_Terial2_Terial) (Helial e Hélio-Serial2_T) (void_SERIAL_Terial2_Terial) (hélio e hélio_TerX) (Helial e HélioerX1) (Helial e Hélio_TerX) (hélio e hélio_TerX) (hélio e hélioerX) (hélio e llerX) (hélio e hélio). Canal do 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 ("Iniciando"); // Começa a comunicação com o Helium Atom // A taxa de transmissão difere por placa compatível // e é configurada em Board.h helium.begin (helium_baud_b115200); // Conecte o Atom à Rede Helium Serial.print ("Connecting -"); status interno =hélio.conectar (); while (status! =helium_status_OK) {status =helium.connect (); } Serial.println ("Sucesso"); // Comece a se comunicar com o canal. Isso deve // ​​ser feito apenas uma vez. // // NOTA:Certifique-se de ter criado um canal correspondente no Helium Dashbaord int8_t result; Serial.print ("Criando Canal -"); status =channel.begin ("Guia do Hackster", &resultado); if (helium_status_OK ==status &&result ==0) {Serial.println ("Sucesso"); } else {Serial.println ("Falha"); } atraso (1000); // Init GPS GPS.begin (9600); GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); GPS.sendCommand (PGCMD_NOANTENNA); atraso (2000);} temporizador uint32_t =millis (); loop vazio () {char c =GPS.read (); if (GPS.newNMEAreceived ()) {if (! GPS.parse (GPS.lastNMEA ())) return; } if (timer> millis ()) timer =millis (); if (milis () - cronômetro> 2000) {cronômetro =milis (); // zera o cronômetro if (GPS.fix) {char lat [10]; char lon [10]; dados char [100]; dtostrf (GPS.latitudeDegrees, 4, 4, lat); dtostrf (GPS.longitudeDegrees, 4, 4, lon); // formatar um objeto JSON de lat / lon para enviar ao sprintf do Azure (dados, "{\" lat \ ":\"% s \ ", \" lon \ ":\"% s \ "}", lat, lon); // Envia os dados de localização para o canal configurado int8_t result; // a resposta do Helium Router Serial.print ("Sending -"); int status =channel.send (data, strlen (data), &result); // status é a resposta da conexão serial Atom if (helium_status_OK ==status &&result ==0) {Serial.print ("Enviado com sucesso"); Serial.println (dados); } else {Serial.println ("Falha"); }} else {Serial.println ("Sem GPS fix!"); }}} 

Processo de manufatura

  1. Sistema de atendimento usando Arduino e RFID com Python
  2. Registrador de dados GPS, análise espacial e Hub IoT do Azure.
  3. Controle remoto universal usando Arduino, 1Sheeld e Android
  4. Faça você mesmo voltímetro usando Arduino e Smartphone
  5. Monitor de freqüência cardíaca usando IoT
  6. Usando IoT para controlar remotamente um braço robótico
  7. IOT - Jar inteligente usando ESP8266, Arduino e sensor ultrassônico
  8. Medição de frequência e ciclo de trabalho usando Arduino
  9. Sonar usando arduino e exibição no IDE de processamento
  10. Piscina Azure IoT