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 –
Fig. 1: Diagrama de blocos do monitor de dados do sensor controlado por Bluetooth baseado em Arduino
Conexões de Circuito –

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.
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 –

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.
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.
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