Estação de medição de temperatura Open-Source com Arduino e IoT – Configuração

medição de temperatura

Este artigo é o primeiro de uma série de três artigos que mostra como construir uma estação de medição de temperatura utilizando Arduino e IoT open source. Ou seja, qualquer um poderá reproduzir este artigo e contribuir para a medição de temperatura em diferentes pontos do Brasil (e, quem sabe, planeta).

Para comunicação com internet, será utilizado um módulo Wi-Fi ESP8266 ESP-01, o qual utilizará MQTT. Esta série foi feita por mim e por Douglas Salin Zuqueto.

A série de artigos que está sendo escrita aborda os seguintes assuntos:

Esta série foi desenvolvida com o  hardware oferecido pelo loja FILIPEFLOP, a qual foi fundamental para o desenvolvimento deste projeto, pois sem o auxílio do hardware, o projeto se tornaria inviável.

logo FILIPEFLOP

Motivação

A Internet das Coisas (IoT, em inglês) veio para ficar. Utilizando conceitos de IoT, pode-se criar sistemas interligados via web, não importando assim em nada a localização geográfica das partes. Chegamos à era em que sistemas comunicam-se entre si para oferecer a nós, seres humanos, uma melhor (e maior) experiência de uso. 

Motivados pelas dimensões que a IoT podem nos proporcionar, eu e o Douglas Salin Zuqueto resolvemos construir uma estação de medição de temperatura utilizando conceitos de IoT. Ou seja, através da Internet, será possível obter a temperatura de um determinado local quase que instantaneamente, também o faremos de modo Open-Source, ou seja, qualquer um tem a liberdade de reproduzir o projeto. Assim, agregando mais valor a ele. Como foi citado, todo projeto é construído de forma livre, portanto, quanto mais pessoas reproduzirem o projeto, mais locais do planeta terão suas temperaturas monitoradas. Com isso, uma rede coloborativa de estações de medição se formará.

Hardware utilizado para medição de temperatura

O projeto utiliza os seguintes componentes de hardware:

Diagrama em blocos do sistema

O diagrama em blocos do sistema pode ser visto abaixo:

Diagrama em blocos do sistema de medição de temperatura IoT
Figura 1 – Diagrama em blocos do sistema de medição de temperatura IoT

Conforme é mostrado no diagrama, toda a interação das estações de medição de temperatura e seus destinos finais (computadores, tablets e/ou smartphones) é feita puramente via Internet. Logo, qualquer local do planeta pode ter sua temperatura monitorada e disponibilizada no sistema sem problemas.

Circuito esquemático

O circuito esquemático do projeto pode ser visto na figura 2:

Medição de temperatura: circuito esquemático
Figura 2 – circuito esquemático

Leitura da temperatura

O primeiro passo para o desenvolvimento do projeto é realizar a leitura da temperatura obtida pelo sensor DHT-22. Primeiramente, é necessário baixar e instalar a biblioteca de comunicação do Arduino com o sensor DHT-22. Para isso, acesse este GitHub e siga as suas instruções.

Uma vez baixada e instalada a biblioteca, pode-se fazer um software básico no Arduino para ler o valor da temperatura e exibir no Serial Monitor (presente em qualquer IDE do Arduino). 

/*
Leitor de temperatura (DHT22)
Autores: Pedro Bertoleti e Douglas Zuqueto
Data: Dezembro/2015

Este é o programa de leitura de tempertura (do sensor DHT22). 
O programa le a temperatura em um periodo de 10 segundos e mostra,
no Serial Monitor, a temperatura lida.
*/
#include "DHT.h"

//defines gerais
#define DHTPIN                2      //pino do Arduino que está conectado ao pino de dados do sensor
#define DHTTYPE               DHT22  //estabelece que o sensor utilizado é o DHT22 (é possível selecionar entre DHT11, DHT22 e DHT21)
#define TEMPO_LEITURA_SENSOR  10000  //tempo entre leituras de temperatura

//variáveis globais
DHT dht(DHTPIN, DHTTYPE);   //objeto para comunicar com sensor de temperatura DHT22

//Função setup (inicializações do programa)
void setup() 
{
  Serial.begin(9600);
  Serial.println("======Leitor de temperatura======");
  
  //inicia a comunicação com o sensor DHT22
  dht.begin();
}

//loop (programa principal)
void loop() 
{
  float TemperaturaLida;

  //le a temperatura (em graus Celsius)
  TemperaturaLida = dht.readTemperature();  
  
  //checa se a leitura da temperatura foi bem sucedida ou não
  if (isnan(TemperaturaLida))
      Serial.println("- Falha ao ler a temperatura medida pelo sensor DHT22");
  else
  {
      Serial.print("- Temperatura: ");
      Serial.print(TemperaturaLida);
      Serial.println("C"); 
  }      
  
  delay(TEMPO_LEITURA_SENSOR);

}

Resultados

Como citado no tópico anterior, pode-se observar  o valor lido através do Serial Monitor. Portanto, veja na imagem abaixo um conjunto de leituras efetuadas.

Serial Monitor (medição de temperatura)
Figura 3 – Serial Monitor (leitor de temperatura)

Configuração da comunicação serial com módulo Wi-Fi

A Comunicação Serial do Arduino com o Módulo Wi-Fi não é nada complicado. Para quem já desenvolveu projetos envolvendo placas arduino com módulos Bluetooth, é praticamente a mesma coisa. 

Observe o Sketch anterior e veja que já está sendo recuperado e impresso o valor da temperatura no monitor serial. Para que se possa enviar o valor da temperatura via serial para o módulo ESP8266 e, simultaneamente, ter mensagens de debug no monitor serial, teremos que fazer uma pequena modificação no código anterior. Observe o código abaixo.

