LusoRobótica - Robótica em Português

Robótica => Projectos de robótica => Projectos Concluídos => Tópico iniciado por: Marvin em 26 de Setembro de 2010, 00:07

Título: .Net RC Project
Enviado por: Marvin em 26 de Setembro de 2010, 00:07
Boas,

Conclui hoje um projecto que não é nada de novo, mas deu bastante gozo. Controlar um RC atraves da arduino modificando apenas o controlo remoto.

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fblog.skundu.net%2Fwp-content%2Fuploads%2F2010%2F09%2FP1010907-300x225.jpg&hash=983232a9ff6b8fd86ef8b1d6e8f7d9f96d853bd3)

Para o efeito comprei um pequeno jipe telecomandado numa loja chinesa, abri o comando verifiquei como funcionava e liguei-o a arduino. Tendo em conta que apenas era necessario fazer "ground" aos contactos foi bastante facil controla-lo através do pc.

Usei .net para programar a parte de pc, usando windows forms, mas estou a pensar em migrar para versão cliente servidor de forma a controla-lo online apartir do escritorio. Tambem estou a pensar em dar-lhe certa autonomia, sendo o pc a controlar a sua operação autonomamente, mas isso é para a fase 2 do projecto.

Aqui ficam uns videos e o link para o meu blog onde tenho uma breve explicação do mesmo:

http://blog.skundu.net/?p=429 (http://blog.skundu.net/?p=429)

