Comment mémoriser une valeur reçue par bluetooth ?

La carte « Makeblock » peut utiliser de nombreux capteurs. Ici nous allons utiliser un capteur de température connecté à la carte via un bus I2C.

L'exercice suivant permet de transférer ces deux valeurs via un émetteur Bluetooth et de les afficher sur son smartphone.

Câblage

Réaliser le câblage de la photo suivante :

Remarques :

  • La broche « GND » du capteur reliée à une borne NOIRE « A6 » de la carte.

  • La broche « VCC » du capteur reliée à une borne ROUGE « A6 » de la carte.

  • La broche « SDA » du capteur reliée à une borne JAUNE « SDA » (Serial Data Line) de la carte.

  • La broche « SCL » du capteur reliée à une borne JAUNE « SCL » (Serial Clock Line) de la carte.

Insérer le module bluetooth « HC-05 » comme représenté sur la photo ci-contre, en respectant le sens

Faire vérifier votre câblage au professeur avant de mettre les piles et de relier la carte au PC.

Programmation

Ouvrir le programme « Arduino »

Aller dans le menu « Outils - Type de carte » et choisir « Arduino/Genuino Mega or Mega2560 ».

Raccorder votre carte à votre ordinateur avec le câble USB fourni.

 

Aller dans le menu « Outils - Port » et choisir le port USB où votre carte est reliée.

Aller dans le menu « Fichier - Exemples » et vérifier la présence du répertoire « MakeBlockDrive » et du répertoire « Grove Temperature And Humidity Sensor ».

 

En cas d'absence, charger la bibliothèque « MeMegaPi.h »

En cas d'absence, charger la bibliothèque « Seeed_MCP9808.h »

Saisir le programme suivant.

1
#include "MeMegaPi.h"  //bibliotheque pour la carte
2
#include "Seeed_MCP9808.h"
3
4
5
MCP9808  sensor;
6
7
void setup() {
8
    
9
    Serial3.begin(9600); //déclaration du bluetooth
10
    Serial.begin(9600); //liaison pour le moniteur série
11
    if (sensor.init()) {
12
    Serial.println("Capteur défaillant!!");
13
    }
14
    //La limite supérieure est 30°C
15
    sensor.set_upper_limit(SET_UPPER_LIMIT_ADDR, 0x01e0);
16
    delay(10);
17
    //La limite critique est 32°C
18
    sensor.set_critical_limit(SET_CRITICAL_LIMIT_ADDR, 0x0200);
19
    delay(10);
20
    //Activer le bit d'alerte.Le bit d'alerte est au niveau bas lorsqe les limites de température sont atteintes.
21
    sensor.set_config(SET_CONFIG_ADDR, 0x0008);
22
    
23
    Serial.println("Capteur initialisé!!");
24
}
25
26
27
void loop() {
28
    float temp = 0;
29
    //Lecture de la température, valeur décimale.
30
    sensor.get_temp(&temp);
31
    Serial3.print(temp); //transfert de la température via le bluetooth
32
    Serial.print("La valeur de la température est : ");
33
    Serial.println(temp);
34
    delay(1000);
35
}

Téléverser votre programme dans la carte .

 

Application « App Inventor »

Les valeurs seront affichées grâce à la modification du nom d'un « Label »

En mode « Designer »

En mode « Blocs »

 

Les lignes de programme ci-contre permettent d'établir ou d'interrompre la liaison bluetooth .

Lorsque la liaison est établie, le message « Connecté » sera diffusé par le téléphone.

Les lignes de programme ci-contre permettent de :

  • Créer une variable « temperature » pour stocker la valeur en temps réelle de la température

  • Créer une variable « temp_zone » pour stocker la valeur de la température dans la zone souhaitée.

  • Mettre à jour la variable « temperature » en récupérant la valeur de la température envoyée par liaison bluetooth

  • Afficher la valeur de la variable « temperature » et d'ajouter l'unité « °C » après la valeur de la température.

Les lignes de programme ci-contre permettent de :

  • L'appui de la touche « MEM » fait :

  • mettre la valeur de la variable « temperature » dans la variable « temp_zone ».

  • Afficher la valeur de la variable « temp_zone » et d'ajouter l'unité « °C » après la valeur de la température.