- Les choix
- La station interne
- La station externe
- Les extensions utilisées
- Un peu d'électronique




Le matériel utilisé

Si la première Station était une LCT Ws2800, Depuis début Juin 2012, suite à une panne générale de cette dernière, la station est une station de fabrication personnelle.
Ayant déjà à l'époque, une station à base d'une carte Arduino Mega que m'avait fabriqué Henri qui mesurait l'ensoleillement, je me suis lancé sur la fabrication d'une station de conception personnelle J'ai donc décidé de faire ma propre station, en essayant de conserver le maximum de mes sondes de la Ws2800.
Sachant que j'allais perdre les communications sans fil, le problème qui se posait était d'avoir le moins de fils possible qui entrent dans la maison.

Ce problème posé, le choix c'est porté sur 2 stations : Une station dites 'interne' et une station dites 'externe' dialoguant entre elles via une liaison série.
Cela a réduit le nombre de fils à 3 qui entrent et sortent de la maison (Rx, Tx, Masse). Utilisant un câble téléphonique RJ11, j'en ai profité pour ajouter le +5V pour alimenter la station 'externe'.
Voulant conserver la possibilité d'une connexion avec le PC (pour le débugage et la programmation), le choix a été rapide : Arduino Mega qui a 4 liaisons séries


La station interne

Pour la Station interne, je suis partie de la station que m'avais fabriqué Henri. :

Station interne Arduino
La station intenre

Sur cette station, je n'ai fait qu'ajouté le raccordement d'une sonde de température et d'humidité Sht15 ; Ce type de sonde est vendue sur une carte d'essai :
sonde Sht15

Sur cette carte, était déjà raccordé une sonde de mesure des radiations solaires RG100 de marque Solems :

Sonde Solaire
La sonde Solems de mesure des radiations solaires

La principale difficulté a déjà été de comprendre les différents modes de communications de la carte Arduino avec les sondes.
En effet suivant le type de sonde, le branchement et la programmation sont différents. Certain capteur fonctionne avec un réseau 'One-Wire', D'autre en mode 'Pwm' (voir en bas de page).
L'autre difficulté a été de mettre au point les dialogues entre la station interne et la station externe.

La station externe

Le plus gros travail a été de créer cette station externe. Grâce à Henri et aux multiples exemples que l'on trouve sur le Net (en particulier sur le site officiel Arduino.
et le site Club Electronique) les problèmes se sont vite résolus.

Station Externe
La station externe en phase de tests

Pour réaliser cette station, j'ai d'abord ouvert mon anémomètre de Ws2800 et soudé 2 fils sur le contact de l'ILS.
Je voulais faire de même pour les récepteurs IR mais le soudage s'est avéré impossible en raison du vernis épargne. :

Reprise Anémomètre
La reprise de l'anémomètre

Ensuite, j'ai fait de même avec l'ILS du pluviomètre de mon ex Ws2800

Puis, j'ai intégré une carte Sht15 dans la sonde °C/%Hr de mon ex Ws2800, tout en ayant fait disparaitre la carte électronique qu'il y avait à l'intérieur
Sonde extene température
Sonde pluviomètre
Sonde °C/%Hr avant reprise Pluviomètre avant reprise

Pour le comptage du pluviomètre et de l'anémomètre, sur les conseils d'Henri j'ai câblé ces contacts sur une carte DS2423 qui a l'avantage d'être alimenté par un petite pile bouton
Le gros problème actuellement est que cette DS2423 devient introuvable, la fabrication de la puce qu'elle contient ayant été arrêté.
Ensuite, j'ai utilisé un BMP085 pour la mesure de la pression atmosphérique. Cette puce a l'avantage via la bibliothèque soft de pouvoir mesurer la pression relative avec une correction de température automatique.

Ds2423 Bmp085
Carte double compteur Ds2423 Carte Bmp085

Une fois tout câblé, la phase de programmation :
Bmp085
En cours de programmation

Cela a été la phase la plus longue. La programmation s'effectue en langage C depuis un ordinateur puis, grace à un outil Arduino gratuit, les programmes sont tranférés vers les cartes Arduino. Une des avantages de cet outil, c'est qu'il est possible d'avoir deux fois l'outil en mémoire et d'être connecté sur 2 cartes en simultané(sur 2 ports Usb distincts). Pratique pour la mise au point des échanges entre cartes.
Grâce à Henri et aux multiples exemples sur le Web, la programmation s'est effectuée pas à pas. Pour ce qui concerne la Sht15, la Bmp085, des bibliothèques d'accès s'intègrent facilemant dans les sources. Un de mes plus gros point de blocage a été de lire la Ds2423. Merci Henri de m'avoir dépanné par l'adjonction d'une résistance 'pull-up'. Sans ce petit détail pas de possibilité de dialogue. J'ai réutilisé cette méthode il y a quelques jours, lorsque j'ai ajouté des sondes de température DS28B20 pour suivre ma chaudière.
Une fois la mise au point de la station 'interne' avec tous ses capteurs, je me suis attaqué aux dialogues entre les deux stations. Au départ j'étais partie sur des transferts en Ascii. Cela fonctionnait bien sauf que de temps en temps, il y avait perte d'une trame et/ou décalage de trames. Henri m'ayant communiqué qu'il avait trouvé une bibliothèque pour les transferts nommée 'EasyTransfert', j'ai voulu l'essayer. Et si de temps en temps les transferts étaient nickel, dans 80% des cas, la station 'interne' ne voyait pas les trames transmises !. J'ai donc décidé de m'attaquer au débeugage de cette bibliothèque 'EasyTransfert'. Et j'ai découvert que cette bibliothèque bien pensé avait un gros inconvenient : La synchronisation vis à vis des temps de cycle des cartes. J'ai donc modifié cette bibliothèque pour tenir compte de ce défaut. Maintenant, plus de soucis. Le seul inconvenient, il ne faut pas que la taille des trames dépasse la taille du buffeur de communication des cartes Arduino (128 octets : Ce qui est largement suffisant en mode binaire). Pour exemple, mes transferts actuels sont de 56 octets avec 14 valeurs flottantes.

Restait que même si tout fonctionnait très bien, il me manquait une information : La direction du vent !. J'ai dans un premier temps essayé d'utiliser le disque codé de ma girouettre avec des diodes IR mais faute de pouvoir souder correctement sur le PCB, j'ai abandonné. Puis j'ai reçu de la part d'Henri un petit colis contenant une girouette et un anémomètre. Si je lui ai retourné l'anémomètre car la mienne fonctionnait bien, j'ai conservé sa girouette. Une sonde très bien pensée à base d'un circuit MLX090316 de chez Melexis qui mesure l'orientation d'un petit aimant. Si cela est simple, pour trouver cette solution, Henri a du en passer du temps !.

En conclusion : Si j'ai perdu les connexions sans fil, j'ai gagné en fiabilité et en justesse. A part un petit problème de programmation avec la fonction 'delay' de la carte Arduino, et un faux contact du pluviomètre, aucun soucis et surtout aucune perte de donnée.

Avec cette station, j'utilise toujours mon logiciel SkinWs2800 .


Les extensions de la station - La WebCam

Autre matériel utilisée : Un vielle Webcam Logitec qui dormait dans un tiroir. Celle-ci est dirigée plein sud

Ws2800 - Webcam



Les extensions de la station - La Télérelève

Comme beaucoup, je suis arrivé à suivre les paramètres météo pour vérifier/valider les consommations électriques. Le seul soucis est que faire cela à la 'mimine' en notant les index de compteurs, en le reportant dans une feuille de tableur, cela devient vite une corvée. D'autant plus qu'une absence et les relevées ne sont pas effectués

Pour cela j'ai choisi une petite interface qui me permet d'effectuer une télé-relève de mon compteur Electrique directement ; Cette possibilité n'existe pas pas avec les vieux compteurs électromagnétique. Il faut déjà bénéficier d'un compteur 'électronique' et que l'option de télé-information soit activée. Pour faire court, un compteur électrique bénéficiant de bornes L1/L2 peut être utilisé en télé-information. Les nouveaux compteurs 'Linky' ont cette possibilité

L'option télé-information n'est pas forcément active. Il faut dans ce cas faire une demande à ERDF pour l'activation (programmation du compteur). Suivant mes dernières informations, cette intervention reste gratuite
Après recherches sur le Net, j'ai trouvé une interface Compteur/Usb sur le site dauget.net (Repris par SolarBox). Cette interface est très petite et est équipé de deux diodes LED qui permettent pour la première de visualiser si la carte est bien alimenté par le port Usb (Led rouge) et la seconde si des transmissions ont bien lieu (Led verte). En fait le compteur envoi des données en mode série avec un signal modulé à 50 Khz, ceci afin de permettre des connexions de longue distance. L'interface transforme le signal et envoi les données en mode série. Il existe deux types d'interface : L'interface purement série et l'interface série via Usb. Cette dernière pose quelques soucis lors des premiers branchements sur le PC (détection automatique par Windows d'une nouvelle souris - voir Notice de SkinWs2800).
Il existe d'autres fabricants d'interfaces (par exemple chez CarteElectronique, et pour les bricoleurs, cette interface peut-être faite par soi-même (voir par exemple le blog de Bernard Lefrançois).

Le signal transmis au PC via un port série est traité par un service Windows (fourni avec le logiciel Skin) qui enregistre périodiquement les données dans un fichier de type texte tabulé, et qui est ensuite traité par le logiciel SkinWs2800.

Interface
L'interface Dauget



Un peu d'électronique

A - La connexion inter-carte

InterConnexion
L'interconnexion Station Interne/Extenre


B - Connexion 'breadboard' Bmp085 :

InterConnexion
Connexion Bmp085


C - Connexion 'breadboard' Sht15 :

InterConnexion
Connexion Sht15


NOTA : Le branchement en pin D4 et D5 peut-être effectué sur toutes les autres pins entre D2 à D13.
Il est par contre important dans le programme de bien déclarer où se trouve la ligne d'horloge et la ligne des données :
SHT1x SondeTemperInt(DATAPIN_SHT15, CLOCKPIN_SHT15);
Ce qui dans l'exemple ci-dessus donne : SHT1x SondeTemperInt(4, 5);

D - Connexion 'breadboard' Ds2423 :

InterConnexion
Connexion Anémomètre et pluviomètre via Ds2423


NOTA : Le branchement en pin D2 peut-être effectué sur toutes les autres pins entre D2 à D13.
Il est par contre important dans le programme de bien déclarer où se trouve la ligne réseau One-Wire :
OneWire ow(ONWIRE_PIN);
Ce qui dans l'exemple ci-dessus donne : OneWire ow(2);
Ensuite il est nécessaire de définir les adresses de la carte Ds2423 sur le réseau One-Wire :
DeviceAddress Adr = { 0x1D, 0x94, 0xDE, 0x0F, 0x00, 0x00, 0x00, 0xC8 };
ds2423 Ds2423Counter(&ow, Adr);
(Dans le répertoire d'installation du programme Arduino, puis sous le sous-répertoire 'libraries\Onewire\examples\sample' il existe un petit programme pour trouver les adresses).

E - Girouette et Solaire :

Pour ces deux sondes, je vous conseille de voir en direct avec Henri


Dans la page installation, vous trouverez le reste du matériel