Exibição de dados de sensores baseados em Realidade Aumentada

Realidade Aumentada e Realidade Mista são o futuro da interação humana com o mundo real. Realidade Aumentada é uma tecnologia que permite projetar imagens ao vivo, vídeos ou mídia no ambiente do mundo real junto com os objetos reais visíveis através de uma câmera ou dispositivo holográfico vestível. A tecnologia permite interagir com o ambiente do mundo real enquanto o manipula por meio de elementos gráficos gerados por computador e interfaces virtuais. É uma forma de modificar a visão do ambiente do mundo real por um computador.
Neste projeto, a Realidade Aumentada é utilizada para monitorar os dados do sensor fornecidos através de uma placa IoT. A placa IoT utilizada no projeto é a Particle Photon. O Photon é instalado em um local remoto com vários sensores (Sensor de Temperatura e Umidade DHT 11, Sensor LDR, Sensor de Proximidade IR e Sensor IR) conectados a ele. A placa está conectada ao servidor em nuvem e envia dados do sensor pelo ar para um aplicativo de realidade aumentada. O aplicativo projeta os dados do sensor enquanto a câmera do telefone Android foca em uma imagem alvo.
Imagem mostrando o aplicativo de realidade aumentada exibindo dados do sensor
Fig. 1: Imagem mostrando o aplicativo de realidade aumentada exibindo dados do sensor
Particle Photon é uma placa IoT compatível com Arduino. Para escrever o código do programa para qualquer Photon, o desenvolvedor precisa criar uma conta no site do Particle e registrar a placa Photon com sua conta de usuário. O código do programa pode então ser escrito no Web IDE no site da Particle e transferido para uma placa IOT registrada pela Internet. Se o Aglomerado selecionado, Photon aqui, estiver ligado e conectado ao serviço de nuvem do Particle, o código é gravado no cartão selecionado pelo ar por meio de uma conexão com a internet, e o cartão passa a operar de acordo com o código transferido.
O aplicativo de realidade aumentada usado no projeto é construído usando o kit de desenvolvimento de software de realidade aumentada Vuforia e o Unity Editor. A plataforma de desenvolvimento permite compilar um banco de dados prontamente disponível, fazer upload de imagens de destino e criar elementos de UI no Unity Editor. A interface do usuário pode ser facilmente vinculada ao banco de dados baixado arrastando e soltando os elementos da UI. O aplicativo pode então ser vinculado ao URL de registro de dados da placa Photon para capturar dados em tempo real. A plataforma permite compilar o projeto em um aplicativo móvel multiplataforma para uso em qualquer smartphone.
Componentes necessários –
Circuito da placa IoT:
1. Partícula Fóton.
2. Sensor DHT11.
3. Sensor LDR.
4. Qualquer conexão Wi-Fi.
5. Sensor infravermelho
6. Transistor BC547
7. Resistor de 1K ohm
8. LED de 5 mm
9. Sensor de proximidade.
Lado móvel:
1. Qualquer telefone Android
Diagrama de bloco
Diagrama de blocos do monitor de dados do sensor de realidade aumentada baseado em fótons de partículas
Fig. 2: Diagrama de blocos do monitor de dados do sensor de realidade aumentada baseado em fótons de partículas
Conexões de Circuito
No projeto, o circuito é construído interligando diversos sensores ao Particle Photon. O circuito possui os seguintes componentes conectados ao Photon da maneira mencionada abaixo –
Sensor de temperatura e umidade DHT-11 – O sensor DHT-11 lê a temperatura e umidade ambiente e retransmite os dados para o microcontrolador como dados digitais. O pino de dados do sensor de temperatura e umidade DHT11 é conectado ao pino A0 do Particle Photon, e o VCC e o aterramento são conectados ao VCC e ao aterramento comuns.
Sensor LDR – O LDR é usado para detectar a intensidade da luz. O sensor está conectado ao pino A1 do Particle Photon. O sensor está conectado a um circuito divisor de potencial. O LDR fornece uma tensão analógica, que é convertida em leitura digital pelo ADC embutido.
Sensor IR – O sensor IR é usado para detectar qualquer obstáculo. O sensor está conectado ao pino A2 do Particle Photon. O sensor está conectado a um circuito divisor de potencial. O sensor IR fornece uma tensão analógica, que é convertida em leitura digital pelo ADC embutido.
Sensor de proximidade IR – O sensor de proximidade IR detecta a distância de um obstáculo. O módulo do sensor possui três pinos – VCC, Terra e Saída. O VCC e o aterramento estão conectados ao VCC e ao aterramento comuns. O pino de saída do módulo sensor está conectado ao pino D0 do Particle Photon. A saída do sensor é uma tensão analógica, que varia de 3,1 V a 10 cm a 0,4 V a 80 cm de distância.
Fonte de alimentação – No circuito, Photon e outros ICs precisam de uma CC regulada de 5 V para seu funcionamento. Uma bateria de 18 V é usada como fonte primária de energia. A alimentação da bateria é regulada para 5V e 12V usando CIs 7805 e 7812. O pino 1 de ambos os CIs reguladores de tensão está conectado ao ânodo da bateria e o pino 2 de ambos os CIs está conectado ao terra. As respectivas saídas de tensão são extraídas do pino 3 dos respectivos CIs reguladores de tensão. Um LED junto com um resistor pull-up de 10K Ω também é conectado entre o terra comum e o pino de saída para obter uma dica visual da continuidade da alimentação.
Como funciona o circuito –
Assim que o código do programa é transferido para o Particle Photon, ele começa a operar de acordo com ele. O Particle Photon deve estar conectado a qualquer hotspot de internet via Wi-Fi. O código compatível com Arduino no Photon lê os dados dos sensores. Quatro sensores conectados à placa – Sensor de temperatura e umidade DHT 11, sensor LDR, sensor IR e sensor de proximidade IR.
O Sensor de Temperatura e Umidade DHT11 é um sensor digital com um sensor de umidade capacitivo integrado e um termistor. Ele retransmite leituras de temperatura e umidade em tempo real a cada 2 segundos. O sensor opera com alimentação de 3,5 a 5,5 V e pode ler temperatura entre 0° C e 50° C e umidade relativa entre 20% e 95%. O Sensor DHT 11 envia dados em formato digital para um pino controlador em um protocolo one-wire, que deve ser implementado no lado do firmware. Primeiro, o pino de dados é configurado para entrada e um sinal de início é enviado a ele. O sinal de início compreende um BAIXO por 18 milissegundos seguido por um ALTO por 20 a 40 microssegundos seguido por um BAIXO novamente por 80 microssegundos e um ALTO por 80 microssegundos. Após enviar o sinal de início, o pino é configurado para a saída digital e os dados de 40 bits que compreendem a leitura de temperatura e umidade são bloqueados. Os primeiros dois bytes dos dados de 5 bytes são uma parte inteira e uma parte decimal da leitura da umidade relativa, respectivamente. O terceiro e quarto bytes são uma parte inteira e decimal da leitura da temperatura, e o último é um byte de soma de verificação. O protocolo one-wire é implementado no firmware usando uma biblioteca de código aberto disponível para Photon.
Os outros sensores emitem uma tensão analógica nos respectivos pinos do controlador. A tensão analógica é lida e digitalizada usando um canal ADC integrado. A função analogRead é usada para ler a tensão analógica no pino do controlador.
Os valores dos sensores são lidos e armazenados em diferentes variáveis. Em seguida, as strings formatadas são passadas para a URL de registro de dados do Photon usando o método de publicação da biblioteca de partículas. A biblioteca é importada e compilada automaticamente pelo IDE Web do Particle e não precisa ser importada explicitamente.
O aplicativo de realidade aumentada está vinculado ao URL de registro de dados. Ele busca os dados da URL e os exibe nos botões da UI do aplicativo. Os botões são projetados quando a câmera está focada na imagem alvo.
Confira o código do fóton para saber como o código compatível com Arduino lê dados de sensores e publica-os no URL de registro de dados vinculado. Além disso, confira como o aplicativo AR é criado usando o Vuforia SDK e vinculado à placa Photon registrada.
Guia de programação –
O aplicativo AR foi criado usando o Vuforia SDK e envolve o uso do Unity Editor. O desenvolvimento de aplicativos de Realidade Aumentada usando Vuforia SDK envolve as seguintes etapas –
– Abra o Portal do Desenvolvedor Vuforia e registre uma conta.
– Verifique o ID do e-mail e faça login na conta de usuário registrada.
– Toque em “Desenvolver” na barra de navegação e clique em “Gerenciador de Destino”.
– Clique em “Adicionar banco de dados” e insira um nome de banco de dados exclusivo na janela pop-up. Mantenha a opção “dispositivo” selecionada e clique em “Criar”
botão.
– Clique no nome do banco de dados na lista de bancos de dados da página atualizada e clique no botão “Adicionar destino”. Selecione “Imagem Única” e navegue até a imagem de destino no computador. Agora a imagem alvo será carregada e mostrada na lista de alvos.
– Clique no botão “Baixar Banco de Dados” e selecione o “Editor Unity” como plataforma de desenvolvimento da janela pop-up. Clique em “Baixar”
botão. O banco de dados será compilado e baixado no computador.
– Clique em “Downloads” na barra de navegação e baixe Vuforia SDK for Unity.

