BLE Bot 9000: Kit Avançado de Robô Arduino com Bluetooth
Componentes e Materiais
| Arduino 101 | 1 |
| Shield Adafruit Motor/Stepper/Servo para Arduino v2 Kit - v2.3 | 1 |
| Kit Multi-Chassi 4WD SparkFun (Básico) | 1 |
| Suporte para 6 Pilhas AA Adafruit com plug 5.5mm/2.1mm | 1 |
| Suporte para 5 Pilhas AA | 1 |
| Pacote de Componentes | 1 |
| Pilhas AA | 11 |
Ferramentas e Máquinas Necessárias
| Ferro de Solda (genérico) |
| Solda (genérica) |
| Chave Philips (incluída nos kits Sparkfun Bot) |
Aplicativos e Serviços Online
| Arduino IDE |
| Johnny-Five |
| Arduino Firmata |
Sobre o Projeto
Avisos
Atualização 12/5/16 de Drew: Por favor, clique em Problemas Conhecidos à direita e revise-os antes de completar esta construção. Certas variedades do kit têm problemas conhecidos e peças faltando. Tentamos delinear os problemas comuns. Alguns ainda estão sendo resolvidos. As correções serão incorporadas às instruções conforme confirmadas. Relate quaisquer adicionais para mim (@ReanimationXP) no canal #intel do slack.hacksterlive.com. Obrigado!
Não Exploda o Arduino
Tivemos relatos de alguns montando seu bot e deixando o jumper VIN no lugar no Motor Shield. Por favor, reserve um momento para removê-lo antes de começar. Por quê? Veja Alimentando o Arduino e o Shield abaixo.
Introdução
Este projeto demonstra como usar o chip BLE integrado no Arduino 101 para controlar um pequeno robô 4x4 a partir do seu laptop. Ao fazer seu computador assumir o controle do próprio Arduino 101, você abre a possibilidade de incorporar métodos de controle intensivos em processamento, como visão computacional, direção autônoma e loops de feedback avançados (PID).
Hardware
Vamos começar! O que vem com este filhote? A plataforma robótica usada foi o multi-chassi 4x4 da Sparkfun. É bastante durável com estrutura de alumínio e tem muitos pontos de montagem para sensores adicionais.
Passos:
1) O kit requer alguma montagem simples, mas leva tempo. Siga as instruções incluídas no seu kit para montagem, com os seguintes desvios:
- Monte o Arduino 101 em espaçadores (parte do Kit de Componentes separado) na placa superior (tampa) antes de fixar a tampa ao chassi do robô. Se você não tiver os espaçadores, simplesmente isole a parte inferior do 101 de alguma forma e fixe-o na tampa.

2) O shield de motor Adafruit v2.3 também requer alguma montagem, e por isso queremos dizer soldagem. Pinos header precisarão ser soldados. Se você recebeu os headers fêmeas com seu kit de componentes (como os do A101), use estes e descarte os normais machos. Caso contrário, use a variedade macho incluída com o motor shield. Você pode encontrar instruções detalhadas para soldar ambos os tipos aqui (role para a seção apropriada para tipo de header macho/fêmea): https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/install-headers.
Se você nunca soldou antes, pode querer praticar em algo que não se importe de queimar, pois os headers podem ser um pouco difíceis de soldar no lugar. Pedir a alguém que já soldou muito para observá-lo será a maneira mais rápida de aprender. Comece cada header soldando um pino na borda, puxando firmemente os headers para que fiquem nivelados com a placa e perfeitamente retos. Você pode usar esta técnica para alinhar as coisas antes de soldar todos os pinos, o que travará o header no lugar praticamente permanentemente.
Faça o header fêmea de grade 6 pinos próximo ao logotipo Bluetooth por último. Parece com isto: [: : :] Encaixe o lado plástico no Arduino 101 para que fique totalmente nivelado, monte seu motor shield agora totalmente soldado por cima, permitindo que o lado macho do header de grade 6 pinos atravesse-o. Pressione o motor shield para que fique totalmente inserido no 101, então solde o lado macho do header de grade 6 pinos.
3) Anexe o motor shield montado no topo do Arduino 101 usando os headers que você soldou.
4) Use os fios jumper (macho-macho) para conectar os motores aos blocos de terminais de saída do motor shield conforme mostrado abaixo. Certifique-se de combinar os pares corretos de condutores negativo e positivo e siga o diagrama de fiação abaixo. Nota: Os fios amarelos são positivos no diagrama, e vermelhos nos motores reais. Fios verdes são negativos no diagrama, pretos nos motores reais.
5) Verifique se o jumper VIN NÃO está conectado antes de continuar. Use um par de fios jumper para conectar o suporte de 5 pilhas AA incluído no kit do robô ao bloco de terminais de entrada de tensão no motor shield, observando a orientação positivo (vermelho) e terra (preto) conforme mostrado no diagrama abaixo.
Nota: O suporte de 2x AA na imagem abaixo NÃO É PRECISO para a vida real e você não terá um no seu kit – por favor, use o suporte de 5x AA incluído no kit do robô. Alguns kits também não contêm 4 motores. Neste caso, simplesmente conecte os motores adequados a M1 e M2 como mostrado no lado direito da placa e os dois motores superiores.

