Archive for the ‘Projectos’ Category

RobóticTank

O projecto RobóticTank surgiu um pouco por brincadeira e como a realização de um projecto pessoal relacionado com a robótica e automação.

O primeiro passo foi escolher uma plataforma sobre a qual desenvolver o projecto e essa escolha recaiu sobre Arduino. Os factores que levaram à escolha da plataforma Arduino foram a sua simplicidade e modularidade que permite que seja uma plataforma com uma curva de aprendizagem muito linear mas que ao mesmo tempo é muito poderosa.

Esta projecto foi aos poucos e poucos sendo organizado e planeado na minha mente, e acabei por definir um caminho que começava por inicialmente controlar dois servo – motores via uma programação feita previamente no Arduino. Este seria a base de todo o trabalho e todo o restante projecto evoluiria a partir desta base.

Após a conclusão desta base o próximo passo seria instalar um sensor de pista, um sensor que detecta através de pequenos módulos LED diferenças de cor entre determinadas margens no solo, isto seria útil para colocar o RobóticTank a seguir uma linha colorida no solo. Para isto o sensor iria fazer a leitura do solo e a programação do Arduino teria de incidir sobre o LED central ler a cor e os LED’s laterais terem de fazer uma leitura de cor diferente do LED central e assim sucessivamente fazer os respectivos ajustes nos motores para que o RobóticTank siga a linha.

O próximo passo é adicionar um módulo de conexão sem fios ao RobóticTank para que seja possível controla-lo de uma forma mais autónoma, quer seja via computador ou smartphone. No entanto ainda não decidi qual o tipo de conexão a usar, mas poderá ser desde o bluetooth (que tem um alcance bastante limitado) até as conexões Wifi.

Por último gostaria também de adicionar uma pequena camera de vídeo ao sistema e poder fazer o streaming em tempo real para um computador ou sistema móvel. Além destas funcionalidades poderiam ainda ser incluídos inúmeros sensores ao RobóticTank de modo a poder ter uma maior gama de dados recolhidos à sua passagem.

Uma grande parte destes objectivos ainda estão por cumprir, na verdade apenas o primeiro objectivo está em parte alcançado, mas tudo leva o seu tempo e necessita da sua aprendizagem.

Irei usar este Blog para divulgar o meu projecto e mostrar todas as evoluções que vou fazendo ao longo do tempo no projecto. Poderão encontrar já vários post’s sobre este meu projecto na categoria Projectos.

Share

Projecto Robótica – Ponto de Situação 26/07/2011

Durante os últimos tempos não tenho tido quase tempo nenhum para dedicar ao meu projecto Robótica, mas pretendo voltar ao trabalho durante as férias.

Desde o último “Ponto de Situação” pouco evolui, apenas iniciei de uma forma um pouco desarrumada a conexão das cablagens do sensor QTR-8RC Reflectance Sensor Array ao Arduino.

De momento não tenho mais novidades para dar sobre o projecto, mas fiquem a espera de novos desenvolvimentos sobre o projecto durante os próximos dias.

Share

Projecto Robótica – Ponto de Situação 13/05/2011

Faz cerca de uma semana desde o verdadeiro começo do meu projecto de robótica, e até agora tem tudo corrido bastante bem. A nível de funcionalidades nos últimos dias não tenho evoluído muito, apenas organizei um pouco a estrutura do Robot, e comecei a controlar a velocidade dos motores.

Neste momento o Robot encontra-se assim:

Quanto à programação do Robot, fiz algumas alterações e comecei a controlar  velocidade dos motores de modo a poder controlar melhor o desempenho do Robot.

A actual programação assenta no seguinte código:

int motorPin1 = 6;
int motorPin2 = 5;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 500;

void setup()
{
 pinMode(motorPin1, OUTPUT);
 pinMode(motorPin2, OUTPUT);
 pinMode(motorPin3, OUTPUT);
 pinMode(motorPin4, OUTPUT);
}

void loop()
{
  frente();
  delay(1000);
  direita();
  delay(1000);
  esquerda();
  delay(1000);
  tras();
  delay(1000);
  esquerda();
  delay(1000);
  direita();
  delay(1000);
  parado();
  delay(1500);
}

