segunda-feira, 5 de setembro de 2011

Largando este blog

Olá!


Há muito tempo que não posto aqui mas isso não quer dizer que tenha deixado de fazer coisas novas.
Estão todas descritas no meu site principal: http://pt.franciscodias.net/


Dá uma vista de olhos!


A partir de agora podes visitar o meu novo blog aqui: http://pt.franciscodias.net/blog

segunda-feira, 3 de janeiro de 2011

Pião




Ver no LMR:
Funções:
  • Ser remotamente controlado, por agora...

Actuadores:
  • 2 Motores de Aparafusadoras
Microcontrolador:
  • Arduino Duemilanove
Fontes de Alimentação:
  • 2 Baterias de Aparafusadoras 12V


Este robot utiliza dois motores de berbequins/ aparufadoras que já tinha comprado há algum tempo para o meu tanque. Como não gostei muito de usar lagartas neste robot decidi usar somente rodas.
Os motores são controlados por um arduino utilizando um controlador de motores que eu desenhei:
Infleizmente fiz cometi um erro no desenho da pcb, e por isso tives de fazer umas correcções. 
 
Os suportes dos motores foram as minhas primeiras experiências com polymorph e até que nem ficaram muito maus.
Vídeo:

quinta-feira, 16 de dezembro de 2010

FireTracker


Bibliotecas Utilizadas:

Descrição:

Esta aplicação utiliza um wiimote para encontrar chamas e segui-las.

Para conectar o wiimote basta clicar nos botões 1 e 2 ao mesmo tempo e esperar que as luzes parem de piscar.

Na imagem vêem-se várias linhas verticais, as brancas representam o centro das chamas, as azuis representam a posição mínima e máxima das linhas brancas para, caso a porta COM já tenha sido definida, que se mande o robot mover-se para a frente, esquerda ou direita.

As linhas azuis podem ser ajustadas utilizando os sliders correspondentes.

Podem ser enviados comandos por serial (w,s,a,d and g) a 4800 baud para a porta COM que se especificar na caixa de texto, basta lá escrever, por exemplo "COM5" e premir a tecla ENTER.

segunda-feira, 6 de dezembro de 2010

Utilizar o Wiimote com processing

Wii Remote ou Wiimote

O wiimote é um controlador muito bom para usar com processing e com robots. Tem vários botões, acelerómetros  e até uma câmara que dá as coordenadas das quatro maiores fontes de radiação infravermelha detectadas.

Existem vários exemplos de aplicações que o usam, sendo que umas das mais populares são do Johnny Chung Lee. Mas existem muitas mais, basta pesquisar por "wiimote" ou "wiimote robot" no youtube ou no google. No LetsMakeRobots existem várias como:
E outras apenas com a câmara:

Mas o que eu quis fazer foi utilizar o comando, sem ter de o modificar para controlar o meu robot TheBox, comunicando com o processing por bluetooth.
O software que tenho instalado no computador é o WIDCOMM bluetooth software que pode ser encontrado aqui.

Para instalar as bibliotecas no porcessing segui este tutorial (em Inglês).
Como tive alguns problemas a colocar as pastas aqui fica um esquema simples:
+ Prossessing
    + libraries
        + Loc
            + library
                - Loc.jar
            + lll
                + Loc
                     - ...
        + wrj4P5
            + library
                - bluecove-2.1.0.jar
                - bluecove-gpl-2.1.0.jar
                - WiiRemoteJ.jar
                - wrj4P5.jar
                - Loc.jar (optional)
            + lll
                + wrj4P5     
                    - ...

Para testar se tudo está a funcionar bem podem se utilizar estas aplicações encontradas aqui:
Se funcionarem bem pode-se passar para o próximo passo, a parte da comunicação serial com o robot.

