Vamos programar com o Arduino – Projeto: Sensor de Temperatura

32 Comentários

Ao longo destes primeiros três tutoriais da rubrica “Vamos programar com o Arduino” foram abordados alguns conceitos básicos necessários para o leitor desenvolver pequenos projectos.

Na rúbrica de hoje iremos mostrar um pequeno projecto que abrange todo o conteúdo abordado nos tutoriais anteriores.


Parar colocarmos os nossos conhecimentos em prática iremos fazer um pequeno projecto com o objectivo de sabermos a temperatura e a humidade de uma determinada divisão da nossa casa.

Para tal, vai ser necessário o seguinte hardware:

  • Um Arduino (modelo à escolha);
  • 1 resistência de 10K Ω;
  • Uma BreadBoard (Placa de testes);
  • Fios (6 no máximo);
  • Sensor DHT22;

Como podemos observar nos componentes utilizados, para o projecto de hoje iremos usar o sensor DHT22, a escolha deste sensor deve-se ao facto de ser um sensor razoavelmente barato e com uma boa precisão de medição.

Montagem do cenário

Antes de começarmos com a programação, vamos primeiro proceder à parte da montagem do hardware. Aqui ficam dois esquemas de ligação para auxiliar na montagem.

arduino_04

arduino_05

Após a montagem do hardware podemos proceder a sua programação.

Programação…

Antes de se começar a construir código, iremos precisar de uma biblioteca para podermos trabalhar com o sensor DHT22. Neste tutorial, foi utilizada uma biblioteca personalizada, que não se encontra nos repositórios do Arduino, portanto no fim deste artigo estará disponível para download a biblioteca utilizada. Há que ter a atenção se for utilizada uma biblioteca diferente o código poderá não funcionar correctamente.

#include

int Sensor = 2; //Pino onde está ligado o sensor DHT22
DHT dht(Sensor, DHT22); //Esta instrução indica qual à biblioteca qual o modelo do sensor utilizado
float temperatura; // Variável que nos irá mostrar a temperatura
float humidade; // Variável que nos irá mostrar a humidade

void setup() {

Serial.begin(9600);// Sincronizar a porta serial a 9600 bits por segundo
pinMode(Sensor, INPUT); // Definir o nosso sensor como INPUT
dht.begin();// Esta instrução é necessária, para que o nosso sensor possa estar pronto para ser utilizado
}

void loop() {

temperatura = dht.readTemperature(); // Esta instrução permite que o sensor guarde a leitura da temperatura na variável
humidade = dht.readHumidity(); // Esta instrução permite que o sensor guarde a leitura da humidade na variável
delay(2000); // Para o programa durante 2000 milissegundos;

// Escreve para a porta serial a temperatura e a humidade:
Serial.print(“Temperatura: “);
Serial.print(temperatura);
Serial.print(“c Humidade: “);
Serial.print(humidade);
Serial.println(“%”);
}

Como podemos observar no programa acima representado existem dois parâmetros um pouco desconhecidos.

O primeiro paramento é Serial.begin(9600). Esta instrução é necessária sempre que temos comunicação serial, permite ajustar os bits de transmissão em segundos enviados ou recebidos pela porta serial. Mais à frente nesta rubrica iremos abordar a porta Serial e o seu modo de funcionamento onde será explicado em pormenor estas informações.

O outro parâmetro desconhecido é a função delay(). Esta função tem como objectivo parar o nosso programa por um determinado período de tempo, esse tempo é indicado como um parâmetro de entrada na função em milissegundos. Esta função por vezes não se torna a ideal a ser utilizada, pois quando queremos que o Arduino faça várias tarefas ao mesmo tempo, esta não se torna a ideal. Uma das alternativas é usar a função millis() ou mesmo até Interrupções(Interrupts), mas para este tipo de projectos ficamos pela função delay().

Após termos efectuado todas as ligações do hardware e elaborado o nosso programa, resta verificar o nosso output. Como foi indicado mais acima neste tutorial a nossa temperatura e humidade está a ser enviada para a nossa porta serial. Para tal no Arduino IDE, iremos abrir o monitor da nossa porta serial para podermos observar a nossa informação.

