Tradutor

Pesquisar este blog

segunda-feira, 19 de novembro de 2012

Passo 7 - Radio Frequência (apc220)


Componentes:

- 2x APC220 Módulos de RF com antenas
- 1x USB-TTL Converter
- 1x placa arduino + fios
- 1x sensor de temperatura
- 1x resistor 330Ω

- Descrição: O arduino  faz a leitura da temperatura através do sensor,  ao mesmo tempo envia os dados da leitura por um emissor wireless e por fim o computador recebe os dados pelo receptor ligado ao USB-TTL Converter.



- Ligações do arduino: 





-Receptor + conversor:





Instalação dos drivers: 

-Faça o download do driver clicando aqui (CP210x_VCP_Win_XP_S2K3_Vista_7) e instale-o.
-Programa para sincronizar a frequência do módulos, clique aqui (APC22X_V12A).

-Conecte o um dos módulos,  altere  a frequência para sua frequência desejada (max 478MHz).
-Repita o passo acima com o outro módulo.



-Código do Arduíno:


 int sensorPin = 0;

 int val = 0;

 void setup(){
  
   Serial.begin(9600);

 }

void loop(){

   val = analogRead(sensorPin);
   
   Serial.println(val);

}

-Faca upload do código

-Abra a IDE do arduino e  escolha a serial port onde o receptor estiver conectado.

-Abra o serial monitor e seja feliz.



segunda-feira, 5 de novembro de 2012

Projeto - Carro segue trilha.



- Componentes: 2 Motores + 2 sensores de reconhecimento de cor + Placa Arduíno + Fios.

- Descrição: Na frente do carro temos dois sensores de luz, o carro vai identificar a intensidade luminosa que esta em baixo dele, a partir desses dados é feito um calculo para determinar as propriedades da superfície que ele se encontra, a cor, textura, ate mesmo uma linha preta no chão desde que o chão seja totalmente branco, ou pode seguir uma linha branca desde que o chão seja totalmente preto.





Código =>  SEGUIDOR DE LINHA REVERSO.

                 Código para robô segue linha reverso traciona o motor
                 de acordo com o curva assim ele reverte o polo
                 para dar o angulo de curvatura.


int PortPin2 = 2;    // Motor 1
int PortPin3 = 3;    // Motor 1
int PortPin4 = 4;    // Motor 2
int PortPin5 = 5;    // Motor 2
int Inp_sensor_dir = 8;
int Inp_sensor_esq = 9; 
void setup(){
    pinMode(PortPin2, OUTPUT); 
    pinMode(PortPin3, OUTPUT); 
    pinMode(PortPin4, OUTPUT); 
    pinMode(PortPin5, OUTPUT); 
    pinMode(Inp_sensor_dir, INPUT); 
    pinMode(Inp_sensor_esq, INPUT);   
} 
void loop(){
    drive_frente();     
    if((digitalRead(Inp_sensor_dir)) == HIGH){
          drive_esquerda();       
          delay(50);     
    }      
    drive_frente();
    if((digitalRead(Inp_sensor_esq))== HIGH){
          drive_direita();       
          delay(50);     
    }           
    drive_frente();      
}

void drive_esquerda(){   //função drive_esquerda
    digitalWrite(PortPin2, LOW);     //Motor 1
    digitalWrite(PortPin4, LOW);     //Motor 2
    digitalWrite(PortPin3, HIGH);    //Motor 1
    digitalWrite(PortPin5, HIGH);    //Motor 2
}
void drive_direita(){   //função drive_direita
    digitalWrite(PortPin2, HIGH);     //Motor 1
    digitalWrite(PortPin4, HIGH);     //Motor 2
    digitalWrite(PortPin3, LOW);      //Motor 1
    digitalWrite(PortPin5, LOW);      //Motor 2
}
void drive_frente(){    //função drive_frente
    digitalWrite(PortPin2, LOW);      //Motor 1
    digitalWrite(PortPin3, HIGH);      //Motor 1
    digitalWrite(PortPin4, HIGH);      //Motor 2
    digitalWrite(PortPin5, LOW);     //Motor 2
}


Codigo =>  SEGUIDOR DE LINHA DESLIGA.

                 Código para robô segue linha com deligamento
                 de um dos motor, para não dar o efeito de travamento.
           

int PortPin2 = 2;    // Motor 1
int PortPin3 = 3;    // Motor 1
int PortPin4 = 4;    // Motor 2
int PortPin5 = 5;    // Motor 2
int Inp_sensor_dir = 8;
int Inp_sensor_esq = 9; 
void setup(){
    pinMode(PortPin2, OUTPUT); 
    pinMode(PortPin3, OUTPUT); 
    pinMode(PortPin4, OUTPUT); 
    pinMode(PortPin5, OUTPUT); 
    pinMode(Inp_sensor_dir, INPUT); 
    pinMode(Inp_sensor_esq, INPUT);   
}
void loop(){

  drive_frente();     
  if((digitalRead(Inp_sensor_dir)) == HIGH){
  drive_esquerda();       
delay(200);     
  }      
  drive_frente();
  if((digitalRead(Inp_sensor_esq))== HIGH){
        drive_direita();       
delay(200);     
  }     
      
  drive_frente();      
}
void drive_esquerda(){  //função drive_esquerda
  //digitalWrite(PortPin2, LOW);  //Motor 1
  digitalWrite(PortPin4, LOW);    //Motor 2
  //digitalWrite(PortPin3, LOW);  //Motor 1
  digitalWrite(PortPin5, LOW);    //Motor 2
}

