Neste projeto que envolve elétrica, automação, eletrônica, mecânica e programação, apresento a vocês como construí um braço robótico que anda sobre trilhos, como programa-lo e dou dicas para quem quiser construir o seu em casa!
| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. Mais detalhes clicando aqui.
Introdução
Já me adianto que o projeto do braço robótico tem um caráter didático, simplista e mostra que não é impossível efetuar a construção de um braço robótico em casa. Conhecimento é a chave do sucesso aqui e a meu ver, conforme verão ao longo da publicação, você precisará de noções de diversos conteúdos, especialmente a programação.
Portanto deixo claro: Eu não vou ensiná-los detalhes de elétrica, por exemplo, isso eu gostaria que já possuíssem; Se não possuírem, estudem um material introdutório no assunto.
Obviamente um braço robótico é um projeto multidisciplinar, pois fará uso de noções de elétrica, mecânica, eletrônica, automação e programação. Apresentarei o básico sobre todos os conteúdos necessários e dicas de como tirar o melhor proveito de tudo! E claro, com muitas imagens de como construí meu projeto para inspirá-los com o de vocês.
Enfatizo novamente que alguns aspectos eu não dei detalhes, porque fazem parte de uma base de conhecimento básico nas supracitadas matérias. Portanto se por exemplo, você for um programador e não sabe nada de elétrica, pesquise um material introdutório do assunto, foque em material técnico e prático. Idem para eletrônica, automação e etc. Precisaremos de conhecimento em todas essas áreas e se eu explicar em detalhes cada uma aqui, essa publicação ficará cansativa e longa demais.
Agradeço de antemão pela compreensão e vamos á luta!
Materiais
Para confeccionar tal projeto vamos precisar de, com seus respectivos links para aquisição, atentos que, NÃO COMPREM NADA, leiam a publicação toda primeiro, depois vão ás compras!
- 1 Raspberry Pi 3
Vamos utilizar o Raspbian, assim como Python 3 como linguagem de programação. - Case de Raspberry Pi 3
Uma case simples de acrílico pra placa não ficar exposta - 1 Motor de Passo
Mais abaixo explico a respeito dele. - 1 Placa Controladora para Motor de Passo
- 1 Placa Controladora para Servos
- 1 Protoboard Mediana
- 1 Ferrorama
- 1 Braço Robótico semi-pronto
Apenas a estrutura em acrílico e os servos vem prontos. Você deve fazer sua montagem. - Acessórios, como cola quente, cola super bonder, tesoura, fita adesiva dupla face, fita isolante…
- 1 Fonte de 5v e 2.1A para Raspberry Pi
- 1 Fonte de 5v e 2A para Motor de Passo e Servo
- 1 Módulo Relé
- Jumpers diversos para Arduino/Raspberry Pi (Macho/Femea)
- Base de madeira ou acrílico plano de aprox. 50 cm x 25 cm
- Peças diversas, como cubos de madeira com dimensões de uns 5 x 5 x 5 cm, peças de LEGO®, coisas que podem ser usadas para uma “maquete” rudimentar, pra compor a estrutura de onde o braço vai ficar.
- Suporte
Servirá para comodar o Raspberry Pi confortavelmente.
OBS: Se encontrar kits prontos de cada item, melhor! Por exemplo, Raspberry Pi 3 + Case + Cabo + SDCard, etc. Aqui fiz uma recomendação superficial para servir de norte a quem estiver um pouco perdido.
Construção
Estrutura
A ordem de montagem fica a seu critério, conforme os materiais que tiver á mão: Não vai nem precisa ficar identico ao meu. Comece pelo simples, como prender o raspberry na base de madeira, os trilhos com o braço em cima e aos poucos você monta o restante ao redor.
A base do projeto é feita em uma placa de madeira de dimensões de aprox. 50 cm x 25 cm. As peças foram presas na placa e umas ás outras com fita dupla face 3M® e em alguns pontos com cola super bonder.
Especificamente neste projeto, o motor de passo foi fixado com resina, porque o tracionamento da correia dentada causava seu deslocamento quando preso com fita, enquanto que a cola super bonder fica quebradiça.
Os cubos de madeira eram de um brinquedo antigo. As plaquinhas de acrilico formando a espécie de vitrine protetora foram numa gráfica aqui perto de casa.
Os trilhos ficam espaçados pois o fio de alimentação do braço chegará entre eles, no meio.
Noções de Mecânica: Motor de Passo
O motor de passo pode ser qualquer um de sua escolha. Na duvida, pode usar do mesmo tipo que usei: Se for pegar um de algum site, como este, lembre-se que precisaremos de uma engrenagem na ponta do rotor! Essa engrenagem deve ter o mesmo espaçamento de dentes que a correia dentada que você pegou na impressora.
- Espere, não posso usar o conjuntor motor de passo + correia dentada + engrenagens de uma impressora?
Sim, pode e deve! Se encontrar o kit, melhor. Só quis me “adiantar”, porque algumas impressoras mais “baratas” usam motores comuns com controle analógico, e esses não servem para nosso propósito. Você pode achar a correia dentada em qualquer impressora com facilidade mas o motor de passo, não são todas que possuem.
Então, atento: Os dentes devem coincidir com a correia dentada que você encontrou na impressora. Use uma régua pra ajudar a ver o espaçamento dos dentes se vão coincidir com a engrenagem.
Outra opção é comprar um kit desses no AliExpress, mas aí não tenho recomendações: Fica por sua conta e risco.
Noções de Mecânica: Braço
O braço robótico eu peguei pronto: Peças acrílicas e servos, mas ele vem desmontado então a montagem ficará por sua conta. – O que peguei é o mesmo modelo deste. É simples, “barato” e o melhor no custo-benefício para quem está começando.
A dica que dou aqui, é ficar atento a atritos durante a montagem, então mova cada parte móvel com as mãos para certificar que não há trechos agarrando ou apertados demais. Também fique atento á posição Zero do servo nas partes móveis, será importante para a mobilidade e na programação posterior.
A base desse braço permite que ele seja rotativo. Eu particularmente removi o servo da base e deixei ele de reserva, colando a base fixamente, pra remover a rotatividade e adicionando a esteira.
Não me motivou a ideia de ter ambos, porque na esteira eu coloquei 2 bases, uma de “coleta” e uma de “entrega”:
Contornado de vermelho a base de coleta e em amarelo a base de entrega.
Se você quiser que o braço tenha rotatividade, tenha muito cuidado com o giro pra não causar danos ás bases (caso queira tê-las no seu projeto) e/ou danos aos outros componentes. Era desinteressante para o objetivo geral desse projeto. Claro, você pode fazer da maneira que quiser, adapte-o conforme você achar melhor.
Noções de Mecânica: Trilhos
Esses trilhos foram o exemplo de gambiarra bem feita. Primeiro comprei um kit de ferrorama bem baratinho como este aqui. Desmonte os vagões e pegue apenas os trilhos e os chassis com as rodinhas. Colando eles na base do braço você terá algo assim:
Alinhando os trilhos na base de madeira, prendi eles com fita dupla face.
Noções de Elétrica
Precisaremos de 2 alimentações distintas para manter o projeto todo funcional. O Raspberry Pi 3 sozinho consome 5v e 2.1A, então nem pense em usar 1 mesma fonte para tudo. Primeiro porque ela teria que ser grande e cara – Tipo 5v e 5A, será um absurdo. – E segundo, porque qualquer oscilação na energia pode desligar e corromper o sistema do Raspberry Pi.
Ok, uma fonte como essa aguenta tudo, porém é muito cara. Não vou explicar em minúcias como fazer a ligação nesse caso, apenas tenha uma noção básica de elétrica, quais são os fios positivos e negativos e faça a ligação em paralelo. Isso de forma resumida é suficiente.
O ideal aqui é uma fonte de 5v e 2.1A como esta para o Raspberry Pi; E uma fonte de 5v e 2A como esta para os servos e para o motor de passo. Não esqueça do pino fêmea do conector da fonte dos servos. Como a esteira e o braço não podem funcionar ao mesmo tempo, porque o motor de passo consome uma corrente muito alta e causa interferência na frequência de acionamento dos servos, usaremos um relé para coordenar essa alimentação automaticamente e de forma alternada. Trataremos disso no próximo tópico.
Noções de Eletrônica
A grande sacada pra alimentar o motor de passo e os servos com a mesma fonte sem causar conflito de tensão foi fazer uso de um relé para alternar. Normalmente Fechado (NF) o relé vai passar energia para os servos. Porém uma vez acionado via GPIO do Raspberry Pi, o pino Normalmente Aberto (NA) será fechado, desligando os servos e alimentando o motor de passo. O esquema elétrico pode ser visto da seguinte forma:
O código para acionar o relé trarei mais abaixo na publicação. Ele acionará sempre que você fizer uso do motor de passo, desativando quando concluir o translado da esteira.
Noções de Automação
Antes de partimos para a programação, precisamos preparar o Raspberry Pi para ativar os pinos GPIO e como comunicá-los com os módulos de controle do motor de passo e módulo de controle dos servos, e para isso faremos o uso dos jumpers.
E antes de tudo, peço gentilmente que estude sobre a pinagem do Raspberry Pi, pois vou citar os pinos e uma noção básica de como funcionam é fundamental.
Os servos vão nos conectores da placa, respeitando aonde é V+, GND e CTRL. Aqui é só plugar.
Da placa para o RPi é comunicada via interface I2C. Habilite a interface i2c em seu Raspberry, se for Raspbian, com o comando “sudo raspi-config”. Reinicie o RPi.
Quando voltar do reinicio, tenha em mente que o Pino 2 é o SDA e o Pino 3 é o SCL (mapeamento BCM).
Conecte-os com os jumpers na placa de controle dos servos.
Note que a fiação que alimenta os servos, é um jumper que parte da base do Raspberry e segue colado na tábua de madeira, por baixo do braço robótico, saindo do outro lado. Ele passa entre os trilhos, por baixo de tudo. Há uma folga na fiação, portanto o deslocamento do braço não prejudica os fios e nem vice-versa.
Fios que alimentam o braço robótico passam por baixo do mesmo. Quando próximo do Raspberry ele forma um arco, ele “sobra” em um lado. Dessa forma não há dobras nem risco de mal contato.
Já a placa de controle do motor de passo é mais enjoada e explico o porquê: Você precisa achar a sequência do motor, conecta-lo em sequência na placa de controle e dela em sequência no Raspberry Pi. Se você errar essa sequência, o motor de passo vai dar passos em falso e não vai girar.
Por fim, o rele!
Este, recebe no pino Comum o VCC que chega da tomada; enquanto que o Normalmente Aberto vai para o motor de passo e o Normalmente Fechado vai parar os Servos. Escolhi o Pino 26 para controlá-lo, você use o que achar melhor.
Programação
Aqui entra a parte que os coders de plantão vão gostar: O projeto será escrito em Python 3.
O coração do projeto reside aqui, pois depois de tudo devidamente montado, é hora de fazer esse monte de plástico, fios, cabos e peças se moverem conforme sua vontade, vamos dar vida a esse braço!
Deslocamento do Motor de Passo
Primeiro testei o deslocamento do Motor de Passo. O código base dele é o seguinte, para ele se deslocar de um extremo a outro:
import RPi.GPIO as GPIO import time pin = 0 GPIO.setmode(GPIO.BCM) GPIO.setup(26,GPIO.OUT) # Rele dos Servos control_pins = [27,4,22,17] for pin in control_pins: #GPIO.setup(pin, GPIO.OUT) #GPIO.output(pin, 0) halfstep_seq = [ #[1,0,0,0], #[1,1,0,0], #[0,1,0,0], #[0,1,1,0], #[0,0,1,0], #[0,0,1,1], #[0,0,0,1], #[1,0,0,1] ] try: #for i in range(370): ##for halfstep in range(8): ###for pin in range(4): ####GPIO.output(control_pins[pin], halfstep_seq[halfstep][pin]) ###time.sleep(0.001) except KeyboardInterrupt: ##GPIO.cleanup()
OBS: Aonde tem # você dá 1 espaço e identa. ## você dá 2 espaços, assim por diante. Para ela voltar, você repete o código, invertendo aonde está em negrito: control_pins = [27,4,22,17]
Ou seja, ficará 17, 22, 4 e 27 porque escolhi esses pinos. Lembre-se de alterar esses valores se você mudou os pinos para algum de sua escolha!
OBS2: GPIO.setup(26,GPIO.OUT) # Rele dos Servos
Essa linha ativará o Relé, dando energia para os servos. Se os Servos não funcionarem, verifique se o relé está apropriadamente energizado e acionando. Cuidado com curto-circuitos!
Note que usamos uma matriz pra combinar os passos que ele dá ao se mover!
Quando clico em executar, eis o resultado:
Deslocamento dos Servos
Os servos são um código á parte. Seu funcionamento é menos direto, envolvendo achar a frequência correta pra eles operarem. Essa parte é realmente lenta e chatinha, porque na tentativa e erro você vai encontrar as posições Zero e os angulos dos servos que farão o braço se mover. Se alinhou a posição do servo com o braço manualmente corretamente, este código deve bastar. Se estiver inapropriado, use-o de base.
Quando clico em executar, eis o resultado aproximado:
Resultados
Muito bem!
Agora que temos uma esteira funcional e os servos programados, é hora de pacientemente alinhar tudo e colocar tudo para funcionar de forma sincronizada.
Você pode apenas fechar os códigos acima em Def’s dentro de um código Python de sua preferência; Ou deixe-os separados em arquivos, sendo chamados somente quando necessário. Aqui eu separei um que ativa os servos e 2 que vão fazer o motor de passo ir e voltar, total 3 arquivos de comandos. “Coisa simples”.
Quando clico em executar, eis o resultado:
PS: Sim, ali no finalzinho eu tive que dar uma ajudinha com a mão porque o servo não teve força pra levantar a peça, infelizmente. Com objetos mais leves funciona um pouco melhor.
Conclusão
Fazer um braço robótico desses funcionar tem seus desafios, desde a confecção dos materiais até programar o movimento das peças.
Mas o projeto tem suas recompensas e pode ser usado em outros projetos terceiros. Imagine a situação, colocar esse braço sobre um carrinho de controle remoto ou então criar um humanoide com 2 braços desse + 2 pernas + cabeça… Imagine o desafio visto pelo pessoal da NASA ao controlar uma sonda marciana com braço semelhante, quando cada comando que você der demora pelo menos 8 minutos pra chegar ao destino e 8 minutos para o feedback.
Seja qual for sua ideia, espero que o projeto lhe sirva de inspiração para quando for construir algum projeto pessoal, hobbysta ou mesmo TCC!
#UrbanCompassPony
Autodidata, me aprofundei em sistemas operacionais baseados em UNIX®, principalmente Linux. Também procuro trazer assuntos correlacionados direta ou indiretamente, como automação, robótica e embarcados.
Legal, vou tentar fazer pra um projeto de motores