Como posso integrar um telefone inteligente ao meu projeto de robótica? [fechadas]

24

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.

Robz
fonte
Apenas para adicionar uma opção iOS, consulte SESO iPhone como um controlador do robô
Greenonline

Respostas:

19

O Kit de desenvolvimento de acessórios do Android (ADK) deve fazer tudo o que você precisa.

ADK

É 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 :

O Kit de desenvolvimento de acessórios abertos Android (ADK) fornece uma implementação de um acessório USB Android baseado na plataforma de prototipagem eletrônica de código aberto Arduino, nos arquivos de design de hardware do acessório, no código que implementa o firmware do acessório e no aplicativo Android que interage com o acessório. Os arquivos e o código de design do hardware estão contidos no download do pacote ADK.

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:

Acompanhe rapidamente o desenvolvimento do hardware do seu telefone Android ou apenas projete robôs para celular com o Arduino ADK! O Arduino ADK é uma placa de microcontrolador baseada no poderoso ATmega2560 (datasheet). Ele possui uma interface de host USB para conectar-se a telefones baseados no Android e um conversor de reforço da fonte de alimentação para carregar o telefone da energia DC enquanto ele estiver conectado ao ADK

(ênfase minha)

Embedded.kyle
fonte
11

Outra opção é a placa IOIO-OTG :

Placa IOIO-OTG

A descrição do produto Sparkfun descreve sua funcionalidade:

Possui um microcontrolador PIC que funciona como uma ponte que conecta um aplicativo no seu PC ou dispositivo Android a periféricos de baixo nível, como GPIO, PWM, ADC, I2C, SPI e UART. Uma biblioteca no nível do aplicativo ajuda a escrever o código de controle para esses periféricos de baixo nível da mesma maneira que você escreveria qualquer outro aplicativo Java!

Este quadro deve fazer tudo o que você deseja e ainda possui um bom tutorial para ajudá-lo a começar.

brnd4n
fonte
6

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.

Manishearth
fonte
5

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.

Nis
fonte
4

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.

Jay Beavers
fonte