– Clique em “Desenvolver” na barra de navegação e toque em “Gerenciador de licenças”. Clique em “Adicionar chave de licença”. Insira o nome do aplicativo, selecione o celular nos dispositivos, selecione o iniciador na chave de licença e clique no botão “Avançar”. Confirme para criar a chave de licença. Ao atualizar a página, a chave de licença recém-criada será exibida na lista. – Clique no nome da chave de licença e copie a chave de licença da página da web.=

– Abra o SDK do Editor do Unity. Crie um novo projeto e salve-o em uma pasta no computador.
– No Unity Editor SDK, “ARCamera” deve ser selecionado em “Hierarquia” na barra lateral esquerda. Clique em “Ativos” -> “Importar Pacote” ->
“Pacote Personalizado” e navegue no Pacote Vuforia. Assim que o pacote for importado, siga novamente “Ativos”-> “Importar Pacote” -> “Personalizado
Pacote” e navegue na imagem de destino. Da mesma forma, importe o banco de dados baixado anteriormente.
– Copie a chave de licença e cole em “App License Key” em “Vuforia Behavior” na barra lateral. Marque “Carregar banco de dados
e “Ativar” em “Comportamento de carregamento do banco de dados”.
– Selecione “Image Target” em “Hierarquia” na barra lateral esquerda e selecione o nome do banco de dados em “Image Target Behavior” na barra lateral direita. A imagem alvo será exibida no avião.
– Clique com o botão direito na janela “Hierarquia” e selecione “UI” -> “Tela”. Selecione “World Space” em “Render Mode” na opção “Canvas” no
barra lateral direita e clique duas vezes em “Tela” em Hierarquia” na barra lateral esquerda.
– Em “Rect Transform” na barra lateral direita, insira uma posição, rotação e valores de escala apropriados e clique em “Add Component”.
Selecione a imagem”. Clique na imagem alvo do banco de dados e defina “Modo de Textura” para “Sprite”. Clique em “Aplicar” e arraste a imagem do
Banco de dados em “Projeto” para “Imagem de origem” em “Canvas Renderer”. Altere a cor e o nível de transparência.

