Índice:

Android G1 serial para robô Arduino: 8 etapas
Android G1 serial para robô Arduino: 8 etapas

Vídeo: Android G1 serial para robô Arduino: 8 etapas

Vídeo: Android G1 serial para robô Arduino: 8 etapas
Vídeo: ROBÔ BLUETOOTH - Arduino - CONTROLADO PELO CELULAR ANDROID 2024, Setembro
Anonim
Android G1 Serial para Arduino Robot
Android G1 Serial para Arduino Robot
Android G1 Serial para Arduino Robot
Android G1 Serial para Arduino Robot
Android G1 Serial para Arduino Robot
Android G1 Serial para Arduino Robot

Aprenda como seu celular Android pode controlar um robô usando uma placa Arduino. O telefone recebe comandos via telnet de outro telefone ou PC, para que você possa controlar o robô remotamente. De outra forma, este projeto não modificará o G1 para que você possa continuar a usá-lo como seu telefone normal após desencaixá-lo. Por quê? Usando componentes eletrônicos baratos, como placas Arduino, você pode emparelhá-los com seu telefone de $ 400 para criar um robô incrível. Custaria centenas de dólares para adicionar GPS, LCDs, sensores de movimento, wi-fi, conexões de celular, alto-falantes e muito mais a um robô de passatempo, mas seu telefone já tem isso! Juntos, o Android G1 e a placa Arduino permitem que você use eletrônicos baratos, como servos e sensores simples, para construir dispositivos poderosos, como robôs, telepresença remota ou brinquedos divertidos para crianças. Mais informações em Cellbots.com. Notice: Atualmente, este projeto requer um Android G1 com acesso root para usar a saída serial do telefone para o robô Arduino. Você pode adicionar um módulo BlueTooth de $ 20 à sua placa Arduino para que o telefone se comunique com ela através do BlueTooth serial se quiser usar o software Android comercial. Agradecimentos especiais: Devemos agradecer ao Hacker Dojo em Mountain View, CA por nos colocar em contato, ajudando com algumas questões complicadas por meio de sua lista de e-mails de membros incríveis e por ter 74LS04 chips em estoque. A maior parte da montagem foi feita na Tech Shop em Menlo Park.

Etapa 1: itens necessários

Itens Necessários
Itens Necessários
Itens Necessários
Itens Necessários
Itens Necessários
Itens Necessários

Para concluir este tutorial, você precisará do seguinte: Hardware: - Android G1 Dev Phone (ou outro dispositivo Android com acesso root e saída serial) - Arduino (estou usando um Freeduino SB, mas qualquer um deve fazer) - 3.3v a 5v conversor se você não estiver usando um Arduino 3.3v (estou usando um chip 74LS04 por menos de US $ 1, mas outras opções estão disponíveis) - Placa de break-out USB HTC para o G1 - Equipamento de solda para duas conexões rápidas - Um corpo de robô com micro servos (papelão, acrílico, degraus, rodas, qualquer coisa serve) Software: - Android Scripting Environment (ASE) - Cliente Telnet para o seu PC (estou usando PuTTY no Windows) - Ambiente de desenvolvimento Arduino - (opcional) Cliente serial para seu PC (também estou usando PuTTY no Windows para isso) - (opcional) Android SDK Se você puder seguir as instruções, poderá concluir este tutorial com pouco conhecimento de Python, Arduino, Android ou eletrônica. Você vai querer saber essas coisas se quiser ir além de um LED piscando, mas isso o ajudará a começar.

Etapa 2: Android G1 com saída serial habilitada

Android G1 com saída serial habilitada
Android G1 com saída serial habilitada
Android G1 com saída serial habilitada
Android G1 com saída serial habilitada
Android G1 com saída serial habilitada
Android G1 com saída serial habilitada

Os G1 não são enviados com a capacidade de enviar comandos seriais pela porta USB e não há opção nativa para habilitá-los. Se você for um usuário avançado do Android SDK, poderá fazer sua própria construção, mas optei por usar o Cyanogenmod 4.2.13. Se você souber de outros dispositivos Android com saída serial funcionando, adicione-os aos comentários.

Opcionalmente, você pode seguir os links aqui para instruir sobre como falar com seu G1 via USB do seu PC. Essa conexão serial para USB não é necessária para este tutorial, mas eu a usei como uma boa verificação de sanidade para verificar se o telefone estava enviando uma saída serial. Se você não usar o outro intructable para verificar se a saída serial está funcionando, você pode tentar esta verificação simples: 1. Abra o aplicativo Terminal no G1 (vem com Cyanogen, mas baixe um do Market se tiver uma imagem diferente) 2. Navegue até o diretório / dev / digitando cd / dev / 3. Digite ls (que é um L) e procure por ttyMSM2 na lista retornada O script Python que usaremos posteriormente envia comandos para '/ dev / ttyMSM2' em ordem para que eles saiam da conexão serial. Uma vez que requer acesso root, você precisará alterar as permissões sempre que reiniciar o telefone. Para fazer isso: 1. Abra o aplicativo de terminal no telefone 2. Digite 'chmod 777 / dev / ttyMSM2' Então você pode executar o script Python da edição de scripts do Android na próxima etapa e ele terá acesso para enviar saída serial.

Etapa 3: instalar o Android Scripting Environment (ASE) com Python

Instale o Android Scripting Environment (ASE) com Python
Instale o Android Scripting Environment (ASE) com Python
Instale o Android Scripting Environment (ASE) com Python
Instale o Android Scripting Environment (ASE) com Python

Os scripts que usaremos para criar uma conexão de soquete aberto no telefone e enviar comandos são escritos em Python. Para executar isso no G1, precisaremos do Android Scripting Environment. Se você não o encontrar no Market, pode baixá-lo digitalizando o código de barras da página que leva ao arquivo apk nesta página.

Depois de instalar e executar o ASE, você desejará adicionar o módulo Python a partir do menu: 1. Abra o ASE e certifique-se de ter uma conexão de internet funcionando (wi-fi ou 3G) 2. Pressione o botão de menu no telefone e selecione Intérpretes 3. Pressione menu novamente e selecione Adicionar 4. Selecione Python (atualmente v2.6.2 no momento da redação) e ele irá baixar alguns arquivos zip. Você pode explorar a criação, abertura, edição e execução de scripts para se familiarizar com Python via ASE, mas não é obrigatório.

Etapa 4: copie e execute o script Cellbot.py para iniciar o programa Python

Copie e execute o script Cellbot.py para iniciar o programa Python
Copie e execute o script Cellbot.py para iniciar o programa Python

Este tutorial usa um script Python para ser o "cérebro" do robô. Obtenha o código mais recente de nosso projeto de código aberto do Google Code. Você só precisa do arquivo cellbot.py, mas outros podem ajudar com várias coisas que você deseja explorar. Simplesmente conectei o telefone na conexão USB do meu PC e montei a unidade antes de copiar o arquivo para / sdcard / ase / scripts.

O programa cria uma conexão de soquete aberto para aceitar uma sessão telnet de entrada. Ele também imprime os comandos recebidos na tela enquanto os envia pela porta serial. Coloque este arquivo no cartão SD do telefone no diretório / ase / scripts /. Etapas detalhadas para carregar e executar os scripts: 1. Copie o script cellbot.py para o diretório / ase / scripts / do cartão SD 2. Certifique-se de desmontar o cartão SD do seu PC se você os copiou dessa forma, pois o telefone não pode acessar os arquivos ao mesmo tempo que o seu PC. 3. Abra o aplicativo Android Scripting Environment 4. Clique em cellbot.py para iniciá-lo. Você deve ver uma confirmação de que o dispositivo está pronto neste ponto para aceitar sessões telnet de entrada na porta 9002. Dica: certifique-se de executar o "chmod 777 comando / dev / ttyMSM2 "da etapa # 3 primeiro. Consulte a etapa 5 para encontrar o endereço IP do telefone.

Etapa 5: Telnet no G1 e teste de envio de comandos

Faça Telnet no G1 e teste os comandos de envio
Faça Telnet no G1 e teste os comandos de envio
Faça Telnet no G1 e teste os comandos de envio
Faça Telnet no G1 e teste os comandos de envio
Faça Telnet no G1 e teste os comandos de envio
Faça Telnet no G1 e teste os comandos de envio

O telefone deve estar pronto para você fazer telnet e enviar comandos de seu PC. Ele os imprimirá na tela do telefone para confirmar o que ele recebe. Usei PuTTY no Windows, mas confirmamos que o minicom funciona muito bem em Macs, conforme descrito neste manual.

Primeiro, você precisa encontrar o endereço IP do seu telefone. Isso está disponível em Menu> Configurações> Controles sem fio> Configurações de Wi-Fi e, em seguida, pressionando a conexão ativa no momento. Uma mensagem de brinde pop-up aparecerá com o endereço IP atual na rede local. Anote isso, pois você o usará sempre que quiser abrir uma sessão telnet em seu PC. As atribuições de IP normalmente expiram após um determinado número de dias, portanto, pode ser necessário verificar isso novamente. Observação: Este tutorial assume que seu PC e telefone estão na mesma rede local. O roteamento para o telefone de fora da rede local deve ser possível, mas não é abordado aqui. Abra o cliente telnet de sua escolha e conecte-se ao IP do telefone na porta 9002. A partir de uma linha de comando, faça isso como "telnet 192.168.1.1 9002" usando o IP real do telefone. Digite alguns caracteres e pressione Enter para vê-los aparecer na tela do telefone. Você pode digitar um q para fazer com que o script Python seja encerrado, o que deve fechar sua sessão de terminal. Se por algum motivo você não conseguir se conectar via telnet e precisar encerrar o programa, uma simples reinicialização do telefone deve resolver. Usuários avançados podem querer encontrar o ID do processo via ps e então usar kill para pará-lo. Avançado: uma versão futura disso poderia executar um servidor da web local a partir do telefone em vez de aceitar comandos via telnet. Também estamos explorando o XMPP para conversar com seu robô.

Etapa 6: conectar um deslocador de nível de 3,3 V a 5 V ao Arduino

Conecte um Level Shifter de 3,3 V a 5 V ao Arduino
Conecte um Level Shifter de 3,3 V a 5 V ao Arduino
Conecte um Level Shifter de 3,3 V a 5 V ao Arduino
Conecte um Level Shifter de 3,3 V a 5 V ao Arduino
Conecte um Level Shifter de 3,3 V a 5 V ao Arduino
Conecte um Level Shifter de 3,3 V a 5 V ao Arduino

O Arduino usado neste tutorial é um modelo de 5v, portanto, precisamos converter o sinal de 3,3v que sai do G1 usando um deslocador de nível. Deve ser possível conectar-se diretamente a um Arduino 3.3v, mas não foi algo que testei.

Existem várias maneiras de abordar isso, mas usaremos um chip 74LS04 neste exemplo. Você pode pesquisar um aqui e provavelmente custará menos de US $ 1. Tim e eu compramos os nossos no Hacker Dojo em Mountain View, CA, mas eles são MUITO comuns e devem ser abundantes onde quer que os chips sejam vendidos ou doados. Em um nível alto, simplesmente enviaremos o sinal TX da placa breakout HTS USB para o pino 1 do chip 74LS04. Para fazer funcionar, passamos pelo chip duas vezes e saímos do pino 4 para o pino RX no Freeduino SB (seu pino serial pode ser diferente se você tiver outra placa Arduino, mas todos devem suportar isso). Siga estas etapas para conectar o deslocador de nível e conectar a placa USB HTC (não conecte ao telefone ainda e desconecte a alimentação do Arduino): 1. Insira o chip 74LS04 em sua placa de ensaio. Certifique-se de que o chip atravesse a fratura central para que os pinos não entrem em curto (um movimento idiota que fiz no início) 2. Solde dois fios para a placa USB HTC conforme descrito neste instrutível, mas usaremos apenas os pinos 7 (Ground) e 8 (TX0), pois estamos fazendo apenas uma transmissão unilateral para este tutorial. 3. Conecte a outra extremidade do fio terra (pino 7) a um aterramento em sua placa de ensaio (que deve ser conectada a um aterramento em seu Arduino) 4. Conecte a outra extremidade do fio TX0 (pino 8) à placa de ensaio onde ele atinge o pino 1 do chip 74LS04. (faça uma pesquisa de imagem para um diagrama completo do chip) 5. Use um fio para conectar os pinos 2 e 3 do chip 6. Conecte o pino 4 do chip ao ponto Arduino RX (pino 0 no Freeduino SB e Arduino Duemilanove) 7. Conecte o pino 7 (GND) no chip ao solo para sua placa de ensaio (que também se conecta ao aterramento do Arduino) 8. Conecte o pino 14 (VCC) à alimentação de 5v em sua placa de ensaio (que obtém a alimentação do Arduino Saída 5v) Agora você deve estar pronto para conectar a placa break-out USB HTC na parte inferior do telefone e ligar o Arduino. Verifique se há faíscas e odores e toque nas coisas para se certificar de que estão frias. Nota: O código atual do cellbot acende o LED # 13 quando os servo motores do robô deveriam estar funcionando. Se você ainda não tem um robô, pode verificar se o LED acende e apaga para confirmar se está funcionando.

Etapa 7: carregar o programa Cellbots no Arduino

Carregue o programa Cellbots no Arduino
Carregue o programa Cellbots no Arduino
Carregue o programa Cellbots no Arduino
Carregue o programa Cellbots no Arduino

Obtenha o código-fonte do Arduino em nosso site de projeto do Google Code. Abra o programa Cellbots.pde Arduino no editor Arduino. Em seguida, coloque-o na placa Arduino.

Você pode testar a comunicação com o código do Arduino abrindo o monitor serial no editor do Arduino. Esta é uma ótima maneira de testar seu robô ou dispositivo falando diretamente com o Arduino antes de conectar tudo ao telefone. O código envia comandos seriais de volta ao monitor serial para confirmar o que está fazendo, mesmo se você ainda não tiver construído seu robô. Observação: você não pode carregar programas no Arduino enquanto o fio está conectado ao pino de entrada serial RX. Então você pode querer colocar este aqui em uma chave, mas eu simplesmente o desconectei quando precisei carregar um novo programa.

Etapa 8: execute todo o processo

Execute todo o processo
Execute todo o processo
Execute todo o processo
Execute todo o processo
Execute todo o processo
Execute todo o processo

Você deve ser capaz de conectar a placa USB HTC ao telefone, iniciar o arquivo cellbot.py no ASE e abrir sessões de terminal no telefone. Digite "H" para que o telefone diga olá ou qualquer outro comando do arquivo README.txt.

Um "q" sairá do script Python no telefone e fechará o soquete do terminal. Aqui está uma recapitulação de como tudo funciona: 1. O script Python abre um soquete para aceitar conexões telnet de entrada e ecoar os comandos pela porta serial 2. Nós conectamos do nosso PC ao telefone via telnet na porta 9002 e enviamos comandos que vemos na tela 3. A placa HTS USB faz interface com a porta USB do G1 e envia o sinal de 3,3 V para o 74LS04 pino 1. 4. O o sinal sai do chip no pino 2, volta no pino 3 e sai novamente no pino 4 em 5v 5. Nosso Arduino aceita o sinal serial no pino 0 RX e o processa através do programa Cellbot.pde 6. Nós pode digitar 'q' para encerrar o script Python e fechar a conexão telnet. Agora que você concluiu este processo muito complicado de enviar comandos básicos a um robô Arduino, é hora de hackear para ficar mais incrível! Ainda não temos o serial bidirecional funcionando, então o Arduino não pode enviar comandos de volta para o telefone, mas estamos trabalhando nisso. Fique atualizado assinando nosso blog em Cellbots.com. Sobre os autores: Tim Heath Pesquisador líder que montou esse processo pela primeira vez na Tech Shop em Menlo Park, de onde é membro. Ryan Hickman Programador que trabalhou no código Python e Arduino e autorizou este Instructable.

Recomendado: