LusoRobótica - Robótica em Português

Robótica => Projectos de robótica => Projectos em desenvolvimento => Tópico iniciado por: joao rexinho em 26 de Abril de 2010, 23:13

Título: smalluino e sensor SHARP IR
Enviado por: joao rexinho em 26 de Abril de 2010, 23:13
OLá após ter começado o tópico sobre um problema que faltava a calibração dos servos, mas fui desenvolvendo ate que consegui por o Sensor IR a funcionar. Fiz um video novo com o sensor IR SHARP.
Smalluino and sharp IR sensor (http://www.youtube.com/watch?v=EKBPbFHlwy4#ws)
Video anterior sem sensorIR.
o meu 1º robo smalluino (http://www.youtube.com/watch?v=R0EznPSxLlw#ws)
Algumas fotos sem sensorIR.
URL=http://img718.imageshack.us/i/dsc00018r.jpg/](https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg718.imageshack.us%2Fimg718%2F8916%2Fdsc00018r.jpg&hash=633ba6fbabeb9d3b8ab7b9f305bc4449c20afa49)[/URL]
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg338.imageshack.us%2Fimg338%2F7133%2Fdsc00021iu.jpg&hash=582ce7b8c7234fb8c0d65dac5dbe67f6f8683ef7) (http://img338.imageshack.us/i/dsc00021iu.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg193.imageshack.us%2Fimg193%2F6320%2Fdsc00024rwj.jpg&hash=e865086936312da42539f5c5365c8adc462a9dab) (http://img193.imageshack.us/i/dsc00024rwj.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg651.imageshack.us%2Fimg651%2F32%2Fdsc00023yjj.jpg&hash=4597edf91ae4faab49e1766afd7dc3e392d05600) (http://img651.imageshack.us/i/dsc00023yjj.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg706.imageshack.us%2Fimg706%2F4269%2Fdsc00022hp.jpg&hash=5ea1313f38792f22418628c4e05957114f514f45) (http://img706.imageshack.us/i/dsc00022hp.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg219.imageshack.us%2Fimg219%2F1007%2Fdsc00033pm.jpg&hash=c26d0f17ae7b1c0cef33888da022ebe5e3475039) (http://img219.imageshack.us/i/dsc00033pm.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)

Codigo do smalluino:
Código: [Seleccione]
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop()
{
 parado(4);
 frente(2);
 esquerda(6);
 tras(2);
 esquerda(6);
 direita(6);
}
void parado(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 0);
  analogWrite(motorDrt, 0);
  delay(500);
 }
}
void tras(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 45);
  analogWrite(motorDrt, 150);
  delay(1500);
 }
}
void frente(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 150);
  analogWrite(motorDrt, 45);
  delay(2500);
 }
}
void esquerda(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 45);
  analogWrite(motorDrt, 45);
  delay(500);
 }
}
void direita(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 150);
  analogWrite(motorDrt, 150);
  delay(500);
 }
}

Código para sensor IR:
Código: [Seleccione]
int sensorIrDPin = 0;
int sensorIrDValue = 0; // valor leído del pot
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
   // inicializa comunicación serial a 9600 bps:
 Serial.begin(9600);
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop()

{
 sensorIrDValue = analogRead(sensorIrDPin);
 delay(200);
 if(sensorIrDValue>=100){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 45);
  }


 sensorIrDValue = analogRead(sensorIrDPin);
  delay(200);
  if(sensorIrDValue>=100){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 45);
  }
}

Isto foi o que fiz até agora de futuro vou tentar por 2 sensores SHARP em vez de 1 e talvez depois um sensor de linha.
Em principio este sábado irei fazer uma base  em acrílico para ter mais espaço, colocar um painel solar de 5V para quando estiver desligado ira estar a carregar a bateria e alterar a borracha dos pneus.

