Ydle - version 0.5

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

installationnode [2015/01/11 18:00] (Version actuelle)
Ligne 1: Ligne 1:
 +On va parler ici de l'​installation du node (v0.2) le plus simple : le capteur de température.
  
 +Nous allons avoir besoin d'un arduino, d’émetteur et récepteur, d'un capteur de température 1-Wire DS18B20, d'un switch et 2 résistances...
 +
 +C'est parti !
 +
 +
 +__Je vais commencer par l’implantation physique et comme un dessin vaut toujours qu'un long discours :__
 +{{:​node_v0.2_bb.png?​900|}}
 +
 +Les composants sont les suivants :
 +  * Recepteur 433MHz (que je n'ai pas réussi à créer sur Fritzing et qui est donc représenté par le R433)
 +  * Emetteur 433MHz (que je n'ai pas réussi à créer sur Fritzing et qui est donc représenté par le T433)
 +  * Capteur de température DS18B20 (LM53 sur le schéma
 +  * Switch
 +  * Résistance 10k ohm
 +  * Résistance 4,7k ohm
 +  * Des fils : j'ai fait le choix dans le schéma de ne pas les faire se croiser pour plus de lisibilité ce qui m'a fait en rajouter certains inutiles
 +
 +
 +__On attaque maintenant la programmation de l'​arduino__
 +
 +On charge le code dans l'​arduino. Je me suis servi du fichier exemple de la bibliothèque Ydle //​envois_temp//​ :
 +{{:​node_arduino.gif?​900|}}
 +
 +<code c>
 +// Ce sketch de test permet l'​envoie de la température vers un Node ou un master
 +// après initialisation
 +
 +#include <​Ydle.h>​
 +#include <​DallasTemperature.h>​
 +#include <​OneWire.h>​
 +#include <​EEPROM.h>​
 +
 +#define DS18B20 0x28     // Adresse 1-Wire du DS18B20
 +
 +Ydle ydle();
 +Ydle Ydle;
 +
 +int timer = 4000;
 +int pinNode = 9;
 +
 +OneWire oneWire(pinNode);​
 +DallasTemperature sensors(&​oneWire);​
 +Config_t signal;
 +
 +
 +void setup()
 +
 +  sensors.begin();​
 +  Serial.begin(9600);​
 +}
 +
 +void loop()
 +{
 +  if(Ydle.resetButton())
 +  {
 +    delay(250); ​   //Pour empécher l'​effet de rebond
 +    Serial.print("​Récupération identifiants"​);​
 +    Ydle.initialisation();​
 +  }
 + 
 +  if(Ydle.initialized())
 +  {
 +    int signe = 0;
 +    //Lancement de la commande de recuperation de la temperature
 +    sensors.requestTemperatures();​
 +    //Affichage de la temparature dans les logs
 +    float currentTemperature = sensors.getTempCByIndex(0);​
 +    log(currentTemperature);​
 +    int temperature = currentTemperature * 100;
 +    if(temperature > 0){
 +      signe = 1;
 +    }
 +    Ydle.dataToFrame(Ydle.getSender(),​ Ydle.getReceptor(),​ 1, signe, temperature);​
 +    Ydle.transmit();​
 +    Ydle.transmit(); ​
 +    delay(timer);​
 +  }
 +  else {
 +    Serial.print("​Récupération identifiants"​);​
 +    Ydle.initialisation();​
 +  }
 +}</​code>​
 +
 +Il y a un bug dans le sketch, la fonction log ne fonctionne pas. On rajoute donc au programme :
 +<code c>    log(currentTemperature);​
 +    Serial.println(currentTemperature);</​code>​
 +
 +
 +On le téléverse dans l'​arduino et on lancer le moniteur Série. Normalement on devrait avoir une mise en attente d'​initialisation :
 +<​code>​Récupération identifiants</​code>​
 +
 +
 +__Initialisation du node sur le master__
 +
 +
 +On démarrage le ydlemaster sur le RPi :
 +<code bash>cd cd /​home/​pi/​Ydle/​ydle/​v0.2/​master/​
 +sudo ./​ydlemaster</​code>​
 +
 +A ce moment l'​émetteur fonctionne (l'​arduino),​ le récepteur aussi (le RPi) mais ils ne causent pas encore ensemble, il faut le leur dire (et c'est normal).
 +
 +Sur le RPi on doit avoir quelque chose dans le genre :
 +<​code>​Demarrage du programme
 +Start listen thread
 +Aucune donnee...
 +Lenght od data receive before faild:1
 +Aucune donnee...
 +Lenght od data receive before faild:1
 +Aucune donnee...
 +Lenght od data receive before faild:1
 +Aucune donnee...
 +Lenght od data receive before faild:1
 +...</​code>​
 +
 +Sur l'ihm on crée (ou on modifie) un capteur :
 +{{:​node_ihm.gif|}}
 +
 +
 +Puis on le (ré)initialise en appuyant sur le gros bouton :
 +{{:​node_init.gif|}}
 +
 +
 +Ceci provoque sur le RPi l'​envoi de l'​initialisation :
 +<​code>​Demarrage du programme
 +Start listen thread
 +XML-RPC:​nodeReset::​execute
 +data received
 +------------------------------
 +Donnees
 +sender 2
 +type 1
 +signe 1
 +data 2731
 +data received
 +------------------------------
 +Donnees
 +sender 2
 +type 1
 +signe 1
 +data 2731
 +...</​code>​
 +
 +Et sur l'​Arduino :
 +<​code>​Enregistrement du signal reçu comme signal de réference
 +27.31
 +27.31
 +...</​code>​
 +
 +La température est envoyée toutes les 4 secondes.
 +
 +
 +Et enfin après un peu de temps (pour avoir une belle courbe) sur l'ihm :
 +{{:​ihm_v02.gif|}}
 +
 +
 +Et voilà 8-)

QR Code
QR Code installationnode (generated for current page)