Ydle - version 0.5

Tutoriel d'un Node de température

Matériel :

  • 1 Atmega328p
  • 1 Support pour Atmega328p
  • 1 Quartz 16Mhz
  • 2 Condo 22pF
  • 1 Résistance 10K
  • 1 Résistance 4,7K
  • 1 Sonde DS18B20
  • 1 Bouton poussoir
  • 1 Émetteur
  • 1 Récepteur
  • 1 alim 5V
  • 1 plaque à trou
  • Du fil de différentes couleurs

Injection du code dans l'atmega328P

Pour cela, il va nous falloir un arduino uno sur lequel nous avons retiré l'atméga au préalable et mettre celui sur lequel nous voulons injecter la conf.

Pour retirer l'atemga sur l'arduino vous pouvez utiliser un tournevis très fin en y allant délicatement pour ne pas tordre les pâtes

Petite astuce pour faciliter les manipulations de vos atmega à programmer et éviter de leur abîmer les papattes en les insérant plusieurs fois sur différents supports, vous pouvez utiliser un socle pour mettre votre atmega sur l'arduino :

Ensuite sur votre PC :

Si vous ne l'avez pas déjà fait, il faut suivre d'abord : Installation

Lancer l'IDE Arduino et injecter la conf suivante :

/* Author : Fabrice Scheider AKA Denia
* Modifications: Xylerk
* Description : Node envoyant température en utilisant le protocole radio ydle.
* Note : J'utilise dans cette librairie un DS18B20, il est donc nécessaire que vous l'ayez dans
* votre répertoire librairies pour que le sketch compile.
* Licence : CC-BY-SA
*/
 
#include <TimerOne.h>
#include "Ydle.h"
#include <DallasTemperature.h>
#include <OneWire.h>
 
#define RX_PIN 12
#define TX_PIN 10
#define BT_PIN 3
 
#define DELAY_SEND 15000
 
#define DS18B20_PIN 9
 
OneWire oneWire(DS18B20_PIN);
DallasTemperature sensors(&oneWire);
 
ydle y(RX_PIN, TX_PIN, BT_PIN);
 
unsigned long last_send, cur_time;
 
void setup()
{
   Serial.begin(115200);
   Serial.println("init complete");
 
   y.init_timer();
 
   cur_time = millis();
   last_send = cur_time;
}
 
void loop()
{
   y.receive();
   if(y.initialized()){
      cur_time = millis();
      if(cur_time - last_send >= DELAY_SEND){
         last_send = cur_time;
         // code de récupération des informations venant du capteurs
         sensors.requestTemperatures();
         float temperature = sensors.getTempCByIndex(0);
         // Création de la frame qui va être envoyée
         Frame_t frame;
         // On y insère la valeur dont nous avons besoin
 
         /** Nous demandons un accusé réception.
         * La bibliothèque va s'occuper seule de l'acquittement
         * Si aucun acquittement n'est reçu au bout d'une seconde
         * elle procédera à un nouvel envois. Si au bout de 3 envois successifs
         * aucun acquittement n'est reçu, nous considérons la trame comme perdue.
         */
         y.dataToFrame(&frame, YDLE_TYPE_STATE_ACK);
 
         /** Nous ajoutons la valeur que nous avons récupérée auprès du capteur
         */
         y.addData(&frame, YDLE_DATA_DEGREEC, temperature);
         /** Nous procédons à l'envoi de la trame.
         *
         */
         y.send(&frame);
 
      }
   }
}

En cas d'erreur suivante : stk500_getsync(): not in sync: resp=0x00 , vous avez surement un problème de bootloader, dans ces cas là suivez ce tuto pour régler votre problème :Tuto Bootloader

Mise en place du node

Dans un premier temps, avant de passer à la soudure, je ne saurais que trop de vous conseiller de tester l'ensemble sur une breadboard. Une fois ce teste réaliser nous pourrons passer à la soudure

FIXME Ne pas tenir compte du capteur LM35, il s'agit bien d'un DS18B20

Tout d'abord nous allons mettre en place l'atemga328 avec l'alimentation sur les Pin 7 pour le 5V et 8 pour le GND

Puis le cristal sur les Pin 9 et 10 de l'atmega et chaque condo avec une patte sur le cristal et l'autre sur le GND

Ensuite nous mettons le bouton en place avec une patte sur le 5V, une patte du même coté sur le Pin 5 et de l'autre coté on place une résistance de 10K qui part ensuite sur le GND

Ensuite l'émetteur, on place le Vcc sur le 5V, le GND sur le gnd et le Data sur le Pin 16

Pour le récepteur on place le GND sur le GND, le DATA sur le Pin 18 et le Vcc sur le Pin 11

Et enfin la sonde avec le Vcc (fil rouge) sur le 5V, le GND (fil noir) sur le GND et le data (fil blanc) sur le Pin 15 avec une résistance de 4,7K entre le DATA et le 5V

Pour ceux qui préfère un schéma :

Soudure sur plaque à trou

Maintenant que l'on est sûr que tout fonctionne, nous allons pouvoir passer à la soudure. Pour ma part j'utilise une plaque à trou de 7×5 cm. Libre à vous de souder sur autre chose. (Nous reviendrons plus tard sur la façon de faire sont propre CI pour ceux qui le veulent.)

Avant de passer à la soudure il nous reste un point à voir, c'est l'implantation des composants sur la plaque. Prenez le temps de réfléchir à cela car en fonction de la boite dans laquelle vous allez mettre votre plaque, il peut être intéressant de placer différemment vos composants pour que l'alimentation ou votre sonde ou quoi que soit d'autre soit placé au bon endroit en face d'un trou ou autre chose.

Voici comment j'ai placé mes composants. Sur cette photo il manque l'alimentation.

Ensuite on commence par souder le support de l'atmega

Puis les différents composants

Puis on relie tous les câbles Data vers le support de l'atmega

PS : la pâte à fixe me permet de maintenir les câbles de ma sonde DS18B20

Puis la masse

Puis le Vcc

Enfin, on termine en le mettant dans la boite.

Pour ma part j'ai fait 2 types de boites différentes, une en carton fait main pour mettre dans le salon de façon assez discrète et une autre dans une boite électrique plus étanche pour mettre dans un compartiment de mon aquarium.

Pour éviter de tirer sur les soudures des câbles d'alim et de la sonde, j'ai utilisé de la colle chaude pour que tout soit bien maintenu au boîtier.


Autres langues
Traductions de cette page:
QR Code
QR Code Tutoriel d&#039;un Node de température (generated for current page)