Comment faire un bras robotique contrôlé par Arduino et Bluetooth?

Comment faire un bras robotique contrôlé par Arduino et Bluetooth?

Au siècle dernier, la robotique est le domaine de recherche le plus émergent. Les robots ont pris le contrôle de presque tout ce que les humains faisaient auparavant. Nous pouvons voir des robots autonomes effectuer diverses tâches dans notre société. Il existe également des robots télécommandés qui nous aident à effectuer diverses opérations. De la fabrication de nano circuits dans le domaine de l'ingénierie à la réalisation de chirurgies complexes dans le domaine médical, les robots sont plus fiables que les êtres humains.

Bras robotique



Dans ce projet, nous allons fabriquer un bras robotisé qui sera contrôlé par un microcontrôleur Arduino. Il sera contrôlé via Bluetooth à l'aide d'une application de contrôle à distance Android.



Comment contrôler un bras robotisé à l'aide d'Arduino?

Maintenant que nous connaissons le résumé de notre projet. Collectons plus d'informations sur les circuits et commençons à construire un bras robotique contrôlé par Bluetooth et contrôlons-le via Bluetooth.

Étape 1: collecte des composants

La meilleure approche pour démarrer un projet est de dresser une liste complète des composants. Ce n'est pas seulement une manière intelligente de démarrer un projet, mais cela nous évite également de nombreux inconvénients au milieu du projet. Une liste des composantes de ce projet est donnée ci-dessous:



  • Émetteur-récepteur série Bluetooth sans fil HC-05
  • Adaptateur 6V
  • Fils de cavalier
  • Planche à pain

Étape 2: étude des composants

Comme nous avons une liste complète de tous les composants que nous allons utiliser, avançons d'un pas et passons par une brève étude de tous les composants.

Arduino Nano est une carte microcontrôleur qui effectue diverses opérations dans différents circuits. Cela nécessite un Code C cela indique au conseil les tâches à effectuer et comment. Il dispose de 13 broches d'E / S numériques, ce qui signifie que nous pouvons faire fonctionner 13 appareils différents. Arduino Nano a exactement les mêmes fonctionnalités que Arduino Uno mais dans une taille assez petite. Le microcontrôleur de la carte Arduino Nano est ATmega328p. Si vous souhaitez contrôler plus de 13 appareils, utilisez Arduino Mega.

Arduino Nano



Émetteur-récepteur série Bluetooth sans fil HC-05 : Nous avons besoin d'une communication sans fil dans ce projet, nous allons donc utiliser la technologie Bluetooth et pour ce module qui sera utilisé est HC-05. Ce module dispose de plusieurs vitesses de transmission programmables mais la vitesse de transmission par défaut est de 9600 bps. Il peut être configuré en maître ou en esclave, tandis qu'un autre module HC-06 ne peut fonctionner qu'en mode esclave. Ce module a quatre broches. Un pour VCC (5V) et les trois autres pour GND, TX et RX. Le mot de passe par défaut de ce module est 1234 ou 0000 . Si nous voulons communiquer entre deux microcontrôleurs ou communiquer avec n'importe quel appareil doté de la fonctionnalité Bluetooth comme un téléphone ou un ordinateur portable, HC-05 nous aide à le faire. Plusieurs applications Android sont déjà disponibles, ce qui facilite grandement ce processus.

Module Bluetooth HC-05

Un typique Bras robotique se compose de plusieurs segments et comporte généralement 6 joints. Il contient au minimum 4 moteurs pas à pas qui sont contrôlés par l'ordinateur. Les moteurs pas à pas sont différents des autres moteurs à courant continu. Ils se déplacent précisément par incréments exacts. Ces bras robotiques sont utilisés pour effectuer diverses opérations. Nous pouvons les faire fonctionner manuellement via une télécommande ou nous pouvons les programmer pour qu'ils fonctionnent de manière autonome.

Bras robotique.

Étape 3: assemblage des composants

Maintenant que nous savons le fonctionnement de tous les principaux composants utilisés. Commençons à les assembler et à créer un circuit pour construire un bras robotique télécommandé.

  1. .Fixez la carte Arduino Nano sur la maquette. L'Arduino sera alimenté par le fil positif et négatif de l'adaptateur.
  2. Placez également le module Bluetooth sur la maquette. Mettez le module Bluetooth sous tension via Arduino. Connectez la broche Tx du module Bluetooth à la broche Rx de la carte Arduino Nan et connectez la broche Rx du module Bluetooth à la broche Tx de la carte Arduino Nano.
  3. Comme nous le savons, il existe 4 moteurs pas à pas. Chacun a un nom technique. Ils s'appellent Coude , Épaule , Base, et Pince . Le Vcc et la masse de tous les moteurs seront communs et connectés au positif et au négatif de l'adaptateur 6V. La broche de signal des quatre moteurs sera connectée aux broches 5, 6, 9 et 11 d'Arduino Nano.
  4. Assurez-vous que les connexions que vous avez effectuées sont conformes au schéma de circuit suivant.

    Schéma

Étape 4: Premiers pas avec Arduino

Si vous n'êtes pas déjà familiarisé avec l'IDE Arduino, ne vous inquiétez pas car une procédure étape par étape pour configurer et utiliser Arduino IDE avec une carte microcontrôleur est expliquée ci-dessous.

  1. Téléchargez la dernière version d'Arduino IDE à partir de Arduino.
  2. Connectez votre carte Arduino Nano à votre ordinateur portable et ouvrez le panneau de commande. Ensuite, cliquez sur Matériel et son . Maintenant, cliquez sur Appareils et imprimantes. Trouvez ici le port auquel votre carte microcontrôleur est connectée. Dans mon cas c'est COM14 mais c'est différent sur différents ordinateurs.

    Trouver un port

  3. Cliquez sur le menu Outil et réglez la carte sur Arduino Nano dans le menu déroulant.

    Conseil de réglage

  4. Dans le même menu Outil, définissez le port sur le numéro de port que vous avez observé auparavant dans le Appareils et imprimantes .

    Réglage du port

  5. Dans le même menu Outil, définissez le processeur sur ATmega328P (ancien chargeur de démarrage).

    Processeur

  6. Pour écrire du code pour faire fonctionner les servomoteurs, nous avons besoin d'une bibliothèque spéciale qui nous aidera à écrire plusieurs fonctions pour les servomoteurs. Cette bibliothèque est jointe avec le code, dans le lien ci-dessous. Pour inclure la bibliothèque, cliquez sur Sketch> Inclure la bibliothèque> Ajouter un ZIP. Bibliothèque.

    Inclure la bibliothèque

  7. Téléchargez le code ci-dessous et collez-le dans votre IDE Arduino. Clique sur le télécharger bouton pour graver le code sur votre carte microcontrôleur.

    Télécharger

Pour télécharger le code, cliquez ici.

Étape 5: Téléchargement de l'application

Comme nous avons maintenant assemblé l'ensemble des circuits et téléchargé le code dans la carte microcontrôleur. permet de télécharger une application mobile qui fonctionnera comme une télécommande pour le bras robotique. Une application gratuite est disponible sur le Google Play Store. Le nom de l'application est le Contrôle du robot Little Arm . Pour établir une connexion Bluetooth, activez le Bluetooth sur votre mobile. Accédez aux paramètres et associez votre mobile au module HC-05. Après cela, appuyez sur le bouton Bluetooth de l'application. S'il devient vert, cela signifie que l'application est maintenant connectée et prête à utiliser le bras robotique. Il y a des curseurs pour régler le fonctionnement du bras robotique comme souhaité.

App

Étape 6: Comprendre le code

Le code est bien commenté et facile à comprendre. Mais encore, il est brièvement expliqué ci-dessous.

1. Au début, une bibliothèque est incluse pour écrire un code pour faire fonctionner les servomoteurs. Une autre bibliothèque math.h est inclus pour effectuer différentes opérations mathématiques dans le code. Quatre objets sont également initialisés pour être utilisés pour les quatre servomoteurs.

#include // bibliothèque arduino #include // bibliothèque c standard #define PI 3.141 Servo baseServo; Servo épauleServo; Servo elbowServo; Servo gripperServo; commande int;

2. Ensuite, une structure est déclarée prendre des valeurs pour les servomoteurs de base, d'épaulement et de coude.

struct jointAngle {// Déclairer une structure int base; épaule int; coude int; };

3. Après cela, certaines variables sont initialisées pour stocker la poignée, le retard et la position souhaités du servomoteur. la vitesse est fixée à 15 et un objet est amené à prendre la valeur de l'angle dans la structure.

int désiréGrip; int gripperPos; int désiréDelay; int servoSpeed ​​= 15; int prêt = 0; struct jointAngle souhaitéAngle; // angles souhaités des servos

Quatre. void setup() est une fonction utilisée pour définir les broches d'Arduino comme INPUT ou OUTPUT. Ici dans cette fonction, nous avons déclaré que la broche des moteurs sera connectée à quelles broches de l'Arduino. Il est également garanti que l'Arduino ne lit pas l'entrée série pendant trop longtemps. La position initiale et le débit en bauds sont également définis dans cette fonction. Le débit en bauds est la vitesse à laquelle la carte microcontrôleur communiquera avec les servos et le module Bluetooth connectés.

void setup () {Serial.begin (9600); baseServo.attach (9); // attache le servo de base sur la broche 9 à l'objet servo ShoulderServo.attach (10); // attache le servo d'épaule sur la broche 9 à l'objet servo elbowServo.attach (11); // attache le servo du coude sur la broche 9 à l'objet servo gripperServo.attach (6); // attache le servo de la pince sur la broche 9 à l'objet servo Serial.setTimeout (50); // garantit que l'arduino ne lit pas série trop longtemps Serial.println ('started'); baseServo.write (90); // positions initiales des servos épauleServo.write (150); elbowServo.write (110); prêt = 0; }

5. servoParallelControl () est une fonction qui permet de détecter la position actuelle du bras robotique et de le déplacer selon la commande donnée via l'application mobile. Si la position actuelle est inférieure à la position réelle, le bras se déplacera vers le haut et vice versa. Cette fonction renverra la valeur de la position actuelle et la vitesse du servo.

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // lit la position actuelle int newPos = startPos; // int theSpeed ​​= vitesse; // définit où se trouve la pos par rapport à la commande // si la position actuelle est inférieure au déplacement réel vers le haut if (startPos (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); delay (theSpeed); return 0; } else {return 1; }}

6. boucle vide () est une fonction qui s'exécute à plusieurs reprises dans une boucle. Cette fonction lit les données arrivant en série et stocke l'angle de chaque servo dans la structure. Au départ, l'état de tous les servos est mis à zéro. Ici une fonction servoParallelControl () est appelé et les paramètres y sont passés. cette fonction retournera la valeur et elle sera stockée dans une variable d'état.

void loop () {if (Serial.available ()) {ready = 1; désiréAngle.base = Serial.parseInt (); désiréAngle.shoulder = Serial.parseInt (); désiréAngle.elbow = Serial.parseInt (); désiréGrip = Serial.parseInt (); désiréDelay = Serial.parseInt (); if (Serial.read () == ' n') {// si le dernier octet est 'd' alors arrêtez la lecture et exécutez la commande 'd' signifie 'done' Serial.flush (); // efface toutes les autres commandes empilées dans le tampon // envoie l'achèvement de la commande Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int done = 0; while (done == 0 && ready == 1) {// déplacer le servo à la position désirée status1 = servoParallelControl (desireAngle.base, baseServo, desireDelay); status2 = servoParallelControl (souhaitéAngle.shoulder, épauleServo, souhaitéDelay); status3 = servoParallelControl (souhaitéAngle.elbow, elbowServo, desireDelay); status4 = servoParallelControl (désiréGrip, gripperServo, désiréDelay); if (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // fin de while}

Maintenant, c'était toute la procédure de fabrication d'un bras robotique. Après avoir gravé le code et téléchargé l'application, le robot devrait fonctionner parfaitement lorsque les curseurs de l'application sont déplacés. Vous pouvez également programmer le bras pour qu'il fonctionne de manière autonome pour effectuer la tâche souhaitée.