Cheap Smartphone Controlled Arm (+ Option Saving Position)
by TechnoFabrique in Circuits > Arduino
1229 Views, 2 Favorites, 0 Comments
Cheap Smartphone Controlled Arm (+ Option Saving Position)
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.
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
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
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
Smartphone APP ( Made on APP Inventor 2)
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 !