quinta-feira, 14 de junho de 2018

Temômetro: Attiny85 e DHT11

Como disse lá no início do blog, o ATTINY85 pode ser uma escolha muito interessante para algumas medições ou monitoramentos. Sendo limitado principalmente por sua memória. 

Devido a essa limitação as bibliotecas normalmente utilizadas para os ATMEGA, do UNO, MEGA e afins não se demonstram adequadas, tendo bibliotecas mais adequadas ao pequeno, focadas em simplicidade. Diversas dessas bibliotecas acompanham a instalação da placa da Digispark no IDE.

Vamos trabalhar em um projeto simples mas útil para aprender a lidar um pouco com elas. Para tal vamos usar:
  • Digispark ATTINY85
  • Jumper macho-macho e macho-fêmea
  • DHT11
  • Tela OLED 0,96 I2C
  • Mini Protoboard
Tudo será montado na mini protoboard, com 4,5 x 3,50cm aproximados, o ideal é tudo ter essa medida. Primeiro encaixe o Tiny e o OLED. Deixe duas trilhas na extremidade livre. Depois conecte o DHT11 nas trilhas livres entre o visor e o microcontrolador. Basta utilizar jumper para ligar tudo. Lembra das duas trilhas deixadas em uma extremidade? Use elas como trilha 5V e GND alimentadas pelo Tiny85.

No programa a fiação foi a seguinte: VCC no 5V. GND no GND. DHT11 no P3. SDA no P0. SCK no P2.


Agora só ligar e programar. O programa é muito simples e ocupa 96% da memória. Nele foram utilizadas as bibliotecas TinyDHT e DigisparkOLED, além da Wire para o I2C. O código se iniciação com a definição do DHT, a porta usada e o modelo. No setup é iniciada as bibliotecas e o pino do DHT é colocado como saída. Com um delay para estabilização.

No loop um novo delay e a limpeza do oled para iniciar. Observe que a captura das informações do DHT em variáveis é bem simples, sendo necessariamente feita com números inteiros devido a memória. Depois é apenas a parte de escrita no OLED, posicionando e escrevendo.

Ao final temos o delay de controle, que somado ao primeiro delay do loop dá o intervalo de leituras, jamais inferior a 2s. O tiny possui uma demora para trabalhar com a tela, assim não é recomendado atualizações pequenas, pode ser que não se consiga renderizar a tela corretamente antes da próxima escrita de dados.

Download do programa: clique aqui

Biblioteca TinyDHT: Como visto a biblioteca permite adquirir dados dos sensores DHT com pouca memória e quase nenhuma linha. Basta incluir a biblioteca, definir a porta e tipo de sensor, iniciar o sensor e ler a informação já vinculando a uma variável. A limitação é apenas trabalhar com números inteiros.
Biblioteca DigisparkOLED: Biblioteca interessante, possui como limitação exibir apenas textos. Mas as principais funções estão presentes: Limpeza da tela, tamanho de fonte, posicionamento de cursor, escrita de textos e variáveis. Observe que a forma de escrever textos é um pouco peculiar.

O nosso termômetro está pronto para o uso, e será de grande valia. Com ele você obterá rapidamente as informações. Eu utilizo para medições pontuais, como quando vou fazer algum teste eu adiciono os dados de temperatura. Ou para medir o ambiente.

Esse inverno chegou a fazer um frio absurdo em minha cidade, logo tive a curiosidade de medir a temperatura. Tive que programar um UNO, com protoboard grande e tudo mais. Ou quando alguém pergunta se o ar está seco. Agora ele fica li pronto. Basta encaixar o visor (se estiver usando para outra coisa), e pronto, muito mais compacto.

Sugestões: Possa ser que você precise de algo mais compacto. Nesse caso diversas melhorias podem ser feitas. A primeira é usar jumper sob medida, os comerciais são muito grandes. A segunda é anexar uma bateria pequena com módulo de carregamento, pode colocar em baixo da protoboard. A última é utilizar o TINY85 sozinho, apenas o microcontrolador na cápsula com pinos. Vai ficar menor, mais barato e com um consumo energético muito menor.

Nenhum comentário:

Postar um comentário