Após algumas pesquisas pela internet, resolvi utilizar um chassi circular da Pololu (http://www.pololu.com/catalog/product/250), pois após imprimir o manual desse chassi, percebi que o Program-Me encaixaria perfeitamente nele, inclusive a furação parece até que foi feita para o Program-Me.
O diâmetro do chassi é aproximadamente o mesmo de um DVD deixando o robô bem compacto.
Nesse chassi montei também um kit de engrenagens e motores da TAMIYA (http://www.pololu.com/catalog/product/61) e como terceira roda utilizei um ball caster (http://www.pololu.com/catalog/product/66) também da TAMIYA.
Esse conjunto ficou muito bom e praticamente contempla toda a parte mecânica do robô.
Como os motores que vêm no kit TAMIYA funcionam com no máximo 6 volts e eu queria utilizar alimentação de 12 volts, substituí os dois motores por motores MABUCHI desses utilizados em carrinhos de autorama e o resultado foi muito bom.
Com apenas 30% de duty cycle no PWM já consigo uma velocidade muito boa no robô.
Para sensores de obstáculos utilizei dois sensores infravermelho da SHARP modelo GP2Y0A21YK (http://www.sparkfun.com/commerce/product_info.php?products_id=242) posicionados na parte frontal do robô e com inclinação de aproximadamente 30 graus para cada um dos lados. Dessa forma é possível detectar obstáculos, tanto na parte frontal como nas laterais da direção em que o robô se movimenta, não sendo necessário um servo para movimentar os sensores.
Esses sensores detectam obstáculos entre 10 e 80 cm sendo que conectei eles nos conectores JP6 e JP7 do PROGRAM-ME que estão associados às portas analógicas.
Após ver o post do Vinícius sobre a fita de leds RGB, tive a idéia de colocar uma ao redor do robô, como o chassi é circular imaginei que o acabamento ficaria muito bom e daria um visual interessante (vejam detalhe da fita na foto acima).
Para comandar a fita de leds permitindo várias combinações de cores, utilizei 3 dos 4 transistores existentes no PROGRAM-ME. Como apenas o transistor Q2 é normalmente associado à porta PWM, fiz um remapeamento dos jumpers do PROGRAM-ME de forma que mais 2 transistores ficassem associados às portas PWM (vejam detalhes na figura abaixo e na próxima foto).
Obs: os retângulos coloridos indicam os pontos que foram interconectados em JP8 e JP11.
Notem que além do remapeamento de TR1(transistor Q1) e TR3 (transistor Q3), foi também remapeado o primeiro led vermelho o qual utilizo para indicar um dos modos de operação do robô. Os leds AM3 e VD3 indicam os outros dois modos.
Abaixo temos uma foto que mostra como foi feito o remapeamento das portas utilizando os conjuntos de jumpers JP8 e JP11 do PROGRAM-ME.
A foto a seguir mostra o detalhe da conexão da fita RGB aos transistores do PROGRAM-ME.
Para interface entre o Program-Me e os motores , utilizei um Shield da SparkFun (http://www.sparkfun.com/commerce/product_info.php?products_id=9213) que contém duas pontes H que permitem um controle total de velocidade e direção, independente para cada um dos motores.
Esse shield utiliza as portas digitais 10 a 13 do Program-Me.
Como mencionei acima, o robô possui 3 modos de operação:
1- Autônomo : onde ele se desloca livremente detectando obstáculos e desviando automaticamente.
2- Joystick : onde controlamos seus movimentos através de um joystick .
3- Acelerômetro: os movimentos são controlados ao movimentar o controle remotos nos eixos X e Y.
Abaixo temos a foto do controle remoto que nada mais é que um arduino simples, equipado com um shield onde montei o rádio transmissor, um acelerômetro e um joystick.
Obs: O modo de operação é comutado ao pressionar a alavanca do Joystick
A interface entre o robô e o controle remoto é feita utilizando um rádio ASK de 433MHz que permite taxas de 2400bps a 19200bps (estou utilizando 9600bps).
Para enviar comandos entre o controle remoto acima e o robô, criei um protocolo simples onde cada comando é formado por 5 bytes ( um byte de flag de inicio, 3 bytes que formam o comando e um byte de finalização).
exemplo: {lfy}
onde “{“ é o flag de início, “l” indica que é um comando para o motor esquerdo, “f” indica que ele deverá gira para frente e “y” indica o dutycicle que deverá ser aplicado ao PWM associado a esse motor, sendo que varia de 0 a 100 (caracter ASCII correspondente).
Também implementei o comando para mudança do modo de operação e seu formato é :
{mdx}
onde “md” significa solicitação de mudança de modo de operação e “x” indica um dos 3 modos (autônomo [1], joystick [2] e acelerômetro [3] .
Bem, é isso pessoal, abaixo temos um vídeo do robô em ação (modo autônomo) e algumas fotos mostrando algumas cores obtidas com fita RGB.
Ela muda de cor conforme são detectados os obstáculos ou quando o robô modifica a sua trajetória.
Ache outros vídeos como este em Globalcode Program-ME
[]s
José Luiz Sanchez Lorenzo