Escolar Documentos
Profissional Documentos
Cultura Documentos
KS10
Guia de Projetos
AVA N Ç A D O E M E L E T R Ô N I C A
www.usinainfo.com.br
2
índice
1) Prefácio..............................................................................3
2) Arduino ..............................................................................4
3) Kit Avançado Parland KS10 ................................................5
4) Componentes em Detalhes .................................................6
5) Projeto 1 – Teclado Matricial 4x4 ...................................... 10
6) Projeto 2 – Módulo RTC DS1302 ....................................... 17
7) Projeto 3 – Sensor DHT11 com Display LCD 16x2 ............. 22
8) Projeto 4 – Módulo Detector de Gás MQ-2......................... 27
9) Projeto 5 – Sensor de Estacionamento .............................. 32
10) Projeto 6 – Sensor de Luz com Módulo LDR .................. 39
11) Projeto 7 – Controle Infravermelho de Servo Motor e
Módulo Relé ..................................................................... 43
12) Informações Finais ....................................................... 49
13) Anotações .................................................................... 50
3
Prefácio
Arduino
Componentes em Detalhes
Componentes em Detalhes
Caixa Organizadora
Protoboard
Componentes em Detalhes
Componentes em Detalhes
Sensor DHT11
Componentes em Detalhes
Servo Motor 9g
Módulo Relé
Montagem do projeto
1 x Teclado Matricial 4 x 4;
1 x Arduino;
Alguns fios/jumpers.
Observe:
13
Código utilizado
#include <Keypad.h>
char membrana[linhas][colunas] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
void setup(){
Serial.begin(9600);
}
void loop(){
15
Além disso, existem algumas funções úteis que você pode usar
com o objeto Teclado.
char waitForKey()
KeyState getState()
boolean keyStateChanged()
addEventListener(keypadEvent)
Por causa disso, a placa passa a não ter muita utilidade no caso
de o tempo real ser necessário em projetos com Arduino. Sendo
assim, esse problema é resolvido com o módulo Real-Time Clock
(RTC).
Montagem do projeto
Veja só:
19
Código utilizado
Veja só:
#include <ThreeWire.h>
#include <RtcDS1302.h>
void setup () {
Serial.begin(57600);
Serial.print("Compilado: ");
Serial.print(__DATE__);
Serial.println(__TIME__);
Rtc.Begin();
RtcDateTime compilado = RtcDateTime(__DATE__, __TIME__);
PrintarData(compilado);
Serial.println();
if (!Rtc.IsDateTimeValid()) {
// Causas comuns: 1) primeira vez que você executou e o dispositivo a
inda não estava funcionando
// 2) a bateria do dispositivo está fraca ou mesmo ausente
Serial.println("RTC perdeu a confiança no DateTime!");
if (Rtc.GetIsWriteProtected()) {
Serial.println("RTC estava protegido contra gravação, permitindo a gr
avação agora");
Rtc.SetIsWriteProtected(false);
}
if (!Rtc.GetIsRunning()) {
Serial.println("O RTC não estava funcionando ativamente, começando ag
ora");
Rtc.SetIsRunning(true);
}
void loop () {
RtcDateTime now = Rtc.GetDateTime();
PrintarData(now);
21
if (!now.IsValid()) {
// Causas comuns: 1) a bateria do dispositivo está fraca ou até mesmo
ausente e a linha
// de alimentação foi desconectada
Serial.println("RTC perdeu a confiança no DateTime!");
}
delay(1000);
}
Montagem do projeto
1 x Sensor DHT11;
1 x Display LCD 16x2;
1 x Resistor de 10kΩ;
1 x Arduino;
1 x Protoboard;
Alguns fios/jumpers.
Código utilizado
#include <LiquidCrystal.h>
byte simbolo_graus[8] =
{
0b00111,
0b00101,
0b00111,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};
int DHT11 = 8;
volatile unsigned long duracao=0;
unsigned char i[5];
unsigned int j[40];
unsigned char valor=0;
unsigned resposta=0;
int z=0;
int b=1;
void setup()
{
lcd.begin(16, 2);
lcd.print("Temp = ");
lcd.setCursor(0,1);
lcd.print("Umidade = ");
lcd.createChar(1, simbolo_graus);
25
lcd.setCursor(9,0);
lcd.write(1);
lcd.print("C");
lcd.setCursor(13,1);
lcd.print("%");
}
void loop()
{
delay(1000);
while(1)
{
delay(1000);
pinMode(DHT11,OUTPUT);
digitalWrite(DHT11,LOW);
delay(20);
digitalWrite(DHT11,HIGH);
pinMode(DHT11,INPUT_PULLUP);//por padrão, ficará HIGH devido ao pull intern
o
// delayMicroseconds(40);
duracao=pulseIn(DHT11, LOW);
if(duracao <= 84 && duracao >= 72)
{
while(1)
{
duracao=pulseIn(DHT11, HIGH);
else if(z==40){
break;}
i[z/8]|=valor<<(7- (z%8));
j[z]=valor;
z++;
}
}
resposta=i[0]+i[1]+i[2]+i[3];
z=0;
i[0]=i[1]=i[2]=i[3]=i[4]=0;
}
}
Observe:
28
Montagem do Projeto
Código utilizado
Olhe só:
void setup()
{
Serial.begin(9600); // Determina a porta serial em 9600 bps
Serial.println("Iniciando sensor de Gas MQ2!");
delay(20000); // Permite a inicialização do Detector
}
void loop()
{
valorSensor = analogRead(MQ2pin); // Lendo a entrada analógico do pino 0
Serial.println("");
delay(2000); // Espera por 2 segundos para a próxima medição
}
Montagem do projeto
1 x Sensor Ultrassônico;
1 x LED RGB KY-016;
1 x Módulo buzzer ativo;
1 x Arduino Uno;
Alguns fios/jumpers.
Código utilizado
Veja só:
// Pinos usados
#define LEDverde 2
#define LEDazul 3
#define LEDvermelho 4
#define TRIGGER 5
36
#define ECHO 6
#define BUZZER 9
// Constantes utilizadas
const float sound = 34300.0; // Velocidade do som em cm/s
const float limite1 = 30.0; // Limites de distância em cm
const float limite2 = 20.0;
const float limite3 = 10.0;
void setup() {
void loop() {
// Obtenha a distância
float distancia = calcularDistancia ();
// Desligar os LEDs
desligarLEDs();
{
// Dispara os alertas
alertas(distancia);
}
Observe:
40
Montagem do projeto
Código utilizado
void setup() {
void loop(){
valorA0 = analogRead(sensorLDR);
Montagem do Projeto
A ligação deste projeto não é complicada, porém existe um fato
muito importante nele que diz respeito à alimentação do Módulo
Infravermelho, como podemos ver no esquema de ligação, ele está
sendo alimentado separado junto ao pino 3,3V.
45
Código Utilizado
Para o nosso projeto, iremos utilizar duas bibliotecas, uma delas
que é a biblioteca Servo.h é disponibilizada já quando instalamos
nossa IDE Arduino no computador, porém a biblioteca IRremote.h
precisa ser instalada para podermos utilizar o controle e o receptor
IR.
Para instalar a biblioteca siga os seguintes passos, já esmiuçados
no início deste manual através dos seguintes passos (pág.3):
Ferramentas -> Gerencial bibliotecas -> Digite “IRremote”
Instale o seguinte item elencado na imagem abaixo:
#include <IRremote.h>
#include <Servo.h>
Servo servo;
int pinoreceptor = 4;
int rele = 5;
int servomotor = 9;
int angulo = 0;
float comando;
IRrecv receptor(pinoreceptor);
decode_results resultado;
void setup() {
Serial.begin(9600);
receptor.enableIRIn();
pinMode(rele, OUTPUT);
servo.attach(servomotor);
void loop() {
if (receptor.decode(&resultado)) {
Serial.print("0x");
Serial.println(resultado.value, HEX);
comando = (resultado.value);
receptor.resume();
}
delay(10);
}
48
Informações Finais
Anotações
51
Anotações
USINA INDÚSTRIA, COMÉRCIO E IMPORTAÇÃO
DE PRODUTOS DE INFORMÁTICA LTDA
CNPJ: 07.182.837/0001-48
www.usinainfo.com.br