0% ont trouvé ce document utile (0 vote)
16 vues6 pages

Tp1 Enocean Arduino

Le document décrit un TP sur le traitement de trames EnOcean avec une carte Arduino, incluant la réception de données de température et le contrôle d'une LED via un interrupteur. Il présente les matériels nécessaires, l'étude des trames, et fournit des exemples de programmation pour afficher la température sur un écran LCD et contrôler l'allumage d'une LED. Des instructions détaillées sur l'utilisation de bibliothèques et la gestion des interruptions sont également incluses.

Transféré par

ismail.ozturk5775
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
16 vues6 pages

Tp1 Enocean Arduino

Le document décrit un TP sur le traitement de trames EnOcean avec une carte Arduino, incluant la réception de données de température et le contrôle d'une LED via un interrupteur. Il présente les matériels nécessaires, l'étude des trames, et fournit des exemples de programmation pour afficher la température sur un écran LCD et contrôler l'allumage d'une LED. Des instructions détaillées sur l'utilisation de bibliothèques et la gestion des interruptions sont également incluses.

Transféré par

ismail.ozturk5775
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Lycée Condorcet de Schoeneck STS CIEL

TP Sujet : Traitement d’une trame ENOCEAN avec une carte


Arduino

Matériel et logiciel nécessaire :


Durée : 4h
 Module CLICK ENOCEAN
 CLICK shield
 GROVE Shield ENOCEAN
 Afficheur GROVE LCD RGB BACKLIGHT
 Led GROVE
 Clé USB EnOcean
 Capteur de température EnOcean
 Interrupteur EnOcean

Mise en situation

L’objectif est de réaliser un objet permettant la réception de trames EnOcean de types


4BS et 1BS :
 Afficher sur un afficheur LCD la température mesurée par une sonde EnOcean
 Commander l’allumage en tout ou rien d’un équipement (ici ce sera une Led) à partir
d’un interrupteur EnOcean

I. Etude des trames EnOcean

1. A l’aide du logiciel DolphinVIEW, relever les trames radio et série de la sonde de


température et compléter le tableau suivant.

Trames : 0080CAD1

Remarque : il est important pour la suite du TP de bien repérer les longueurs des trames séries
et les ID et Valeurs de données en faisant des copies d’écran de dolphinView :

1 Sélectionner le
bon port com et se 3 Aller dans trame
connecter analyzer

2 Sélectionner la
trame souhaitée

ANDRE Richard 1
Lycée Condorcet de Schoeneck STS CIEL

Sonde de température :

Type de trame (RPS,1BS ou 4BS 4 Byte communication


4BS)
Identifiant 0080cad1
Exemple de trame radio A5 08 28 17 81 00 80 CA D1 00
Longueur trame radio (nb 10 Octets
d’octets)
Exemple de trame série 55 00 0A 07 01 EB A5 08 28 17 81 00 80 CA D1 00 02 FF FF
FF FF 36 00 51
Longueur trame série (nb 24 Octets
d’octets)

2. A l’aide du profile du capteur de température, déterminer l’octet contenant


l’information de température et le mettre en évidence dans les trames du tableau
précédent.

La trame qui contient l’information de la température c’est dans les data ce sont
les chiffres suivant 08 28 17 81.

3. Déterminer l’équation à appliquer pour retrouver la valeur de température en


fonction de l’octet présent dans la trame :

DB1 (8 bits) = Temperature TMP

Échelle : 0 … 255 = 0 … 40 °C

DB 1
Temp ( ° C )= ∗40
255
Exemple avec ox17 = 23
23
Temp ( ° C )= ∗40=3.61° C
255

4. Effectuer
les mêmes opérations pour l’interrupteur EnOcean en complétant les tableaux ci-
dessous et en mettant en valeur l’octet contenant l’information d’appui sur
l’interrupteur EnOcean.

Identifiant (RPS,1BS ou 4BS) RPS


Exemple de trame radio F6 00 00 23 D1 00 20
Longueur trame radio (nb 7 Octets
d’octets)
Exemple de trame série 55 00 07 07 01 F6 00 00 23 D1 00 20 02 FF FF FF FF 34 00
XX
Longueur trame série (nb 21 Octets

ANDRE Richard 2
Lycée Condorcet de Schoeneck STS CIEL

d’octets)

