Calendário DIY
Contagem regressiva via controle remoto para detonação de rojão
predador
Pontos:  42
Desde:  26/07/2014
Finalizado
Nível iniciante
x 1
Favoritado
Em:  26/07/2014   ( 13/08/2014 )
Domínio Público
Estrela cheiaEstrela cheiaEstrela metade cheia
0
1
2
3
4
5
Com uma contagem regressiva de máximo 2 horas 46 minutos e 39 segundos (9999 segundos), com esse projeto será possível acionar rojão ou rojões a distância controlado por Arduino. A contagem regressiva será acionada via controle remoto.
Este projeto está participando do concurso: Arduino 10 Anos.
1
Materiais Utilizados
  • Bateria de 12V (Bateria de Nobreak);
  • Suporte de pilha;
  • Arduino;
  • Módulo Relê;
  • Módulo InfraVermelho;
  • Display 4 Dígitos;
  • Muitos Jumpers;
  • Protoboard pequena;
  • Cooler de Fonte de Computador;
  • Carcaça de fonte;
  • Caixa para arduino;
  • Rojão;
  • Fio de luz;
  • Squib (vendida em loja de fogos de artificio);
  • Bateria de 9V;
  • Conector de bateria de 9V;
  • Pilhas recarregaveis;
  • Controle remoto;
  • Fita dupla face;
 
2
Caixa de Proteção
Fixe na carcaça da fonte com ajuda da fita dupla face o cooler, a caixa do arduino (Figura A), a probobord pequena e por último coloque o arduino (Figura B) em sua caixa dentro da carcaça da fonte.


 
3
Display 4Dígitos
A contagem da pinagem sempre vai começar pelos pinos inferiores onde o primeiro pino é o pino da direita ou seja, a contagem é feita da direita para a esquerda e nos pinos superiores o nono pino é o pino da esquerda ou seja, a contagem é feita da esquerda para direita.

Você não irá usar todos os pinos. Nos pinos inferiores, você vai usar os pinos 1, 2, 3, 5, 6 e 8 (Figura A). Nos pinos superiores, você vai usar os pinos 11, 13, 14, 15 e 16 (Figura B).
O display de 4 dígitos será fixado na maior abertura da carcaça de fonte (Figura C) próximo onde o cooler foi colocado.
Agora você vai seguir nessa ordem as ligações no arduino (Figura D).
  • PINO 1 --> Portal Digital 11
  • PINO 2 --> Portal Digital 10
  • PINO 3 --> Portal Digital 5
  • PINO 5 --> Portal Analógica A0
  • PINO 6 --> Portal Digital 9
  • PINO 8 --> Portal Digital 6
  • PINO 11 --> Portal Digital 7
  • PINO 13 --> Portal Digital 4
  • PINO 14 --> Portal Analógica A1
  • PINO 15 --> Portal Digital 8
  • PINO 16 --> Portal Digital 3
 
4
Módulo Infra-Vermelho
O módulo infra-vermelho deverá ser colocado na abertura logo abaixo do display de 4 dígitos (Figura A). O módulo Infra-Vermelho vai utilizar três jumpers. O jumper da energia e do gnd você vai ligar na protobord. E o jumper de saída vai ser ligado na porta digital 2.

O módulo relê vai ser fixado na tampa da caixa do arduino (Figura B). O módulo relê também vai utilizar três jumpers, da mesma forma do módulo anterior, os jumpers de energia e gnd deverá ser colocada na protoboard e o jumper de saída vai ser colocado na porta digital 12.
Para finalizar, antes de fechar a tampa do arduino, você deve ligar dois jumpers. Um de energia e outro do gnd do arduino para a protobord.
 
5
Mapeando o teclado de qualquer controle remoto
Esse passo possui um vídeo dedicando explicando de como mapear o teclado de qualquer controle remoto.

Programação

 #include <IRremote.h>  //Biblioteca nos anexos
 int RECV_PIN = 10;  
 float armazenavalor;  
   
 IRrecv irrecv(RECV_PIN);  
 decode_results results;  
   
 void setup()  
 {  
 Serial.begin(9600);  
 irrecv.enableIRIn(); 
 }  
   
 void loop()  
 {  
  if (irrecv.decode(&results))  
  {  
  Serial.print("Info: ");  
  Serial.println(results.value, HEX);  
  armazenavalor = (results.value);  
  irrecv.resume();  
  }  
 }  



6
PROGRAMAÇÃO