arduino_06

E assim concluímos o nosso primeiro projecto no Arduino . O que acharam deste projecto? No futuro, que tipo de projectos gostariam que fossem apresentados?

Comentários

32

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Jose Baptista
    Jose Baptista

    Falta o link para download da biblioteca

    1. Avatar de Pedro Pinto
      1. Avatar de Jose Baptista
        Jose Baptista

        Pedro, desculpa mas não estou a ver onde está.

      2. Avatar de MÓNICA QUINTAS DE JESUS
        MÓNICA QUINTAS DE JESUS

        boa tarde Drº pedro, tenho um projeto IoT da BOSCH para criar 1 ideia de negocia para o sensor XDK, a titulo academico no ISP, será que me poderia ajudar?

        eu já tenho a ideia.

  2. Avatar de Miguel
    Miguel

    Por acaso estava a pensar fazer um projecto de jardinagem caseiro em que a temperatura da estufa é central. 🙂 obrigado pela dica

  3. Avatar de Gonçalo
    Gonçalo

    Por acaso fiz com o sensor ds18b20 e com resistencia 4,7K. Tanto no Arduino como na Raspberry Pi. Falta conseguir uma ligação decente ao Display

    1. Avatar de Cláudio Catarino
      Cláudio Catarino

      Estas a referir a um pequeno LCD?

      1. Avatar de Gonçalo
        Gonçalo

        Exato, mas acabei por comprar o de 4 Linhas (que por sua vez tem que ter 2 potenciometros, para backlight e brightness) e há mais documentação para o de 2…

        1. Avatar de Cláudio Catarino
          Cláudio Catarino

          Tens também a opção de um I2c para o LCD. Já tem todos os componentes necessários como o potenciómetro incluído no modulo. Além disso nao se tem que andar com tantos fios para se ligar ao Arduino, basta uns 4. Alguns dos LCD«s já trazem esse modulo incorporado .

  4. Avatar de Gonçalo
    Gonçalo

    usar é fácil! Divertido é construir e sobretudo aprender/entender!

    1. Avatar de Cláudio Catarino
      Cláudio Catarino

      Além das plataformas IoT serem um mercado do futuro, poderás sempre fazer sempre projectos para solucionares um problema que tenhas em casa ou algo que gostarias que estivesse automatizado.
      Mas além disso tudo, todo o conhecimento é bom para o futuro 🙂

    2. Avatar de Hugo Serras
      Hugo Serras

      LOOOL. No comments

    3. Avatar de Delta
      Delta

      “o saber não ocupa lugar”

  5. Avatar de Vitor Teixeira
    Vitor Teixeira

    Bom dia ! Sou ainda aprendiz com arduino, contudo estou precisamente a trabalhar na questão do sensor da temperatura com o DHT22. Penso que tratando-se de temperatura é necessário fazer o registo, ou seja é importante saber qual a temperatura e humidade a determinada hora e data. Neste caso, parece-me que é importante juntar o RTC para poder registar a data e hora, assim como um Sdcard para o Logfile.

    Ainda estou numa fase muito inicial, até porque ainda não me chegou o material todo que encomendei, mas a ideia será registar as temperaturas em Sdcard, ou via placa wifi fazer uma ligação SQL a servidor WEB e ter registos on-line. Se alguém estiver a desenvolver um projecto deste tipo e quiser partilhar agradeço. Obrigado ao PPLWARE por mais esta boa iniciativa.

    1. Avatar de Cláudio Catarino
      Cláudio Catarino

      Boas Vitor… Podes fazer com o esp2866 para enviar os dados para a Internet. É um pequeno modulo WIFI que tem um micro controlador e é possível efectuar a programação como o arduino. É ideal para um pequeno projecto que só tenha como objectivo ler a temperatura e enviar para a Internet.

    2. Avatar de Luis Duarte
      Luis Duarte

      Se tiveres raspberry Pi podes usar modulos rf e fazer um servidor um servidor SQL no raspberry

      1. Avatar de Cláudio Catarino
        Cláudio Catarino

        Sim… é uma opção. Eu como so tenho um esp2866. Aqui numa divisão de casa tenho o Arduino ligado ao Pi via Serial, e o Pi trata de comunicar com a BD.

    3. Avatar de João Duarte
      João Duarte

      Como o Cláudio Catarina disse, a melhor maneira de gravares a informação de um DHT22 é sem duvida com o ESP8266. Actualmente nem precisas de uma base de dados fisica para receberes os dados. Podes por exemplo usar um serviço Cloud como o da IBM (bluemix) ou o da Microsoft (Azure) que por enquanto ainda são grátis. Eu estou a desenvolver um projecto para o Instructables, para integrar o DHT com o serviço de voz da Amazon, a Alexa, e também enviar os dados para diferentes dashboards. Assim que tiver pronto posso postar o link.

  6. Avatar de Hugo Serras
    Hugo Serras

    Bom dia,

    Também ando nestas aventuras de iniciação à programação em Arduino e gostaria de saber se é possivel fazerem um tutorial de um projecto com um modulo gsm sim900D.

    Parabéns pelo vosso trabalho.

    Cumprimentos

    1. Avatar de Cláudio Catarino
      Cláudio Catarino

      É algo a pensar Hugo 🙂

      1. Avatar de Hugo Serras
        Hugo Serras

        Apesar de já ter visto esse video, agradeço a ajuda. Tem mais ou menos a ver com isso, sim.

  7. Avatar de Joao Ferreira
    Joao Ferreira

    Bom dia, onde posso comprar um arduino a um bom preço? Vi tambem que existem varias revisoes (versoes).

    Obrigado

    1. Avatar de Charlie
      Charlie

      Aliexpress! 😉

    2. Avatar de Nimboos
      Nimboos

      Geralmente as versões que se encontram à venda são as revisões de hardware mais recentes. No caso do Arduino UNO é a R3. Os preços mais baixos que tenho visto são de versões não originais mas totalmente compatíveis com o Arduino, uma vez que usam exatamente o mesmo microcontrolador. Tipo Funduino ou UNO R3. Existem uns starter kits destas plaquinhas com vários componentes eletrónicos – leds, botões de pressão, breadboard, fios de ligação, etc… – a preços muito interessantes. Podem ser adquiridos p.ex. no Ebay e Aliexpress. O Funduino também se encontra à venda na PTRobotics (loja portuguesa).

  8. Avatar de Pedro S
    Pedro S

    Sempre podes deixar o teu smartphone numa estufa para controlar a temperatura e humidade. se quiseres controlar em vários pontos diferentes da estufa, compras vários smartphones 😉

    1. Avatar de Jose Baptista
      Jose Baptista

      Eh Eh Eh!! Boa resposta.

  9. Avatar de Marco Castro
    Marco Castro

    Para quem pergunta a utilidade. Podem criar um interface dmx para controlar luzes na passagem de Ano. Eu constumo usar o soft da Atmel no 8085 e na atmega8 como o processador do arduino èum atmega…

  10. Avatar de Luis Cesar
    Luis Cesar

    Boas malta.
    Ando aqui a tentar um projecto vai pra 3 anos… e nele eu queria ter acesso a um sensor de brilho, ou seja saber se um determinada sal aestiver exposta ao sol, qual é a lumonosidade dela, isto para depois ajustar o brilho duma TV.
    E como isto é para ser implementado no Algarve, aqui o Sol… Alguém me diz como posso, por ex. usando este projecto, adicionar um sensor deste tipo?

  11. Avatar de Luis Cesar
    Luis Cesar

    Ops; luminosidade

  12. Avatar de Deywid
    Deywid

    Nobres, não parem com os tutoriais 😀

  13. Avatar de José Costa
    José Costa

    Boa noite,
    Segui o exemplo, mas quando ligo o arduino ao pc não é atribuída a porta? alguém sabe dizer o porque? no entanto se ligar apenas o arduino sem o sensor a porta é atribuída automaticamente