Índice:
- Etapa 1: Como funciona o I2c
- Etapa 2: Biblioteca
- Etapa 3: Behaivor
- Etapa 4: Uso I2c
- Etapa 5: Uso de um fio
- Etapa 6: leitura implícita
- Etapa 7: leitura simples
- Etapa 8: leitura completa
- Etapa 9: Diagrama de conexão
- Etapa 10: Arduino: OneWire
- Etapa 11: Arduino: I2c
- Etapa 12: Esp8266 (D1Mini) OneWire
- Etapa 13: Esp8266 (D1Mini) I2c
- Etapa 14: Obrigado
Vídeo: DHT12 (sensor de temperatura e umidade i2c barato), uso rápido e fácil: 14 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Você pode encontrar atualizações e outras no meu site
Gosto de sensor que pode ser usado com 2 fios (protocolo i2c), mas adoro o barato.
Esta é uma biblioteca Arduino e esp8266 para a série DHT12 de sensores de temperatura / umidade de custo muito baixo (menos de 1 $) que funcionam com i2c ou conexão de um fio.
Muito útil se você quiser usar esp01 (se você usar serial, você tem apenas 2 pinos) para ler umidade e temperatura e exibi-las no LCD i2c.
Ai li que às vezes parece que preciso de calibração, mas tenho árvore disso e consigo valor muito parecido com o DHT22. Se você tiver esse problema de calibração, abra o problema no github e adiciono a implementação.
Etapa 1: Como funciona o I2c
O I2C trabalha com seus dois fios, o SDA (linha de dados) e o SCL (linha do relógio).
Ambas as linhas têm dreno aberto, mas são puxadas para cima com resistores.
Normalmente, há um mestre e um ou vários escravos na linha, embora possa haver vários mestres, mas falaremos sobre isso mais tarde.
Tanto mestres quanto escravos podem transmitir ou receber dados, portanto, um dispositivo pode estar em um destes quatro estados: mestre transmitir, mestre receber, escravo transmitir, escravo receber.
Etapa 2: Biblioteca
Você pode encontrar minha biblioteca aqui.
Baixar
Clique no botão DOWNLOADS no canto superior direito, renomeie a pasta descompactada DHT12.
Verifique se a pasta DHT contém DHT12.cpp e DHT12.h.
Coloque a pasta da biblioteca DHT em sua pasta / libraries /.
Você pode precisar criar a subpasta de bibliotecas se for sua primeira biblioteca.
Reinicie o IDE.
Etapa 3: Behaivor
Esta libray tenta emular o comportamento dos sensores da biblioteca DHT padrão (e copia muito código), e eu adiciono o código para gerenciar o i2c olso da mesma maneira.
O método é o mesmo do sensor da biblioteca DHT, com algumas funções adicionais de ponto de orvalho.
Etapa 4: Uso I2c
Para usar com i2c (endereço padrão e pino SDA SCL padrão), o construtor é:
DHT12 dht12;
e pegue o valor padrão para o pino SDA SCL.
(É possível redefinir com o construtor especificado para esp8266, necessário para ESP-01). ou
DHT12 dht12 (uint8_t addressOrPin)
addressOrPin -> endereço
para alterar o endereço.
Etapa 5: Uso de um fio
Para usar um fio:
DHT12 dht12 (uint8_t addressOrPin, true)
addressOrPin -> pin
O valor booleano é a seleção do modo oneWire ou i2c.
Etapa 6: leitura implícita
Você pode usá-lo com "implícito", "leitura simples" ou "leitura completa": Implícito, apenas a primeira leitura faz uma leitura verdadeira do sensor, a outra leitura que se torna em 2 segundos. intervalo é o valor armazenado da primeira leitura.
// A leitura do sensor tem 2 segundos de tempo decorrido, a menos que você passe o parâmetro force
// Lê a temperatura como Celsius (o padrão) float t12 = dht12.readTemperature (); // Lê a temperatura como Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // As leituras do sensor também podem ser de até 2 segundos 'antigas' (é um sensor muito lento) float h12 = dht12.readHumidity (); // Computa o índice de calor em Fahrenheit (o padrão) float hif12 = dht12.computeHeatIndex (f12, h12); // Computa o índice de calor em Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Computa o ponto de orvalho em Fahrenheit (o padrão) float dpf12 = dht12.dewPoint (f12, h12); // Calcula o ponto de orvalho em Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Etapa 7: leitura simples
Leitura simples para obter um status de leitura.
// A leitura do sensor tem 2 segundos de tempo decorrido, a menos que você passe o parâmetro force
bool chk = dht12.read (); // leitura verdadeira está ok, problema de leitura falsa
// Lê a temperatura como Celsius (o padrão)
float t12 = dht12.readTemperature (); // Lê a temperatura como Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // As leituras do sensor também podem ser de até 2 segundos 'antigas' (é um sensor muito lento) float h12 = dht12.readHumidity (); // Computa o índice de calor em Fahrenheit (o padrão) float hif12 = dht12.computeHeatIndex (f12, h12); // Computa o índice de calor em Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Computa o ponto de orvalho em Fahrenheit (o padrão) float dpf12 = dht12.dewPoint (f12, h12); // Calcula o ponto de orvalho em Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Etapa 8: leitura completa
Leitura completa para obter um status especificado.
// A leitura do sensor tem 2 segundos de tempo decorrido, a menos que você passe o parâmetro force
DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nLer sensor:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); pausa; case DHT12:: ERROR_CHECKSUM: Serial.println (F ("Erro de checksum")); pausa; case DHT12:: ERROR_TIMEOUT: Serial.println (F ("Erro de tempo limite")); pausa; case DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Erro de timeout em sinal baixo, tente colocar resistência de pullup alta")); pausa; case DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Erro de timeout em sinal baixo, tente colocar baixa resistência pullup")); pausa; case DHT12:: ERROR_CONNECT: Serial.println (F ("Erro de conexão")); pausa; case DHT12:: ERROR_ACK_L: Serial.println (F ("AckL error")); pausa; case DHT12:: ERROR_ACK_H: Serial.println (F ("Erro AckH")); pausa; case DHT12:: ERROR_UNKNOWN: Serial.println (F ("Erro desconhecido DETECTADO")); pausa; case DHT12:: NONE: Serial.println (F ("Sem resultado")); pausa; padrão: Serial.println (F ("Erro desconhecido")); pausa; }
// Lê a temperatura como Celsius (o padrão)
float t12 = dht12.readTemperature (); // Lê a temperatura como Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // As leituras do sensor também podem ser de até 2 segundos 'antigas' (é um sensor muito lento) float h12 = dht12.readHumidity (); // Computa o índice de calor em Fahrenheit (o padrão) float hif12 = dht12.computeHeatIndex (f12, h12); // Computa o índice de calor em Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Computa o ponto de orvalho em Fahrenheit (o padrão) float dpf12 = dht12.dewPoint (f12, h12); // Computa o ponto de orvalho em Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Etapa 9: Diagrama de conexão
Com exemplos, há o diagrama de conexão, é importante usar o resistor pullup correto.
Agradeço a Bobadas, dplasa e adafruit, por compartilhar o código no github (de onde levo alguns códigos e ideias).
Etapa 10: Arduino: OneWire
Etapa 11: Arduino: I2c
Etapa 12: Esp8266 (D1Mini) OneWire
Etapa 13: Esp8266 (D1Mini) I2c
Etapa 14: Obrigado
Playground do Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)
série de projetos i2c (coleção):
- Sensor de temperatura e umidade
- Expansor analógico
- Expansor digital
- Tela de LCD
Recomendado:
Como usar o sensor de umidade e temperatura DHT12 I2C com o Arduino: 7 etapas
Como usar o sensor de umidade e temperatura DHT12 I2C com o Arduino: Neste tutorial, aprenderemos como usar o sensor de umidade e temperatura DHT12 I2C com o Arduino e exibir os valores no display OLED. Assista ao vídeo
Caixa / invólucro personalizado incomum (rápido, fácil, modular, barato): 7 etapas
Caixa / invólucro personalizado incomum (rápido, fácil, modular, barato): O objetivo deste Instructables é mostrar a você como fazer uma caixa / invólucro modular e barato. Vou mostrar a você como fazer isso com limitações ferramentas e orçamento. Este é o meu primeiro Instructables (também o inglês não é minha primeira língua), então por favor seja
PCF8591 (Expansor de E / S analógica i2c) Uso rápido e fácil: 9 etapas
PCF8591 (Expansor de E / S analógica i2c) Rápido Fácil Uso: Biblioteca para usar i2c pcf8591 IC com arduino e esp8266. Este IC pode controlar (até 4) a entrada analógica e / ou 1 saída analógica como medir a tensão, ler o valor do termistor ou atenuar um led. Pode ler o valor analógico e escrever o valor analógico com apenas 2 fios (perfec
Echo Dot Hanger, fácil, rápido e barato !: 7 etapas
Echo Dot Hanger, fácil, rápido e barato !: Por mrcisaleaffanPublicado em 26 de julho de 2018Se você gosta deste Instructable, vote nele no " Creative Misuse " concurso.Introdução: Echo Dot Hanger, fácil, rápido e baratoNo Natal passado, recebi um alto-falante inteligente Alexa Echo. Sinc
ATUALIZADA !!!! Amplificador de sinal de antena WIFI barato e fácil que é melhor e mais rápido do que os de papel !!!: 9 etapas
ATUALIZADA !!!! Amplificador de sinal de antena WIFI barato e fácil que é melhor e mais rápido do que os de papel !!!: Um novo balanço sobre uma velha ideia para melhorar seu sinal WIFI