Camara onboard:
.NetRC onboard Cam (http://www.youtube.com/watch?v=aPv1g9O3dUs#ws)

Testes iniciais:
.NetRC first tests (http://www.youtube.com/watch?v=7cP55aFFW-o#ws)

A implementação é bastante simples, mas se tiverem duvidas avisem que tento esclarecer.
Título: Re: .Net RC Project
Enviado por: Marvin em 21 de Outubro de 2010, 09:16
Boas,

fiz umas alterações a este  projecto, que chamo de v1.5, uma mais de cosmetica e a outra a nivel de software.

A nivel cosmético retirei a carroçaria em plastico do carro e fiz umas ligeiras modificações para baixar a camara.

A nivel de software adaptei o controlo para seguir os movimentos da face, em especial a direcção. Usei para o efeito openCV e continuei com a plataforma .net de desenvolvimento.

.NetRC v1.5 (http://www.youtube.com/watch?v=SJDC6MjNV7E#ws)

Ainda esta com um comportamento muito irregular e devido a má qualidade do RC é dificil de perceber de onde vem o erro... pode ser que em breve haja a versão V2.

para mais info podem visitar http://blog.skundu.net/?p=449 (http://blog.skundu.net/?p=449)


Título: Re: .Net RC Project
Enviado por: fre_deri_co em 21 de Outubro de 2010, 09:34
muito fixe... gostei... qualquer dia ainda te contratam para espião  ;D
quanto a camera no robot é uma webcam vulgar?!
Título: Re: .Net RC Project
Enviado por: Marvin em 21 de Outubro de 2010, 10:29
muito fixe... gostei... qualquer dia ainda te contratam para espião  ;D
quanto a camera no robot é uma webcam vulgar?!


A camara é uma "rf pinhole camera" normal, daquelas usadas para vigilancia. Tem um receptor que por sua vez ligo ao pc via adaptador vga.

Ser espião penso que não combina com a partilha comunidade open source, portanto acho que não :P


Título: Re: .Net RC Project
Enviado por: filjoa em 21 de Outubro de 2010, 11:34
viva

mt fixe o projecto... tb estou a divertir-me com uma coisa parecida ... se bem que o meu controlo remoto é por porta COM usando o hyperterminal... pois ainda nao consegui perceber como posso mandar os comandos via brower.

qando tu dizes .NET tu estas a controlar o carro via brower certo?

se assim for podes dar umas dicas de como começar a mandar uns comandos com programação .NET?

cumps
Título: Re: .Net RC Project
Enviado por: Marvin em 21 de Outubro de 2010, 12:05
viva

mt fixe o projecto... tb estou a divertir-me com uma coisa parecida ... se bem que o meu controlo remoto é por porta COM usando o hyperterminal... pois ainda nao consegui perceber como posso mandar os comandos via brower.

qando tu dizes .NET tu estas a controlar o carro via brower certo?

se assim for podes dar umas dicas de como começar a mandar uns comandos com programação .NET?

cumps

.net é da plataforma .net da Microsoft. Neste caso windows forms e serviços windows. Mas estou a trabalhar num port para asp.net para poder ser controlado pelo browser.

Como é prova de conceito (controlo do carro atraves da direcção da cabeça) optei por trabalhar directamente com a arduino sem criar entropia com a web. Especialmente devido a lag da rede inviabilizar este modo de controlo.
Título: Re: .Net RC Project
Enviado por: filjoa em 22 de Outubro de 2010, 15:16
viva

sem querer estar a pedir nada feito nao tens nenhum algoritmo exemplo de o envio, por exemplo de caracteres ou bits via brower para uma porta COM alojada no servidor?

algo do tipo um botao que manda-se um caracter por exemplo...

cumps
Título: Re: .Net RC Project
Enviado por: Marvin em 22 de Outubro de 2010, 15:35
viva

sem querer estar a pedir nada feito nao tens nenhum algoritmo exemplo de o envio, por exemplo de caracteres ou bits via brower para uma porta COM alojada no servidor?

algo do tipo um botao que manda-se um caracter por exemplo...

cumps

Estas a falar de ambiente windows ou linux?

Em ambiente windows (o qual estou mais a vontade para falar) o que faria era ligar a pagina a um serviço windows que por sua vez comunica com a porta de serie. Para isso podes implementar um serviço WCF (windows comunication foundation).

Para Linux penso que deve de ser da mesma forma, ou seja, a webpage liga a uma aplicação q fala c a porta com.

Ligar uma pagina web directo a uma porta com é uma dor de cabeça devido a segurança do proprio IIS (windows) o que até faz algum sentido.
Título: Re: .Net RC Project
Enviado por: filjoa em 23 de Outubro de 2010, 01:22
viva

pois .. estava a falar em windows .. porque eu e o linux nao somos la grandes amigos :D

esse programa tu desenvolves em visualStudio? é que eu vejo que la tem o WCF que falas...

vou tentar arranjar uns tuturiais a ver se faço uma brincadeira :D

cumps
Título: Re: .Net RC Project
Enviado por: Marvin em 23 de Outubro de 2010, 02:28
viva

pois .. estava a falar em windows .. porque eu e o linux nao somos la grandes amigos :D

esse programa tu desenvolves em visualStudio? é que eu vejo que la tem o WCF que falas...

vou tentar arranjar uns tuturiais a ver se faço uma brincadeira :D

cumps

Sim eu desenvolvo no visual studio 2010 com framework .net 3.5 sp1. Se precisares de ajuda avisa, em relação a tutoriais procura no codeproject pois deve de haver algo do que queres fazer por la. Outra boa fonte é o msdn da microsoft.
Título: Re: .Net RC Project
Enviado por: XicoMBD em 22 de Novembro de 2010, 23:39
A camara é uma "rf pinhole camera" normal, daquelas usadas para vigilancia. Tem um receptor que por sua vez ligo ao pc via adaptador vga.
Boas,
Ando a pensar em comprar uma câmara dessas, ando com dúvidas é em relação ao adaptador para a ligar ao pc.
Onde arranjaste o teu, é mais ou menos para que preço?



PS: A que estou a pensar comprar é esta (http://cgi.ebay.co.uk/NEW-WIRELESS-MINI-CCTV-SECURITY-CAMERA-HIDDEN-SPYCAM-UK-/320587729232?pt=UK_CCTV&hash=item4aa4848950#ht_3197wt_962), ou uma parecida da mesma loja.

Título: Re: .Net RC Project
Enviado por: Marvin em 22 de Novembro de 2010, 23:52
A camara é uma "rf pinhole camera" normal, daquelas usadas para vigilancia. Tem um receptor que por sua vez ligo ao pc via adaptador vga.
Boas,
Ando a pensar em comprar uma câmara dessas, ando com dúvidas é em relação ao adaptador para a ligar ao pc.
Onde arranjaste o teu, é mais ou menos para que preço?



PS: A que estou a pensar comprar é esta (http://cgi.ebay.co.uk/NEW-WIRELESS-MINI-CCTV-SECURITY-CAMERA-HIDDEN-SPYCAM-UK-/320587729232?pt=UK_CCTV&hash=item4aa4848950#ht_3197wt_962), ou uma parecida da mesma loja.



Estou a usar o easycap 2.0, até ver funciona muito bem. Compras no ebay por 10€ +-. Tens é de ver se é a versão mais recente q dá para o windows 7 (caso tenhas esse)

Essa é igual a minha, mas se n estou enganado a minha foi para ai metade do preço dessa! Ja confirmo e edito o post.

edit: confirmei agora e de facto aumentaram os preços, mas ainda se encontra por volta dos 15€

Título: Re: .Net RC Project
Enviado por: XicoMBD em 23 de Novembro de 2010, 07:59
Ok, obrigado.


Esse é o modelo, mas como não tenho pressa, estou a pensar comprar em leilao para ver se fica mais barata, tipo aqui: http://cgi.ebay.co.uk/NEW-WIRELESS-MINI-CCTV-SECURITY-CAMERA-HIDDEN-SPYCAM-UK-/220700488100?pt=UK_CCTV&hash=item3362c631a4#ht_3083wt_962 (http://cgi.ebay.co.uk/NEW-WIRELESS-MINI-CCTV-SECURITY-CAMERA-HIDDEN-SPYCAM-UK-/220700488100?pt=UK_CCTV&hash=item3362c631a4#ht_3083wt_962).




Então este deve servir não é?
http://cgi.ebay.co.uk/USB-2-0-VIDEO-AUDIO-TV-DV-AV-VHS-CAPTURE-ADAPTER-CARD-/310270002826?pt=UK_Computing_Computer_Components_Graphics_Video_TV_Cards_TW&hash=item483d88868a#ht_3422wt_1016 (http://cgi.ebay.co.uk/USB-2-0-VIDEO-AUDIO-TV-DV-AV-VHS-CAPTURE-ADAPTER-CARD-/310270002826?pt=UK_Computing_Computer_Components_Graphics_Video_TV_Cards_TW&hash=item483d88868a#ht_3422wt_1016)
Título: Re: .Net RC Project
Enviado por: Marvin em 23 de Novembro de 2010, 10:47
Ok, obrigado.


Esse é o modelo, mas como não tenho pressa, estou a pensar comprar em leilao para ver se fica mais barata, tipo aqui: http://cgi.ebay.co.uk/NEW-WIRELESS-MINI-CCTV-SECURITY-CAMERA-HIDDEN-SPYCAM-UK-/220700488100?pt=UK_CCTV&hash=item3362c631a4#ht_3083wt_962 (http://cgi.ebay.co.uk/NEW-WIRELESS-MINI-CCTV-SECURITY-CAMERA-HIDDEN-SPYCAM-UK-/220700488100?pt=UK_CCTV&hash=item3362c631a4#ht_3083wt_962).




Então este deve servir não é?
http://cgi.ebay.co.uk/USB-2-0-VIDEO-AUDIO-TV-DV-AV-VHS-CAPTURE-ADAPTER-CARD-/310270002826?pt=UK_Computing_Computer_Components_Graphics_Video_TV_Cards_TW&hash=item483d88868a#ht_3422wt_1016 (http://cgi.ebay.co.uk/USB-2-0-VIDEO-AUDIO-TV-DV-AV-VHS-CAPTURE-ADAPTER-CARD-/310270002826?pt=UK_Computing_Computer_Components_Graphics_Video_TV_Cards_TW&hash=item483d88868a#ht_3422wt_1016)

Sim é esse adaptador, eu mandei vir de UK, ms é o mm.
Título: Re: .Net RC Project
Enviado por: Marvin em 27 de Novembro de 2010, 18:59
Versão 1.6

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fblog.skundu.net%2Fwp-content%2Fuploads%2F2010%2F11%2FP1010979.jpg&hash=1ac55be6883040651f0d220dd7e7bc0dbe49b567)

Como tinha problemas com a câmara em situações de baixa luminosidade resolvi meter-lhe uns "farois".  Fiz um pequeno circuito com um picaxe 8M, LDR e dois leds de alto brilho (10000 mcd).

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fblog.skundu.net%2Fwp-content%2Fuploads%2F2010%2F11%2FP1010972.jpg&hash=842a62de291a7466786e2ff4b849780249476712)

Video:

RC controlled by .net and arduino v1.6 (http://www.youtube.com/watch?v=bN772E3yE_Q#ws)

Onboard cam:

RC controlled by .net and arduino v1.6 Onboard Cam Console (http://www.youtube.com/watch?v=A9RnDgLMNIs#)

Caso queiram o codigo e o diagrama do circuito aqui http://blog.skundu.net/?p=537 (http://blog.skundu.net/?p=537)





Título: Re: .Net RC Project
Enviado por: XicoMBD em 05 de Dezembro de 2010, 23:17
Epá, desculpa estar-te a chatear, mas apareceram-me outras dúvidas quanto às câmaras.
Os transformadores delas são do UK, não são? Que adaptador para o nosso formato usas?
Outra coisa, a camara é reconhecida pelo pc como uma webcam  ou com um formato diferente?




PS: O teu projecto continua excelente, o brilho dos LED ficou brutal  ;D
Título: Re: .Net RC Project
Enviado por: Marvin em 12 de Dezembro de 2010, 22:51
Epá, desculpa estar-te a chatear, mas apareceram-me outras dúvidas quanto às câmaras.
Os transformadores delas são do UK, não são? Que adaptador para o nosso formato usas?
Outra coisa, a camara é reconhecida pelo pc como uma webcam  ou com um formato diferente?


PS: O teu projecto continua excelente, o brilho dos LED ficou brutal  ;D

Sim os transformadores são UK, eu uso um adaptador universal destes:

http://cgi.ebay.co.uk/UNIVERSAL-TRAVEL-PLUG-ADAPTOR-AND-USB-MAINS-CHARGER-/230508298239?pt=UK_ConsumerElectronics_PowerAdaptors_SM&hash=item35ab5d7fff (http://cgi.ebay.co.uk/UNIVERSAL-TRAVEL-PLUG-ADAPTOR-AND-USB-MAINS-CHARGER-/230508298239?pt=UK_ConsumerElectronics_PowerAdaptors_SM&hash=item35ab5d7fff)


Com o easycap a camara é reconhecida pelo sistema exactamente como uma webcam.





Título: Re: .Net RC Project
Enviado por: rappa em 03 de Janeiro de 2011, 20:40
boas!

para já deixa me dar te os parabéns porque esse bichinho esta porreiro :)

mas porque não usaste led s de infravermelhos? era mais tunning visto que não se via a luz mas a camera conseguia apanhar a luz do led

abraço
rappa
Título: Re: .Net RC Project
Enviado por: Marvin em 06 de Janeiro de 2011, 23:12
boas!

para já deixa me dar te os parabéns porque esse bichinho esta porreiro :)

mas porque não usaste led s de infravermelhos? era mais tunning visto que não se via a luz mas a camera conseguia apanhar a luz do led

abraço
rappa

Obrigado!

Leds IV parecem-me bem... vou testar.  Mas penso que tinha de adaptar a camara, tipo tirar-lhe o filtro IV q tem. Mas posso testar.
Título: Re: .Net RC Project
Enviado por: xicox em 03 de Junho de 2012, 18:54
Boas, tenho também um RC, e que quero liga-lo ao arduino mas quando ligo os fios que estão soldados nos pinos dos botões do comando, ao arduino, estes começam a activar a sua função, por exemplo

Pego no fio do pino para o carro para andar para a fente, ligo o pino a uma porta digital e o carro começa a andar sem eu ter programado, e os outros pinos também fazem o mesmo.

O que estarei a fazer de mal?
Título: Re: .Net RC Project
Enviado por: Marvin em 03 de Junho de 2012, 19:29
Boas, tenho também um RC, e que quero liga-lo ao arduino mas quando ligo os fios que estão soldados nos pinos dos botões do comando, ao arduino, estes começam a activar a sua função, por exemplo

Pego no fio do pino para o carro para andar para a fente, ligo o pino a uma porta digital e o carro começa a andar sem eu ter programado, e os outros pinos também fazem o mesmo.

O que estarei a fazer de mal?

Colocas-te algum codigo na arduino?

Se sim, mete aqui para ver. Senão tenta ver se ligares o GND ao botão activa a função dele, se sim é pq precisas de colocar os pinos a High para eles n estarem activos.

Título: Re: .Net RC Project
Enviado por: xicox em 03 de Junho de 2012, 19:47
Boas, tenho também um RC, e que quero liga-lo ao arduino mas quando ligo os fios que estão soldados nos pinos dos botões do comando, ao arduino, estes começam a activar a sua função, por exemplo

Pego no fio do pino para o carro para andar para a fente, ligo o pino a uma porta digital e o carro começa a andar sem eu ter programado, e os outros pinos também fazem o mesmo.

O que estarei a fazer de mal?

Colocas-te algum codigo na arduino?

Se sim, mete aqui para ver. Senão tenta ver se ligares o GND ao botão activa a função dele, se sim é pq precisas de colocar os pinos a High para eles n estarem activos.


Sim tem um código, eu ligo os fios nas portas certas mas o carro dispara logo para a frente, mesmo assim a programação é a seguinte:


Código: [Seleccione]
int pin1 = 7;                 // Pino ligado ao pino digital 7 DIREITA
int pin2 = 8;                 // Pino ligado ao pino digital 8 ESQUERDA
int pin3 = 11;                 // Pino ligado ao pino digital 11 ATRAS
int pin4 = 12;                // Pino ligado ao pino digital 12 FRENTE



void setup(){
 
  Serial.begin(115200);
 
  pinMode(pin1, OUTPUT);      // Pino digital como saida
  pinMode(pin2, OUTPUT);     
  pinMode(pin3, OUTPUT);     
  pinMode(pin4, OUTPUT);
}

void loop(){
 
 
 
  if (Serial.available() > 0) {
  char motors = Serial.read();
   switch(motors) {
   
     case 'w':// Frente
        digitalWrite(pin1,HIGH);
       
     break;
     
    case 's':// atras
        digitalWrite(pin3,LOW);
     break;
     
    case 'a':// Esquerda
        digitalWrite(pin2,HIGH);
     break;
     
    case 'd':// Direita
        digitalWrite(pin1,HIGH);
     break;
     
   case 'g':// Stop
        digitalWrite(pin4, HIGH);             
        digitalWrite(pin3, HIGH);         
        digitalWrite(pin2, HIGH);
        digitalWrite(pin1, HIGH);
      break;
   } 
  }
}
 
 

Mesmo assim se eu tirar o ultimo fio, que neste caso o 12 que é o da frente, a seguinte porta a 11, activa, como é o fio para andar para trás o carro faz isso, e sempre assim



EDIT: quando ligo o arduino com só com código para pedir para ele andar para trás ele não obedece, ele anda para frente e vira a direita ao mesmo tempo, os motores deviam dar rotação inversa não sei por que motivo ele faz isto...
Título: Re: .Net RC Project
Enviado por: Marvin em 04 de Junho de 2012, 10:37
Antes de testares qualquer codigo faz o seguinte teste. Dá energia ao comando, pega num fio do GND e toca nos contactos dos botões. Se o carro mexer nas direcções que estas a pedir então é pq os botões são activos em LOW.

Se ele n funcionar assim, tocas com o mais nos contactos. Se o carro andar assim é porque os botões são activos em HIGH.

Título: Re: .Net RC Project
Enviado por: xicox em 04 de Junho de 2012, 15:52
Eu para ver fiz medições nos pinos, eles sem estar pressionados davam 2.70V, quando eu pressionava, a voltagem ia a 0.
Para ver o pino que tive de ligar tive de fazer um "shunt" entre um dos pinos do botão que ligava à pista do IC à terra, e então a sua função activava, e fiz isso em todos os botões.

Na programação está programado para andar para trás o LOW activa a sua função e então eu fiz uma programação de teste que é essa aqui postada.

É porque cada vez que eu ponha uma programação seja para trás ou virar à esquerda o carro dispara para a frente e vira para a direita, ou seja, o que queira que eu faça os motores do carro disparam sempre no sentido dos ponteiros de relógio se quero dar inverso já não consigo... :(

Mas se eu tirar os pinos da frente e da direita, o carro já faz a sua função, pois eu estou a notar que os pinos funcionam como se fosse uma terra, porque se não fosse eles não activavam todos ao mesmo tempo....
Título: Re: .Net RC Project
Enviado por: iyahdub em 04 de Junho de 2012, 18:06
Tentaste usar pull up resistors nos tais pinos que te estao a dar [rpoblemas ? podes activa-los de dentro do codigo, com os Atmel
Título: Re: .Net RC Project
Enviado por: xicox em 04 de Junho de 2012, 23:07
Tentaste usar pull up resistors nos tais pinos que te estao a dar [rpoblemas ? podes activa-los de dentro do codigo, com os Atmel

Mas para arranjar esses componentes vou ter de os comprar e é um bocado complicado pois eu tenho de apresentar isto na sexta :S

Pois eu pensava que era só problema de programação...
Título: Re: .Net RC Project
Enviado por: iyahdub em 06 de Junho de 2012, 06:25
Tentaste usar pull up resistors nos tais pinos que te estao a dar [rpoblemas ? podes activa-los de dentro do codigo, com os Atmel

Mas para arranjar esses componentes vou ter de os comprar e é um bocado complicado pois eu tenho de apresentar isto na sexta :S

Pois eu pensava que era só problema de programação...

Tou um bocado perdido na tua explicacao...Mas podes activar pull up/pull down resistors de dentro do codigo que os chip tem( sao e fracos). Mas Estou a dizer isto um bocado as cegas ja que nao consigo visualiozar  o teu probema totalmente. Mas se eles precisam de terra para activar, talvez ajude( la esta, depende do circuito no total)
Título: Re: .Net RC Project
Enviado por: xicox em 06 de Junho de 2012, 22:04
deixem estar afinal o problema  era de programação.

Mesmo assim para quem tenha o mesmo problema que o meu eu deixo aqui o código:

Código: [Seleccione]
int Direita = 7;              // Pino ligado ao pino digital 7 DIREITA
int Esquerda = 8;             // Pino ligado ao pino digital 8 ESQUERDA
int Tras = 11;                // Pino ligado ao pino digital 11 ATRAS
int Frente = 12;              // Pino ligado ao pino digital 12 FRENTE

void setup(){
   Serial.begin(115200);
  }

void loop(){
 
 
 
  if (Serial.available() > 0) {
  char motors = Serial.read();
   switch(motors){
   
     case 'w':// Frente
        pFrente();
        break;
     
    case 's':// atras
        pTras();     
        break;
     
    case 'a':// Esquerda
        pEsquerda();
        break;
     
    case 'd':// Direita
        pDireita();
        break;
     
   case 'r':// Stop
        pStop();
       break;
   } 
  }
}


void pFrente()
{
  pinMode (Direita, INPUT);
  pinMode(Esquerda, INPUT);     
  pinMode(Tras, INPUT);     
  pinMode(Frente, OUTPUT);

}

void pTras()
{
  pinMode (Direita, INPUT);
  pinMode(Esquerda, INPUT);     
  pinMode(Tras, OUTPUT);     
  pinMode(Frente, INPUT);
}

void pEsquerda()
{
  pinMode (Direita, INPUT);
  pinMode(Esquerda, OUTPUT);     
  pinMode(Tras, INPUT);     
  pinMode(Frente, INPUT);
}

void pDireita()
{
  pinMode (Direita, OUTPUT);
  pinMode(Esquerda, INPUT);     
  pinMode(Tras, INPUT);     
  pinMode(Frente, INPUT);
}

void pStop()
{
  pinMode (Direita, INPUT);
  pinMode(Esquerda, INPUT);     
  pinMode(Tras, INPUT);     
  pinMode(Frente, INPUT);
}