Arduino – Sensor de temperatura Parte2

Após seguir o post Arduino – Sensor de temperatura Parte1 vamos agora programar nosso Arduino. Como iremos ter um computador para interagir com o Arduino é inteligente e boa prática usar o Arduino apenas para capturar o valor da temperatura e enviar (quando solicitado ou automaticamente) para nossa aplicação via serial (USB), ok?
Segue o código-fonte para o Arduino, seguindo a configuração do post anterior:

Código acho que é simples e de fácil compreensão, certo? A única diferença esta na linha 14 que eu realizo uma comparação, que na verdade pode vir qualquer coisa pela serial, mas ele só ira enviar o valor da temperatura caso seja enviado o caracter t, que no caso temos que comparar o seu respectivo valor da tabela ASCII (t = 116).
Outra questão pode ser na linha 16, porque desta conta! Bom primeiramente temos que saber algumas coisas como o A/D do Arduino que é de 10bits (0 à 1023), nossa entrada A0 pode entrar com valores de 0V a 5V e o LM35 irá nos fornecer 10mV a cada 1ºC.
Então a conversão A/D de uma forma mais clara seria:

temp = (valAnalog * 0.00488);
5V / 1023 = 0.00488

Temos o valor convertido, agora passar para Graus Celsius
temp = temp * 100;

Vale ressaltar que a cada 10mV equivale a 1ºC
Simplificando isso em uma linha temos o que esta na linha 16.

Se você compilar este código e enviar para o Arduino, utilizando a própria IDE do Arduino você pode testar indo em Tools > Serial Monitor. Digite a letra t e pressione enter e irá aparecer o valor da temperatura.

SerialMonitorArduinoTemp

Desenvolvi uma aplicação para este post, segue uma imagem abaixo:

TelaIniciarProgSensorTemp

Dois modos de operação, manual onde você solicita a temperatura quando clicar no botão como na imagem abaixo:

SerialMonitorArduinoTempManual

E o modo automático, onde você irá escolher o valor de intervalo que deverá realizar a leitura como na imagem abaixo:

SerialMonitorArduinoTempAutomatico

Um log ficará registrado no meio da tela com o valor da temperatura, data e hora e acima três mostradores da menor, atual e maior temperatura registrada.

Para download do instalador do aplicativo clique aqui.

Caso tenha interesse no aplicativo, personalização ou desenvolvimento entre em contato, pois estou fechando consultorias para desenvolvimento, já caso esse lhe sirva use-o a vontade.

Arduino – Sensor de temperatura Parte3 [em breve]

Até a próxima!

Share Button

CC BY-NC-SA 4.0 Arduino – Sensor de temperatura Parte2 by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

  • Cara muito legal!!

  • Diogo

    Ficou muito legal esse projeto!
    Mas fiquei com uma dúvida ao olhar as instruções no sketch do arduino.
    Como você fez para que ao ocupar a porta serial com o comando (t ou no caso seu equivalente em ACSII) o sensor retorne os valores à porta serial?
    Tipo, a via não é de mão única? Como você fez para apagar o buffer(na porta serial) para que assim pudesse receber os dados do sensor?
    Estou trabalhando em um projeto na faculdade e só consegui resolver essa “treta” com duas placas Arduino, porém necessito que seja feita apenas com uma placa.

    • Opa Diogo.
      “Como você fez para apagar o buffer(na porta serial) para que assim pudesse receber os dados do sensor?”

      Quem faz isso é o componente que utilizei no Delphi no caso o TCompPort, que você pode configurá-lo de acordo com a sua necessidade.
      Porém tive que desenvolver uma aplicação em que em C/C++ eu conectaria no Arduino via Serial e esta aplicação rodaria em Linux, ae o buraco era mais fundo e tive que implementar mais alguns procedimentos no lado do Arduino.

      http://arduino.cc/en/Reference/StreamFlush
      http://arduino.cc/en/Serial/Flush

      Agora uma dica que eu dou, se for para hobby beleza faça com a IDE do Arduino mesmo, mas se for para um produto (protótipo) utilize o AVR Studio, ou enxute os arquivos do Arduino porque sua memoria vai subir rapidinho.

      Meu TCC enquanto estava na IDE do Arduino não tinha terminado o projeto ainda e já estava próximo a 30k, depois de enxugar o que precisava e retirar o que não utilizaria consegui chegar próximo a 19k, até que estudando mais migrei para o AVR Studio, ae você vai ver como o Arduino “configura” tudo pra configurar daquele jeito “bonitinho” hehe.

      Abraço espero ter ajudado.

      • Diogo

        No caso o meu projeto é um hobby e ao mesmo tempo um protótipo!
        Estou no empenho de utilizar novas placas de prototipagem e novas linguagens de programação aplicando-as na minha tese de mestrado.
        Descobri o que estava causando o problema na minha programação! Era a própria programação! E não um problema de ocupação da porta serial!
        Comecei a mexer com programação tem quatro meses e quando dominei os comandos básicos para executar as funções, que necessitava, parei de procurar/aprender sobre C/C++(por causa do tempo curto) o que causou mais de dois meses de stress.
        Tenho que controlar mini bombas solenoides e válvulas, além de, receber dados de um foto sensor e transforma-los em um gráfico (estou usando o Processing e “ainda” estou tentando montar um versão para o Pyton).
        A “treta” estava na utilização do comando delay() para efetuar o controle de pausa e funcionamento dos componentes, o qual, funcionava perfeitamente (o que não me fez levantar suspeitas dele logo de cara) porém ele pausa QUALQUER tipo de função que estive ocorrendo. Ou seja voltei a estudar C/C++ e estou conseguindo dormir melhor!
        Agora o que está me dando trabalho é achar uma forma mais “limpa” mais simples de fazer pausas no controle dos componentes. Estive olhando a utilização do millis() mas “estou com um pé atrás” em utilizar ele.
        Valeu pela explicação e desculpe o incomodo!
        Obrigado pela força!

  • Williams Dantas

    cleiton amigão seria muito trabaçho vc fazer um video passo a passo deste post de temperatura no linux

    mostrando so a parte de como configurar dentro do phpmyadmin e que eu nao tenho muito conhecimento em banco de dados ate coloquei a pasta dentro do diretorio var/www/tempuino e importei a tabela no phpmyadmin mas nçao sei não consigo acessar. meu apache2 ta rodando normal o mysql e php tb mas não sei como prosseguir . se vc puder fazer um video eu agradeço muito cara

  • Gleury Galvino

    Esse projeto funcionaria com o sensor de temperatura DS18B20?