#include <IRremote.h> //Biblioteca nos anexos

 int RECV_PIN = 2;  
 float controle;  
 IRrecv irrecv(RECV_PIN);  
 decode_results results;  
 int acionador = 12;  // Relê
 
int digit1 = 11; //PWM Display pin 1
int digit2 = 10; //PWM Display pin 2
int digit3 = 9; //PWM Display pin 6
int digit4 = 6; //PWM Display pin 8
int segA = A1; //Display pin 14
int segB = 3; //Display pin 16
int segC = 4; //Display pin 13
int segD = 5; //Display pin 3
int segE = A0; //Display pin 5
int segF = 7; //Display pin 11
int segG = 8; //Display pin 15
int x = 10;
int start_num; 

void setup() {                
  pinMode(segA, OUTPUT);
  pinMode(segB, OUTPUT);
  pinMode(segC, OUTPUT);
  pinMode(segD, OUTPUT);
  pinMode(segE, OUTPUT);
  pinMode(segF, OUTPUT);
  pinMode(segG, OUTPUT);

  pinMode(digit1, OUTPUT);
  pinMode(digit2, OUTPUT);
  pinMode(digit3, OUTPUT);
  pinMode(digit4, OUTPUT);
  
  pinMode(RECV_PIN, OUTPUT);
  pinMode(acionador, OUTPUT);  
  
  pinMode(13, OUTPUT);
  
Serial.begin(9600);  
 irrecv.enableIRIn(); // Inicializa o receptor IR    
}

void loop() {
  if (irrecv.decode(&results)) 
  {
    controle = (results.value);  
    if (controle == 0xE12440BF) //Verifica se a tecla 1 foi pressionada  
    {    
      start_num = (millis()/1000) + x;
      for (millis()/1000; start_num >= millis()/1000;) 
      {
        displayNumber(start_num -(millis()/1000));
      }
    
      if (x == 10)
      {
       digitalWrite(acionador, HIGH);
       delay(5000);
       digitalWrite(acionador, LOW);
      }
    }  
    irrecv.resume();
  }
}

void displayNumber(int toDisplay) {
#define DISPLAY_BRIGHTNESS  500

#define DIGIT_ON  HIGH
#define DIGIT_OFF  LOW

  long beginTime = millis();

  for(int digit = 4 ; digit > 0 ; digit--) {

    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
      digitalWrite(digit1, DIGIT_ON);
      break;
    case 2:
      digitalWrite(digit2, DIGIT_ON);
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
      break;
    case 4:
      digitalWrite(digit4, DIGIT_ON);
      break;
    }

    //Turn on the right segments for this digit
    lightNumber(toDisplay % 10);
    toDisplay /= 10;

    delayMicroseconds(DISPLAY_BRIGHTNESS); 

    //Turn off all segments
    lightNumber(10); 

    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
  }

  while( (millis() - beginTime) < 10) ; 
}

void lightNumber(int numberToDisplay) {

#define SEGMENT_ON  LOW
#define SEGMENT_OFF HIGH


  switch (numberToDisplay){

  case 0:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_OFF);
    break;

  case 1:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_OFF);
    break;

  case 2:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_OFF);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 3:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 4:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 5:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 6:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 7:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_OFF);
    break;

  case 8:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 9:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 10:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_OFF);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_OFF);
    break;
  }
}
 
7
TESTE
Você vai ligar um fio de luz do polo positivo da bateria de 12V na corrente do módulo relê. E outro fio de luz do NA (Normamente Aberto) do módulo relê na fio vermelho do cooler (Figura A). E vai ligar um fio de luz no cabo preto do cooler (Figura B) no polo negativo da bateria de 12V.

Com o controle, você vai acionar o cronometro do projeto (Figura C) e assim que terminar a contagem (Figura D), o cooler será ligado por 5 segundos.
E para finalizar, você irá fixar o suporte de pilhas com as pilhas recarregaveis (Figura E) e conectar no cooler e feche a tampa da carcaça da fonte.

 
8
DETONANDO OS ROJÕES
Você vai montar o projeto em um lugar aberto. Conectando o squib no rojão e fazer as ligações do mesmo jeito que foi feito na fase de teste com o cooler.
Na primeira (Figura A) e segunda (Figura B) tentativa, foram utilizadas um rojão. E na terceira (Figura C) tentativa, foram acionados dois rojões ao mesmo tempo.

Observação: Confira o Vídeo desse Projeto.




A
Anexos
Você precisa estar logado para ver os anexos.
Comentários: