Braço robótico com Onion Omega e MQTT

arm Fulltronic
arm Fulltronic

Braço robótico Fulltronic controlado pela MIPS Onion Omega

Nos dois posts anteriores relacionados ao Onion Omega discorri sobre as formas de desenvolvimento nessa plataforma. Em outro artigo também mostrei como controlar o servo motor por linha de comando nessa board e dessa vez vou mostrar como controlar o braço robótico através de programação, mas de maneira breve, porque não quero me extender nesse artigo com código (entenda-se “preguiça de pensar”).

Já nessa primeira imagem você vê meu teste, onde fiz subir o braço robótico. Esse braço robótico é vendido pelo parceiro Fulltronic e você encontra o braço robótico nesse link. Ele vende também os servos e o kit completo, dê uma olhada nos produtos, vale a pena.

A controladora nao poderia ser nada menos do que a Onion Omega, da qual já tenho escrito vários artigos mostrando suas deliciosas funcionalidades. Em sua versão 2 recém-lançada, você compra a board por 5 dolares, mas recomendo que não deixe de adquirir a dock também para facilitar as coisas e proteger sua Onion Omega.

Configurando o tópico no MQTT Broker

O primeiro passo é configurar um broker MQTT em algum outro hardware. Eu mostrei como configurar um broker nesse artigo:

Para esse artigo, simplesmente criei um novo tópico e reiniciei meu broker. O tópico foi criado na acl /etc/mosquitto/bb.acl com leitura e escrita:

Python e shell script no Onion Omega

E para fazer o app no Onion Omega, utilizei shell script e Python. Dá pra fazer de um monte de maneiras e provavelmente a maioria (senão todas) sairão melhor do que esse exemplo, mas garanto que nada deve ser mais rápido de codificar.

arm.sh





No arquivo shell, fiz uma variável pra guardar o valor de leitura do MQTT, utilizando o client para subescrever-me a um tópico. Utilizei o parâmetro ‘-C 1’ para que o programa saia logo após receber o primeiro comando. Após o loop, o programa é executado novamente.

Os repositórios padrão da Onion Omega não me deram uma opção de baixar o python-paho, portanto optei por fazer o shell executando o client de linha de comando MQTT e o python apenas para controlar o braço robótico. O script shell ficou assim:

Está simples, mas não está eficiente. Desse modo consigo controlar apenas 1 motor do braço robótico, mas não me ative a solucionar essa problemática porque eu só queria provar o conceito.

arm.py

Aqui está o pior código python da minha vida. Simplesmente “cuspi” a lógica para manipular um servo, mas estou satisfeito por poder mostrar o funcionamento. Maiores detalhes sobre o controle dos servos podem ser vistos nesse outro artigo que escrevi sobre a expansão de servos do Onion Omega. No site você encontra também diversos tutoriais sobre MQTT, é só procurar ali  na lupa. Nesse último artigo referenciado também explico como instalar python na Onion Omega.

Aplicativo para o celular





Eu utilizei aqui o MQTT Dashboard, ele é realmente espetacular e recomendo fortemente sua utilização. Você precisará ter um broker configurado, coisa que você poderá fazer facilmente seguindo meu tutorial supracitado. Depois, você deverá entrar com usuário, senha e endereço do broker para se conectar ao broker através do MQTT Dashboard. Por fim, deverá criar um tópico assim:

criar tópico
criar tópico

Escolhi o tipo “seekBar” como widget. Depois, na tela PUBLISH do aplicativo, meu último widget controla a subida e descida do braço.

PUBLISH
PUBLISH

Não repare os demais widgets, eles são do controle de outras coisas do meu apartamento.

Tendo os dois arquivos (arm.sh e arm.py) no Onion Omega, basta executar o arm.sh:

shell da Onion Omega
shell da Onion Omega

As mensagens de iniciaização são porque eu estou iniciando o driver pwm a cada loop, mas como é somente para teste, não há problemas. Gostou? Segue ai!

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!

 

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.