O sensor de temperatura e umidade DHT17 é um sensor popular e barato que pode ser usado em uma faixa bastante ampla de temperatura e umidade relativa. Vamos ver como conectá-lo ao Arduino e como ler seus dados.
Necessário
- - Arduino;
- - Sensor de temperatura e umidade DHT17.
Instruções
Passo 1
Portanto, o sensor DHT11 tem as seguintes características:
- faixa de umidade relativa medida - 20..90% com um erro de até 5%, - faixa de temperaturas medidas - 0..50 graus Celsius com um erro de até 2 graus;
- tempo de resposta a mudanças na umidade - até 15 segundos, temperatura - até 30 segundos;
- o período mínimo de votação é de 1 segundo.
Como você pode ver, o sensor DHT11 não é muito preciso e a faixa de temperatura não cobre valores negativos, o que dificilmente é adequado para medições externas na estação fria em nosso clima. No entanto, seu baixo custo, tamanho pequeno e facilidade de uso compensam parcialmente essas desvantagens.
A figura mostra a aparência do sensor e suas dimensões em milímetros.
Passo 2
Considere o diagrama de conexão do sensor de temperatura e umidade DHT11 para o microcontrolador, em particular, para o Arduino. Na imagem:
- MCU - microcontrolador (por exemplo, Arduino ou similar) ou computador de placa única (Raspberry Pi ou similar);
- DHT11 - sensor de temperatura e umidade;
- DATA - barramento de dados; se o comprimento do cabo de conexão do sensor ao microcontrolador não ultrapassar 20 metros, é recomendável puxar este barramento para a fonte de alimentação com um resistor de 5, 1 kOhm; se mais de 20 metros, então outro valor adequado (menor).
- VDD - fonte de alimentação do sensor; tensões permitidas de ~ 3,0 a ~ 5,5 volts DC; se for usada uma fonte de alimentação de ~ 3,3 V, é aconselhável usar um fio de alimentação de até 20 cm.
Um dos fios do sensor - o terceiro - não está conectado a nada.
O sensor DHT11 é geralmente vendido como um conjunto completo com a tubulação necessária - resistor pull-up e capacitor de filtro.
etapa 3
Vamos montar o esquema considerado. Também vou conectar um analisador lógico ao circuito para estudar o diagrama de tempo da comunicação com o sensor.
Passo 4
Vamos pelo caminho mais simples: baixe a biblioteca do sensor DHT11 (link na seção "Fontes"), instale-o da maneira padrão (descompacte-o no diretório / libraries / do ambiente de desenvolvimento do Arduino).
Vamos escrever um esboço tão simples. Vamos carregá-lo no Arduino. Este esboço emitirá as mensagens de RH e temperatura lidas do sensor DHT11 para a porta serial do computador a cada 2 segundos.
Etapa 5
Agora, usando o diagrama de tempo obtido do analisador lógico, vamos descobrir como é feita a troca de informações.
O sensor de temperatura e umidade DHT11 usa uma interface serial de fio único para se comunicar com o microcontrolador. Uma troca de dados leva cerca de 40 ms e contém: 1 bit de solicitação do microcontrolador, 1 bit de resposta do sensor e 40 bits de dados do sensor. Os dados incluem: 16 bits de informações de umidade, 26 bits de informações de temperatura e 8 bits de verificação.
Vamos dar uma olhada no diagrama de tempo da comunicação do Arduino com o sensor DHT11.
Pode-se observar na figura que existem dois tipos de impulsos: curtos e longos. Pulsos curtos neste protocolo de troca denotam zeros, pulsos longos - uns.
Portanto, os dois primeiros pulsos são a solicitação do Arduino ao DHT11 e, consequentemente, a resposta do sensor. Em seguida, vêm 16 bits de umidade. Além disso, eles são divididos em bytes, alto e baixo, no alto à esquerda. Ou seja, em nossa figura, os dados de umidade são os seguintes:
0001000000000000 = 00000000 00010000 = 0x10 = 16% UR.
Dados de temperatura semelhantes a:
0001011100000000 = 00000000 00010111 = 0x17 = 23 graus Celsius.
Bits de verificação - a soma de verificação é apenas a soma de 4 bytes de dados recebidos:
00000000 +
00010000 +
00000000 +
00010111 =
00100111 em binário ou 16 + 23 = 39 em decimal.