6) Solde o conector barril aos fios que saem do segundo suporte de pilhas. Certifique-se de soldar o condutor positivo vermelho à conexão central (mais curta) no conector barril.
Nota: O suporte de 6x AA e seu plug barril abaixo não foram incluídos no primeiro envio dos kits de embaixadores. Suplementaremos este envio com um suporte AA adicional e possivelmente componentes adicionais em breve. Termine de construir o bot e pule para Visão Geral do Software por enquanto.

7) Anexe o suporte de 6x AA na traseira do robô com a tira de velcro:

Conecte o plug barril ao Arduino 101 para ligá-lo. Verifique mais uma vez se o jumper VIN não está conectado.
O robô agora deve estar totalmente construído! Certifique-se de que ambos os bancos de baterias estejam desconectados para que não drenem energia.
Visão Geral do Software
O sistema de controle do robô consiste em duas peças principais de software. A primeira é o sketch do servidor Firmata que é carregado no Arduino 101. O Firmata permite que seu computador acesse os pinos no Arduino – e, por extensão, comunique-se com o motor shield que controla os motores em si. O Firmata também permite comunicação bidirecional para que, no futuro, se você anexar um sensor ao seu robô, poderá enviar os dados do sensor de volta ao seu computador.
A segunda peça de software é o cliente Firmata que roda no seu computador. Existem muitos clientes Firmata diferentes para uma variedade de linguagens, mas neste projeto usaremos o cliente Firmata que é integrado ao Johnny-Five. Johnny-Five é uma plataforma de robótica e IoT para Arduino construída sobre Node.js. Mais informações podem ser encontradas aqui: https://johnny-five.io/. Johnny-Five tem muitas bibliotecas úteis, incluindo Firmata e configurações para o Adafruit Motor Shield que estamos usando.
Para que o cliente e servidor Firmata se conectem, estamos usando o ble-serial, uma biblioteca node.js escrita para abrir uma conexão serial sobre BLE para o Arduino 101. https://github.com/monteslu/ble-serial
Finalmente, para ler comandos de teclado, usaremos o keypress, uma biblioteca node.js para ler pressionamentos de tecla. https://github.com/TooTallNate/keypress
Carregar Sketch no Arduino
1) Para carregar o sketch do servidor Firmata no Arduino 101, você primeiro terá que baixar e instalar a Arduino IDE: https://www.arduino.cc/en/Main/Software
2) Uma vez instalada a IDE base, você terá que instalar a placa Arduino 101. O seguinte tutorial cobre a instalação da placa, bem como programação básica, se você não está familiarizado com Arduino, este é um bom lugar para começar: https://www.arduino.cc/en/Guide/Arduino101. A versão curta é que você precisa instalar o pacote "Intel Curie Boards" via Gerenciador de Placas na IDE. Uma vez feito isso, Arduino/Genuino 101 aparecerá no submenu Placa.
3) Conecte o Arduino 101 ao seu computador via cabo USB.
4) Na Arduino IDE vá em Tools > Board e selecione Arduino/Genuino 101. Não vê? Volte ao passo 2.
5) Vá em Tools > Port e certifique-se de ter a porta correta para sua placa selecionada. Se não tem certeza de qual porta usar, desconecte o Arduino e veja qual porta desaparece da lista.
6) Instale o pacote AdaFruit Motor Shield v2. Vá em Sketch > Include Library > Manage Libraries, e procure por "AdaFruit Motor Shield v2". Selecione e clique no botão Install.