Final esta muito próximo:
hoje dia 6 de Maio coloquei os os paineis e a câmara, está tudo a correr ás mil maravilhas. Os paineis solares estão a carregar a bateria, a câmara já arranjei espaço para a câmara e sintonizei com uma tv de campismo a preto e branco.Só falta para terminar colocar outro sensor IR mas ainda não consegui alterar o código para 2 sensores IR. Algumas fotos:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg517.imageshack.us%2Fimg517%2F2420%2Fdsc00101yr.jpg&hash=4b2e0e6f41a3324bfd9f36b0c35fc09fea83212c) (http://img517.imageshack.us/i/dsc00101yr.jpg/)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg202.imageshack.us%2Fimg202%2F9572%2Fdsc00100om.jpg&hash=52c17277727de4b4051bd0a54d2c9b5f6ab11d15) (http://img202.imageshack.us/i/dsc00100om.jpg/)
Câmara de radio frequência
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg687.imageshack.us%2Fimg687%2F4028%2Fdsc00099vo.jpg&hash=2d51c98b39b8834dbf0b5af9adc0d8de53065743) (http://img687.imageshack.us/i/dsc00099vo.jpg/)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg88.imageshack.us%2Fimg88%2F4725%2Fdsc00097ud.jpg&hash=d3d3964d9426246d3ed8cd8bedda7bd2435be557) (http://img88.imageshack.us/i/dsc00097ud.jpg/)
4 PAineis solares 3 da escola 1 de uma lâmpada de jardimdos chinocas que tem boa captação, estão ligados em serie e utilizei este esquema :(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.instructables.com%2Fimage%2FFIHPPF1F82EU51W%2FSelf-Sufficient-Arduino-Board.jpg&hash=f59b80973d5d622270e17641787faf0907527eac)

o codigo que eu fiz para detectar obstáculos com 2 sensores foi:
Código: [Seleccione]
// código by joao rexinho
int sensorIrDPin = 5;
int sensorIrEPin = 1;
int sensorIrDValue = 0;
int sensorIrEValue = 0;// valor leído del pot
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
   // inicializa comunicación serial a 9600 bps:
 Serial.begin(9600);
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop(){
   // Leitura dos valores
  sensorIrDValue = analogRead (sensorIrDPin);
  sensorIrEValue = analogRead (sensorIrEPin);
  delay(200);
  Serial.print(sensorIrDValue);
  Serial.println(sensorIrEValue);

 if(sensorIrDValue>200 && sensorIrEValue>200){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 150);
  }

else{
  if(sensorIrDValue>200 && sensorIrEValue<200){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 45);
  }
else{
  if(sensorIrDValue<200 && sensorIrEValue>200){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 150);
  }
else{
  if(sensorIrDValue<100 && sensorIrEValue<100){
   delay(200);
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 45);   
  }
}
}
}
}

Para perseguir objectos como por exemplo uma bola:
Código: [Seleccione]
//código by joao rexinho
int sensorIrDPin = 5;
int sensorIrEPin = 1;
int sensorIrDValue = 0;
int sensorIrEValue = 0;// valor leído del pot
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
   // inicializa comunicación serial a 9600 bps:
 Serial.begin(9600);
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop(){
   // Leitura dos valores
  sensorIrDValue = analogRead (sensorIrDPin);
  sensorIrEValue = analogRead (sensorIrEPin);
  delay(100);
  Serial.print(sensorIrDValue);
  Serial.println(sensorIrEValue);

 if(sensorIrDValue>=100 && sensorIrEValue>=100){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 45);
  }
else{
  if(sensorIrDValue>=100 && sensorIrEValue<=100){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 45);
  }
else{
  if(sensorIrDValue<=100 && sensorIrEValue>=100){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 150);
  }
else{
  if(sensorIrDValue<=300 && sensorIrEValue<=300){
   analogWrite(motorEsq, 0);
   analogWrite(motorDrt, 0); 
  }
}
}
}
}

Neste  momento o robô está parado porque uma servo queimou. Nas ferias irei colocar uns videos de ele a seguir a bola e outro de ele a desviar se dos obstáculos.


 
Título: Re: smalluino e sensor IR
Enviado por: andnobre em 28 de Abril de 2010, 16:21
boas
tens ai um belo trabalho. Agora queria saber se calibraste ou nao os servos, se calibraste como fizeste.
muito obrigado
Título: Re: smalluino e sensor IR
Enviado por: joao rexinho em 29 de Abril de 2010, 01:25
Ola  calibrei, mas no inicio coloquei o código do smalluino base, os servos começaram a andar e não respondiam aos ciclos. Depois foi ao código e no
Código: [Seleccione]
analogWrite(motorEsq, 0);
analogWrite(motorDrt, 0);
nos dois servos, fiz upload do código para o arduino e reparei que ele parou. De seguida fui ao código e coloquei
Código: [Seleccione]
void tras(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 70);
  analogWrite(motorDrt, 127);
. Os servos ainda não seguirão os ciclos, peguei na chave e no potenciómetro rodei suavemente para a direita. Mas ainda não davam. Então fui ao codigo e voltei a a alterar o analogwrite
 
Código: [Seleccione]
void tras(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 45);
  analogWrite(motorDrt, 150);

Resumindo tens de brincar com os valores do analogwrite e com a chave de fendas roda pouco da posição central  se rodares de mais o sevo, só fica a rodar numa direcção.
Título: Re: smalluino e sensor IR
Enviado por: joao rexinho em 01 de Maio de 2010, 16:15
ja montei para uma base nova mas há um problema o arduino só está a funcionar com a energia do pc, conectei varias baterias desde 4,8 V a 7,2V e não funciona. desconfio que tenha sido quando liguei os fios da bateria ao arduino tenha trocado.Mas ja a acertei os fios e não está a dar será que queimou alguma coisa??É que não tem nada a aquecer.
Título: Re: smalluino e sensor IR
Enviado por: TigPT em 02 de Maio de 2010, 14:12
Estás de parabéns João ;)

