Monitoramento de dados do sensor no telefone Android

Os telefones celulares são muito comuns hoje em dia e cada nova tecnologia está se conectando e se sobrepondo ao domínio móvel atualmente. Até mesmo muitos projetos de sistemas embarcados estão em desenvolvimento, o que envolve o usar de smartphones. Este projeto trata do monitoramento de dados de sensores em um Android telefone. Os sensores utilizados no projeto são LDR e DHT 11 que permitem monitorar a intensidade da luz, temperaturae umidade. Os sensores são interligados a um Arduino Pro Mini que retransmite os dados para um Android telefone com a ajuda de um HC-05 Módulo Bluetooth.
O projeto também envolve o desenvolvimento de um aplicativo móvel construído no MIT App Inventor. O software permite desenvolver um aplicativo móvel apenas criando a interface e integrando blocos de código. O aplicativo desenvolvido para o projeto pode ser baixado na Garagem dos Engenheiros.
O código Arduino do projeto lê os dados do sensor e os transmite para o telefone Android através do módulo Bluetooth. HC-05 é um módulo serial Bluetooth que transmite ou recebe dados serialmente. Os dados são exibidos em um único aplicativo de atividade sob os títulos de temperatura, umidade e intensidade de luz. Os mesmos dados também são exibidos em um display LCD.

Componentes necessários –

• Arduino PRO MINI
•LCD 16×2
• Módulo Bluetooth HC-05
• Sensor DTH 11
• Sensor LDR
• Reguladores de tensão 7805
• LED de 5mm
• Resistor de 1K ohm

Diagrama de bloco –

Diagrama de blocos do monitor de dados de sensor controlado por Bluetooth baseado em Arduino
Fig. 1: Diagrama de blocos do monitor de dados do sensor controlado por Bluetooth baseado em Arduino

Conexões de Circuito –

Protótipo de monitor de dados de sensor controlado por Bluetooth baseado em Arduino

Fig. 2: Protótipo de monitor de dados de sensor controlado por Bluetooth baseado em Arduino

O projeto envolve um circuito baseado em Arduino e um telefone Android. O circuito baseado em Arduino é montado da seguinte maneira –

Fonte de alimentação – A alimentação é fornecida por uma bateria de 18V. A alimentação da bateria é regulada para 5V DC usando o IC regulador de tensão 7805. O IC possui três pinos – o pino 1 deve ser conectado ao ânodo da bateria, os pinos 2 e 3 ao cátodo (terra comum). Os 5V DC devem ser retirados do pino 3 do IC. Um LED junto com um resistor pull-up de 10K Ω também pode ser conectado entre o terra comum e o pino de saída para obter uma dica visual da continuidade da alimentação.
LCD 16X2: O display LCD 16X2 é usado para exibir os dados do sensor. Ele é conectado à placa Arduino conectando seus pinos de dados aos pinos 2 a 5 da placa Arduino. Os pinos RS e E do LCD estão conectados aos pinos 13 e 12 do Arduino UNO respectivamente. O pino RW do LCD está aterrado.
Tabela listando conexões de circuito entre Arduino Uno e Character LCD
Fig. 3: Tabela listando conexões de circuito entre Arduino Uno e Character LCD
A biblioteca padrão de código aberto para interface do LCD com a placa Arduino é usada no projeto. A biblioteca funciona conforme o esperado e não precisa de alterações ou modificações.
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 Arduino Pro Mini e o VCC e o aterramento são conectados ao VCC comum e ao aterramento.
Sensor LDR – O LDR é usado para detectar a intensidade da luz. O sensor está conectado ao pino A1 da placa Arduino. O sensor está conectado em um circuito divisor de potencial. O LDR fornece uma tensão analógica que é convertida em leitura digital pelo ADC embutido.
Módulo Bluetooth HC-05 – O módulo Bluetooth HC-05 é um módulo de protocolo de porta serial. Opera na banda ISM 2,4 GHz com V2.0 + EDR (taxa de dados aprimorada). Pode funcionar nos modos Master e Slave. O módulo Bluetooth possui seis pinos – Enable, VCC, Ground, Transmit Data (TxD), Receive Data (RxD) e State. Os pinos Enable e State não são utilizados e, portanto, não estão conectados ao circuito. Os pinos VCC e Terra são conectados ao VCC e Terra comuns. Os pinos TxD e RxD do módulo estão conectados aos pinos 8 e 9 do Arduino Pro Mini respectivamente.

Como funciona o circuito –

Imagem do monitor de dados de sensor controlado por Bluetooth baseado em Arduino

Fig. 4: Imagem do monitor de dados do sensor controlado por Bluetooth baseado em Arduino

