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