Table des matières
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
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.