- Matériaux nécessaires:
- Impression 3D des pièces requises (facultatif):
- Schéma et matériel:
- Configuration de votre application Android:
- Programmation de votre Arduino:
- Travail:
Vous avez toujours voulu construire un bras robotique de suivi de visage ou un robot en utilisant simplement Arduino et aucune autre programmation comme OpenCV, les bases visuelles C #, etc.? Alors lisez la suite, dans ce projet, nous allons mettre en œuvre la détection des visages en combinant la puissance d'Arduino et d'Android. Dans ce projet, la caméra mobile se déplacera avec votre visage à l'aide de servos. L'avantage d'utiliser le téléphone mobile Android ici est que vous n'avez pas besoin d'investir dans un module de caméra et que tout le travail de détection d'image peut être effectué dans le téléphone lui-même, vous n'avez pas besoin de votre Arduino connecté à votre ordinateur pour que cela fonctionne. Ici, nous avons utilisé le module Bluetooth avec Arduino pour communiquer avec Mobile sans fil.
L'application Android utilisée dans ce projet a été créée à l'aide de Processing Android, vous pouvez soit installer directement l'application en téléchargeant le fichier APK (lire plus loin pour le lien), soit mettre votre capuchon de programmation et rendre votre propre application Android plus attrayante en utilisant le code de traitement donné plus loin dans le didacticiel. En savoir plus sur le traitement en consultant nos précédents projets de traitement.
À la fin de ce didacticiel, vous aurez un bras robotique Mini Tilt and Span qui pourrait suivre votre visage et se déplacer avec lui. Vous pouvez l'utiliser (avec des progrès supplémentaires) pour enregistrer vos vidéos vlog ou même prendre un selfie avec la caméra arrière de votre téléphone portable car elle positionne votre visage exactement au centre de votre écran mobile. Alors!! Ça a l'air intéressant? Consultez la vidéo de démonstration à la fin de ce didacticiel pour le voir fonctionner. Voyons comment nous pouvons en construire un…
J'ai fait de mon mieux pour que ce projet fonctionne aussi simple que possible, toute personne ayant un minimum de connaissances sur le matériel ou le codage peut utiliser ces directives pour que ce projet fonctionne en un rien de temps. Cependant, une fois que vous l'avez fait, je vous suggère de vous mettre derrière les codes afin que vous puissiez vraiment savoir ce qui fait fonctionner cette chose et comment.
Matériaux nécessaires:
- Arduino Nano
- Servomoteur SG90 - 2Nos
- Téléphone Android avec appareil photo décent
- Module Bluetooth HC-05 / HC-06
- Ordinateur pour la programmation
- Imprimante 3D (en option)
- Batterie 9V
Impression 3D des pièces requises (facultatif):
Pour faire pivoter et incliner notre téléphone portable, nous avons besoin de structures mécaniques comme un support mobile et quelques supports de servo. Vous pouvez utiliser un carton pour en fabriquer un, puisque j'ai une imprimante 3D, j'ai décidé d'imprimer ces pièces en 3D.
L'impression 3D est un outil incroyable qui peut beaucoup contribuer lors de la construction de projets de prototypes ou de l'expérimentation de nouvelles conceptions mécaniques. Si vous n'avez pas encore découvert les avantages d'une imprimante 3D ou son fonctionnement, vous pouvez lire le Guide du débutant sur l'impression 3D.
Si vous possédez ou avez accès à une imprimante 3D, vous pouvez utiliser les fichiers STL qui peuvent être téléchargés à partir d'ici pour les imprimer et les assembler directement. Cependant, quelques pièces comme le support de téléphone portable peuvent nécessiter des modifications en fonction des dimensions de votre téléphone. Je l'ai conçu pour mon téléphone portable MOTO G. J'ai utilisé une de mes imprimantes très basiques pour imprimer toutes les pièces. L'imprimante est FABX v1 de 3ding qui vient à un prix abordable avec un volume d'impression de 10 cm cubes. Le prix bon marché vient avec un compromis avec une faible résolution d'impression et pas de carte SD ou de fonction de reprise d'impression. J'utilise un logiciel appelé Cura pour imprimer les fichiers STL. Les paramètres que j'ai utilisés pour imprimer les matériaux sont indiqués ci-dessous.Vous pouvez les utiliser ou les modifier en fonction de votre imprimante.
Une fois que vous avez imprimé tous les matériaux requis, vous pouvez les fixer en place à l'aide de vis et de colle chaude. Une fois l'assemblage terminé, il devrait ressembler à ceci ci-dessous.
Schéma et matériel:
Le circuit de ce projet de suivi de visage sur téléphone intelligent est illustré dans l'image ci-dessous:
Le circuit se compose de deux servomoteurs, dont l'un est utilisé pour déplacer le téléphone mobile vers la gauche / droite et l'autre est utilisé pour incliner le téléphone mobile vers le haut / vers le bas. La direction dans laquelle le servo doit se déplacer sera indiquée par l'Arduino Nano qui lui-même obtient des informations du module Bluetooth (HC-05). L'ensemble du circuit est alimenté par une pile 9V.
Ce circuit peut être connecté facilement sur votre maquette ou vous pouvez également les souder sur une petite carte Perf comme je l'ai fait ici.
Configuration de votre application Android:
Comme je l'ai dit plus tôt, le cerveau principal de ce projet est cette application Android. Cette application Android a été développée en utilisant Processing Android. Vous pouvez directement installer cette application sur votre téléphone mobile et la lancer en suivant les étapes ci-dessous.
- Téléchargez le fichier APK à partir d'ici.
- Mettez sous tension le circuit illustré ci-dessus.
- Dans les paramètres de votre téléphone, recherchez le module Bluetooth nommé «HC-05»
- Si vous lui avez donné un autre nom que «HC-05», changez-le en HC-05 car alors seulement l'application fonctionnera.
- Associez-le à votre module Bluetooth avec le mot de passe «1234» ou «0000».
- Maintenant, lancez l'application en mode portrait. Vous devriez voir l'écran de votre appareil photo ainsi que «Connecté à: HC-05» en haut de votre écran.
- Essayez de déplacer votre caméra sur un visage et une boîte verte devrait apparaître au-dessus de celui-ci et sa position sera également affichée dans le coin supérieur gauche de votre écran, comme indiqué ci-dessous.
Vous pouvez faire passer ce projet de suivi du visage Arduino au niveau supérieur en apportant de nombreuses avancées pour lesquelles vous n'aurez pas besoin de coder votre propre application Android. Créer une application Android peut sembler difficile, mais croyez-moi, avec l'aide de Processing, vous pouvez l'apprendre en un rien de temps. Le code de traitement complet utilisé pour créer cette application peut être téléchargé ici. Vous êtes libre de faire des progrès avec votre propre créativité. Consultez les projets ci-dessous pour en savoir plus sur le traitement:
- Réalité virtuelle utilisant Arduino et traitement
- Jeu de ping-pong utilisant Arduino
- Radio FM contrôlée par téléphone intelligent utilisant le traitement.
- Système radar Arduino utilisant le traitement et le capteur à ultrasons
Programmation de votre Arduino:
L'application Android détectera le visage et sa position à l'écran; il décidera alors dans quelle direction il doit se déplacer en fonction de la position du visage afin que le visage atteigne le centre de l'écran. Cette direction est ensuite envoyée à l'Arduino via le module Bluetooth.
Le programme Arduino pour ce projet est assez simple, il suffit de contrôler la direction des deux servomoteurs en fonction des valeurs reçues du module Bluetooth. Le code complet se trouve à la fin de ce tutoriel, j'ai également expliqué quelques lignes importantes ci-dessous.
La ligne de code ci-dessous établit une connexion série avec les broches D12 comme RX et D11 comme TX. Par conséquent, la broche D12 doit être connectée au TX du module BT et la broche D11 au RX du module BT.
LogicielSerial cam_BT (12, 11); // RX, TX
Ensuite, nous avons initialisé le module Bluetooth à une vitesse de transmission de 9600. Assurez-vous que votre module fonctionne également sur la même vitesse de transmission. Sinon, modifiez-le en conséquence.
cam_BT.begin (9600); // démarrer la communication Bluetooth à 9600 baudrate cam_BT.println ("Ready to take commands");
La ligne ci-dessous lit ce qui arrive via le module Bluetooth. Les données sont également enregistrées dans la variable «BluetoothData».
if (cam_BT.available ()) // Lire ce qui arrive via Bluetooth {BluetoothData = cam_BT.read (); Serial.print ("Incoming from BT:"); Serial.println (BluetoothData); }
Sur la base des données reçues du Bluetooth, la direction des moteurs est contrôlée. Pour faire tourner un moteur vers la gauche, le moteur est décrémenté d'une valeur de 2 par rapport à sa position précédente. Vous pouvez augmenter cette valeur de 2 à 4 ou 6 si vous avez besoin que le bras bouge plus vite. Mais cela peut créer des secousses rendant la caméra instable.
if (BluetoothData == 49) // Tourner à gauche {pos1 + = 2; servo1.write (pos1);} if (BluetoothData == 50) // Tourner à droite {pos1- = 2; servo1.write (pos1);} if (BluetoothData == 51) // Turn Up {pos2- = 2; servo2.write (pos2);} if (BluetoothData == 52) // Turn Down {pos2 + = 2; servo2.write (pos2);}
Travail:
Une fois que nous sommes prêts avec notre matériel, notre code et notre application Android, il est temps de passer à l'action. Alimentez simplement votre Arduino et ouvrez l'application Android. L'application se connectera automatiquement au module Bluetooth HC-05 (doit être nommé HC-05) et attendra qu'un visage soit détecté. Placez simplement le téléphone dans notre support mobile et asseyez-vous devant lui. Vous devriez remarquer que vos servomoteurs déplacent votre téléphone afin que votre visage soit placé au centre de l'écran. Déplacez-vous maintenant à portée de la caméra et votre téléphone portable suivra vos mouvements. Vous pouvez également l'essayer en plaçant et en déplaçant n'importe quelle image.
Le fonctionnement complet du projet est montré dans la vidéo ci-dessous. Vous pouvez construire beaucoup