6a) Se você quiser testar seu bot, carregue o seguinte arquivo .ino para testar seus motores. Por padrão, este arquivo fará seu bot ir Frente, Trás, Virar Esquerda, depois Virar Direita repetidamente. https://github.com/ReanimationXP/a101_motortest.
NOTA! Prepare-se para as rodas se moverem!
Se você carregar o programa a101_motortest no bot, as rodas começarão a se mover assim que o sketch começar a executar. Se quiser parar as rodas, pode puxar o cabo USB (desligando a energia do Arduino) ou puxar uma das baterias.
7) Na Arduino IDE vá em File > Examples > Firmata > StandardFirmataBLE para carregar o sketch do servidor Firmata BLE. Carregue o sketch no Arduino 101 clicando na seta de upload no canto superior esquerdo do editor.
Se o sketch for carregado com sucesso, a última mensagem na saída deve ser "Sketch starting in 5 seconds."
Instalar Python 2.7.13
1) Você precisará do Python 2.7.13 para instalar e compilar o pacote Node.js bluetooth-hci-socket.
2) Vá para https://www.python.org/downloads/. Baixe o Python 2.7.13 e instale-o.
Carregar Cliente Firmata
1) O cliente Firmata rodará no Node.js, se você não o tem instalado, vá ao seguinte link e siga as instruções de instalação: https://nodejs.org/en/
2) Uma vez instalado o Node.js, crie uma nova pasta para conter seu código de controle.
3) Abra um prompt de comando Node.js e navegue até sua pasta de projeto. Se você for instalar as ferramentas do Windows no próximo passo, execute o prompt de comando no modo Administrador.
4) Se você estiver usando Windows 10, tem que instalar as ferramentas do Windows. Faça isso usando o seguinte comando:
npm install --global --production windows-build-tools
5) Instale os seguintes módulos NPM:
npm install johnny-five
npm install keypress
npm install ble-serial
npm install bluetooth-hci-socket
6) Baixe o código de controle no GitHub (https://github.com/martinkronberg/Firmata-BLE-Bot) e certifique-se de que control.js está na sua pasta de projeto. Você pode clonar o repo se quiser, mas as chances de atualizações são bastante pequenas...
Executar o Código
Estamos agora prontos para começar a pilotar o robô! Certifique-se de que ambos os bancos de baterias estão conectados e, a partir da sua pasta de projeto, execute:
node control.js
Se tudo funcionar, você receberá uma mensagem semelhante a:
1476382259569 Connected [object Object]
Agora, quando você pressionar "w", o robô avançará, "s" para ré, "a" e "d" virarão o robô para esquerda e direita.
Você pode receber uma mensagem como "No compatible USB Bluetooth 4.0 device found". Certifique-se de que seu computador suporta Bluetooth e que o Bluetooth está habilitado.
Note que você pode verificar o Gerenciador de Dispositivos no Windows para ver se seu PC suporta Bluetooth. Procure uma subárvore chamada "Bluetooth Radios".
Versão Blynk
Se Node e Firmata não estiverem funcionando bem para você, pode usar a biblioteca Blynk.cc. É fácil de usar, multiplataforma, tem interfaces para dispositivos móveis.
1. Baixe a biblioteca Blynk.cc e instale-a no Arduino. Isso pode ser feito via Gerenciador de Bibliotecas do Arduino. Versão 0.4.7 no momento da escrita.
2. Baixe e carregue o seguinte sketch no seu Arduino 101:
https://github.com/ReanimationXP/a101_blynk_base
3. Baixe o app Blynk. Crie a seguinte interface dentro do app:
Problemas Conhecidos
Peças Faltando: Suporte de 6x AA e seu Jack Barril, Kit Tanque tem apenas 2x motores, não 4x.
Problemas de Energia com Kit Tanque: Parece que o kit tanque Sparkfun tem uma falha – o suporte de bateria incluído não é potente o suficiente para impulsionar as esteiras do tanque. Soluções são remover as esteiras, substituir o suporte de 5x AA por uma bateria lipo 2S (7.4v) com mAh significativo (750mah por exemplo), e/ou alimentar o 101 com um dos seus power banks USB Intel.
Além disso, se o suporte de bateria que vem com o chassi Sparkfun não parece funcionar, as pilhas podem não estar assentadas corretamente. Puxe-as para trás enquanto empurra para baixo e você sentirá elas encaixarem no lugar.
Problemas Bluetooth/BLE: O suporte BLE tem requisitos mínimos. Um computador deve suportar Bluetooth 4.0 ou superior, com Windows 8.1 ou superior, para garantir suporte a BLE, a variedade de baixa energia do Bluetooth. Alguns computadores ainda podem ter problemas dependendo de stack de drivers e diferenças de hardware. A maioria dos smartphones é mais compatível com BLE. Estamos investigando o uso da plataforma Blynk para controlar o 101, que agora inclui suporte BLE. Detalhes serão postados aqui quando disponíveis.
Também nos disseram que a porção BLE do Arduino 101 é muito instável se não alimentada corretamente. Certifique-se de conectar energia adequada ao Arduino 101. Sugiro uma fonte USB 5v forte, 2 amperes ou mais, para descartar problemas de brownout.
Compatibilidade de Parafusos com Arduino 101: Parafusos do kit de componentes têm cabeças grandes demais para caber no 101. Correção é trocar alguns parafusos prateados do kit do robô no lugar deles, e vice-versa se possível. Também pode usar quadrados de velcro, então a placa fica firmemente fixada e isolada, mas facilmente removível.

Bibliotecas: Você precisa atualizar a biblioteca Firmata para pelo menos 2.5.3 (versões abaixo de 2.5.3 não incluem sketch Firmata BLE)
Links Curtos para Workshops
Aqui estão alguns recursos para facilitar sua vida durante um meetup. Os dois últimos links requerem instalação da biblioteca Adafruit Motor Shield v2.
- Este tutorial BLE Bot 9000: https://bit.ly/blebot1
- Script de teste de motor DC de Pete Hoffswell: https://bit.ly/blebot2
- Robótica controlada por telefone com Blynk: https://bit.ly/blebot3
Código
Controles Touchscreen
Controle seu 'bot a partir de uma touchscreen, usando um servidor Express! (Para hacksters mais avançados.)
https://github.com/monofuel/blebot9000
Código de Controle do Robô
GitHub com código para rodar o robô
https://github.com/martinkronberg/Firmata-BLE-Bot
Esquemáticos
PDF para montagem do chassi
Processo de manufatura
- Kit Avançado de Glicômetro: Design, História e Futuro do Monitoramento de Glicose
- A História, Design e Futuro dos Kits de Modelismo: Das Origens Antigas à Fabricação Moderna
- Plataforma Open-Source iCOMOX Impulsiona Manutenção Preditiva na Indústria 4.0
- Mini-Circuits e Vayyar Lançam VTRIG-74: Kit de Desenvolvimento de Imageamento 4D por Ondas Milimétricas
- Kit de Desenvolvimento RSL10 Mesh Capacita Redes BLE Ultra-Baixo Consumo
- Guia de Configuração do Kit Inicial Raspberry Pi 3 – Montagem, SO e Acesso Remoto
- Kit Inicial Hologram Nova: Guia Completo de Configuração do Raspberry Pi e Integração de Sensores
- Construa Seu Próprio Robô Raspberry Pi com Kit MonkMakes RRB2 – Guia Detalhado
- Intellisaurus – Construa um Robô Dinossauro Andante Inteligente
- 8 Insights Essenciais Sobre ISO 9000 para Sucesso na Gestão da Qualidade