void frente()
{
  analogWrite(motorPin1, 80);
  analogWrite(motorPin2, 0);
  analogWrite(motorPin3, 80);
  analogWrite(motorPin4, 0);
}

void tras()
{
  analogWrite(motorPin1, 0);
  analogWrite(motorPin2, 80);
  analogWrite(motorPin3, 0);
  analogWrite(motorPin4, 80);
}

void direita()
{
  analogWrite(motorPin1, 100);
  analogWrite(motorPin2, 0);
  analogWrite(motorPin3, 0);
  analogWrite(motorPin4, 100);
}

void esquerda()
{
  analogWrite(motorPin1, 0);
  analogWrite(motorPin2, 100);
  analogWrite(motorPin3, 100);
  analogWrite(motorPin4, 0);
}

void parado()
{
  analogWrite(motorPin1, 0);
  analogWrite(motorPin2, 0);
  analogWrite(motorPin3, 0);
  analogWrite(motorPin4, 0);
}

Fico à espera de comentários e dicas de melhoramento para este projecto, visto que eu ainda me estou a iniciar na área da electrónica e da robótica.

Share

Projecto Robótica – Ponte L293D

Continuando a minha iniciação na área da robótica e electrónica, hoje foi dia de implementar a ligação de uma ponte em H L293D que permite controlar separadamente 2 motores.

Para fazer esta montagem baseei-me no seguinte esquema:

Aqui fica uma foto da minha montagem, onde eu apenas adicionei um interruptor.

 

 

Após ter efectuado a montagem, passei aos testes e respectiva programação. Quanto à programação ainda não avancei muito e neste momento o Robot apenas segue em frente por tempo indeterminado ou até eu desligar o interruptor.

O código que usei nestes primeiros testes foi o seguinte:

int motorPin1 = 4;
int motorPin2 = 5;
int motorPin3 = 11;
int motorPin4 = 10;
int delayTime = 1250;

void setup() {
 pinMode(motorPin1, OUTPUT);
 pinMode(motorPin2, OUTPUT);
 pinMode(motorPin3, OUTPUT);
 pinMode(motorPin4, OUTPUT);

}

void loop()
{
      digitalWrite(motorPin1, HIGH);
      digitalWrite(motorPin2, LOW);
      digitalWrite(motorPin3, HIGH);
      digitalWrite(motorPin4, LOW);
      delay(delayTime);

}

Aqui fica também um pequeno vídeo que mostra o resultado das evoluções que o projecto tem sofrido:

Fico à espera de comentários e dicas de melhoramento para este projecto, visto que eu ainda me estou a iniciar na área da electrónica e da robótica.

Share

Projecto Robótica – Blinking LED

Tal como o título do post indica, a minha primeira aventura com o Arduino ficou-se por colocar um simples LED a piscar, e recorrendo à programação fui alterando os tempos de delay para verificar os resultados produzidos.

O Esquema eléctrico necessário é bastante básico, como a seguinte figura demonstra.

Eu baseei-me neste esquema eléctrico, mas introduzi algumas alterações, como recorrer a alimentação externa e não através do cabo USB. Para isso nas ligações referentes ao campo POWER liguei o cabo positivo da bateria ao  Vin e o cabo negativo ao GND (terra).

Quanto à minha execução deste pequeno exemplo, eu usei a breadboard para ligar todos os componentes em vez de ligar tudo directamente no Arduino, isto permitiu-me colocar 3 LED’s em paralelo em vez de apenas um.

Quanto à programação, eu acabei por usar o código exemplo que está disponível nos manuais de iniciação do Arduino, alterando apenas os valores do delay.

O código está escrito em C e é o seginte:

/*
Nome: Nuno Santos
Data: 06-05-2011
Proj: Blinking LED
*/

void setup() {
  // Inicializa o pino digital como Output.
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);   // Coloca o LED em On 

  delay(1000);              // Tempo de espera com o LED ligado
  digitalWrite(13, LOW);    // Coloca o LED em Off

  delay(1000);              // Tempo de espera com o LED desligado

}

Aqui fica um pequeno vídeo que mostra o funcionamento deste pequeno circuito eléctrico, usando diferentes valores para o delay:

Fico à espera de comentários e dicas de melhoramento para este projecto, visto que eu ainda me estou a iniciar na área da electrónica e da robótica.

Share