– Clique em “Tela” na janela “Hierarquia” e clique com o botão direito e selecione “UI” -> “Botão”. Alterar posição, escala, cor e transparência configurações

. Clique com o botão direito em “Botão” e clique em “UI” -> “Texto” para adicionar texto ao botão. Selecione as propriedades de transformação, fonte e parágrafo conforme desejado. Adicione mais um texto ao botão.
– Botão Duplicar clicando com o botão direito sobre ele na janela “Hierarquia” e selecione “Duplicar”. Crie mais cinco botões e altere o texto deles.
– Clique com o botão direito na janela “Hierarquia” e clique em “Criar Vazio”. Renomeie a pasta para “Code Container” e adicione scripts do banco de dados para
o pasta.
– Arraste e solte botões e textos de “Image Target” na janela “Hierarquia” para o banco de dados na barra lateral direita.
– Faça login no IDE Web do Particle e clique no ícone do Dashboard e clique em “Logs”. Clique no ícone do URL de registro. Copie e cole o URL em “Photon
Partícula URL” em “Read Stream” na barra lateral direita do banco de dados selecionado.
– Compile o projeto para criar o arquivo apk.
O código Photon é o seguinte –
Primeiramente, a biblioteca do sensor DHT é importada. O IDE Web da partícula adiciona automaticamente a biblioteca. Uma constante é definida para denotar o pino ao qual o sensor DHT 11 está conectado, e uma constante é definida para denotar uma variante do sensor DHT. São declaradas variáveis ​​para conter o valor de temperatura, umidade, intensidade de luz, movimento e faixa de UV. As variáveis ​​são declaradas para indicar os pinos aos quais os sensores fazem interface e são definidas como digital LOW por padrão para torná-los pinos de entrada. Um objeto do tipo DHT é declarado.
A função setup é chamada quando o pino conectado ao sensor de proximidade infravermelho é declarado como pino de entrada usando a função pinMode . O sensor DHT é inicializado chamando o método Begin no objeto DHT. A função setup é executada apenas uma vez no início do código.
O loop itera infinitamente. Na função loop , os dados do sensor DHT são obtidos usando os métodos getTempCelcius e getHumidity no objeto DHT. Os dados do sensor LDR são obtidos chamando o método analogRead e convertidos em intensidade de luz usando fórmulas padrão. O valor do sensor IR é lido e convertido em uma medição de distância. Uma função personalizada pirSensor é chamada para detectar movimento do sensor de proximidade. Os dados de diferentes sensores são armazenados em variáveis, agrupados em strings adequadas e enviados para a URL de registro de dados usando o métodopublish no objeto Particle.
Nota: O código completo do Photon para exibição de dados do sensor baseado em realidade aumentada pode ser encontrado na seção de código.
Você pode encontrar o link abaixo para baixar o arquivo rar do aplicativo Android.
https://github.com/EngenheirosGaragem/Software/bruto/mestre/AR_Data.rar