A aplicação MyFirstWii é muito fácil de adaptar.  
Tudo o que se tem de fazer é importar a biblioteca serial, criar um objecto serial, definir a porta COM e o baud
e adicionar o envio da informação para o robot na zonas onde a informação dos botões é analisada. Aqui fica um exemplo. 
import processing.serial.*;
import lll.wrj4P5.*;
Wrj4P5 wii;
Serial TheBox;
void setup() {
  size(300,300,P3D);
  wii=new Wrj4P5(this);
  wii.connect();
  TheBox = new Serial(this, "COM5", 4800);
void draw() {
  background(0);
  stroke(255);
  translate(300/2,300/2,0);
  lights();
  rotateX((int) (wii.rimokon.senced.x*30+300));
  rotateY((int) (wii.rimokon.senced.y*30+300));
  rotateZ((int) (wii.rimokon.senced.z*30+300));
  box(100,100,100);
}
void buttonPressed(RimokonEvent evt, int rid) {
   if (evt.wasPressed(RimokonEvent.TWO)) println("2");
   if (evt.wasPressed(RimokonEvent.ONE)) println("1");
   if (evt.wasPressed(RimokonEvent.B)) {
     println("B");
     TheBox.write('g'); 
    }
   if (evt.wasPressed(RimokonEvent.A)) println("A");
   if (evt.wasPressed(RimokonEvent.MINUS)) println("Minus");
   if (evt.wasPressed(RimokonEvent.HOME)) println("Home");
   if (evt.wasPressed(RimokonEvent.LEFT)){
     println("Left");
     TheBox.write('a'); 
    }
   if (evt.wasPressed(RimokonEvent.RIGHT)){
     println("Right");
     TheBox.write('d');      
    }
   if (evt.wasPressed(RimokonEvent.DOWN)){
     println("Down");
     TheBox.write('s'); 
    }
   if (evt.wasPressed(RimokonEvent.UP)){
     println("Up");
     TheBox.write('w'); 
    }
   if (evt.wasPressed(RimokonEvent.PLUS)) println("Plus");
}

E aqui pode-se ver o meu robot a funcionar com o código anterior.

quinta-feira, 25 de novembro de 2010

Dual Motor Driver Board


A PLACA TINHA UM PROBLEMA, PORTANTO TIVE DE FAZER-LHE ALGUMAS ALTERAÇÕES:


Objectivo: 
  • Controlar dois motores por PWM
Descrição:
  • Fácil de usar
  • Componentes baratos e fáceis de encontrar
  • Facilmente divisível em duas placas individuais
  • Pode aguentar picos com mais de 19A
Componentes:
  • 4x 4N25
  • 4x IRF540
  • 4x IRF9540
  • 8x LED
  • 4x Resistência 470 Ohm 
  • 4x Resistência 22k Ohm 
  • 8x Resistência 220 Ohm
  • 4x Conector 2 Pinos
  • 8x Dissipador TO-220
  • 4x Socket CI 6 pinos 
Dimensões:
  • 85 mm x 65 mm
Preço:
  • PCB - 6€ na G7 Electrónica.net
  • Componentes - 18,38€ na Sonigate

Links para mais informação:

Wall Avoider






Bibliotecas Utilizadas:
Descrição:
Esta aplicação é muito simples. Foi baseada na primeira versão da ColorTracker mas os comandos são enviados de maneira diferente.
Se se detecta a cor do chão especificada o robot anda para a frente, caso contrário, vira para a direita.



Exemplo de Utilização:

Face Tracker



Bibliotecas Utilizadas:

Descrição:
Esta aplicação encontra caras e segue-as.

Na imagem vêem-se três linhas verticais, a amarela representa o centro da cara, as vermelhas representam a posição mínima e máxima da linha amarela para, caso a porta COM já tenha sido definida, que se mande o robot mover-se para a frente ou para trás dependendo da posição da linha amarela horizontal que representa o seu centro no eixo dos y, em relação à outra linha horizontal vermelha. 

Todas as linhas vermelhas podem ser ajustadas utilizando os sliders correspondentes.

Podem ser enviados comandos por serial (w,s,a,d and g) a 4800 baud para a porta COM que se especificar na caixa de texto, basta lá escrever, por exemplo "COM5" e premir a tecla ENTER.