|  | TP n°13 : Réseau sans fil Bluetooth |  | 
| Noms : | ||
| Centre d'intérêt : | Communication entre systèmes | |
| Classe : | Terminale Sti2d Sin | |
| Id programme : | sin17, sin19, sin22, sin29, sin33, sin36, sin39 | |
| Condition : | En binôme, durée 2 heures. | |
| Matériel : | - Carte dfrobot Roméo ( Arduino ); | |
| Logiciel : | - IDE Flashdevelop pour As3 - IDE Arduino | 
I. Objectifs
- Etudier un réseau sans fil Bluetooth;
 - Créer une application qui commande un robot mobile à l'aide d'une tablette.
II. Le module bluetoothV3
Pour réaliser votre application, vous utiliserez le module BluetoothV3 de DFRobot.

Source : http://www.dfrobot.com/wiki/images/thumb/8/89/TEL0026.jpg/300px-TEL0026.jpg
2.1. Etude documentaire
A partir des liens suivants répondre aux questions ci-dessous :
http://www.dfrobot.com/wiki/index.php?title=DF-BluetoothV3_Bluetooth_module_(SKU:TEL0026)
et
http://fr.wikipedia.org/wiki/Bluetooth
Quel est l'intérêt des réseaux bluetooth ?
Quelle est la classe du module BluetoothV3 ?
En déduire pour le module BluetoothV3 :
| La portée du signal en champ libre: | |
| Le débit maximum : | |
| La puissance d'émission du signal: | |
| La bande de fréquences utilisée : | |
| Le type de modulation : | |
| La norme utilisée : | 
Calculer sa puissance électrique consommée pour une tension d'alimentation de 5V.
Donner les 2 types de topologie pour le Bluetooth ( nom et schéma ):
|  |  | 
| Nom : | Nom : | 
2.2. Nouvelle technologie : BLE ou Bluetooth Low Energy (Classe 4)
Donner l'intérêt de cette nouvelle technologie :
III. Application avec le bluetooth
3.1. Cahier des charges
Un client souhaite une application mobile qui commande un robot mobile à l'aide d'une tablette en utilisant une liaison Bluetooth.
Le diagramme Sysml de cas d'utilisation est le suivant :
 
Quelle topologie allez-vous réaliser pour cette application?
3.2. Eléments pour réaliser l'activité
Le diagramme de classe du programme est le suivant :
 
Description des classes utilisées :
| Nom de la classe | Description de la classe | 
| MajnPages | Gestion des Pages de l'application. | 
| ExtendsBluetooth | Gestion du bluetooth 'connexion déconnexion, transfert et réception des données). | 
| Main | La classe principale. | 
| ExtendsClass | Classe commune à toutes les pages de l'application. Elle sert à déclarer les attributs communs ( variables ) à toutes les pages (largeur, hauteur, titre, singleton ...) | 
| Sommaire | Créer les pages de l'application. | 
| Joystick | La page pour commander le robot arduino. | 
| MonSingleton | Elle centralise les attributs (variables) et dispatche les événements de l'application ( clique bouton, changement de page, retour page, ...) | 
Le robot devra réagir aux requêtes suivantes :
| requète | ||
| avancer | <a> | advance | 
| arrêt | <s> | stop | 
| gauche | <l> | left | 
| droite | <r> | right | 
| marche arrière | <b> | back off | 
Le diagramme de séquence de l'application est la suivante :
 
IV. Réalisation de l'IHM
4.1. Algorithme
A l'aide des éléments précédents, compléter l'algorithme pour que la tablette envoie les commandes ci-dessus.
| Algorithme | 
| Classe Joystick ~ Créer les objets ~ Créer l'objet croix ~ Pour afficher les commandes envoyées vers le robot ~    Positionner et mettre label dans le conteneur 
 Fin ~ Fin procédure mouseClique ~ | 
Appeler le professeur pour faire valider l'algorithme.
4.2. Programmation de la classe Joystick
Lancer Flashdevelop et ouvrir le projet Bluetooth mobile. Compléter la classe Joystick.as pour répondre à l'algorithme.
Copier ci-dessous le code que vous avez réalisé.
V. Programmation du robot arduino
En vous aidant des 2 programmes ci-dessous, réalisez le programme pour commander le robot mobile à l'aide de la tablette.
Programme 1 : Commande la led 13 à l'aide de la tablette.
si <a> -> allumer led 13 
 si <s> -> éteindre led 13
// la variable qui recupère les requêtes reçues
String command;
void setup() {
   // initialise le port série à 9600 bits par seconde:
    Serial.begin(9600);
//initialise la borne 13
pinMode(13, OUTPUT);
//initialise la variablecommand
   command = "";
}
//boucle inifnie
void loop() {
    // Ecoute le port serie Rx:
    while(Serial.available()>0)
    {
       char c = (char)Serial.read(); 
       //Serial.println(c);
 
       if(c == '<')//Debut message
          {command = "";
          }
       else if(c != '>') //Fin message avec >
          {command += c;
          }
       else {
          //traite la commande reçue 
          if(command=="a") digitalWrite(13,HIGH);
          if(command=="s") digitalWrite(13,LOW);
          //Serial.println(command);
       }
 
    }//fin boucle conditionnelle while
}//fin fonction loop
Programme 2 : Commande les moteurs du robot arduino
#include <MotorDC.h>
MotorDC moteur(255); //Créer une variable moteur (instance ou objet)
void setup()
{
}
void loop()
{
   //les commandes du robot:
   moteur.advance(); //Le robot avance 
   delay(1000);
   moteur.back_off(); //Le robot recule 
   delay(1000);
   moteur.turn_Left(); //Le robot tourne à gauche
   delay(1000);
   moteur.turn_Right(); //robot tourne à droite 
   delay(1000);
   moteur.stop(); //Le robot s'arrête.
   delay(1000);
   moteur.newSpeed(200);//change la vitesse du robot.
}
Lancer l'IDE Arduino et réaliser le programme pour que le robot réagisse aux requêtes de la tablette.
Ecrire votre programme dans le bloc ci-dessous.
Tester votre programme et le faire valider par le professeur.
V. Conclusion
Faire une synthèse du TP
 
	
    
       
	
    		 
 