Código-fonte do projeto

###

//Program to


// based on; 

// ome useful stuff: 

// This #include statement was automatically added by the Particle IDE.

#include "Adafruit_DHT/Adafruit_DHT.h"


// This #include statement was automatically added by the Particle IDE.


// DHT parameters

#define DHTPIN A0

#define DHTTYPE DHT11


// Variables

int temperature;

int humidity;

int light;

int motion;

int ultraviolet;

int t = 100; // time

int light_sensor_pin = A1;

int pir = D0;

int pirState = LOW;

int uv = A2;


// DHT sensor

DHT dht(DHTPIN, DHTTYPE);


void setup  {

    // Start DHT sensor

    pinMode(D7,OUTPUT);

    pinMode(pir,INPUT);

    dht.begin ;

}


void loop  {

     digitalWrite(D7,HIGH);

    // Humidity measurement

    temperature = dht.getTempCelcius ;

    // Humidity measurement

    humidity = dht.getHumidity ;

    // Light level measurement

    float light_measurement = analogRead(light_sensor_pin);

    light = (int)(light_measurement/4096*100);

    

    int uvValue=analogRead(uv);

    ultraviolet = (uvValue*100)/1023;

    // Publish data

    Particle.publish("temperature", String(temperature));// + " °C");

    delay

    Particle.publish("humidity", String(humidity));// + "%");

    delay

    Particle.publish("light", String(light));// + "%");

    delay

    pirSensor ; // motion sensor information

    delay

    Particle.publish("ultraviolet", String(ultraviolet));

    delay

    digitalWrite(D7,LOW);

    delay

}


void pirSensor  {

     motion = digitalRead(pir); // read input value

     Particle.publish("motion", "1"); // or 1 -  We only want to print on the output change, not state

 if(motion==false)

    Particle.publish("motion", "0"); // or 0 - Serial.println("Motion ended!");


}

###

Diagramas de circuito

Circuito-Diagrama-Partícula-Fóton-Baseado-Realidade Aumentada-Sensor-Monitor de Dados

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.