ACTION VALEUR DE LA DONNEE


Appuis sur 1 10
droite
Relâché 00
Appuis sur 0 30
droite
Relâché 00
Appuis sur 1 50
gauche
II. Relâché 00 Programmation
Appuis sur 0 70
Etablir un programme gauche qui permettra de
remplir les fonctions Relâché 00 demandées en
procédant par étapes et en tenant compte
des remarques ci-dessous.

Remarque : Réception d’une trame série

La réception d’une trame série fonctionnera sur le principe de l’interruption. Une


interruption est déclenchée dès qu’une donnée est présente dans le buffer de réception.
Ce sous-programme lira alors la donnée et la rangera dans un tableau.

char trameRFID[50];

void setup() {
[Link](57600);
}

void loop() {

void serialEvent() //SP d’interruption du port série si une donnée est présente
{
delay(500);
int nb=[Link]();
for (int i = 0; i < nb; i++)
{
trameRFID[i] = [Link]();
}
Le traitement de la trame se fera ici ! Il faudra, à l’aide d’une structure conditionnelle,
vérifier si la trame reçue a la bonne longueur et est bien issue du capteur qu’on souhaite gérer
avant éventuellement de faire des actions …
}

Afficheur LCD Grove :

Installer, ci-nécessaire, la bibliothèque


suivante :

ANDRE Richard 3
Lycée Condorcet de Schoeneck STS CIEL

Pour déclarer un écran dans le programme :

Pour initialiser l’écran dans le « setup » :


(Dans cet exemple le fond sera bleu … (R,V,B))

Pour écrire et positionner le curseur, les commandes


habituelles sont valables.

Effectuer un compte rendu détaillé et complet. Bon


travail !

#include <Wire.h>
#include "rgb_lcd.h"

rgb_lcd ecran;
char trameRFID[50];
const int pinLed = 4;

void setup() {
[Link](57600);
[Link](16, 2);
pinMode(pinLed, OUTPUT);
[Link](0, 0);
[Link]("Bonjour");
}

void loop() {
}

void serialEvent() {
delay(500);
int nb = [Link]();

for (int i = 0; i < nb; i++) {


trameRFID[i] = [Link]();
}

if (nb == 24) {
unsigned char octetTemp = trameRFID[9];
float temperature = (255-octetTemp)*40.0/255.0;

ANDRE Richard 4
Lycée Condorcet de Schoeneck STS CIEL

[Link](0, 0);
[Link]("Temp: ");
[Link](temperature);
[Link](" C");
}

if (nb == 21) {
int donneeInter = trameRFID[13];

if (donneeInter == 10) {
digitalWrite(pinLed, HIGH);
}
else if (donneeInter == 30) {
digitalWrite(pinLed, LOW);
}
}
}

Programme bonus : Climatisation :

#include <Wire.h>
#include "rgb_lcd.h"

rgb_lcd ecran;

char trameRFID[50];

const int LED1 = 2; // LED température > 25


const int LED2 = 3; // LED température > 23

void setup() {
[Link](57600);
[Link](16, 2);

pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);

[Link](0, 0);
[Link]("Bonjour");
}

void loop() {
}

void serialEvent() {
delay(500);
int nb = [Link]();

for (int i = 0; i < nb; i++) {


trameRFID[i] = [Link]();

ANDRE Richard 5
Lycée Condorcet de Schoeneck STS CIEL

// Trame température
if (nb == 24) {
unsigned char octetTemp = trameRFID[9];
float temperature = (255 - octetTemp) * 40.0 / 255.0;

// Affichage LCD
[Link]();
[Link](0, 0);
[Link]("Temp: ");
[Link](temperature);
[Link](" C");

// Conditions LEDs
if (temperature > 25) {
digitalWrite(LED1, HIGH);
} else {
digitalWrite(LED1, LOW);

if (temperature > 23) {


digitalWrite(LED2, HIGH);
} else {
digitalWrite(LED2, LOW);
}
}
}

ANDRE Richard 6

Vous aimerez peut-être aussi