Workshop Arduino para iniciantes – Arduino Day 2018 Deixe um comentário

A loja FilipeFlop, através do articulista Pedro Bertoleti, ministrará o workshop “Arduino para iniciantes: leitura de sensores e manipulação de outputs” no Arduino Day São Paulo 2018. Este Workshop Arduino é destinado àqueles que já ouviram falar do Arduino, porém nunca o viram pessoalmente e também nunca fizeram algum projeto com ele (ou seja, o público-alvo são iniciantes e curiosos do mundo maker).

É um curioso e deseja iniciar sua jornada no mundo maker com Arduino? Seja bem-vindo!

Aprenda Arduino!

Objetivos do Workshop Arduino

Este workshop tem como objetivos:

  • Mostrar aos iniciantes do mundo Maker (e aos curiosos que desejam saber mais sobre) o que é um Arduino e como programá-lo
  • Mostrar como instalar bibliotecas
  • Mostrar como é feito a programação de um Arduino
  • Colocar o programa para rodar no Arduino

Material necessário

Neste workshop, é necessário utilizar o seguinte material:

Programa a ser desenvolvido

O programa a ser desenvolvido neste workshop (para rodar no Arduino) tem como funcionalidade ler os sensores (sensor de distância ultrassônico, um LDR e o sensor de temperatura e umidade relativa do ar) e, mediante o resultado destas leituras, aplicar a seguinte lógica:

  • Se a temperatura estiver acima de 25 graus Celsius, a leitura do LDR indicar ambiente claro e a distância for menor que 30cm, o LED acende.
  • Caso a condição acima não seja satisfeita, o LED apaga.

Em suma, trata-se de um programa simples, que ensina como se faz a leitura de sensores e manipula-se um output (nesse caso, um LED) em função da leitura feita.

Circuito esquemático

O circuito esquemático a ser montado para este workshop pode ser visto na figura 1.

Circuito Workshop Arduino

Código-fonte

O código-fonte do programa pode ser visto abaixo.

Recomendo fortemente ler com atenção a todos os comentários para maior compreensão do programa / experimento do workshop.

/*
 * Projeto: workshop "Arduino para iniciantes: leitura de sensores e manipulação de outputs", 
 *          apresentado no Arduino Day 2018 (São Paulo-SP) 
 * Autores: Pedro Bertoleti e FilipeFlop
 * Data: Maio/2018
 * 
 * Importante:
 * Este projeto utiliza bibliotecas para permitir utilização do sensor ultrasonico e sensor
 * de temperatura e umidade relativa do ar. Tais bibliotecas podem ser obtidas dos links abaixo:
 * 
 *  - Biblioteca do sensor ultrassonico (HC-SR04): 
 *    http://www.satellasoft.com/download/index.php?fileName=758f8ab8c3222019edd16611bf48f724
 *  - Biblioteca do sensor de temperatura e umidade relativa do ar (DHT22): 
 *    https://github.com/adafruit/DHT-sensor-library/archive/master.zip
 */

/*
 * Includes
 */
#include <Ultrasonic.h>
#include <DHT.h>

/*
 * Defines do output utilizado / manipulado
 */
 #define OUTPUT_LED  12   

/*
 * Defines do LDR
 */
#define ANALOG_INPUT_LDR               0    /* entrada analógica 0 (no Arduino, é sinalizado como A0) */
#define LIMIAR_LEITURA_AMBIENTE_CLARO  512  /* Valor limiar para a leitura do LDR de um ambiente claro 
                                               (se necessário, modificar este valor para melhor atender o projeto  */
/*
 * Defines do sensor ultrassonico
 */
#define TRIGGER_PIN  2   /* GPIO do Arduino que será ligado o trigger do sensor ultrassonico */
#define ECHO_PIN     3   /* GPIO do Arduino que será ligado o echo do sensor ultrassonico */

/*
 * Defines do sensor de temperatura e umidade relativa do ar
 */
#define DHTPIN 4   /* GPIO do Arduino que será ligado o o sensor de temperatura e umidade relativa do ar */

/* A biblioteca serve para os sensores DHT11, DHT22 e DHT21. No nosso caso, usaremos o DHT22, porém se 
 * você desejar utilizar algum dos outros disponíveis, basta descomentar a linha correspondente.
 */
//#define DHTTYPE DHT11     /* DHT 11  */
//#define DHTTYPE DHT21   /* DHT 21 (AM2301) */
#define DHTTYPE DHT22   /* DHT 22  (AM2302), AM2321 */


/*
 * Variáveis globais
 */
DHT dht(DHTPIN, DHTTYPE);
Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);

/*
 * Implementações
 */

void setup() {
  /* Inicialização da serial / comunicação com serial monitor */
  Serial.begin(115200); 
 
  /* Inicialização do output / LED */
  pinMode(OUTPUT_LED, OUTPUT);
  digitalWrite(OUTPUT_LED, LOW);

  /* Inicialização do sensor de temperatura e umidade relativa do ar */
  dht.begin();
}

void loop() {
  float Temperatura;
  float UmidadeRelativa; 
  float Distancia_cm;
  long microsec;  
  int Leitura_LDR;
  
  /* Mede a temperatura e umidade relativa do ar */
  Temperatura = dht.readTemperature();
  UmidadeRelativa = dht.readHumidity();

  /* Faz a leitura do LDR */
  Leitura_LDR = analogRead(ANALOG_INPUT_LDR);

  /* Mede a distância (em centímetros) com o sensor ultrassonico */
  microsec = ultrasonic.timing();
  Distancia_cm = ultrasonic.convert(microsec, Ultrasonic::CM);

  /* Aplica a seguinte lógica: 
     - Se a temperatura estiver acima de 25 graus Celsius, a leitura do LDR indicar ambiente claro e a distância for menor que 30cm, o output/LED vai para nível alto (LED acende)
     - Caso qualquer uma das condições acima não seja satisfeita, o output/LED vai para nível baixo (LED apaga)
  */
  if ( (Temperatura > 25.0) && (Leitura_LDR > LIMIAR_LEITURA_AMBIENTE_CLARO) && (Distancia_cm < 30.0) )
  {
      digitalWrite(OUTPUT_LED, HIGH);
  }
  else
  {
      digitalWrite(OUTPUT_LED, LOW);
  }

  /* Faz uma pausa de 500ms entre leituras */
  delay(500);

}

Próximos passos

Embora simples, este workshop pode servir de base para projetos mais complexos e totalmente aplicáveis, como por exemplo:

  • Acionar e/ou desacionar um ventilador dependendo da temperatura medida
  • Acionar e/ou desacionar uma carga qualquer quando o LDR indicar ambiente claro (dia) ou ambiente escuro (noite), como iluminação externa de uma casa, por exemplo.
  • Acionar e/ou desacionar um buzzer dependendo da distância medida pelo sensor ultrassônico (sendo uma versão simples de um sensor de estacionamento de automóvel)

Gostou deste post sobre o Workshop Arduino para iniciantes? Deixe seu comentário logo abaixo. Em caso de dúvidas, caso queira trocar uma ideia, ou até mesmo dividir seu projeto, acesse nosso Fórum!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *