Esse é um projeto bem legal e bem simples, que pode ser encontrado facilmente na internet, porém nem sempre está descrito de forma simples para que qualquer um possa implementá-lo.
Hardware
Primeiramente, vamos precisar de uma placa Arduino. No meu projeto utilizei a Arduino UNO mesmo, porém após compilar o Sketch, com todas as bibliotecas, o tamanho ficou próximo dos 30KB, que é o tamanho máximo que o programa pode ter(2KB é utilizado pelo BootLoader).
A comunicação do controle é feita via Bluetooth, então precisaremos ter um Bluetooth para comunicar nosso Arduino com o controle. Mas, não pode ser qualquer Bluetooth e também não pode ser os shields que fazem comunicação serial com o Arduino. Precisaremos da Placa USB Host Shield, que possui uma entrada USB e então precisaremos de um Dongle Bluetooth (desses que conectamos via USB no PC) que seja do padrão Bluetooth 2.0 compatível com EDR. Normalmente na embalagem do Bluetooth aparecem essas informações, caso não apareça, deve ser procurado pela velocidade de 3Mbps.
Temos vários modelos de placa USB Host Shield, testei 3 delas, e todas as três são compatíveis com a biblioteca.
Eu utilizei um carrinho de controle remoto antigo. Retirei a parte eletrônica dele, coloquei um servo motor para controlar os pneus dianteiros(pois o que havia no carrinho era um motor DC e não tinha controle analógico) e aproveitei o motor DC que já havia no carrinho.
Enfim, é isso que precisaremos de "Hardware", para montar nosso projeto:
- Placa Arduino UNO
- Placa USB Host Shield
- Dongle USB 2.0 + EDR (3Mbps)
- Carcaça de carrinho antigo
- Servo motor
- Motor DC
- Controlador de Motor DC (Ponte H)
A placa USB Host Shield vai conectada ao Arduino UNO, normalmente(é importante que essa placa tenha conectores empilháveis),
e na placa USB Host Shield conectaremos nossa placa controladora de motor. No meu casso confeccionei uma placa específica para esse projeto, onde tenho a saída para o servo motor, motor DC, farol(LED) e buzina(buzzer).
Existem placas prontas que fazem a ponte H que controla o motor DC, uma boa alternativa, caso você não tenha conhecimento de confecção de placas. Basta dar uma procurada no mercadolivre ou no google que aparecerão várias opções. Procure como "Ponte H Arduino", ou como "Driver Motor Arduino". É importante que tenham conectores do tipo empilháveis para que os pinos do Arduino estejam disponíveis para fazer a ligação do Servo motor.
A placa USB Host Shield utiliza os pinos de 7 a 13, se não me engano (já faz uns 2 meses que montei esse projeto), então não utilize esses pinos para fazer ligações.
Posteriormente quero postar minhas técnicas de confecção de placa, para fazer em casa.
Ou, quem preferir pode mandar fazer a placa, mas o preço é bem salgado.
A caixa de pilhas do carrinho foi aproveitada e a alimentação foi feita da seguinte forma:
- GND, ligado ao GND do arduino;
- 7,5V (ou 5 pilhas) ligado no Vin do Arduino;
- 12V ligado na ponte H que controla o motor.
Quando você liga alguma tensão no Vin do Arduino, os reguladores de tensão para 5V e 3,3V funcionam normalmente, como se estivessem sendo alimentados pelo pino P4.
O servo motor que eu utilizei precisa de 5V e foi ligado na porta correspondente do Arduino.
Software
Primeiramente vamos baixar e instalar a biblioteca que controlam a placa USB Host Shield (https://github.com/felis/USB_Host_Shield_2.0/archive/master.zip).
Estou usando a versão 1.0.5 da IDE do Arduino.
Vamos descompactá-la na pasta libraries do seu Sketchbook (normalmente fica na pasta C:\Usuários\Seu usuário\Documentos\Arduino. Pode ser alterado clicando em Arquivo/Preferências/Localização do Sketchbook) e renomeá-la da seguinte maneira USB_Host_Shield_20. Após isso, caso você esteja com a IDE Arduino aberta, feche e abra novamente. Já será possível ver que apareceu uma nova opção com o nome da biblioteca em Arquivo/Exemplos.
Vamos abrir o exemplo USB_Host_Shield_20/Bluetooth/PS3BT. Agora ficou fácil!!
Dando uma rápida olhada no código, você irá reconhecer os comandos dos botões (Triangle, Circle, R2, R1, etc). SIM, você só precisa inserir seu código nos blocos if adequados para controlar seu projeto de acordo com sua necessidade.
Para fazer o servo virar as rodas dianteiras usando o botão analógico esquerdo, adicionei o seguinte código:
A informação passada pelo controle analógico funciona assim: tudo a esquerda é 0, tudo a direita é 255. Com o comando map escrevi diretamente no servo motor, utilizando os comandos da biblioteca <Servo.h>. Como o espaço para giro do motor é pequeno, limitei o movimento em 30 graus para cada lado (90 é o centro, 180 é roda para a esquerda e 0 é roda para a direita, por isso usei os valores invertidos no map)
Para controle do motor usando o botão analógico direito, usei o seguinte código:
O motor precisa que seja mandado uma determinada tensão (PWM) em um pino para ir para a frente e em outro pino para ir para trás, tive que colocar os if para dividir esse ponto central.
Não esquecer de declarar e inicializar as variáveis no início do código:
Para fazer a biblioteca funcionar, alimente o Arduino(necessita alimentação externa), plugue o dongle bluetooth na USB da placa USB Host Shield, deixe por alguns segundos para que a biblioteca leia o endereço MAC do bluetooth. Remova o bluetooth e insira o cabo do controle do PS3, conectado ao controle, para que a biblioteca grave o endereço MAC do bluetooth no controle. Quando o controle reconhecer o MAC, todos os LEDs do controle ficarão piscando. Após isso é só reconectar o bluetooth, pressionar o botão PS no controle e aguardar até que ele conecte e fique somente o LED 1 acesso. Caso não consiga conectar de primeira, tente resetar o Arduino, porém não será mais necessário retirar o bluetooth e gravar MAC no controle, uma vez feito isso, fica gravado permanente.
Agora é só brincar.
Código fonte disponível em Projetos-Arduino/PS3BT_carro.ino
boa noite cara.. qual a distancia que eh possivel atingir entre controle e carro?
ResponderExcluirBoa noite. Eu consegui um bom desempenho a até cerca de 10m. Mas isso deve variar de acordo com o modelo de dongle bluetooth que você adquirir, alimentação, barreiras, etc.
ExcluirAbraço
Oi amigo,
ResponderExcluirMuito bom seu tutorial.
Desculpe-me usar este espaço, porem gostaria de informar que tenho O USB Host Shield a venda, aceito mercado pago.
Contato por email : connectparts@gmail.com
Obs: Se meu comentário foi irregular ou se estou causando qualquer transtorno, sinta-se a vontade para apaga-lo.
Obrigado.
Boa tarde, estou com tudo igual o seu trabalho, porem quando conecto o servo motor na ponte h alimentado por uma 9v ele da um giro compreto e trava, visualizo as seçoes no monitor serial e o controle responde aos comandos, saberia me dizer o motivo do erro? estou com o mesmo codigo que vc usou extamente da mesma forma com os comandos adicionais inseridos.. Obrigado
ResponderExcluirBoa noite Anderson, você deve conferir as especificações do seu servo motor, se ele fez uma volta completa (360º) você deve ajustar os valores dos ângulos, pois no meu projeto utilizei um servo de 180º (0 - 179º). É interessante também conferir se a pinagem do servo está batendo com o Arduino, no comando servo1.attach(nro porta).
ResponderExcluirÉ sempre importante ler o datasheet do componente. Espero ter ajudado.
boa tarde DOuglas o servo motor ta girando só pra um lado e ele ta sendo acionado com os dois analogicos eu fiz o codigo igual ao do tutorial vc poderia me ajudar
ResponderExcluirBom dia Renato,
Excluirrespondi lá no canal do Youtube, mas vamos de novo.
Verifique se o seu servo é de 180 graus e verifique se você está ligando ele a uma porta que tenha saída PWM. No UNO, as portas são : 3, 5, 6, 9, 10, 11.
tem como vc me mandar seu codigo do projeto do carrinho de controle PS3 por email? renato.bps@hotmail.com
ResponderExcluirBom dia.. Gostaria de saber qua shield vc indica para o projeto r tambem se vc me manda o codigo do seu projeto?
ResponderExcluirbruno_sr03@hotmail.com
Bom dia! Gostaria de saber se conseguirei usar o controle no video-game novamente, depois que for utilizado no projeto?
ResponderExcluirConsegue sim, mas você vai precisar conectar o controle com o cabo USB no video game, para que o controle aprenda o MAC do video game, antes de jogar sem o fio conectado.
Excluirok! Obrigado!
ExcluirOlá Douglas, você pode passar o codigo que foi ultilizado para o E-mail: washingtonmagalhaes@outlook.com , obrigado ;)
ResponderExcluirQueria saber se consigo fazer o msm projeto so que com modulo bluettoth ao inves do shield usb?
ResponderExcluirQuando fiz a pesquisa, não era possível. Primeiro porque a biblioteca usada é compatível somente com o USB Host Shield. Outro motivo é que no shield bluetooth você fica limitado a enviar/receber caracteres via serial e também a alguns comandos AT. Enquanto que via USB Host Shield vc consegue enviar e receber o padrão que desejar. E como a comunicação com o PS3 não é feita apenas via serial, não era possível.
ExcluirNão sei como está hoje, mas acredito que não tivemos progresso quanto isso. O shield bluetooth é feito pra facilitar a comunicação e a implementação de projetos. Aquela biblioteca usada pra comunicar com o PS3 é beeem complexa.
Espero que ajude.
Abraço
Olá Douglas, como vai? Cara muito bacana seu tutorial! Parabéns! Será que seria possivel pegar o código completo com vc? timsantosf@hotmail.com
ResponderExcluirMuito Obrigado!
vc teria como me passar o modelo e marca do seu aptador Bluetooth estou tendo problemas na hora de parear, obrigado
ResponderExcluirestou com o msm problema . caso identifique favor me avisar
ExcluirBoa tarde amigo estou fazendo esse projeto ou melhor um bem semelhante e estou tendo problemas com a sincronização do controle .. alguma outra dica ?
ResponderExcluirPessoal, boa tarde. Também tive problemas com dongle bluetooth. Comprei uns 3 até conseguir um que funcionasse corretamente. A dica é procurar por um Bluetooth 2.0 compatível com EDR.
ExcluirComprei daqueles modelos genéricos, conforme a foto acima e deu certo.
o Legal é usar o programa de exemplo da biblioteca PS3BT e verificar se estão aparecendo os valores das leituras dos botões e sticks analógicos, antes de testar no código final.
Abraço
Boa tarde, tem como vse me passar o codigo q vse usou por e-mail por favor (maykewfx@gmail.com), essa "ponte H q vse fez posso botar essa aqui Motor Shield L293D ou esse Ponte H L298n no lugar dela é se der me passa o projeto da sua ponte por favor.
ResponderExcluirGrato desde já.
O meu tá dando erro;
ResponderExcluirtô há tempos tentando configurar o driver, os codigos e o meu arduino.
Tô quase desistindo
alguém pode me dar uma ajuda geral?
Essa biblioteca ta toda cagada, so de abrir e compilar do jeito que ta, ela da erros.
ResponderExcluirParabéns Douglas pelo trabalho, estou interessado em montar um modelo como o seu e depois trabalhar em um carrinho de maior potência, teria como disponibilizar o Código e outros arquivos que te ajudou a na montagem do projeto. rodriguese90@hotmail.com
ResponderExcluirFeito
ExcluirFeito
ExcluirGrande trabalho Douglas, estou com algumas dificuldades no meu código tbm, tem como me enviar o seu pra comparar, valeu.
ResponderExcluirgleidison90@hotmail.com
Boa noite Douglas, estou com um projeto igual o seu ! Me inspirei haha porém nao consigo ligar um led apertando "X" . Sera que pode me ajudar ?? Manda email qualquer coisa.. matheus_lang@hotmail.com
ResponderExcluirEntão Matheus, O comando do X é CROSS, daí você usa :
ResponderExcluirif(PS3.getButtonClick(CROSS)==1){ // Quando apertar o X, o X valerá 1
DigitalWrite(led, HIGH);
}
Douglas, depois de descompactar o arquivo, eu inserir na biblioteca do arduino, porém quando coloco na opção PS3BT(no caso o bluetooth), e compilo o arquivo
ResponderExcluiras linhas que tem o R2 e L2 dam erro... Poderia me ajudar com esse detalhe ? Qualquer coisa entre em contato comigo
Whatshapp: 959990878/ email:weverson_1997@hotmail.com
Atenciosamente,
Muito massa!!
ResponderExcluirTem como enviar o código completo?
Wenixmoreno325@gmail.com
Douglas,
ResponderExcluirBoa Noite,
Gostaria de falar com vc por e-mail ou telefone ... é possível ????
92-992080775
rodolfocristo@hotmail.com
Att
Rodolfo Cristo
Olá estou com uma dúvida, assim que ligo a placa juntamente com os Shields e o conector bluetooth já conectado e piscando, se eu apertar o botão ps ele já tem que identificar correto?
ResponderExcluirMe ajuda alguém
Olá estou com uma dúvida, assim que ligo a placa juntamente com os Shields e o conector bluetooth já conectado e piscando, se eu apertar o botão ps ele já tem que identificar correto?
ResponderExcluirMe ajuda alguém
Olá Claudinei.
ExcluirNa primeira vez que você usa o controle com o carrinho, você deve ligar a placa com o dongle bluetooth conectado no shield por alguns segundos para que o endereço MAC do dongle fique salvo no Arduino.
Depois, sem desligar o circuito, desconecte o dongle bluetooth e conecte o controle via cabo USB no shield, para que o controle receba o MAC do dongle bluetooth que ficou salvo na memória do Arduino.
Depois que o controle ficar com o MAC salvo, remova ele e conecte novamente o dongle bluetooh no shield. Daí pra frente não precisa mais fazer esse processo. A placa pode ser reiniciada, pois o MAC do bluetooth já está cadastrado no controle. É só apertar o botão PS, aguardar conectar e aproveitar.
Lembrando que se você quiser usar o seu controle novamente no seu PS3, deve conectar o controle via cabo USB no PS3 com o mesmo ligado para que o controle cadastre o MAC do PS3 novamente.
Espero ter ajudado. Qualquer dúvida, fique a vontade pra perguntar.
ola poderia por gentileza fornecer o codigo por email
ResponderExcluir476wesley@gmail.com
desde ja agradeço
Boa noite. Atualizei o post e coloquei o link para download do código: https://github.com/dougsilvabr/Projetos-Arduino/blob/master/PS3BT_carro.ino
ExcluirOlá gostaria de saber se é possível me enviar o código.
ResponderExcluirmaycon255@gmail.com
desde já agradeço.
Boa noite. Atualizei o post e coloquei o link para download do código: https://github.com/dougsilvabr/Projetos-Arduino/blob/master/PS3BT_carro.ino
ExcluirBon dia, será que é possível fazer esse projeto so que para um avião
ResponderExcluirBoa tarde.
ExcluirAté é possível, mas acredito que não seja viável pois o alcance é muito curto. E tratando-se de aeromodelo, qualquer falha de comunicação ou atraso, pode custar caro.
Abraço
Boa tarde.
ExcluirAté é possível, mas acredito que não seja viável pois o alcance é muito curto. E tratando-se de aeromodelo, qualquer falha de comunicação ou atraso, pode custar caro.
Abraço
Bon dia, será que é possível fazer esse projeto so que para um avião
ResponderExcluirBom dia, estou projetando meu TCC, sera semelhante ao seu projeto. iremos usar um controle igual. Vamos controlar uma mini carregadeira. teremos dois motores dc, um em cada roda traseira para avanço, dois atuadores lineares elétricos para movimentação da caçamba e um motor de passo para direção. Não temos muita experiência em eletrônica. Gostaria de saber se posso irar as duvidas que irão surgir aqui com vc?
ResponderExcluirBom dia Francisco.
ExcluirPodemos trocar idéias sim. No que eu puder ajudar, estou aí. Qualquer coisa me mande as dúvidas por e-mail (dougsilvabr@gmail.com), que assim que eu puder, te respondo.
Abraço
Bom dia Douglas.
ResponderExcluirDesde já, muito obrigado