Ydle - version 0.5

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 :

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 :

// 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();
  }
}

Il y a un bug dans le sketch, la fonction log ne fonctionne pas. On rajoute donc au programme :

    log(currentTemperature);
    Serial.println(currentTemperature);

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 :

Récupération identifiants

Initialisation du node sur le master

On démarrage le ydlemaster sur le RPi :

cd cd /home/pi/Ydle/ydle/v0.2/master/
sudo ./ydlemaster

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 :

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
...

Sur l'ihm on crée (ou on modifie) un capteur :

Puis on le (ré)initialise en appuyant sur le gros bouton :

Ceci provoque sur le RPi l'envoi de l'initialisation :

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
...

Et sur l'Arduino :

Enregistrement du signal reçu comme signal de réference
27.31
27.31
...

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 :

Et voilà 8-)


Autres langues
Traductions de cette page:
QR Code
QR Code installationnode (generated for current page)