Quando o circuito é ligado, a placa Arduino carrega as bibliotecas necessárias e começa a buscar dados do sensor de temperatura e umidade DHT-11 e do sensor LDR. O Sensor de Temperatura e Umidade DHT11 é um sensor digital com sensor de umidade capacitivo embutido e termistor. Ele transmite uma leitura 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 não pode ser conectado diretamente a um pino digital da placa, pois opera no protocolo de 1 fio que deve ser implementado apenas no 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.
Depois de enviar o sinal de início, o pino é configurado para saída digital e os dados de 40 bits compostos pela leitura de temperatura e umidade são bloqueados. Dos dados de 5 bytes, os dois primeiros bytes são a parte inteira e decimal da leitura da umidade relativa, respectivamente, o terceiro e o quarto bytes são a parte inteira e decimal da leitura da temperatura e o último é o byte da soma de verificação.
Para Arduino, a biblioteca padrão para o sensor DHT-11 já está disponível. Os dados do sensor podem ser facilmente preparados chamando o método read11 da classe DHT.
O sensor LDR é conectado a um circuito divisor de potencial e insere uma tensão no pino de entrada analógica do controlador. A tensão é lida e digitalizada usando o canal ADC embutido.
O esboço do Arduino armazena os dados do sensor em um conjunto de variáveis ​​globais e os transfere para o módulo Bluetooth em uma string formatada via comunicação serial. Os mesmos dados são enviados ao módulo LCD para exibição. O aplicativo móvel no telefone Android deve estar emparelhado com o módulo Bluetooth. O módulo Bluetooth utilizado no projeto possuía um endereço Mac 05 20:15:01:30:17:25 para sua identificação única e uma senha 1234 para emparelhamento. Outros módulos Bluetooth também possuem endereços Mac e senha para identificação e emparelhamento com outros dispositivos, respectivamente. Depois que o telefone Android estiver emparelhado com o módulo Bluetooth no circuito, os dados transmitidos em série dele serão exibidos na atividade principal do aplicativo personalizado.
A transmissão dos dados do sensor é mantida ininterrupta no projeto e exibe cabeçalhos de temperatura, umidade e intensidade de luz na atividade principal do aplicativo.
Confira o código do programa para saber como o Arduino lê os dados do sensor DHT 11 e LDR e os transmite serialmente através do módulo Bluetooth.

Guia de programação –

O esboço do Arduino importa a biblioteca SoftwareSerial para comunicação serial virtual com o módulo Bluetooth, a biblioteca LiquidCrystal para interface LCD e DHT.h para lidar com sensores de temperatura e umidade. Um pino de LED é declarado para testar o progresso da transmissão e um objeto do tipo DHT é declarado. Um objeto para comunicação serial virtual é declarado e mapeado nos pinos conectados ao módulo Bluetooth. Um objeto do tipo LCD é instanciado e mapeado com os respectivos pinos do Arduino. As variáveis ​​para manter os valores de temperatura, umidade e intensidade de luz são declaradas.
Uma função setup é chamada na qual a taxa de transmissão para comunicação serial com o módulo Bluetooth e LCD é definida como 9600 bits por segundo e algumas strings de texto iniciais são impressas no módulo LCD.
Captura de tela da função de inicialização e configuração no código Arduino para monitor de dados de sensor controlado por Bluetooth
Fig. 5: Captura de tela da função de inicialização e configuração no código Arduino para monitor de dados de sensor controlado por Bluetooth
A função loop é chamada na qual os dados dos sensores são lidos usando funções de biblioteca padrão e armazenados nas respectivas variáveis. Os valores armazenados nas variáveis ​​são exibidos no LCD e transmitidos serialmente ao módulo Bluetooth para envio ao aplicativo móvel. O aplicativo móvel recebe os valores transmitidos por Bluetooth e os exibe na atividade principal do aplicativo.
Captura de tela da função Loop no monitor de dados do sensor controlado por Bluetooth
Fig. 6: Captura de tela da função Loop no monitor de dados do sensor controlado por Bluetooth
Você encontrará o código completo para Sensor Data Monitoring no Android Project na guia do código-fonte.
Nota: você pode encontrar o arquivo rar Aplicativo móvel de dados do sensor no anexo abaixo.

Código fonte do projeto

###

//Program to 
#include  // Software Seral library

#include 

#include

const int ledPin = 13; // LED's

dht DHT;

#define dht_dpin A0

SoftwareSerial BTserial(8,9); // RX   TX

LiquidCrystal lcd(13, 12,5, 4, 3,2);// Pins used for RS,E,D4,D5,D6,D7

int humi,temp,data;

void setup  {

  Serial.begin(9600);

  BTserial.begin(9600);

  lcd.begin(16,2);

  lcd.setCursor(0,0);

  lcd.print("Engineers Garage");  

  lcd.setCursor(0,1);

  lcd.print("  BT CONNECTION ");

  delay(3000);

  lcd.setCursor(0,1);

  lcd.print("                "); 

  }



void loop {

digitalWrite(ledPin, HIGH);

DHT.read11(dht_dpin); //read DTH11 data

data = analogRead(A1);

humi = DHT.humidity;   // DTH11 Humidity sensor data

temp = DHT.temperature; // DTH11 Temperature sensor data

lcd.setCursor(0,1);

lcd.print(humi); 

lcd.setCursor(7,1);

lcd.print(temp);

lcd.setCursor(13,1);

lcd.print(data);

BTserial.println(humi);

Serial.println(humi);

BTserial.print(" ");

BTserial.println(temp);

Serial.println(temp);

BTserial.print(" ");

BTserial.println(data);

Serial.println(data);

delay(1000);

digitalWrite(ledPin, LOW);

delay(50);

}

###

Vídeo do projeto

Torna al blog

Lascia un commento

I commenti devono essere approvati prima della pubblicazione.