Février 2017 , par Techno_fabrik
Difficulté :
Durée :
Projet : Little_robot commandé par smartphone
LE PROJET
Piloter un petit robot composé de trois Servo-Moteurs .
Le smartphone commandera le robot avec une application créée sur app inventor 2.
On commandera les trois rotations une par une et une commande vocale fera dire oui /non au robot.
MATÉRIEL :
1 module ARDUINO UNO
3 Servo-Moteurs
1 module Bluetooth (HC-06)
1 batterie 12V
PRÉREQUIS :
Connaissance des risques électriques. Montage réalisable par tous. Notion d'électronique et bases en programmation.
RÉALISATION
ETAPE 1 : Servo-Moteurs
Brancher en série les masse et Vin des moteurs, et connecter les pins de commandes au pin 2,3,4. Le pin de commande permet de fixer l'angle au servo.
ETAPE 2 : Module Bluetooth
On connecte Tx <--> Rx entre le module et la carte, puis le Vcc au +5V et le GND à la masse.
Cela va nous permettre de communiquer avec le télephone.
Programme (codé en C)
// 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 :
// - 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 <Servo.h> // bibliothèque permettant d'utiliser les commandes pour servomoteurs facilement
//********************DECLARATIONS****************************
word rep; // mot envoyé du module Arduino au smartphone
int cmd = 2; // variable commande du servo moteur ( troisième fil ( orange, jaune ))
Servo moteur; //on définit notre servomoteur
int cmd1 = 3;
Servo moteur1;
int cmd2 = 4;
Servo moteur2;
int angle;
int angle1;
int angle2;
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);
moteur.write(85);
moteur1.write(20);
moteur2.write(10);
Serial.begin(9600); // permettra de communiquer au module Bluetooth
}
//********************SETUP***********************************
void loop() {
recevoir(); // on va recevoir une information du smartphone , la variable w
for (int i=0;i<35;i++)
{
if ( w == i)
{
angle = i;
}
}
for (int i=35;i<=49;i++)
{
if ( w == i)
{
angle1 = i;
}
}
for (int i=50;i<=82;i++)
{
if ( w == i)
{
angle2 = i;
}
}
if (w==90)
{
moteur.write(20);delay(200);
moteur.write(80);delay(200);
moteur.write(20);delay(200);
moteur.write(80);delay(200);
delay(4000);
}
if(w==95)
{
moteur2.write(0);delay(200);
moteur2.write(30);delay(200);
moteur2.write(0);delay(200);
moteur2.write(30);delay(200);
delay(4000);
}
for(int i=0;i<35;i++) // MOTEUR ROTATION 0 a 170 degre
{
int j=0;
j=i*5;
if (angle== i)
{
moteur.write(j);delay(300);
}
}
for(int i=35;i<50;i++) // MOTEUR ROTATION 15 a 85 degre
{
int j=0;
j=(i-32)*5;
if (angle1== i)
{
moteur1.write(j);delay(300);
}
}
for(int n=50;n<83;n++) // MOTEUR2 ROTATION 0a 160degre
{
int o=0;
o=(n-50)*5;
if (angle2== n)
{
moteur2.write(o);delay(300);
}
}
}
//****************************FONCTIONS************************************
void recevoir() { // fonction permettant de recevoir l'information du smartphone
if (Serial.available()) {
w = Serial.read();
delay(300);
Serial.flush(); }}