Version beta Station Météo - Blog...

18
Station Météo 12/11/2012 Réalisation d’un Station Météo avec Webserver composée de capteurs Grove et d’un module Wifi Flyport. Version beta

Transcript of Version beta Station Météo - Blog...

Station Météo 12/11/2012

Réalisation d’un Station Météo avec Webserver composée de capteurs Grove et d’un module Wifi Flyport.

Version beta

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 1

Table des matières Révisions du document ........................................................................................................................... 1

I. Présentation .................................................................................................................................... 2

1) Grove et Grove Nest : un prototypage facile .......................................................................... 3

2) Flyport : Connectez vos objets sur Internet ! .......................................................................... 4

3) Pack météo : Alliance entre Grove et Flyport ......................................................................... 5

II. Conception de la station météo : hardware .................................................................................... 6

1) Présentation des composants .................................................................................................. 6

a) Carte de développement : Nest Grove .................................................................................... 6

b) Capteurs Grove ........................................................................................................................ 6

c) Flyport ..................................................................................................................................... 7

d) Câbles Grove ............................................................................................................................ 7

e) Alimentation ............................................................................................................................ 7

f) MiniUSB programmer .............................................................................................................. 8

2) Assemblage des composants ................................................................................................... 8

a) Connexion avec l’ordinateur .................................................................................................... 8

b) Grove NEST + Composant Grove ............................................................................................. 9

III. Programmation ......................................................................................................................... 10

a) Initialisation des librairies : .................................................................................................... 10

b) Initialisation du Flyport, de la Grove Nest et de ses PORTs : ................................................. 10

c) Capteur de luminosité SEN11302P ........................................................................................ 11

d) Capteur analogique de température SEN23292P .................................................................. 11

e) Capteur de qualité de l’air SEN01111P .................................................................................. 12

f) Capteur Température et Humidité SEN11301P ..................................................................... 13

g) Ecran OLED OLE35046P ......................................................................................................... 14

h) Webserver .............................................................................................................................. 15

IV. Support & Contacts ................................................................................................................... 17

Révisions du document

Date Version Auteur Description

12/11/2012 1.0 G.LINYON & A.DA COSTA

Creation du document

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 2

I. Présentation Introduction

Développez simplement une station météo avec la technologie Grove et openPicus. Cette station modulaire, sera à faire évoluer selon vos envies et objectifs.

Basé sur une technologie Grove, la station météo est évolutive. Vous désirez ajouter de nouveaux composants : capteurs d’air, capteurs de gaz, leds…. Il suffit simplement de brancher les composants Grove sur la carte de développement NEST GROVE et de les intégrer au programme (librairies fournies).

La Nest Grove peut intégrer un flyport. Le Flyport est une carte intelligente qui permet de maitriser et gérer des objets à distance grâce au WIFI. Il suffit simplement de l’intégrer dans les appareils électriques pour ensuite piloter les objets via une box ADSL, un smartphone ou une tablette tactile.

Grace au flyport vous pourrez donc connecter vos prototypes à Internet. Dans le cadre de ce tutoriel vous pourrez connecter cette station météo sur la toile.

Débutant : Tout le code est fourni et commenté, il vous suffit simplement de connecter les composants sur la Nest Grove et de transférer le programme sur le flyport à l’aide de l’USB programmer.

Confirmé : Ce pack vous permettra de découvrir la technologie Grove couplée au Flyport. Cette combinaison de produits vous donnera la possibilité de développer toute sorte de prototypes.

Pour faciliter le développement Ce tutoriel est destiné à tous les niveaux

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 3

1) Grove et Grove Nest : un prototypage facile

La technologie Grove est un nouveau système de connectiques standardisées. Cette technologie est composée de différentes séries de composants électroniques : capteurs, actuateurs, led et câbles connectiques, servant à concevoir et programmer des objets intelligents. Elle permet un développement simplifié des prototypes. En effet, il vous suffit simplement de connecter les composants (aucune soudure nécessaire). Cette technologie présente de nombreux avantages :

Plus besoin de souder grâce aux connecteurs. La technologie Grove est donc accessible à tous

Les librairies des composants Grove sont disponibles sur :

http://www.seeedstudio.com/ (pour développer sur Arduino)

http://wiki.openpicus.com/ (pour développer avec openPicus)

Technologie Open Source & Plug & Play

Une large gamme de composants compatibles.

Dotée de plusieurs connecteurs Grove et d’un emplacement Flyport, la Nest Grove vous permet de connecter une multitude de composants Grove : capteurs d’humidité, moteurs, écran LCD… Cette carte de développement possède un connecteur Flyport afin de brancher vos robots à internet.

Connecteurs GROVE

Capteurs / Actuateurs

Leds…

Emplacement FLYPORT :

Flyport WIFI / ETHERNET ou GSM

Slot MICRO SD

Stockage, diffusion de

données

Emplacement USB PROGRAMMER :

Emplacement pour carte de programmation USB

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 4

2) Flyport : Connectez vos objets sur Internet ! A l’image d’un serveur Web intégré, la plateforme OpenSource est la solution idéale pour les professionnels qui peuvent ainsi facilement intégrer le monde de l’IP à leurs produits. Complet, le Flyport est un module programmable combinant à la fois un puissant processeur MicroChip et un client/serveur TCP et UDP ainsi qu’un client SMTP et SNTP. Alimenté en 3.3V ou 5V, il est équipé de quatre entrées analogiques, dix entrées/sorties numériques et d’un émetteur-récepteur asynchrone universel (UART).

A la pointe de la technologie, le Flyport permet de personnaliser le hardware en modifiant le firmware et ainsi redistribuer les fonctions de chaque broche selon ses besoins. Autre atout non négligeable, la carte Flyport est facilement intégrable et ne nécessite pas de connaissances spécifiques en serveurs web pour être installée. Compact et léger le Flyport est la manière la plus simple et pratique de faire évoluer les fonctionnalités de ses prototypes dans l’univers de l’IP et s’inscrire sur la toile. Caractéristiques techniques : - Alimentation 3,3 ou 5 volts - 4 entrées analogiques - 10 entrées/sorties numériques - 1 émetteur récepteur asynchrone universel (UART) - Dimensions : 35 x 48 mm

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 5

3) Pack météo : Alliance entre Grove et Flyport Grâce aux éléments Grove, à la carte de développement Grove Nest et au module Wifi Flyport, nous allons réaliser une station météo simple à développer, modulable et connectée à Internet. Pour résumer toute la technologie Grove pour permettra d’assembler tout le matériel nécessaire à votre prototype : capteurs, actuateurs, leds, alimentation…. Cet assemblage se fera sans une soudure, il vous suffira simplement de les connecter comme des lego.

Et grâce au flyport vous donnez la possibilité à votre prototype de se connecter à internet pour lui permettre plusieurs fonctions : -Contrôle à distance (depuis tous les supports : navigateur, smartphone, tablette…) -Remontées d’informations (des capteurs, caméras….).

Quant au point de vue de la programmation, le flyport dispose de son IDE Opensource (logiciel de programmation) openPicus. Cet IDE simple d’utilisation vous mâche le travail et vous fait bénéficier d’un gain de temps d’environ 60%.

Cerise sur le gâteau, toutes les librairies des produits Grove sont disponibles sur le WIKI openPicus : http://wiki.openpicus.com/index.php?title=Main_Page Le wiki est actuellement en anglais, pour les plus retissent d’entre vous, une version en français est en cours de traduction.

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 6

II. Conception de la station météo : hardware

1) Présentation des composants

a) Carte de développement : Nest Grove

Carte de développement Nest Grove avec emplacement pour connecteurs Grove et Flyport.

Pour plus d’informations :

http://www.g-media.fr/nest-grove.html

b) Capteurs Grove

Grâce à sa conception plug & play et à sa compatibilité avec openPicus IDE, créez et concevez vos

robots en toute simplicité avec la technologie Grove

Liste des composants (dans l’ordre de gauche à droite)

- Un afficheur OLED (OLE35046P) - Un capteur analogique de luminosité (SEN11302P) - Un capteur analogique de température (SEN23292P) - Un capteur numérique de température et humidité (SEN11301P)

En option

- Un capteur analogique de qualité de l’air (SEN011111P)

Pour plus d’informations :

http://www.g-media.fr/pack-stationmeteo.html

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 7

c) Flyport

La carte Flyport permet de prendre le contrôle et de gérer des objets à distance grâce au WIFI.

Le Flyport uFL comprend un module flyport PCB Antenna. (Disponible en version Ethernet et GSM).

Pour plus d’informations :

http://www.g-media.fr/flyport-pcb-antenna.html

d) Câbles Grove

Câbles universels de 5cm 4 Pin pour composants Grove.

Pour plus d’informations :

http://www.g-media.fr/grove-universal-4-pin-buckled-5cm-cable-5-pcs.html

e) Alimentation

Alimentation 5V / 500mA pour cartes de développements NEST.

Pour plus d’informations :

http://www.g-media.fr/developpeurs/openpicus/alimentation-nest-5v-500ma.html

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 8

f) MiniUSB programmer

MINIUSB Programmer est un convertisseur USB vers Serial, vous permettant de configurer et

programmer les modules sous OpenPicus

Pour plus d’information :

http://www.g-media.fr/miniusb-programmer.html

2) Assemblage des composants

a) Connexion avec l’ordinateur

Pour connecter le Flyport à l’IDE, on utilise le MiniUSB et le câble USB/MiniUSB. Après avoir

installé l’IDE OPENPicus et codé, il faut définir le Port de communication afin d’envoyer votre

programme sur le Flyport.

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 9

b) Grove NEST + Composant Grove

Afin de s’assurer du bon fonctionnement de système, il faut s’assurer de la concordance du type de

communication du composant Grove ( AN/DIG/SPI/I2C) et de celui du port utilisé.

Dans notre exemple :

- Un afficheur OLED (OLE35046P) : communication I2C => I2Cport

- Un capteur analogique de luminosité (SEN11302P) communication AN => AN1port

- Un capteur analogique de température (SEN23292P) communication AN => AN2port

- Un capteur analogique de qualité de l’air (SEN011111P) communication AN => AN3port

- « Un capteur numérique de température et humidité (SEN11301P) » :

Concernant ce capteur, nous n’avons pas encore développé les librairies afin de faciliter son implémentation sur la Grove Nest. Pour montrer que c’est vraiment de l’ « OPEN SOURCE », nous avons choisis de l’utiliser dans notre Station de Météo. Pour l’implémenter, on sait que sur la datasheet de la Grove Nest, sur le port DIG1 : D1=p2(Flyport) et D2=p4(Flyport).

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 10

III. Programmation

a) Initialisation des librairies :

Taskflyport.c :

- lib_grovesensors.h: librairie de tous les produits GROVE répertoriés.

- rht01.h : librairie développée spécialement pour le capteur grove SEN11301P.

Les variables externes sont déclarées dans le fichier HTTPApp.c, elles sont utilisées pour afficher les

valeurs mesurées sur le webserver du Flyport.

/**************************************************************************** * Weither Station * * ************************************************************************** * Author Rev. Date Comment * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *Gilbert Linyon 1.0 24/10/2012 G-Media Demo * ****************************************************************************/ #include "taskFlyport.h" #include "lib_grovesensors.h" #include "rht01.h" #define Digital Dig_io extern char WLight[],WTemp[],WAir[],WHumi[]; // variable initialized in HTTPApp.c

b) Initialisation du Flyport, de la Grove Nest et de ses PORTs :

void FlyportTask() { WFConnect(WF_DEFAULT); while (WFStatus != CONNECTED); UARTWrite(1,"Flyport connected... hello world!\r\n"); // Initialization of the grove nest void *board = new(Board); // Initialization of all sensors and actuators

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 11

void *lightsensor = new(An_i); void *temperature = new(An_Temp); void *airquality = new(An_i); void *display = new(Oled,OLEDADD0); //specify I2C address // Initialization of grove nest PORT attachSensorToBoard(board,lightsensor,AN1); attachSensorToBoard(board,temperature,AN2); attachSensorToBoard(board,airquality,AN2); attachSensorToBoard(board,display,I2C);

c) Capteur de luminosité SEN11302P

On souhaite afficher la luminosité en pourcentage, alors on utilise la valeur max. mesurée par le capteur (variable b).

// LUMINOSITE /***********************************************************************************************/ /**/ float a = get(lightsensor); /**/ float b = 602.0; // full scale /**/ double Light; // Brightness intensity (%) /**/ Light = (a/b) * 100; /**/ sprintf(WLight,"%3.0f\n\r",Light); /**/ UARTWrite(1,WLight); /**/ vTaskDelay(50); /***********************************************************************************************/

d) Capteur analogique de température SEN23292P Cette partie du programme s’occupe de l’acquisition et du traitement du signal mesuré pour la température.

//TEMPERATURE /***********************************************************************************************/ /**/ /**/ sprintf(WTemp,"%.0f\n\r",(double)(get(temperature))); /**/ UARTWrite(1,WTemp); /**/ vTaskDelay(50); /**/ /***********************************************************************************************/

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 12

e) Capteur de qualité de l’air SEN01111P Concernant le capteur de qualité de l’air (SEN01111P), il n’y a pas encore de bibliothèque, donc selon la datasheet du capteur, nous avons développé un algorithme permettant de traiter le signal reçu.

/***********************************************************************************************/ /**/ unsigned int Firstvol,Lastvol,Stdvol; /**/ /**/ Firstvol = get(airquality); /**/ Lastvol = Firstvol; /**/ Stdvol = Lastvol; /**/ /**/ // Test of the voltage value measured on the output A/Q sensor /**/ if ( Firstvol-Lastvol>400 || Firstvol>700) /**/ { /**/ sprintf(WAir,"High pollution! Force signal active."); /**/ UARTWrite(1,WAir); /**/ vTaskDelay(50); /**/ } /**/ /**/ else if (( Firstvol-Lastvol>400 && Firstvol<700 )|| Firstvol-Stdvol>150) /**/ { /**/ sprintf(WAir,"High pollution!"); /**/ UARTWrite(1,WAir); /**/ /**/ vTaskDelay(50); /**/ } /**/ /**/ else if (( Firstvol-Lastvol>200 && Firstvol<700 ) || Firstvol-Stdvol>50 ) /**/ { /**/ sprintf(WAir,"Low pollution!"); /**/ UARTWrite(1,WAir); /**/ /**/ vTaskDelay(50); /**/ } /**/ /**/ else /**/ { /**/ sprintf(WAir,"Air fresh"); /**/ UARTWrite(1,WAir); /**/ vTaskDelay(50); /**/ } /***********************************************************************************************/

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 13

f) Capteur Température et Humidité SEN11301P

Dans cette partie, on a assigné la pin2 du Flyport au capteur SEN11301P. Si il y a une erreur lors de

l’acquisition de données ou lors du traitement de celle-ci, la LED « OUT4 » du Flyport s’allumera.

Dans le cas contraire, on aura recevra la valeur de la température mesurée et du taux d’humidité.

//RHT01 /***********************************************************************************************/ /**/ double t = 0.0; /**/ double rh = 0.0; /**/ /**/ BOOL err = FALSE; /**/ vTaskDelay(200); /**/ // Clear the error condition and switch off the Flyport led /**/ if (err) /**/ { /**/ err = FALSE; /**/ IOPut(o4,OFF); /**/ } /**/ if (ReadRHT01(i5, &t,&rh)==0) /**/ { /**/ #if defined(STACK_USE_UART) /**/ UARTWrite(1,"Bad reading from RHT01\r\n"); /**/ #endif /**/ // We are in an error condition, so light up the Flyport led /**/ err = TRUE; /**/ IOPut(o4,ON); /**/ continue; /**/ } /**/ /**/ #if defined(STACK_USE_UART) /**/ else /**/ { /**/ sprintf(WHumi,"%.0f\r\n",rh); /**/ UARTWrite(1,WHumi); /**/ } /**/ #endif /***************************************************************************************************/

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 14

g) Ecran OLED OLE35046P

Dans cette partie, on veut juste afficher toutes les valeurs mesurées et traitées par le Flyport.

A la place des chaines de caractère « … » on peut mettre ce qu’on veut.

//Display /***************************************************************************************************/ /**/ char DLight[10],DTemp[10],DHumi[10],p[3]={"%"},d[4]={"*C"}; /**/ /**/ int i; /**/ for (i=0;i<10;i++) // Just for use a good format with the OLED /**/ { /**/ DLight[i] = WLight[i]; // shows the brightness of light in "%" (XX%) /**/ DTemp[i] = WTemp[i]; // the temperature XX*C /**/ DHumi[i] = WHumi[i]; // the humidity XX% /**/ } /**/ strcat(DLight,p); /**/ strcat(DTemp,d); /**/ strcat(DHumi,p); /**/ /**/ configure(display);vTaskDelay(10); /**/ set(display,"**************",STRING,BLACK,0,1);vTaskDelay(10); /**/ set(display,"GiGa-Concept",STRING,BLACK,1,2);vTaskDelay(10); /**/ set(display,"weither station",STRING,BLACK,2,0);vTaskDelay(10); /**/ set(display,DLight,STRING,WHITE,3,5);vTaskDelay(10); /**/ set(display,DTemp,STRING,BLACK,4,5);vTaskDelay(10); /**/ set(display,WAir,STRING,BLACK,5,2);vTaskDelay(10); /**/ set(display,DHumi,STRING,BLACK,6,5);vTaskDelay(10); /**/ set(display,"**************",STRING,BLACK,7,1);vTaskDelay(10); /**/ vTaskDelay(300); /***************************************************************************************************/

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 15

h) Webserver

Nous voulons afficher toutes nos mesures sur le webserver et pouvoir y accéder à distance, pour cela

il faut déclarer les variables qu’on utilisera sur le webserver dans HTTPApp.c, ensuite dans la page

html utiliser les variables variable dynamique.

HTTPApp.c :

/*************************************************************************** SECTION Dynamic Variable Callback Functions In this section are managed the "dynamic variables" of the webserver. Dynamic variables are contained in the status.xml file requested by the webpage. For each dynamic variable a callback function named HTTPPrint_varname must be created. ****************************************************************************/ char WTemp[10],WLight[10],WAir[10],WHumi[10]; void HTTPPrint_WTemp() { TCPPutString(sktHTTP,(BYTE *)WTemp); } void HTTPPrint_WLight() { TCPPutString(sktHTTP,(BYTE *)WLight); } void HTTPPrint_WAir() { TCPPutString(sktHTTP,(BYTE *)WAir); } void HTTPPrint_WHumi() { TCPPutString(sktHTTP,(BYTE *)WHumi); }

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 16

A la racine du dossier « Web pages », il faut créer un fichier « status.xml ».

On associe chaque variable dynamique à son id dans le fichier « index.html ».

<response> <temp>~WTemp~</temp> <light>~WLight~</light> <humi>~WHumi~</humi> <air>~WAir~</air> </response>

Index.html :

Début du code html, avec l’emplacement des scripts (fourni).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>GC-Weither Staition</title> <link rel="shortcut icon" href="./images/logo_icon.ico" /> <link href="style/style.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="scripts/mchp.js"></script> </head>

On associe chaque id à sa variable dynamique :

<span id="temp">~WTemp~</span>°C</p> <span id="humi">~WHumi~</span>%</p> <span id="light">~WLight~</span>%</p> <span id="air">~WAir~</span>"</p>

On retrouve ici la fonction servant à mettre à jour nos variables :

<script type="text/javascript"> function updateStatus(xmlData) { document.getElementById('temp').innerHTML = getXMLValue(xmlData, 'temp'); document.getElementById('humi').innerHTML = getXMLValue(xmlData, 'humi'); document.getElementById('light').innerHTML = getXMLValue(xmlData, 'light'); document.getElementById('air').innerHTML = getXMLValue(xmlData, 'air'); } setTimeout("newAJAXCommand('status.xml', updateStatus, true)",500); </script>

GIGA-CONCEPT – ZA des Marsandes, 20 rue Louise Vilmorin 91630 Avrainville – tel:+33 1 60 82 86 33

G.Linyon 17

IV. Support & Contacts

Maintenant que vous avez tous les outils en poche pour développer toutes vos applications, n’hésitez

pas à revenir vers nous pour nous les présenter.

Nous proposons également un support technique pour vous accompagner dans vos

développements.

[email protected]

Site marchand : www.g-media.fr