A loja MakerHero, 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!
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:
- Arduino UNO com cabo USB
- Sensor ultrassônico de distância HC-SR04
- Sensor de temperatura e umidade relativa do ar DHT22
- LDR 5mm
- Protoboard de 400 pontos
- Resistor de 220 ohm / 1/4W
- Resistores de 10k / 1/4W
- LED (da cor que você desejar)
- Kit de jumpers macho-macho
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.
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 MakerHero * 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.