void drive_direita(){            //função drive_direita
  digitalWrite(PortPin2, LOW);    //Motor 1
  //digitalWrite(PortPin4, HIGH); //Motor 2
  digitalWrite(PortPin3, LOW);    //Motor 1
  //digitalWrite(PortPin5, LOW);  //Motor 2
}

void drive_frente(){              //função drive_frente
  digitalWrite(PortPin2, LOW);    //Motor 1
  digitalWrite(PortPin3, HIGH);   //Motor 1
  digitalWrite(PortPin4, HIGH);   //Motor 2
  digitalWrite(PortPin5, LOW);    //Motor 2
}

quinta-feira, 1 de novembro de 2012

Projeto - Carro que desvia obstáculos.



- Componentes: 1 Placa Arduíno + 2 Motores + 1 Sensor ultrassônico + Fios + Materiais descartáveis (para montar o carro).

- Descrições: O sensor ultrassônico tem um emissor e um receptor, o transmissor manda um som que logo é percebido pelo receptor e assim podendo detectar se há um objeto a sua frente e qual a sua distancia. Como mostra na figura abaixo.


 - O carro funciona da seguinte maneira: A medida que ele chega perto do obstaculo, no monitor ficará listando a distância que o carro esta, no caso do nosso carro ele foi programado para parar a 5 cm do obstaculo, quando isso acontece ele gira para os dois lados medindo a distancia, o lado que tiver mais distancia ate o próximo obstaculo ele irá seguir.


Carro =>



Código =>



int PortPin2 = 2;    // Motor 1
int PortPin3 = 3;    // Motor 1
int PortPin4 = 4;    // Motor 2
int PortPin5 = 5;    // Motor 2
int distancia = 0;
int disdir= 0;
int disesq = 0;

#define echoPin 13
#define trigPin 12

#include "Ultrasonic.h"

Ultrasonic ultrasonic(12,13);

void setup()   {
  Serial.begin(9600);
  pinMode(PortPin2, OUTPUT);
  pinMode(PortPin3, OUTPUT);
  pinMode(PortPin4, OUTPUT);
  pinMode(PortPin5, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);

}

void loop()  {
  drive_frente();
  delay(100);   
  distancia = ultrasonico();
  Serial.println(distancia);
  delay(10);

  if(distancia <= 5){
    drive_esquerda();
    delay(1500);
    drive_stop();
    delay(200);
    disesq = ultrasonico();
    Serial.print("Esquerda: ");
    Serial.println (disesq);
    drive_direita();
    delay(2900);
    drive_stop();
    delay(200);
    disdir = ultrasonico();
    Serial.print("Direita: ");
    Serial.println(disdir);
    if(disdir >= disesq){
      Serial.println("-->Direita");
      drive_frente();
    }
    else{
      Serial.println("<--Esquerda");
      drive_esquerda();
      delay(2800);
      drive_stop();
      delay(200);
      drive_frente();
    }
  }  
}

void drive_esquerda(){           //função drive_esquerda
  digitalWrite(PortPin2, LOW);     //Motor 1
  digitalWrite(PortPin3, HIGH);    //Motor 2
  digitalWrite(PortPin4, HIGH);    //Motor 1
  digitalWrite(PortPin5, LOW);     //Motor 2
}

void drive_direita(){             //função drive_direita
  digitalWrite(PortPin2, HIGH);     //Motor 1
  digitalWrite(PortPin3, LOW);      //Motor 1
  digitalWrite(PortPin4, LOW);      //Motor 2
  digitalWrite(PortPin5, HIGH);     //Motor 2
}

void drive_stop(){                //função drive_stop
  digitalWrite(PortPin2, LOW);      //Motor 1
  digitalWrit  e(PortPin4, LOW);      //Motor 2
  digitalWrite(PortPin3, LOW);      //Motor 1
  digitalWrite(PortPin5, LOW);      //Motor 2
}

void drive_re(){                  //função drive_re
  digitalWrite(PortPin2, HIGH);     //Motor 1
  digitalWrite(PortPin3, LOW);      //Motor 1
  digitalWrite(PortPin4, HIGH);     //Motor 2
  digitalWrite(PortPin5, LOW);      //Motor 2
}

void drive_frente(){              //função drive_frente
  digitalWrite(PortPin2, LOW);      //Motor 1
  digitalWrite(PortPin3, HIGH);     //Motor 1
  digitalWrite(PortPin4, LOW);      //Motor 2
  digitalWrite(PortPin5, HIGH);     //Motor 2
}

int ultrasonico(){

  digitalWrite(trigPin, LOW);

  delayMicroseconds(2);

  digitalWrite(trigPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(trigPin, LOW);

  int distancia = (ultrasonic.Ranging(CM));

  return(distancia);

}