Digispark com DHT11 e Display LCD 16×2 I2C
A pouco tempo atrás, publicamos um post mostrando como conectar um display oled na Digispark Attiny85. O post de hoje vai ser um post no estilo “2 em 1”: vamos mostrar como usar a Digispark com display LCD 16×2 I2C, e também como mostrar nesse display as informações de temperatura e umidade usando um sensor de temperatura DHT11.
O uso do display LCD 16×2 I2C com a Digispark permite mostrar de maneira simples informações como temperatura, contadores e mensagens de aviso sem grandes recursos gráficos, consequentemente economizando a memória do microcontrolador.
Conexão do DHT11 e LCD 16×2 I2C
Para conectar o sensor e o display na Digispark, vamos rever a pinagem do módulo, observando que vamos precisar da interface I2C (destacada em verde na imagem abaixo), que está nos pinos D0 (SDA) e D2 (SCL) para conectar o display LCD 16×2 I2C:
Já o sensor de temperatura e umidade DHT11 será conectado na porta digital 1 (D1).
Usaremos uma mini protoboard para realizar as conexões, e o nosso circuito fica assim:
Você pode usar tanto a Digispark com conector micro USB quanto o modelo que você liga direto na porta USB. O esquema de conexão é o mesmo.
Programa Digispark com DHT11 e display LCD 16×2 I2C
Para usar a Digispark com o display LCD 16×2 I2C, vamos usar a biblioteca TinyWireM. Essa biblioteca é instalada quando você adiciona a Digispark na IDE do Arduino (para ver como usar a Digispark ATtiny85 com a IDE, instalação de drivers e exemplo básico, acesse este post).
O DHT11 será usado com a biblioteca TinyDHT,uma biblioteca otimizada pra uso com esse tipo de microcontrolador e está disponível para instalação na própria IDE do Arduino.
Para instalar, acesse o menu Sketch -> Instalar biblioteca -> Gerenciar Bibliotecas e procure por TinyDHT:
A leitura da temperatura e umidade é feita à cada 5 segundos. Não se esqueça de desconectar a Digispark do seu computador ao compilar o programa. Reconecte apenas quando solicitado pela IDE (Plug in Device Now, ou Conecte o dispositivo agora):
Vamos então ao programa, lembrando que você deve colocar, na linha 16, o endereço I2C do display que vc está usando (os endereços mais comuns são 0x27 e 0x3F):
//Programa: Digispark com DHT11 e display LCD 16x2 I2C //Autor: Arduino e Cia //I2C Master lib para ATTiny #include <TinyWireM.h> #include <LiquidCrystal_I2C.h> #include <TinyDHT.h> //Define o tipo do sensor DHT #define DHTTYPE DHT11 //Sensor conectado no pino 1 Digispark #define DHTPIN 1 //Endereco I2C do display LCD 16x2 #define END_DISP 0x27 DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(END_DISP, 16, 2); void setup() { //Inicializa a biblioteca I2C TinyWireM.begin(); //Inicializa o LCD lcd.init(); //Inicializa o DHT22 dht.begin(); lcd.backlight(); } void loop() { //Leitura da umidade int8_t h = dht.readHumidity(); //Leitura da temperatura: Use 0 para //Celsius, 1 para Fahrenheit int16_t t = dht.readTemperature(0); //Verifica se o sensor esta respondendo if ( t == BAD_TEMP || h == BAD_HUM ) { lcd.clear(); lcd.print("Erro sensor!"); } else { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temp.: C"); lcd.setCursor(7, 0); lcd.print(t); lcd.setCursor(0, 1); lcd.print("Umid.: %"); lcd.setCursor(7, 1); lcd.print(h); } delay(5000); }
Após o carregamento, aguarde alguns segundos e a sua Digispark irá mostrar as informações de temperatura e umidade no display.
Gostou? Então confira outros posts usando Digispark ATtiny85 aqui mesmo no Arduino e Cia!
Beleza estamos chegando cada vez mais na miniaturização pouco espaço e mais funcionalidades e economia de energia bem como economiza de processador
tem como fazer com o sensor DS18B20, com sonda?
Boa noite,
Tem sim, dê uma olhada neste tutorial, por favor: https://digistump.com/wiki/digispark/tutorials/temp
Abraço!
Adilson
Bom dia. Eu estou precisando de efetuar duas medições: uma medição com um sensor indutivo NPN 6-36 e outra medição com uma célula de carga.
Teria algum exemplo para inserir as duas variáveis no display?
Obrigado
Oi José,
Infelizmente não tenho (ainda). Que tipo de célula de carga vc está usando?
Abraço!
Adilson
Está dando erro na linha 20
(invalid conversion from 'int' to 't_backlighPol' [-fpermissive])
'class LiquidCrystal_I2C' has no member named 'init'
Bom dia,
Já conferiu a instalação da biblioteca?
Abraço!
Adilson
[…] Experimente outras opções de programação do ATtiny85, como por exemplo usá-lo com um display Oled ou um display LCD 16×2 I2C e sensor de temperatura DHT11. […]