pery95

Arduino et prises commandées (4 – les essais)

 Arduino philie  Commentaires fermés sur Arduino et prises commandées (4 – les essais)
Mai 112014
 

Arduino

Commande de prises électriques, éclairages…

par transmission 2.4GHz

Premiers essais

 

Les premiers essais ont été menés pour vérifier la portée de la transmission. Deux modules Arduino UNO et deux modules nRF24L01 de base (modèle avec antenne en L) ont été mis en œuvre; après chargement, le premier modules, alimenté par une pile 9V. m’a accompagné, tandis que le second module restait connecté sur le port USB de l’ordinateur.

Le premier module est connecté à un bouton poussoir; on émet l’état du bouton vers le second module; ce dernier reçoit la transmission, lit l’information et la réémet aussitôt vers le premier; le premier module reçoit la transmission et commande une led. Cela permet de tester la transmission dans les deux sens à la fois.

Il y a également les « print » qui vont bien pour suivre le fonctionnement sur la console.

Les 2 programmes à charger :

// L’émetteur……………………..

// Essai de transmission 2.4 GHz avril 2014

// Philippe Redoutey sur bases issues d’internet

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

const int buttonPin = 2; // le N° de l’entrée digitale qui reçoit le bouton
const int ledPin = 3; // le N° de la sortie numérique qui commande la led
int buttonState = 0; // variable pour mémoriser l’état du bouton
byte valeur_octet[1]; // contient la valeur découpée en octet pour l’envoi (pour le test = 1 octet
byte Etatrecu = 0;

void setup(){
Serial.begin(9600);

Mirf.cePin = 8; // CE sur D8
Mirf.csnPin = 7; // CSN sur D7
Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware
Mirf.init(); // Initialisation du SPI

Mirf.channel = 0; // On va utiliser le canal 0 pour communiquer (128 canaux disponible, de 0 à 127)
Mirf.payload = sizeof(unsigned byte); // = 1, ici il faut déclarer la taille du « payload » soit du message qu’on va transmettre, au max 32 octets

// RF_SETUP=0000abcd : a=1–>2Mb/s, a=0–>1Mb/s;
// puissance émission bc=00–>-18 dBm, bc=01–>-12dBm, bc=10–>-6dBm, bc=11–>0dBm;
// d=0 pas de gain sur le bruit en réception

Mirf.configRegister(RF_SETUP, 0x06); // 1 Mb/s et 0 dBm (puissance maximum)

Mirf.config(); // Tout est bon ? Ok let’s go !

Mirf.setTADDR((byte *) »nrf02″); // Le 1er module va envoyer ses info au 2eme module
Mirf.setRADDR((byte *) »nrf01″); // On définit ici l’adresse du 1er module

pinMode(ledPin, OUTPUT); // Initialisation de la sortie digitale pour la led

pinMode(buttonPin, INPUT); // Initialisation de l’ebtrée digitale pour le bouton
digitalWrite(buttonPin, HIGH); // met la résistance de tirage au +

Serial.println(« Go ! »);
}

