Potentiomètre connecté

Objectif

L'objectif ici est de créer une application Android qui affiche la valeur de la position d'un potentiometre en interrogeant périodiquement (toutes les secondes), une carte Arduino muni d'un module bluetooth.

Prérequis : Avoir fait les activités d'initiation à Arduino et à AppInventor et l'activité précédente

DESIGNER

L'écran est similaire à la précédente application, excepté les 2 boutons qui sont remplacés par 2 labels :

• Le Label 2 à gauche affiche le message suivant « Valeur du potentiomètre ».

• Le Label1 à droite affiche les données reçues

Il y a aussi l'ajout d'un composant Clock1 qui fonctionne en timer avec un intervalle de 400ms, c'est à dire que toutes les 400 ms les données reçues sont lues et affichées dans le label3.

  • Créer un nouveau projet nommé POT_CONNECTEE sous App inventor 2.

  • Réaliser l'interface suivante :

Au centre-droit de l'écran, il y a la liste des composants que vous devez glisser et poser de la palette vers le viewer.

À l'extrême droite de l'écran apparaissent les propriétés des composants que vous devez personnaliser.

Cliquer sur Blocks (en haut à droite) pour passer à l'écriture du « code ».

BLOCKS

Réaliser le « code » suivant :

Côté Arduino

Matériel nécessaire :

  • Une carte Arduino UNO

  • Un shield GROVE

  • Un module grove Bluetooth

  • Un module grove potentiometre

Connexions :

Le potentiomètre sur A0 et le module bluetooth sur D6.

Dans le logiciel Arduino vous devez modifier le programme suivant pour obtenir

  1. Un nom original de l'interface Bluetooth

  2. Un code plus sécurisé.

1
/*
2
 * Programme permettant l'envoi de donnee analogique (potentiometre)
3
 * au smartphone. La valeur  est recue via  le module bluetooth 
4
 * connecte aux broches 6(Rx) et 7 (Tx) de la carte arduino UNO. 
5
 * Le Potentiometre doit etre relie  à la broche A0.  
6
 */
7
#include <SoftwareSerial.h>   
8
9
10
const int RxD    = 6;  // Broche de reception de donnees 
11
const int TxD    = 7;  // Broche de transmission de donnees
12
/* 
13
 * PARAMETRES BLUETOOTH :  
14
 */
15
String Nom_Du_Module = "SuperPoto"; 
16
String PIN_Du_Module = "1234";
17
    
18
SoftwareSerial blueToothSerial(RxD,TxD); // Liaison serie du module Bluetooth
19
void setup()
20
{
21
    Serial.begin(9600);
22
    Serial.println("Bluetooth module : Potentiometre");
23
24
    setupBlueToothConnection(Nom_Du_Module, PIN_Du_Module); // Configuration du module BT
25
}
26
27
void loop()
28
{
29
      
30
    int val = analogRead(A0);
31
    blueToothSerial.print(val);
32
    Serial.println(val);
33
    
34
    delay(400);
35
}
36
37
38
39
/***************************************************************************
40
 * La fonction setupBlueToothConnection() permet d'initialiser le module
41
 * Bluetooth. La confiuration est 
42
***************************************************************************/
43
void setupBlueToothConnection(String nom_du_module, String pin)
44
{  
45
  blueToothSerial.begin(9600);                     // Vitesse de transmission : 9600 bauds
46
  blueToothSerial.print("AT");                     // Reponse du module BT
47
  delay(1000); 
48
  while(blueToothSerial.available())
49
  {
50
    char recvChar = blueToothSerial.read();        // Reponse du module BT
51
    Serial.print(recvChar);
52
  }
53
  Serial.println("");
54
55
  blueToothSerial.print("AT+DEFAULT");             // Config usine (par defaut)
56
  delay(2000); 
57
  while(blueToothSerial.available()){
58
    char recvChar = blueToothSerial.read();        // Reponse du module BT
59
    Serial.print(recvChar);
60
  }
61
  Serial.println("");
62
63
  String at_command("AT+NAME"+nom_du_module);
64
  char *at_str = at_command.c_str();
65
  delay(5000);
66
  blueToothSerial.print(at_str);                    // Nom du peripherique BT  
67
                                                    // Longueure max 12 caracteres
68
  delay(5000);
69
    while(blueToothSerial.available()){
70
    char recvChar = blueToothSerial.read();        // Reponse du module BT
71
    Serial.print(recvChar);
72
  }
73
  Serial.println("");
74
  
75
76
  at_command="AT+PIN"+pin;
77
  at_str = at_command.c_str();
78
  blueToothSerial.print(at_str);             // Configuration du code PIN
79
  delay(2000);
80
  while(blueToothSerial.available()){
81
    char recvChar = blueToothSerial.read();       // Reponse du module BT
82
    Serial.print(recvChar);
83
  }
84
  Serial.println("");
85
  
86
  blueToothSerial.print("AT+AUTH1");             // 
87
  delay(2000);    
88
  while(blueToothSerial.available()){
89
    char recvChar = blueToothSerial.read();      // Reponse du module BT
90
    Serial.print(recvChar);
91
  }
92
  Serial.println("");
93
    blueToothSerial.flush();
94
95
}

On souhaite que la position de Slider 1 sur l'interface Android soit l'image de la valeur du potentiomètre. Modifier les blocs judicieusement.