/*
  Leitor de temperatura (DHT22)
  Autores: Pedro Bertoleti e Douglas Zuqueto
  Data: Dezembro/2015

  Este é o programa de leitura de tempertura (do sensor DHT22).
  O programa le a temperatura em um periodo de 10 segundos e mostra,
  no Serial Monitor, a temperatura lida.
*/
#include "DHT.h"
#include <SoftwareSerial.h> // Biblioteca SoftwareSerial

//defines gerais
#define DHTPIN                4      //pino do Arduino que está conectado ao pino de dados do sensor
#define DHTTYPE               DHT22  //estabelece que o sensor utilizado é o DHT22 (é possível selecionar entre DHT11, DHT22 e DHT21)
#define TEMPO_LEITURA_SENSOR  10000  //tempo entre leituras de temperatura

//variáveis globais
DHT dht(DHTPIN, DHTTYPE);   //objeto para comunicar com sensor de temperatura DHT22
SoftwareSerial comunicacaoESP(2, 3); // objeto para comunicação serial com o ESP8266 nas Portas 2(RX) e 3(TX)

//Função setup (inicializações do programa)
void setup()
{
  Serial.begin(9600);
  Serial.println("======Leitor de temperatura======");
  comunicacaoESP.begin(9600); // inicia a comunicação serial com o ESP8266

  //inicia a comunicação com o sensor DHT22
  dht.begin();
}

//loop (programa principal)
void loop()
{
  float TemperaturaLida;

  //le a temperatura (em graus Celsius)
  TemperaturaLida = dht.readTemperature();

  //checa se a leitura da temperatura foi bem sucedida ou não
  if (isnan(TemperaturaLida)) {
    Serial.println("- Falha ao ler a temperatura medida pelo sensor DHT22");
    comunicacaoESP.println('0'); // caso o valor seja nulo ou indefinido, o valor '0' é enviado para o ESP
  } else
  {
    Serial.print("- Temperatura: ");
    Serial.print(TemperaturaLida);
    Serial.println("C");
    comunicacaoESP.println(TemperaturaLida); // envio do valor da temperatura para o módulo ESP
  }

  delay(TEMPO_LEITURA_SENSOR);

}

Veja no Sketch acima que usamos a biblioteca SoftwareSerial. Essa biblioteca nos permite usar portas digitais do Arduino para criar outra comunicação serial em paralelo (emulada por software) à comunicação serial nativa da placa Arduino. Neste caso foi usado as portas 2 (RX) e 3 (TX) com velocidade de 9600 bauds.

Poderíamos ter usado os pinos 0 e 1 referente à comunicação serial nativa sem problema algum, mas com o auxílio da biblioteca usada podemos visualizar no monitor serial a temperatura lida (através da comunicação serial nativa) e, ao mesmo tempo, enviar a temperatura via serial (usando a biblioteca) para o ESP8266. Caso fosses usados os pinos 0 e 1, não teria como fazer esse debug no monitor serial. 

Na segunda parte do artigo será abordada a programação do módulo ESP8266 para receber a temperatura enviada pelo Arduino, além de ser abordada a conexão do módulo com a rede Wi-Fi e também a conexão e o envio dos dados para o Broker MQTT.

Referências

Estação de medição de temperatura Open-Source com Arduino e IoT

Estação de medição de temperatura Open-Source com Arduino e IoT – Comunicação
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
12 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
romulo
romulo
22/03/2023 07:24

olá!! bom dia!!! vi que o artigo é de 7 anos passados. Ainda é possível realizar o projeto!?
muito obrigado!!!

Pedro Otávio
Pedro Otávio
25/04/2019 11:38

Teria como utilizar este protocolo MQTT com um m ódulo Ethernet w5100?

Diego
Diego
04/01/2018 11:57

teria alguma forma de implantar serviço snmp ? para enviar resultados e alarmes. serviço de sms ou call ?

Eder
Eder
28/12/2015 09:03

Ansioso pelos próximos, muito massa.

Eder
Eder
18/12/2015 18:54

Mandou bem!

phfbertoleti
phfbertoleti
Reply to  Eder
07/01/2016 23:53

Valeu Eder! Logo virão as duas partes seguintes. Ficará massa!

Tiago Nunes
Tiago Nunes
18/12/2015 10:19

Parabéns pelo Artigo!

phfbertoleti
phfbertoleti
Reply to  Tiago Nunes
07/01/2016 23:53

Obrigado Tiago!

Igor Borges
Igor Borges
18/12/2015 07:15

Artigo show Pedrão, você é o rei do IoT!

phfbertoleti
phfbertoleti
Reply to  Igor Borges
07/01/2016 23:53

Hahaha, valeu Igor!

rogerio peixoto
rogerio peixoto
05/02/2017 22:51

Prezados, sou iniciante no mundo Arduíno e um dos fatores do projeto que
preciso desenvolver envolver medição de temperatura corporal de
pequenos animais. Sabendo que a fiação entre os sensores e o
microcontrolador será roída por eles (além do risco de choque elétrico
ao spécimen) gostaria de saber dos Srs se conhecem algum sensor que
possa medir a temperatura a curta distância, sem que precise estar
fixado ao corpo do animal (que ficará em uma pequena gaiola). Desde já
agradeço pelas dicas/orientações.

Lindomar Schulze
Lindomar Schulze
17/09/2016 17:50

estou montando uma estação meteorologica com arduino e o esp8266 e os sensores dht22, ldr, bmp180, biruta, anemometro, pluviometro, sensor de raios uv, sensores de poeira e fumaça e o rtc, esta comunicação vai suportar este volume todos de dados?

Home » Hardware » Placas de desenvolvimento » Estação de medição de temperatura Open-Source com Arduino e IoT – Configuração

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: