Introduction: Cheap Smartphone Controlled Arm (+ Option Saving Position)

About: Tech, DIY and Arduino Realisation If you liked it , come check our sites Website :http://technofabrique.wixsite.com/techno-fabrik Google +:https://plus.google.com/109229784299061111421

The project

Drive a robotic arm controlled by smartphone using bluetooth device.

Mode bonus : we have a button that allow the arduino to remember a position. Whenever we want, we can go to this saved position with another button.

FR

LE PROJET

Commander un bras robotisé construit à partir de carton et de servo-moteurs.

Le bras sera constitué d'une pince qui doit pouvoir prendre et poser un objet.

On commandera le bras par smartphone qui communiquera en bluetooth à l'arduino.

Mode bonus : Un bouton nous permettra de sauvegarder une position du bras. Lorsque l'on le souhaitera, nous pourrons retourner à la position sauvegardée.

Step 1: Materials You Need

EN

1 Arduino UNO

4 servo-motors SG90 (9g ,torque : 1kg.cm)

1 Stepper Motors 5V 24BYJ48 ( torque : 39mN.m)

1 driver for the stepper motors DRV8825

1 alimentation 9V + 6V for the motors

1 Bluetooth module HC-06

Glue pistol, carton, wire, elasctic

FR

1 module Arduino Uno

4 servo-moteurs SG90 9g (couple : 1kg.cm)

1 moteur pas-à-pas 5V (39mN.m) 24BYJ48

1 driver moteur pap DRV8825

1 alimentation 9V pour l'arduino et 6V pour les moteurs

1 module Bluetooth HC-06 Pistolet à colle, carton, fils connection, élastique

Step 2: SETUP

FR


ETAPE 1: Module Bluetooth
Le module bluetooth (HC-06) est connecté de la manière suivante:

Rx --> Tx

Tx --> Rx

GND --> GND

VCC --> +5V

Il va permettre d'établir la communication entre l'Arduino et le smartphone, via la voie Série (9600) .

ETAPE 2 : Le moteur pas à pas 24BYJ48

Nous avons connecté le moteur bipolaire pas à pas 24BYJ48 à son driver associé contenant le circuit ULN2003. Il suffit de connecter les inputs INx (x = 1,2,3,4) aux sorties digitales de l'arduino. On alimentera le driver en +5V.

Pour coder, nous utiliserons la bibliothèque Stepper.h , ce qui nous permet de commander facilement le moteur en lui donnant la vitesse : nom.setSpeed(vitesse), ainsi que le pas désiré : nom.step(+ou- pas)

ETAPE 3 : Les servo-moteurs SG90

Les servos moteurs se commandent facilement. Il suffit de brancher le fil rouge au +5V, le noir à la masse et le fil restant à une sortie PWM de l'arduino. On choisira ensuite l'angle du servo via la PWM ( 0 à 255).

Nous utiliserons la bibliothèque servo.h pour commander facilement le servo. Tout d'abord, on initialera le servo par son nom : Servo nom_servo, puis on lui rattachera la commande PWM : nom_servo.attach(pin choisi). Enfin, on commandera l'angle voulu : nom_servo.write(angle de 0 à 180).

ETAPE 4 : Fabriquer le support Le support à été fabriqué en carton. Après avoir réalisé la base sur laquelle va tourner le bras et ou sera mis le moteur pas à pas, nous avons collé les servos moteurs à du carton pour donner la forme finale. La pince à été créée à partir de bâton de glace et fonctionne avec un élastique

Step 3: The Code

// 24/02/2017 - Programme C - Commande de plusieurs servo moteurs dynamiques par smartphone, via bluetooth - App inventor 2 utilisé - Carte Arduino ( ici UNO) , module Bluetooth// Ce programme a pour objectif de :  ////Le moteur (fils 1 2 3 4) est branché sur les sorties 8  12 10 11 de l'Arduino (et sur GND, +V)   Stepper small_stepper(STEPS, 8, 10, 12, 11);      //********************DECLARATIONS**************************** word rep;   // mot envoyé du module Arduino au smartphone int cmd = 3; // variable commande du servo moteur ( troisième fil ( orange, jaune )) Servo moteur; //on définit notre servomoteur int cmd1 = 5; Servo moteur1; Servo moteur2;Servo moteur3; int cmd2=9; int cmd3=6; int angle2,angle3; int angle; int angle1; int pas; int r,r1,r2,r3; int enregistrer; word w; // variable envoyé du smartphone au module Arduino int angle; // angle de rotation ( 0 a 180) //********************SETUP*********************************** void setup() {   moteur.attach(cmd); // on relie l'objet au pin de commande   moteur1.attach(cmd1);   moteur2.attach(cmd2);   moteur3.attach(cmd3);   moteur.write(12);   moteur1.write(23);   Serial.begin(9600); // permettra de communiquer au module Bluetooth } //********************BOUCLE*********************************** void loop() { recevoir();    // on va recevoir une information du smartphone , la variable w if (w==206)reproduire();// va nous permettre de reproduire la position enregistrée if(w==205)enregistrer=1;// va nous permettre d'enregistrer la valeur des servos moteurs lorsque l'on apuiera sur un bouton if (w==204)enregistrer=0;   for (int k=100;k<151;k++)     {       if ( w == k)       {         angle2 = map(k,100,150,0,180);         moteur2.write(angle2);         if (enregistrer==1)r2=angle2;       }     }       for (int j=151;j<201;j++)     {       if ( w == j)       {         angle3 = map(j,151,200,0,150);         moteur3.write(angle3);        if (enregistrer==1) r3=angle3;       }     }     for (int i=0;i<34;i++)     {       if ( w == i)       {         angle = map(i,0,34,0,70);         moteur.write(angle);         if (enregistrer==1)r=angle;       }     }     for (int l=34;l<=66;l++)     {       if ( w == l)       {         angle1 = map(l,34,66,90,0);         moteur1.write(angle1);         if (enregistrer==1)r1=angle1;       }     }     for (int m=67;m<=99;m++)     {       if ( w == m)       {                  if (w<79){small_stepper.setSpeed(80);small_stepper.step(5);}         if (w>86){ small_stepper.setSpeed(80);small_stepper.step(-5);}         else small_stepper.step(0);       }     } } //****************************FONCTIONS************************************ void reproduire()// fonction permettant de reproduire la position sauvegardée {   moteur2.write(r2);moteur.write(r);moteur1.write(r1);moteur3.write(r3); } void recevoir() { // fonction permettant de recevoir l'information du smartphone if (Serial.available()) {   w = Serial.read(); Serial.flush();   }}                                     -  Connecter le Servo moteur + module bluetooth au module arduino  //                                     -  Envoyer un mot/phrase/nombre au smartphone //                                     -  Recevoir une commande via smartphone  // Programme réalisé par Techno_Fabrik //********************BIBLIOTHEQUES**************************** #include   #include// bibliothèque permettant d'utiliser les commandes pour servomoteurs facilement #include

Step 4: Smartphone APP ( Made on APP Inventor 2)

Step 5: Video Realisation

Thanks you for watching .!

To know more , check our website :http://bit.ly/2fTzc63

Or follow us on Google +: http://bit.ly/2uQERR8

Thanks !