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!

Deixe uma resposta

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