Eletrônica digital com Arduino – Nasce um robô!

O robô

Após diversos posts, eis a etapa final do robô. Inicialmente, suas características funcionais:
1 – Numa distância frontal maior ou igual a 15cm, caminha para frente.
2 – Numa distância inferior a 15cm para e procura uma direção a seguir.
3 – Se não encontrar uma direção num ângulo de 160°, posiciona-se à esquerda e dá ré.
4 – Pára, reinicia o processo .

Características físicas:
1 – chassi:
Montado sobre um chassi extendido de um carrinho de R$19,00, cuja foto de seus restos segue abaixo:

A base do chassi foi serrada,

Do brinquedo não utilizei a carcaça, o controle remoto e o circuito.
Cortei o eixo dianteiro para fazer o controle da direção; o brinquedo é tão ordinário que não tem controle de direção e seu deslocamento lateral acontece por força da natureza, conforme as variações de seu eixo ‘bobo’. Após cortar o eixo frontal do chassi, tive que remover a folga. Para tal, simplesmente prendi um parafuso vertical no centro do eixo, cancelando assim suas variações.
Na etapa seguinte, desmontei a composição que havia feito com o sensor ultrasônico que pode ser visto nesse link e prendi o sensor com cola quente no eixo recém modificado. Era possível prendê-lo de uma forma mais segura, mas como é provisório apenas para a apresentação desse projeto, prefiri cola mesmo.
Até aqui o resultado é esse:

Nesse ponto já é possível entender a idéia; a direção de deslocamento estará diretamente definida no momento em que o sensor encontrar uma distância maior ou igual a 15cm. Após isso, deve-se iniciar o deslocamento e retornar o sensor ao alinhamento central.

Na parte traseira do chassi apenas removi o circuito e os fios e refiz a solda nos fios do motor. O suporte de tomada utilizado para prender o sensor ultrasônico no post anterior foi reaproveitado, mas agora como expansão do chassi. Os propósitos disso são simples:
– precisava concentrar o peso distante do servo motor para facilitar seu deslocamento
– precisava encontrar algo que me ajudasse alinhar a altura dos eixos em relação ao chão.

A peça utilizada para fazer o deslocamento do eixo dianteiro (e que será presa ao servo-motor) foi retirada de um HD detonado:

Essa peça é o cursor das agulhas dos discos do HD. Removi as agulhas e encaixei a peça do conjunto do servo-motor que se assimilava ao formato da parte vazada da peça. Por fim, prendi a ponta (que se deslocava para os lados) com um parafuso, garantindo assim sua fixação.

Por sorte, tenho um caixa que é do tamanho exato do Arduino. Por mais sorte ainda, ele tem a altura de um Arduino com um shield e casou perfeitamente com a necessidade. Então, o que fiz foi apenas abrir espaço na lateral da caixa para acesso à porta USB e a entrada de energia. Seguidamente, fiz um pequeno furo no fundo para prendẽ-la sobre um pequeno pino que existe no chassi e fixei com cola quente. Nesse ponto o suporte de tomada já estava também preso sobre o chassi.

A caixa e o chassim antes:

O circuito foi montado sobre uma mini-protoboard presa sobre um protoshield. Uma das coisas mais legais do protoshield é a expansão de 5v e ground, acessível através de dois slots frontais de 5 furos. Isso facilita a distribuição de energia para a protoboard, pois os furos se tornam recurso escasso.

O protoshield:

A mini-protoboard:

A montagem dentro da caixa:

A composição das partes (e quase finalização do robô):

O desenho do circuito:

Bugs
Obviamente existem algumas correções a fazer, mas não quis escondê-las. Ao contrário, prefiro que sejam notadas para entender também como trabalhar os problemas.

O controle de ré ainda não foi concluído, por isso dei alguns ‘tapinhas’ pra ajudar. A velocidade do motor precisa ser reduzida, pois no primeiro teste tive que ficar controlando o robô forçando sua parada em busca de uma direção.
Outro problema encontrado em relação à velocidade foi o tempo de parada; ele não conseguiu parar antes de bater após pegar muita velocidade. Por fim, não está alinhando ao centro após encontrar a direção. Todas essas notas se dão por conta da velocidade. Após esses tunnings disponibilizo a biblioteca com as adaptações necessárias e coloco um novo video mostrando os ajustes.

Eis o video do primeiro teste:

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Deixe uma resposta