Atualmente, os smartphones geralmente vêm com um giroscópio, acelerômetro, bússola, câmera e sensor de GPS a bordo. Eles também costumam ter uma conexão com a Internet com Wifi e redes de dados móveis. Já vi muitos casos de uso de um telefone como controle remoto para um robô, mas para mim parece que o telefone em si é uma plataforma perfeita de computação e detecção leve para um robô autônomo.
O principal obstáculo que vejo é a interface com os atuadores. Ser capaz de controlar motores para dirigir até mesmo um robô de mesa, ou controlar servos, por exemplo. Conectar e se comunicar com um microcontrolador também pode ser um obstáculo.
Como um hobby de robôs, gostaria de saber como posso superar esses e outros obstáculos para aproveitar o poder do meu telefone inteligente com meus projetos de robótica.
Respostas:
O Kit de desenvolvimento de acessórios do Android (ADK) deve fazer tudo o que você precisa.
É uma placa Arduino projetada especificamente para interagir com o Android. Você pode conectar os dois por Bluetooth ou USB (ou WiFi / Ethernet, eu acho).
Como toda a arquitetura é aberta, você pode usar cada parte para o que é melhor. Você escreve o código do Android para obter dados dos sensores integrados do telefone e controlar a tela. E você escreve o código do Arduino para controlar atuadores, servo e outros sensores que o telefone não vem. O código para se comunicar entre os dois é fornecido de código aberto via Google.
No Blog do Arduino :
A maioria dos exemplos é criada usando o telefone como uma interface gráfica para algum tipo de acessório de hardware, como um relógio. Mas não há motivo para que você também não tenha acesso aos sensores do telefone e repasse dados.
Adafruit até menciona usá-lo para criar robôs na página de sua loja para o ADK:
(ênfase minha)
fonte
Outra opção é a placa IOIO-OTG :
A descrição do produto Sparkfun descreve sua funcionalidade:
Este quadro deve fazer tudo o que você deseja e ainda possui um bom tutorial para ajudá-lo a começar.
fonte
O principal problema, na minha opinião, não é realmente a interface com os atuadores - se você tem uma boa maneira de transferir sem fio sinais digitais (melhor ainda seria analógico ou um canal bom o suficiente para fazer PWM), você pode simplesmente fazer a interface um chip de driver de motor (por exemplo, L293D) e pronto. Para servos, você precisa de um bom tempo de resposta para poder lidar com os pulsos. Se você possui um canal compatível com PWM, isso não deve ser difícil, pois o canal já possui uma alta taxa de transmissão. Se você possui um canal lento, os servos podem não ser possíveis, pois é necessário um tempo de pulso preciso.
A primeira opção que vejo (embora seja bastante volumosa) é pegar um Raspberry Pi, conectá-lo via Ethernet a um roteador sem fio e conectar o telefone ao mesmo sem fio. Agora, basta escrever um aplicativo básico para o seu telefone que envie solicitações ao Pi com base na entrada e escreva outro servidor como o aplicativo para o Pi que lida com eles. Pode ser volumoso e um pouco difícil, mas é bastante extensível, IMO. Você também pode colocar o roteador fora de bordo e colá- lo no Pi (ou usar o ponto de acesso e eliminar completamente o roteador).
Outra opção é usar um controlador bluetooth como o mostrado aqui . Eu não usei isso antes, mas parece que você ainda precisará de um microcontrolador para lidar com isso. Eu acho que você pode conectar seus pinos RX / TX diretamente ao TX / RX em um arduino, embora eu não tenha muita certeza disso.
Se você já usou o XBee / ZigBee antes, pode experimentar a abelha bluetooth .
Uma opção final é usar a porta USB do telefone com uma configuração de controle sem fio convencional (XBee / qualquer que seja) - mas isso exigirá a gravação de drivers e tudo.
fonte
Sim, a falta de pinos GPIO em smartphones é uma pena. Se você já possui o ROS em execução no robô, pode usar este aplicativo em um telefone Android para obter acesso ao conjunto de sensores no telefone.
fonte
Muitos dispositivos Android recentes, como o Nexus 7, suportam USB On The Go (OTG), uma maneira elegante de dizer que o 'USB Host Mode' é suportado. Nesses casos, com o cabo certo que pode ser adquirido por menos de US $ 1, qualquer dispositivo USB compatível pode ser usado. Você não precisa de uma versão especial do Arduino que possua hardware para o modo host USB.
Eu experimentei isso o suficiente para saber que um Arduino 'normal', como o Leonardo ou o Teensy 2, aparece no telefone Android como um dispositivo TTY (por exemplo, porta serial) quando conectado a um cabo OTG.
Este artigo detalha como usar a API do host USB do Android para se comunicar com o Arduino a partir de um aplicativo Android. Requer o Android 3.1+ e não requer que você faça root no dispositivo.
fonte