Mete água na boca... tanto foi que acabei por ter que ir fazer uma base de robot depois de ter visto o teu post!
Título: Re: smalluino e sensor IR
Enviado por: joao rexinho em 04 de Maio de 2010, 00:08
Muito obrigado ;D, ja alterei a base para acrilico, agora está mais espaçoso. Estas fotos o arduino não esta a fazer nada porque quando ligo uma bateria ao arduino não reage, nem sequer acende a luz que indica POWER só quando ligo ao pc é que reage. Alguém podia me explicar o que esta acontecer? eu acho que foram os condensadores porque sem querer troquei os polos + por -, desconfio que isso  :(.Então encomendei outro arduino e com este fiz um código para comunicar pela porta com e o arduino, é mais uma funçao para o smalluino.

http://img85.imageshack.us/slideshow/webplayer.php?id=dsc00092g.jpg (http://img85.imageshack.us/slideshow/webplayer.php?id=dsc00092g.jpg)

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg413.imageshack.us%2Fimg413%2F9310%2Fdsc00096f.jpg&hash=6a21a73c87a453112da2aa2bbede372b8c243837) (http://img413.imageshack.us/i/dsc00096f.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg28.imageshack.us%2Fimg28%2F5580%2Fdsc00095ll.jpg&hash=595bcf3540af779a094beef77ab4321c02824739) (http://img28.imageshack.us/i/dsc00095ll.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg687.imageshack.us%2Fimg687%2F4647%2Fdsc00094s.jpg&hash=25b5792c81d0a3d3cead3d9101bb372d0607a98d) (http://img687.imageshack.us/i/dsc00094s.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg693.imageshack.us%2Fimg693%2F1250%2Fdsc00093e.jpg&hash=39e05a39a973e78fad265d740436db05cd3b1d1e) (http://img693.imageshack.us/i/dsc00093e.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg85.imageshack.us%2Fimg85%2F3400%2Fdsc00092g.jpg&hash=009807c359002a61f75c936e6e94bc2354d90a76) (http://img85.imageshack.us/i/dsc00092g.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)

Código: [Seleccione]
// Na consola devem colocar:

// p = parar
// w = frente
// s = trás
// d = direita
// a = esquerda

// E depois SEND

// Codigo by joao rexinho

int motorEsq = 11;
int motorDrt = 10;

void setup() {
  // inicialize serial communicaçao:
  Serial.begin(9600);

  }


void loop() {
  // read the sensor:
  if (Serial.available() > 0) {
    int inByte = Serial.read();

    switch (inByte) {
    case 'p':    // pausa
      analogWrite(motorEsq, 0);
      analogWrite(motorDrt, 0);
      break;
    case 'w':    // frente
      analogWrite(motorEsq, 150);
      analogWrite(motorDrt, 45);
      break;
    case 's':    // trás
      analogWrite(motorEsq, 45);
      analogWrite(motorDrt, 150);
      break;
    case 'd':    // direita
      analogWrite(motorEsq, 150);
      analogWrite(motorDrt, 150);
      break;
    case 'a':    // esquerda
      analogWrite(motorEsq, 45);
      analogWrite(motorDrt, 45);
      break;
      }
    }
  }

Título: Re: smalluino e sensor IR
Enviado por: TigPT em 04 de Maio de 2010, 13:07
Onde estás a ligar a alimentação? a pin Vin?

Experimenta com um regulador de 5V como o LM7805 fazer a estabilização da tensão cá fora e ligar a saida regulada ao pin 5V do arduino pois pode ser o regulador visto que ele por usb funciona bem. (não utiliza o regulador)
Título: Re: smalluino e sensor IR
Enviado por: fred gomes em 04 de Maio de 2010, 13:21
vê se tens bateria..
já me conteceu isso ;D , deparei me com o mesmo problema que tu, e pensava que tinha estragado algo, e afinal não tinha bateria..
Título: Re: smalluino e sensor IR
Enviado por: joao rexinho em 05 de Maio de 2010, 00:14
Nas fotos não meti a bateria porque estava carregar, mas estou a utilizar a entrada de carregador. De momento não tenho nenhum regulador de tensão. O arduino novo chegou hoje. Na minha escola tinha alguns painéis solares, vou adaptar a bateria, arranjei uma câmara que funciona através de radio frequência. Amanha irei terminar.
Título: Re: smalluino e sensor IR
Enviado por: joao rexinho em 06 de Maio de 2010, 01:20
actualizado, amanha irei fazer um video para mostrar tudo.
Título: Re: smalluino e sensor IR
Enviado por: joao rexinho em 29 de Maio de 2010, 00:58
O projecto está quase concluído. Com este projecto quis saber fazer um smalluino e adaptar os sensores IR, dei o máximo de utilização desde dança, desviar dos obstáculos só com sensor SHARP, com dois sensores, controlar por SERIAL , perseguir robôs ou carros telecomandados e futebol robótico só não remata.Amanha irei fazer uma demonstração no estação Viana shopping, entre as 14 e as 18 horas. Irei aproveitar para filmar e tirar algumas fotos.

Códigos feitos 100% por mim  ::).
Título: Re: smalluino e sensor IR
Enviado por: AcidDagger em 30 de Maio de 2010, 22:43

Código: [Seleccione]
// Na consola devem colocar:

// p = parar
// w = frente
// s = trás
// d = direita
// a = esquerda

// E depois SEND

// Codigo by joao rexinho

int motorEsq = 11;
int motorDrt = 10;

void setup() {
  // inicialize serial communicaçao:
  Serial.begin(9600);

  }


void loop() {
  // read the sensor:
  if (Serial.available() > 0) {
    int inByte = Serial.read();

    switch (inByte) {
    case 'p':    // pausa
      analogWrite(motorEsq, 0);
      analogWrite(motorDrt, 0);
      break;
    case 'w':    // frente
      analogWrite(motorEsq, 150);
      analogWrite(motorDrt, 45);
      break;
    case 's':    // trás
      analogWrite(motorEsq, 45);
      analogWrite(motorDrt, 150);
      break;
    case 'd':    // direita
      analogWrite(motorEsq, 150);
      analogWrite(motorDrt, 150);
      break;
    case 'a':    // esquerda
      analogWrite(motorEsq, 45);
      analogWrite(motorDrt, 45);
      break;
      }
    }
  }



