- Materiais requisitados:
- Impressão 3D das peças necessárias (opcional):
- Esquemático e Hardware:
- Configurando seu aplicativo Android:
- Programando seu Arduino:
- Trabalhando:
Sempre quis construir um braço robótico de rastreamento facial ou robô simplesmente usando Arduino e nenhuma outra programação como OpenCV, visual básico C # etc? Então leia, neste projeto vamos implementar a detecção de rosto combinando o poder do Arduino e do Android. Neste projeto, a câmera móvel se moverá junto com seu rosto com a ajuda de servos. A vantagem de usar o Android Mobile Phone aqui é que você não precisa investir em um módulo de câmera e todo o trabalho de detecção de imagem pode ser feito no próprio telefone, você não precisa do seu Arduino conectado ao computador para que isso funcione. Aqui, usamos o módulo Bluetooth com Arduino para nos comunicarmos com o celular sem fio.
O aplicativo Android usado neste projeto foi criado usando Processing Android. Você pode instalar o aplicativo diretamente baixando o arquivo APK (leia mais para o link) ou colocar em seu limite de programação e tornar seu próprio aplicativo Android mais atraente usando o código de processamento fornecido mais adiante no Tutorial. Saiba mais sobre o processamento, verificando nossos projetos de processamento anteriores.
Ao final deste tutorial, você terá um braço robótico Mini Tilt and Span que pode rastrear seu rosto e se mover junto com ele. Você pode usar isso (com mais avanços) para gravar seus vídeos de vlog ou até mesmo tirar uma selfie com a câmera traseira do seu celular, pois posiciona seu rosto exatamente no centro da tela do celular. Então!! Soa interessante? Confira o vídeo de demonstração no final deste tutorial para vê-lo funcionando. Vamos ver como podemos construir um…
Eu tentei o meu melhor para fazer este projeto funcionar o mais simples possível, qualquer pessoa com conhecimento mínimo de hardware ou codificação pode usar essas diretrizes para fazer este projeto funcionar em nenhum momento. No entanto, depois de fazer isso, sugiro que você vá atrás dos códigos para que possa realmente saber o que faz isso funcionar e como.
Materiais requisitados:
- Arduino Nano
- Servo motor SG90 - 2Nos
- Telefone Android com câmera decente
- Módulo Bluetooth HC-05 / HC-06
- Computador para programação
- Impressora 3D (opcional)
- Bateria 9V
Impressão 3D das peças necessárias (opcional):
A fim de girar e inclinar nosso telefone móvel, precisamos de algumas estruturas mecânicas como um suporte de celular e alguns suportes de servo. Você pode usar um papelão para fazer um, já que tenho uma impressora 3D decidi imprimir em 3D essas peças.
A impressão 3D é uma ferramenta incrível que pode contribuir muito na construção de projetos de protótipos ou na experimentação de novos designs mecânicos. Se você ainda não descobriu os benefícios de uma impressora 3D ou como ela funciona, pode ler o Guia para iniciantes em impressão 3D.
Se você possui ou tem acesso a uma impressora 3D, pode usar os arquivos STL que podem ser baixados aqui para imprimi-los e montá-los diretamente. No entanto, algumas peças como o suporte do telefone celular podem precisar de algumas modificações com base nas dimensões do seu telefone. Eu o projetei para meu celular MOTO G. Usei uma impressora muito básica minha para imprimir todas as peças. A impressora é FABX v1 da 3ding que tem um preço acessível com um volume de impressão de 10 cm cúbicos. O preço barato vem com uma compensação com baixa resolução de impressão e nenhum cartão SD ou função de retomada de impressão. Estou usando um software chamado Cura para imprimir os arquivos STL. As configurações que usei para imprimir os materiais são fornecidas abaixo, você pode usá-las ou alterá-las com base na sua impressora.
Depois de imprimir todos os materiais necessários, você pode fixá-los na posição usando parafusos e um pouco de cola quente. Depois que a montagem for concluída, ela deverá ser semelhante a esta abaixo.
Esquemático e Hardware:
O circuito para este projeto de rastreamento facial em smartphone é mostrado na imagem abaixo:
O Circuito é composto por dois Servo motores, dos quais um é utilizado para mover o telemóvel para a esquerda / direita e o outro para inclinar o telemóvel para cima / para baixo. A direção em que o servo deve se mover será instruída pelo Arduino Nano, que por si só obtém informações do módulo Bluetooth (HC-05). Todo o circuito é alimentado por uma bateria de 9V.
Este circuito pode ser conectado facilmente em sua placa de ensaio ou você também pode soldá-los em uma pequena placa Perf como fiz aqui.
Configurando seu aplicativo Android:
Como eu disse anteriormente, o cérebro principal que trabalha por trás deste projeto é este aplicativo Android. Este aplicativo Android foi desenvolvido usando o Processing Android. Você pode instalar este aplicativo diretamente no seu celular e iniciá-lo seguindo as etapas abaixo.
- Baixe o arquivo APK aqui.
- Ligue o circuito mostrado acima.
- Nas configurações do telefone, pesquise o módulo Bluetooth chamado “HC-05”
- Se você tiver outro nome diferente de “HC-05”, altere-o de volta para HC-05, pois somente então o aplicativo funcionará.
- Emparelhe com o seu módulo Bluetooth com a senha “1234” ou “0000”.
- Agora, inicie o aplicativo no modo retrato. Você deverá ver a tela da câmera e também “Conectado a: HC-05” na parte superior da tela.
- Experimente mover a câmera sobre um rosto e uma caixa verde deve aparecer em cima dele e sua posição também será exibida no canto superior esquerdo da tela, conforme mostrado abaixo.
Você pode levar este projeto de rastreamento facial do Arduino para o próximo nível, trazendo muitos avanços para os quais você não precisará codificar seu próprio aplicativo Android. Criar um aplicativo Android pode parecer difícil, mas acredite em mim, com a ajuda do Processing, você pode aprender em nenhum momento. O código de processamento completo que é usado para construir este aplicativo pode ser baixado aqui. Você é livre para fazer qualquer avanço com sua própria criatividade. Confira os projetos abaixo para saber mais sobre o processamento:
- Realidade virtual usando Arduino e processamento
- Jogo Ping Pong usando Arduino
- Rádio FM controlado por telefone inteligente usando Processing.
- Sistema de radar Arduino usando processamento e sensor ultrassônico
Programando seu Arduino:
O aplicativo Android detectará o rosto e sua posição na tela; ele então decidirá em qual direção deve se mover com base na posição do rosto, de modo que o rosto fique no centro da tela. Essa direção é então enviada ao Arduino via Módulo Bluetooth.
O programa Arduino para este projeto é bastante simples, basta controlar a direção dos dois servo motores com base nos valores recebidos do Módulo Bluetooth. O código completo pode ser encontrado no final deste tutorial, também expliquei algumas linhas importantes abaixo.
A linha de código abaixo estabelece uma conexão serial com os pinos D12 como RX e D11 como TX. Portanto, o pino D12 deve ser conectado ao TX do módulo BT e o pino D11 ao RX do módulo BT.
SoftwareSerial cam_BT (12, 11); // RX, TX
Em seguida, inicializamos o módulo Bluetooth a uma taxa de transmissão de 9600. Certifique-se de que seu módulo também funcione na mesma taxa de transmissão. Caso contrário, altere-o de acordo.
cam_BT.begin (9600); // inicia a comunicação Bluetooth em 9600 baudrate cam_BT.println ("Pronto para receber comandos");
A linha abaixo lê o que está entrando pelo módulo Bluetooth. Além disso, os dados são salvos na variável “BluetoothData”.
if (cam_BT.available ()) // Lê o que está vindo por Bluetooth {BluetoothData = cam_BT.read (); Serial.print ("Entrada de BT:"); Serial.println (BluetoothData); }
Com base nos dados recebidos do Bluetooth, a direção dos motores é controlada. Para girar um motor para a esquerda, ele é decrementado em um valor de 2 em relação à posição anterior. Você pode aumentar esse valor de 2 para 4 ou 6 se precisar que o braço se mova mais rápido. Mas, isso pode criar alguns solavancos tornando a câmera instável.
if (BluetoothData == 49) // Vire à esquerda {pos1 + = 2; servo1.write (pos1);} if (BluetoothData == 50) // Vire à direita {pos1- = 2; servo1.write (pos1);} if (BluetoothData == 51) // Aumentar {pos2- = 2; servo2.write (pos2);} if (BluetoothData == 52) // Desce {pos2 + = 2; servo2.write (pos2);}
Trabalhando:
Quando estivermos prontos com nosso hardware, código e aplicativo Android, é hora de alguma ação. Basta ligar o Arduino e abrir o aplicativo Android. O aplicativo se conectará automaticamente ao módulo Bluetooth HC-05 (deve ser denominado HC-05) e aguardará até que um rosto seja detectado. Basta colocar o telefone em nosso suporte para celular e sentar na frente dele. Você deve observar seus servo motores movendo seu telefone de forma que seu rosto fique no centro da tela. Agora mova-se dentro do alcance da câmera e seu celular seguirá seus movimentos. Você também pode tentar posicionar e mover qualquer imagem.
O funcionamento completo do projeto é mostrado no vídeo abaixo. Você pode construir muito