Février 2017 , par Techno_fabrik
Difficulté :
Durée :
Commander un Servo-moteur avec un smartphone par bluetooth avec ARDUINO
LE PROJET
Commander l'angle de rotation d'un Servo-moteur par bluetooth via smartphone avec un module ARDUINO UNO. Nous voulons pouvoir comander l'angle de rotation d'un servo-moteur ( 0 à 180°), en utilisant notre smartphone. Il faudra réaliser une application sur APP INVENTOR 2, permettant, avec notre smartphone, de nous connecter au module bluetooth et de contrôler le moteur.
MATÉRIEL :
1 module ARDUINO UNO ( un autre module est bon )
1 servo-moteur ( ici, fonctionnant à 5V)
1 module Bluetooth
1 smartphone, avec l'application 'MIT AI2 Companion'
PRÉREQUIS :
Connaissance des risques électriques. Montage réalisable par tous. Notion d'électronique et bases en programmation.
RÉALISATION
ETAPE 1 :
Se munir du matériel adéquat et vérifier le bon fonctionnement de celui-ci.
ETAPE 2 :
Relier le module Bluetooth : VCC au pin '5V', GND au GND, TXD au pin '0(RX)' et RXD au pin'1(TX)'.
ETAPE 3:
Relier le servo moteur à la masse et au Vin ( attention seulement si connecté en usb ou 5V). Le fil de commande ira au pin '8'.
ETAPE 4:
Réaliser sur APP INVENTOR 2 l'application ci-contre, composé de LABELS, BOUTONS et d'une horloge et d'une réception bluetooth.
ETAPE 5 :
Construire les blocs comme ci-après.
ETAPE 6:
Se connecter avec le smartphone.
ETAPE 7:
Ecrire le code et téléverser sur la carte.
PROGRAMME ( codé en C) :
// 25/01/2017 - Programme C - Commande d'un servo moteur par smartphone, via bluetooth - App inventor 2 utilisé - Carte Arduino ( ici MEGA ) , 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 = 8; // variable commande du servo moteur ( troisième fil ( orange, jaune ))
Servo moteur1; //on définit notre servomoteur
word w; // variable envoyé du smartphone au module Arduino
int angle; // angle de rotation ( 0 a 180)
//********************SETUP***********************************
void setup() {
moteur1.attach(cmd); // on relie l'objet au pin de commande
Serial.begin(9600); // permettra de communiquer au module Bluetooth
}
//********************BOUCLE**********************************
void loop() {
recevoir(); // on va recevoir une information du smartphone , la variable w
for (int i=1;i<11;i++)
{
if ( w == i)
{
angle = i;
}
}
switch ( angle ) // la variable w recu est un chiffre entre 1 et 8, codé par APP INVENTOR 2 , nous voulons réaliser 180° au bout des 9 valeurs
{ // rep est envoyé via void envoyer() sur l'écran du smartphone, c'est un retour du bon fonctionnement, en plus de la rotation
case 1 : moteur1.write(20); delay (1000); rep = 0; envoyer(); break;
case 2 : moteur1.write(45); delay (1000); rep = 25; envoyer(); break;
case 3 : moteur1.write(70); delay (1000);rep = 50; envoyer(); break;
case 4 : moteur1.write(95); delay (1000);rep = 75; envoyer(); break;
case 5 : moteur1.write(110); delay (1000);rep = 100; envoyer(); break;
case 6 : moteur1.write(132); delay (1000);rep = 125; envoyer(); break;
case 7 : moteur1.write(155); delay (1000);rep = 150; envoyer(); break;
case 8 : moteur1.write(180); delay (1000);rep = 180; envoyer(); break;
default : ;
}
}
//****************************FONCTIONS************************************
void recevoir() { // fonction permettant de recevoir l'information du smartphone
if (Serial.available()) {
w = Serial.read();
Serial.flush();
}
}
// fonction permettant d'emettre l'information au smartphone
void envoyer(){
Serial.print(rep);
delay(1000);
}