MagPI 11 Page 5

De Le French MagPi
Aller à : Navigation, rechercher

Nous utilisons aussi deux capteurs de température à sortie analogique LM35. Un pour la température de l'air, monté sur la chaudière, et un autre pour mesurer la température de l'eau, monté sur un radiateur.

Vous aurez besoin d'un convertisseur analogique vers numérique (CAN) si vous utilisez un capteur analogique. Nous avons choisi le BV4205, un circuit intégré I2C à 10 canaux. La sortie analogique des trois capteurs est convertie en numérique et envoyée au Raspberry Pi au travers du bus I2C. Cependant, à cause de problèmes connus entre le bus I2C et le Raspberry Pi, un correctif doit être appliqué au BV4205 avant de l'utiliser, afin de ralentir l'horloge du bus I2C. Il est aussi possible d'utiliser un micro-contrôleur (un atmega par exemple) en tant que CAN.

Ci-dessous, vous trouverez l'essentiel du code nécessaire à la communication avec le bus I2C afin de lire l'entrée analogique d'un capteur connecté au canal 7. Un code similaire peut être utilisé pour interagir avec tout appareil compatible I2C.

//Initialise le bus I2C
int fd;
char *fileName = "/dev/i2c-1";
//Note : Lorsqu'on utilise un Pi version 1, utiliser "/dev/i2c-0"
int address = 0x31;
unsigned char buf[10];
fd = open(fileName, O_RDWR);
ioctl(fd, I2C_SLAVE, address);
//Sélection du canal 7 du convertisseur analogique numérique
buf[0] = 1;
buf[1] = 7;
write(fd, buf, 2);
//Démarre la conversion
buf[0] = 2;
write(fd, buf, 1);
//Récupère le résultat de la conversion
buf[0] = 4;
write(fd, buf, 1);
read(fd, buf, 2);
unsigned short packedword;
packedword = (buf[0] <<8) | buf[1];

Interface utilisateur

Le schéma suivant montre la manière dont les appareils sont branchés et interagissent. Une simple interface web fournit un accès aisé depuis les appareils connectés à internet. L'interface web est basée pour l'essentiel sur jQuery, PHP et MySQL.

En utilisant la commande exec de PHP, nous accédons à nos deux exécutables qui contrôlent la position du servo et lisent la sortie des capteurs. Ajax a été utilisé de manière intensive afin de réaliser une surveillance en temps réel de l'état de la chaudière et la lecture des capteurs. De plus, nous mesurons le temps que la chaudière a été allumée chaque jour (en minutes) en analysant la sortie des capteurs de lumière. On présente aussi à l'utilisateur un graphe SVG (avec la bibliothèque d3.js) de la température de l'air pour les dernières 24 heures avec une résolution temporelle d'une minute.

En exploitant les données des capteurs, nous pourrions encore étendre le système et le rendre plus intelligent en automatisant totalement les événements d'allumage et d'extinction de la chaudière en se basant sur la sortie des capteurs et des profils d'usage spécifiques. Pour plus d'information (code, schémas et images) visitez la page du projet à l'adresse : http://projectedneuralactivity.blogspot.co.uk/

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Boîte à outils