void loop(){

buttonState = digitalRead(buttonPin); // lecture de l’état du bouton
valeur_octet[0] = buttonState;

unsigned long time = millis(); // On stocque le temps actuelle retourné par millis() dans time

// Mirf.send((byte *)&time); // On envoi time en utilisant l’astuce du cast de pointeur sur adresse

Mirf.send(valeur_octet); // On envoie les octets, 1 octet pour le test

while(Mirf.isSending()); // On boucle (attend) tant que le message n’as pas était envoyé

Serial.print(« Octet envoye « ); // impression pour le contrôle du fonctionnement
Serial.print(valeur_octet[0]);
Serial.print( » « );
delay(10);

while(!Mirf.dataReady()){ // On attend de recevoir quelque chose
if ( ( millis() – time ) > 1000 ) { // Si on attend depuis plus d’une seconde
Serial.println(« =(« ); // C’est le drame …
return; // ce cas ne devrait pas se produire !!!
}
}

// Mirf.getData((byte *) &time); // On récupére le message recu

if (!Mirf.isSending() && Mirf.dataReady()){ // Si un message a été recu et qu’un autre n’est pas en cours d’emission
Mirf.getData(valeur_octet); // on récupére le méssage
Serial.print(« Recu : « );
Serial.println(valeur_octet[0]);
}
Etatrecu = valeur_octet[0]; // on récupère l’octet reçu
digitalWrite(ledPin, Etatrecu); // et on commande la led en conséquence
delay(100);
}
Serial.print(« Octet envoye « ); // impression pour le contrôle du fonctionnement
Serial.print(valeur_octet[0]);
Serial.print( » « );
delay(10);

while(!Mirf.dataReady()){ // On attend de recevoir quelque chose
if ( ( millis() – time ) > 1000 ) { // Si on attend depuis plus d’une seconde
Serial.println(« =(« ); // C’est le drame …
return; // ce cas ne devrait pas se produire !!!
}
}

// Mirf.getData((byte *) &time); // On récupère le message reçu

if(!Mirf.isSending() && Mirf.dataReady()){ // Si un message a été reçu et qu’un autre n’est pas en cours d’emission
Mirf.getData(valeur_octet); // on récupère le message
Serial.print(« Recu : « );
Serial.println(valeur_octet[0]);
}
Etatrecu = valeur_octet[0]; // on récupère l’octet reçu
digitalWrite(ledPin, Etatrecu); // et on commande la led en conséquence
delay(100);
}

 

// Le récepteur 2.4 GHz

// Essai de transmission avril 2014
// Philippe Redoutey sur bases issues d’internet

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

void setup(){
Serial.begin(9600);

Mirf.cePin = 8; // CE sur D8
Mirf.csnPin = 7; // CSN sur D7
Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware
Mirf.init(); // on initialise le SPI

Mirf.channel = 0; // On va utiliser le canal 0 pour communiquer (128 canaux disponible, de 0 à 127)
Mirf.payload = sizeof(unsigned byte); // = 1, ici il faut déclarer la taille du « payload » soit du message qu’on va transmettre, au max 32 octets
Mirf.config(); // Tout est bon ? Ok let’s go !

Mirf.setTADDR((byte *) »nrf01″); // Le 2eme module va envoyer ses info au 1er module
Mirf.setRADDR((byte *) »nrf02″); // On définit ici l’adresse du 2eme module

// RF_SETUP=0000abcd : a=1–>2Mb/s, a=0–>1Mb/s;
// puissance émission bc=00–>-18 dBm, bc=01–>-12dBm, bc=10–>-6dBm, bc=11–>0dBm;
// d=0 pas de gain sur le bruit en réception

Mirf.configRegister(RF_SETUP, 0x06); // 1 Mb/s et 0 dBm (puissance maximum)

Serial.println(« Go ! »);
}

void loop(){
byte data[Mirf.payload]; // Tableau de byte qui va stocker le message recu

if (!Mirf.isSending() && Mirf.dataReady()){ // Si un message a été reçu et qu’un autre n’est pas en cours d’émission
Serial.println(« Recu… « );
Mirf.getData(data); // on récupère le message
Mirf.send(data); // et on le renvoit tel quel
Serial.println(« Et renvoye! »);
delay(10);
}
}

Les résultats sont moyennement concluants; si la transmission fonctionne dès le premier essai, la portée n’est pas très importante : le second module étant au sous-sol, la transmission s’arrête quand je suis entre le rez-de-chaussée et le premier étage avec le premier modules (maison en pierres pour le sous-sol et briques au dessus); quand je sors de la maison, la transmission s’arrête à quelques mètres.

 

Seconds essais

Les essais suivants sont destinés d’une part, à améliorer la portée (en utilisant un autre modèle de carte nRF24L01) et d’autre part, à optimiser le code pour fiabiliser les transmissions.

==> suivre…

 

 

 

 

Abris de jardin avec toit végétal

 Brico philie  Commentaires fermés sur Abris de jardin avec toit végétal
Mai 022014
 

Abri de jardin

 

Je suis en pavillon avec une maison qui est en fond de parcelle; j’ai donc la totalité de mon jardin entre la rue et la maison; le jardin était un peu séparé en deux par une construction énorme regroupant un bûcher et un âtre phénoménal de près de 2 m3, le tout entouré d’un dallage (en fait, un des propriétaires précédent faisait de la ferronnerie, ceci expliquant cela). Cette construction se dégradant et étant pratiquement inutile, nous avons décidé de la supprimer et de la remplacer par un abris de jardin fait sur mesure.

Avec ma femme, nous avions fixé plusieurs critères :

  • une construction en bois,
  • outre le matériel de jardinage, pouvoir y entreposer en hivers les meubles de jardin,
  • y stocker les accessoires pour le chat,
  • y ranger les vélos,
  • y intégrer les poubelles,
  • y ranger mon scooter,
  • disposer d’un point d’eau, bac de lavage et plan de travail (pratique pour le jardinage),
  • ET un toit végétal (ça c’était mon truc à moi !).

Concernant le toit végétal, c’est une idée qui m’intéressait depuis longtemps au même titre que d’autres aspects « écologiques » (isolation par l’extérieur, ventilation double flux, puit canadien ou provençal…).

Bien sûr, rien de standard que l’on trouve facilement chez LM ou Kas.

J’ai donc tout dessiné en faisant mes calculs pour que cela tienne debout, et en en discutant avec des collègues et des amis également « bricoleurs ». Il fallait prévoir un peu costaud car le toit fait environ 20m² et, entre le bois de la structure du toit, la terre et surtout l’eau quand il pleut, le tout frise les 3 tonnes !

Après le coulage d’une dalle béton bien ferraillée et épaisse, j’ai monté la structure porteuse extérieure en faisant tous mes poteaux avec 2 bastaings; une petite structure intérieure en parpaings délimite les différentes zones et surtout amène un renforcement bienvenu; quelques bastaings en diagonale améliorent encore la solidité; ensuite 3 bastaings doubles horizontaux qui reçoivent les chevrons; structure du toit en OSB3 (utilisable en extérieur si il y a une face ventilée), une bâche en EPDM (faite pour et plus solide que les bâches PVC pour bassin), le système de drainage et anti-racine (j’ai opté pour l’Enkadrain), le substrat qui va bien pour y planter du sédum (on peut faire son mélange soi-même mais il faut vraiment faire ses comptes car le volume est quand même important, 2m3 pour 10cm d’épaisseur sur 20m², ce qui demanderait beaucoup de manipulations pour faire le mélange) et, en final, le sédum (ou plutôt les sédums : vert,  jaune, roux, avec ou sans fleur…).

La principale difficulté est de se procurer les différents matériels car la distribution en France est plutôt limitée; si la bâche EPDM est assez facile à trouver et se vend partiellement sur mesure, l’Enkadrain est plus difficile à trouver et ne se vend, pour l’instant, pas au détail (donc obligation de prendre un rouleau de 50m² et de se débrouiller pour revendre ce qui reste); concernant le substrat, il semble y avoir plein de sites internet mais quand on y regarde bien, c’est une seule entreprise qui dispose de près d’une quinzaine de sites différents.

J’ai également ajouté un système de récupération d’eau de pluie, fait sur mesure avec des bidons pour optimiser l’utilisation du volume de l’abri, notamment dans ses parties hautes. Pour les portes de l’abri, j’ai fait riche en réutilisant les anciennes portes en chêne de la maison; pour l’habillage des « murs », j’ai acheté du clin de qualité correcte car il faut quand même que cela dure sans devoir entretenir annuellement de façon conséquente.

Mise à jour mai 2018 : Pour le sédum, les résultats sont très bons dès la seconde année; de plus, inutile de passer du temps comme je l’ai fait en partant de pieds en petits pots dont j’ai délicatement séparé les motte pour disposer de plusieurs plans que j’ai installé un par un. J’ai réparti toutes les petits morceaux qui restaient à la surface du substrat pratiquement sans les enterrer et, 4 ans plus tard, la couverture est presque plus régulière qu’avec les plans installés un par un. Il faut quand même un peu entretenir suivant les variétés de sédum utilisées; certaines fleurissent avec des tiges de près de 30 à 35 cm et des bouquets de fleurs; une fois fanées et séchées, les tiges restent en place et ce n’est pas très joli (d’autant que l’on ne voir quasiment que ça depuis le sol) donc coupe à prévoir.