Tens a certeza que isso funciona?


[/quote]
Título: Re: smalluino e sensor SHARP IR
Enviado por: senso em 30 de Maio de 2010, 23:22
Parece ser código funcional, mas pode não funcionar para ti por teres um esquema de ligações diferente
Título: Re: smalluino e sensor SHARP IR
Enviado por: _ze_pedro_ em 31 de Maio de 2010, 09:21
boas

que tipo de camara é essa?

cump.
ze pedro
Título: Re: smalluino e sensor SHARP IR
Enviado por: joao rexinho em 06 de Junho de 2010, 12:13
Esse código não funciona a 100% porque as vezes fica parado e tem de ser fazer outravez o upload do código.

A camara que eu uso é:
Citar
1.2GHz Wireless Receiver + 208C Câmara

Receptor:
- 1 / 3 "CMOS
- Resolução Horizontal: 380 Linhas de TV
- Iluminação mínima: 1.5 Lux
- Built-in microfone

Máquina fotográfica:
- 1 / 3 "CMOS
- Resolução Horizontal: 380 Linhas de TV
- Iluminação mínima: 1 Lux
- Built-in microfone

Pacote Contém:
1 x sem fio da câmera
1 x receptor sem fio 1.2G
1 x antena receptora
1 x adaptador para câmara (Input: AC 220, 50Hz, 20VA Output;: DC 12V, 500 mA)
1 x adaptador para o receptor (Entrada: 230V ~ 50Hz Saída;: ~ 8V 200mA)
1 x A / V cabo de ligação

o codigo que eu fiz para detectar obstáculos com 2 sensores foi:
Código: [Seleccione]
// código by joao rexinho
int sensorIrDPin = 5;
int sensorIrEPin = 1;
int sensorIrDValue = 0;
int sensorIrEValue = 0;// valor leído del pot
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
   // inicializa comunicación serial a 9600 bps:
 Serial.begin(9600);
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop(){
   // Leitura dos valores
  sensorIrDValue = analogRead (sensorIrDPin);
  sensorIrEValue = analogRead (sensorIrEPin);
  delay(200);
  Serial.print(sensorIrDValue);
  Serial.println(sensorIrEValue);

 if(sensorIrDValue>200 && sensorIrEValue>200){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 150);
  }

else{
  if(sensorIrDValue>200 && sensorIrEValue<200){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 45);
  }
else{
  if(sensorIrDValue<200 && sensorIrEValue>200){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 150);
  }
else{
  if(sensorIrDValue<100 && sensorIrEValue<100){
   delay(200);
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 45);   
  }
}
}
}
}

Para perseguir objectos como por exemplo uma bola:
Código: [Seleccione]
//código by joao rexinho
int sensorIrDPin = 5;
int sensorIrEPin = 1;
int sensorIrDValue = 0;
int sensorIrEValue = 0;// valor leído del pot
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
   // inicializa comunicación serial a 9600 bps:
 Serial.begin(9600);
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop(){
   // Leitura dos valores
  sensorIrDValue = analogRead (sensorIrDPin);
  sensorIrEValue = analogRead (sensorIrEPin);
  delay(100);
  Serial.print(sensorIrDValue);
  Serial.println(sensorIrEValue);

 if(sensorIrDValue>=100 && sensorIrEValue>=100){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 45);
  }
else{
  if(sensorIrDValue>=100 && sensorIrEValue<=100){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 45);
  }
else{
  if(sensorIrDValue<=100 && sensorIrEValue>=100){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 150);
  }
else{
  if(sensorIrDValue<=300 && sensorIrEValue<=300){
   analogWrite(motorEsq, 0);
   analogWrite(motorDrt, 0); 
  }
}
}
}
}

Neste  momento o robô está parado porque uma servo queimou. Nas ferias irei colocar uns videos de ele a seguir a bola e outro de ele a desviar se dos obstáculos.