Manual
do
Maker
.
com
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.
O primeiro passo é configurar um broker MQTT em algum outro hardware. Eu mostrei como configurar um broker nesse artigo:
http://www.manualdomaker.com/article/iot-configurando-um-mqtt-broker/
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:
topic write onionOmega/#
topic read onionOmega/#
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.
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:
#!/bin/sh
while true; do
COMMAND=`mosquitto_sub -h 192.168.1.2 -u dobitaobyte -P KYFSln122\! -t onionOmega/arm/comm -C 1`
python arm.py $COMMAND
echo "$COMMAND"
done
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.
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.
#!/usr/bin/python
import sys
from OmegaExpansion import pwmExp
initOk = pwmExp.driverInit()
isOk = pwmExp.checkInit()
if not isOk:
print "Nao inicializado. Saindo..."
exit(-1)
stat = pwmExp.setupDriver(4,int(sys.argv[1]),0)
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:
Escolhi o tipo "seekBar" como widget. Depois, na tela PUBLISH do aplicativo, meu último widget controla a subida e descida do braço.
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:
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 canal Manual do Maker Brasil no YouTube.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.