Arduino Forum

International => Français => Topic started by: infobarquee on Feb 26, 2012, 11:19 am

Title: projet couveuse ventilée
Post by: infobarquee on Feb 26, 2012, 11:19 am
bonjour tout le monde,
petit projet un peu fou et risqué

ayant des canards chez moi et la période de ponte commence, je me demande s'il est possible de faire une couveuse pilotée avec un arduino.
tout le monde va dire que oui, c'est possible, moi le premier.

mais la question que je me pose est, est ce que la sonde de température est assez précise pour détecter des différences au 1/10 de degré?
quelle sonde de température et humidité choisir?

problématique :
température ventilée = 37.5-37.8C
humidité = 30-50%
affichage température sur un lcd
réglage de la température mini et maxi
chaleur produite : lampe 220v 60w
ventilation : ventilo de pc
je ne vais pas pousser le vice juqu'a faire un retournement des oeufs automatiquement tous les jours :)

base du projet : un ancien frigo
temps d'incubation : 28j

EDIT :
possibilité de modifier via ethernet ou wifi les réglages et connaitre la température et humidité à tout moment :)
Title: Re: projet couveuse ventilée
Post by: Artouste on Feb 26, 2012, 12:45 pm


mais la question que je me pose est, est ce que la sonde de température est assez précise pour détecter des différences au 1/10 de degré?
quelle sonde de température et humidité choisir?

problématique :
température ventilée = 37.5-37.8C
humidité = 30-50%


Bonjour infobarquee
comme toujours en thermométrie, il faut faire la différence entre precision et résolution
dans la gamme de température courante et pour du capteur facile d'appro, on ne trouve pas grand chose en precision < 0.5°C
le LM92 est un bon candidat (precision <= 0.33 °C centrée sur 30°C , resolution 0.0625 °C  grade "medical" , gestion en I2C ) .
Sinon après tu pars sur du plus lourd et de toutes façons tu doit en passer par un etalonage de température (chambre climatique) pour calibrer les équipements, ça ne sert à rien de vouloir du 0.1°C entre 37.5 et 37.8 si tu ne peut pas déjà étalonner.
et vouloir obtenir une T° homogène en precision relative de   0.1°C dans tout le volume de la couveuse est illusoire.
Dans les couveuses il faut plus prevenir/surveiller les brusques variations que la valeur en elle meme, les 1eres couveuses indistrielles
fonctionnait au bilame, et la mortalité n'etait pas plus importants que dasn les couveuse industrielles d'aujourdui, le point impportant est
de centrer "la bonne T°"

pour les sondes hygro,la dispersion de precision est  importante
un truc comme ça sera parfait
http://www.selectronic.fr/module-capteur-hygrometrie-10-a-90.html

Quote
je ne vais pas pousser le vice juqu'a faire un retournement des oeufs automatiquement tous les jours smiley

c'est pourtant plus simple que de vouloir du 0.1  :smiley-mr-green:
faire tourner des rouleaux de ~180° c'est facile  8)


Title: Re: projet couveuse ventilée
Post by: jfs on Feb 26, 2012, 12:56 pm

faire tourner des rouleaux de ~180° c'est facile  8)


Non, non... chaque oeuf sur un ventouse...  et rotation avec un pan-tilt XD
Title: Re: projet couveuse ventilée
Post by: infobarquee on Feb 26, 2012, 01:03 pm
merci pour les renseignements ;)
par contre pour ceci
Code: [Select]
et vouloir obtenir une T° homogène en precision relative de   0.1°C dans tout le volume de la couveuse est illusoire.
le volume ne sera pas grand, d'ou une ventilation afin d'avoir une T° homogène dans le volume.
la sonde sera au niveau des oeufs afin d'ajuster au mieux la T°, et je ne vais pas avoir 400 oeufs mais si tout va bien une 50ene.

j'avoue que c'est plus pour le fun, sinon il existe des couveuses à pas trop chères.
Title: Re: projet couveuse ventilée
Post by: Artouste on Feb 26, 2012, 01:36 pm

merci pour les renseignements ;)
par contre pour ceci
Code: [Select]
et vouloir obtenir une T° homogène en precision relative de   0.1°C dans tout le volume de la couveuse est illusoire.
le volume ne sera pas grand, d'ou une ventilation afin d'avoir une T° homogène dans le volume.
la sonde sera au niveau des oeufs afin d'ajuster au mieux la T°, et je ne vais pas avoir 400 oeufs mais si tout va bien une 50ene.

j'avoue que c'est plus pour le fun, sinon il existe des couveuses à pas trop chères.

La precision se paie, si il 'y en a des pas chères c'est que la precision doit être relative.  :smiley-mr-green:
justement plus le volume est faible plus le delta T° entre point sera important, ne serait ce qu du au flux de l'extraction.
mais ne te prend pas la "tete" ton projet est intéressant et la nature sait aussi comment se comporter
part sur un lm92
c'est encore du format simple en amateur SO8
http://cjoint.com/12fe/BBAnHcprEqq_lm92.jpg
Title: Re: projet couveuse ventilée
Post by: infobarquee on Feb 26, 2012, 01:52 pm
il est vrai que la nature sait comment faire, mais retrouver des oeufs en dehors des nichoirs (non parce qu'il est clair) le matin parce qu'une autre cane veut couver dans le même nichoir alors qu'elle en a à sa dispo, ca met les glandes le matin.
je n'ai pas que des colverts normaux, mais aussi des mignons et des sarcelles, donc si je peux éviter la casse, je mets toutes les chances de mon coté pour avoir de beaux pioupious au bout.

je viens de voir chez http://www.nuelectronics.com/estore/index.php?main_page=product_info&products_id=28
Title: Re: projet couveuse ventilée
Post by: Artouste on Feb 26, 2012, 02:02 pm

il est vrai que la nature sait comment faire, mais retrouver des oeufs en dehors des nichoirs (non parce qu'il est clair) le matin parce qu'une autre cane veut couver dans le même nichoir alors qu'elle en a à sa dispo, ca met les glandes le matin.
je n'ai pas que des colverts normaux, mais aussi des mignons et des sarcelles, donc si je peux éviter la casse, je mets toutes les chances de mon coté pour avoir de beaux pioupious au bout.

je viens de voir chez http://www.nuelectronics.com/estore/index.php?main_page=product_info&products_id=28


J'avais bien compris , lorsque là j'évoquais la "nature" c'était aussi sur la capacité de l'œuf en couveuse à pouvoir aussi supporter un léger Delta T°
il ne faut pas négliger son inertie et regulation  interne.

je pense que ton projet tient la route

Le capteur du lien est sold out
Title: Re: projet couveuse ventilée
Post by: Michel_B on Feb 26, 2012, 02:47 pm
Quote
je ne vais pas pousser le vice juqu'a faire un retournement des oeufs automatiquement tous les jours


Bin si !
Les oeufs séparés entre eux par une cloison, un servo avec un un bras de levier qui tire la grille sur laquelle ils sont posé et le tour est joué  :D

++
Title: Re: projet couveuse ventilée
Post by: fdufnews on Feb 26, 2012, 02:59 pm
Quote
ayant des canards chez moi et la période de ponte commence, je me demande s'il est possible de faire une couveuse pilotée avec un arduino.
tout le monde va dire que oui, c'est possible, moi le premier.

mais la question que je me pose est, est ce que la sonde de température est assez précise pour détecter des différences au 1/10 de degré?
quelle sonde de température et humidité choisir?

Je doute que les canes régulent au 1/10 de degrés.
Title: Re: projet couveuse ventilée
Post by: infobarquee on Feb 26, 2012, 05:05 pm
détrompes toi, elles savent très bien réguler la température pour que les oeufs aient une T° constante.
le but de faire une incubation automatique permet d'avoir de très bons résultats d'éclosions et d'éviter les malformations.
cela permet aussi de se faire bouloter les oeufs par des rats ou autres prédateurs.
mais on s'écarte du sujet pour le montage.
Title: Re: projet couveuse ventilée
Post by: jfs on Feb 26, 2012, 05:08 pm

mais on s'écarte du sujet pour le montage.


Au contraire, c'est intéressant de connaitre ça également pour ton install.
Title: Re: projet couveuse ventilée
Post by: Oliv4945 on Feb 26, 2012, 05:19 pm
Bonjour,

J'ai déjà utilisé un SHT11 (je ne connais pas la différence avec le DHT11 que tu cites) et pas eu de soucis avec, facile à utiliser et surtout déjà étalonné en usine, ce qui est non négligeable ;)
Regardes sur ebay sinon il y en a régulièrement
Title: Re: projet couveuse ventilée
Post by: Artouste on Feb 26, 2012, 06:08 pm

je mets toutes les chances de mon coté pour avoir de beaux pioupious au bout.

Un peu HS, mais le canard est un animal sympathique et finalement pas mauvais.  8)

il y a quelques années je croisais régulièrement (mais pas à la nage  :smiley-mr-green: ) un joli mandarin qui vivait en bord de seine avec une petite colonie de colvert, je n'ai jamais su comment il avait "atterri"  là .

(http://cjoint.com/12fe/BBAscyXlkLS_mandpen1.jpg)
(http://cjoint.com/12fe/BBAseWYk5AH_mandpen2.jpg)

Ici avec Madame et Monsieur Colvert ses voisins  8)
(http://cjoint.com/12fe/BBAsgA9iU9s_mandcolv.jpg)


Title: Re: projet couveuse ventilée
Post by: infobarquee on Feb 26, 2012, 08:04 pm
non bagué, il a due se barrer d'un parc d'ornement perso ou parc paysager.

@Jean francois
les canards ont une T° corpo aux alentours de 41-41.5C
l'hygro est faite par le bas et le eau quand la cane revient de l'eau, jamais absente très longtemps, le temps de s'abreuver, se lisser les plumes et boire un coup de gnole :)

en incubation il faut pour une ventilée les chiffres donnés au début du topic.
pour une non ventilée il faut entre 39 et 39.5C
T° prise au niveau du haut des oeufs.
au bout des 28j il faut monter l'hygro au dessus de 70% à partir du 25eme jour.
j'ai déjà testé avec 100% de casse la manière non ventilée, trop de variations de température.

pour les ventilos, j'ai largement ce qu'il faut après avoir récupéré tout le matériel d'un copain qui fermait son magasin d'informatique.
pour les sondes, j'ai commandé 2 dht11 et une dht21, j'ai un projet station météo en cours aussi.

par contre, je réfléchis pour produire le chauffage, soit je continue avec une ampoule (j'ai les relais déjà pour l'arduino),  soit via une résistance, mais laquelle.
Title: Re: projet couveuse ventilée
Post by: Artouste on Feb 26, 2012, 08:37 pm

non bagué, il a due se barrer d'un parc d'ornement perso ou parc paysager.

par contre, je réfléchis pour produire le chauffage, soit je continue avec une ampoule (j'ai les relais déjà pour l'arduino),  soit via une résistance, mais laquelle.


pour le mandarin, c'est ce que je me suis dit, mais il restait toujours a proximité à +/- 100 metres

Reflexion à chaud
je partirais eventuellement sur ce genre de résistance de puissance montée sur radiateur soufflé par ventilo
http://www.selectronic.fr/resistance-de-puissance-20w-type-rh25-10-ohm.html
pour générer de l'hygro facilement, contrôlable et sans avoir des gouttes qui tombent partout  :smiley-mr-green:
je mettrais un petit nébuliseur genre ça
http://www.selectronic.fr/module-nebuliseur-a-ultrasons-sans-leds.html
a chaud   :smiley-mr-green: je mettrais le système de chauffe et générateur hygro après un ventilo utilisé non pas en extraction , mais en soufflante, mettre aussi un ventilo en extraction haute est peut etre surement une bonne idée.
ce qui donne air exterieur--->ventilo---->rechauffage controlé----->humidification controlée----->injection en bas de couveuse.

mias tout ça nécessite de faire déjà un peu de calcul sur le volume d'air à T° constante à renouveler par heure

et edit (tout ça à cause de mon épouse qui lit aussi ce que j'écris  :smiley-mr-green: )
pourquoi pas une récupération partielle au moins pour le chauffage d'un sèche cheveu ?
(NB , j'ai interdiction de démonter le sien pour voir comment c'est foutu dedans, mais idée à creuser  8)  )

Title: Re: projet couveuse ventilée
Post by: jfs on Feb 26, 2012, 08:42 pm
+1 avec Artouste.

Je ferais également un caisson "tampon" dans lequel l'air serait homogénéisé avant de le "propulser" dans la couveuse
Title: Re: projet couveuse ventilée
Post by: Artouste on Feb 26, 2012, 08:51 pm

+1 avec Artouste.

Je ferais également un caisson "tampon" dans lequel l'air serait homogénéisé avant de le "propulser" dans la couveuse


le bac à legume en bas de frigo doit faire l'affaire pour tout ce qui est "génération"  8)
Title: Re: projet couveuse ventilée
Post by: infobarquee on Feb 26, 2012, 10:40 pm
ha les femmes, je pensais au ventilo de la salle de bain, mais vu les yeux de ma femme qui prenait son bain, j'ai compris assez vite que je devais oublier mon larsin  :smiley-mr-green:

pour la résistance de 20w, c'est un peu lèger, je verrais plus une 80-140w en 220v suivant si je prends le haut ou le bas du frigo (congel ou frigo)
pour l'hygro, un bac à eau suffit dans le bas.
faut que je me replonge dans les calculs de chaleur pour trouver le bon rapport puissance/consommation.
autre avantage de l'air pulsé, c'est comme un four a chaleur tournante, l'air à la même température partout.

quelques exemples et caractéristiques de couveuses http://www.plumage.eu/t3347-fiches-techniques-sur-les-couveuses



Title: Re: projet couveuse ventilée
Post by: Artouste on Feb 27, 2012, 08:08 pm

ha les femmes, je pensais au ventilo de la salle de bain, mais vu les yeux de ma femme qui prenait son bain, j'ai compris assez vite que je devais oublier mon larsin  :smiley-mr-green:

pour la résistance de 20w, c'est un peu lèger, je verrais plus une 80-140w en 220v suivant si je prends le haut ou le bas du frigo (congel ou frigo)
pour l'hygro, un bac à eau suffit dans le bas.
faut que je me replonge dans les calculs de chaleur pour trouver le bon rapport puissance/consommation.
autre avantage de l'air pulsé, c'est comme un four a chaleur tournante, l'air à la même température partout.

quelques exemples et caractéristiques de couveuses http://www.plumage.eu/t3347-fiches-techniques-sur-les-couveuses



a la reflexion, cannibaliser un seche cheveu à 10 € (juste utiliser la resistance , pas la soufflante) et gerer la résistance avec un moc3041 et un triac ne doit pas être une mauvaise solution pour reguler la T° de l'air entrant.
par culture thermodynamique , je privilegierai l'injection d'air rechaufé par le bas.

question ?
comment l'hygro peut elle etre regulée avec simplement un bac d'eau  8)
Title: Re: projet couveuse ventilée
Post by: infobarquee on Feb 28, 2012, 12:38 am
sur les couveuses de base, l'hygro se fait par évaporation via des bacs à eau simplement comme dans une cave à cigares avec un tampon humidifié.
sinon, via l'air ambiant, on a déjà une bonne hygro à la base.

pour la temp, faut que je calcule ca.
Title: Re: projet couveuse ventilée
Post by: Artouste on Feb 28, 2012, 12:26 pm

sur les couveuses de base, l'hygro se fait par évaporation via des bacs à eau simplement comme dans une cave à cigares avec un tampon humidifié.
sinon, via l'air ambiant, on a déjà une bonne hygro à la base.

pour la temp, faut que je calcule ca.



ok
pour partir sur une regul de T° assez souple, je mettrais un 18B20 en sortie de flux d'air rechauffé et en correlant avec le capteur situé au plus pres des oeufs AMHA un autre 18B20 doit être suffisant (le principal etant d'avoir prealablement procedé à une bonne calibration)n une pseudo regulation en PID doit faire l'affaire.
je ne suis pas sur que ce soit déjà aussi sophistiqué dans les couveuses "amateurs" de ton lien
Title: Re: projet couveuse ventilée
Post by: jfs on Feb 28, 2012, 12:31 pm
Pense aussi à une façon de refroidir l'air, éventuellement un portillon qui s'ouvre dans la préchambre et qui "aspire" de l'air de l'extérieur de la couveuse.... une idée comme ça.
Title: Re: projet couveuse ventilée
Post by: Artouste on Feb 28, 2012, 12:50 pm

Pense aussi à une façon de refroidir l'air, éventuellement un portillon qui s'ouvre dans la préchambre et qui "aspire" de l'air de l'extérieur de la couveuse.... une idée comme ça.

Tant qu'à se lancer dans l'usine à gaz  :smiley-mr-green:
je mettrais un module peltier pour refroidir  l'air trop rechauffé  :smiley-mr-green:
Title: Re: projet couveuse ventilée
Post by: jfs on Feb 28, 2012, 01:19 pm

Tant qu'à se lancer dans l'usine à gaz  :smiley-mr-green:
je mettrais un module peltier pour refroidir  l'air trop rechauffé  :smiley-mr-green:


J'osais pas le proposer  :smiley-mr-green:
Title: Re: projet couveuse ventilée
Post by: infobarquee on Feb 29, 2012, 01:20 pm
bonjour,
les propositions fusent a ce que je vois  :smiley-mr-green:
je viens de recevoir un dht21 et il est déjà monté avec un shield ethernet tant qu' a faire MDR
j'ai comparé avec ma station météo pro et ca peut aller niveau T° et Hum.

montage d'une led pour tester si la temp est en dessous d'une certaine valeur, je pense que je vais attaquer sérieux dans la journée si tout mon taf avance vite.

un petit bout de code pour ceux que ca pourrait intéresser
le seul petit problème, les couleurs mal gérées à part le background

Code: [Select]
//projet couveuse infobarquee
//temp et humidex avec lampe temoin V1.0
#include <SPI.h>
#include <Ethernet.h>
#include "DHT.h"
#define DHTPIN 2

int led1 = 9; // led

byte    mac[] =     { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };   //physical mac address
byte    ip[] =      { 192, 168, 2, 177 };                     // ip in lan
byte    gateway[] = { 192, 168, 2, 2 };                       // the IP of the router or acsesspoint
byte    subnet[] =  { 255, 255, 255, 0 };                     //subnet mask (i dont think this is neccesary
Server  server(80);  // server port (change this if you are having a local webserver else than the arduino)

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);


void setup()
{    
 Serial.begin(9600); //enable serial datada print
 Ethernet.begin(mac, ip, gateway, subnet); //start Ethernet
 pinMode(led1, OUTPUT);
 Serial.println("DHTxx test!");

 dht.begin();
}

void loop(){

 Client client = server.available();  // Create a client connection
 if (client) {
   while (client.connected()) {
     if (client.available()) {
     float h = dht.readHumidity();
     float t = dht.readTemperature();
     if (t < 20){analogWrite(led1,255);}else{analogWrite(led1,0);}
      if (isnan(t) || isnan(h)) {
       Serial.println("Failed to read from DHT");
       } else {

         Serial.print("Humidity: ");
         Serial.print(h);
         Serial.print(" %\t");
         Serial.print("Temperature: ");
         Serial.print(t);
         Serial.println(" *C");
       }    
//Web page  
        client.println("HTTP/1.1 200 OK"); //output HTML data starting with standart header
         client.println("Content-Type: text/html");
         client.println();
         client.print  ("<body style=background-color:grey>"); //set background to white
         client.print("<center>");
         client.println("<font color='#000000'><h1>Arduino control Temperature And Humidex</font></h1>");//send first heading
         client.println("<font color='#ffffff'><h1>Refresh every 5s</font></h1>");//send first heading
         client.println("<font color='#ffffff'><h1>By Infobarquee</font></h1>");//send first heading
         client.print("<font color='white'><h2>Humidity: ");
         client.print(h);
         client.println(" %\t");
         client.print("Temperature: ");
         client.print(t);
         client.println(" *C");

          client.println("</h2>");

         client.println("</body></html>");
         client.println("<META HTTP-EQUIV='Refresh' CONTENT='5; URL=http://192.168.2.177'>"); //refresh every 5s
         client.stop(); //stopping client

       }
     
   }
 }
}
Title: Re: projet couveuse ventilée
Post by: Artouste on Feb 29, 2012, 01:45 pm

bonjour,
les propositions fusent a ce que je vois  :smiley-mr-green:
je viens de recevoir un dht21 et il est déjà monté avec un shield ethernet tant qu' a faire MDR
j'ai comparé avec ma station météo pro et ca peut aller niveau T° et Hum.


C'est sympa tous ces projets différents  :smiley-mr-green:

rapide regard sur le datasheet (si je ne me suis pas planté , le sourçage est difficile)
en precision tu es déjà a +/- 1° C , 0.1 en résolution et repetatibilité +/- 0.2°

Par pure curiosité , je serais curieux de savoir quels capteurs sont utilisés dans les couveuses des liens que tu a exposé plus haut  8)

Measuring range humidity 0-100%RH; temperature -40 - 80Celsius
Accuracy humidity +/-3%RH(Max +-5%RH); temperature < +/-1Celsius
Resolution or sensitivity humidity 0.1%RH; temperature 0.1Celsius
Repeatability humidity +/-1%RH; temperature +/-0.2Celsius
Title: Re: projet couveuse ventilée
Post by: infobarquee on Feb 29, 2012, 01:50 pm
petit extrait du serial
Code: [Select]
Humidity: 55.60 % Temperature: 20.00 *C
Humidity: 55.10 % Temperature: 19.80 *C
Humidity: 55.00 % Temperature: 20.00 *C
Humidity: 54.70 % Temperature: 19.70 *C
Humidity: 54.50 % Temperature: 19.80 *C
Humidity: 54.40 % Temperature: 19.80 *C
Humidity: 54.40 % Temperature: 19.90 *C
Humidity: 54.50 % Temperature: 20.10 *C
Humidity: 54.40 % Temperature: 20.10 *C
Humidity: 54.20 % Temperature: 20.00 *C
Humidity: 53.90 % Temperature: 20.10 *C
Humidity: 53.90 % Temperature: 20.10 *C
Humidity: 53.70 % Temperature: 20.30 *C
Humidity: 53.30 % Temperature: 20.30 *C
Humidity: 52.70 % Temperature: 20.30 *C
Humidity: 52.20 % Temperature: 20.30 *C
Humidity: 52.30 % Temperature: 20.50 *C
Humidity: 52.20 % Temperature: 20.40 *C
Humidity: 52.20 % Temperature: 20.40 *C
Humidity: 52.10 % Temperature: 20.50 *C
Humidity: 51.60 % Temperature: 20.40 *C
Humidity: 51.40 % Temperature: 20.60 *C


pour la sonde, je vais regarder, un pote a une couveuse ventilée justement.
prochain test, le wifi avec les cartes de papa noël
Title: Re: projet couveuse ventilée
Post by: infobarquee on Feb 29, 2012, 04:21 pm
voila, c'est en wifi le bébé :)
pour ceux que ca pourrait intéresser je mets le script aussi, mais bon pas top en accès de l'extérieur, en interne ca va.

Code: [Select]
//projet couveuse infobarquee
//temp et humidex avec lampe temoin V1.0
#include <WiServer.h>
#include "DHT.h"
#define DHTPIN 7

int led1 = 9; // led
float h ;
float t ;


#define WIRELESS_MODE_INFRA 1
#define WIRELESS_MODE_ADHOC 2

// Wireless configuration parameters ----------------------------------------
unsigned char local_ip[] = {192,168,2,200}; // IP address of WiShield
unsigned char gateway_ip[] = {192,168,2,2}; // router or gateway IP address
unsigned char subnet_mask[] = {255,255,255,0}; // subnet mask for the local network
const prog_char ssid[] PROGMEM = {"infobarquee-maison"}; // max 32 bytes

unsigned char security_type = 0; // 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2

// WPA/WPA2 passphrase
const prog_char security_passphrase[] PROGMEM = {"12345678"}; // max 64 characters

// WEP 128-bit keys
// sample HEX keys
prog_uchar wep_keys[] PROGMEM = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, // Key 0
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 1
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 2
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Key 3
};

// setup the wireless mode
// infrastructure - connect to AP
// adhoc - connect to another WiFi device
unsigned char wireless_mode = WIRELESS_MODE_INFRA;

unsigned char ssid_len;
unsigned char security_passphrase_len;
// End of wireless configuration parameters ----------------------------------------

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);


// This is our page serving function that generates web pages
boolean sendMyPage(char* URL) {
 
   // Check if the requested URL matches "/"
   if (strcmp(URL, "/") == 0) {
       // Use WiServer's print and println functions to write out the page content
//Web page  
        //WiServer.println("HTTP/1.1 200 OK"); //output HTML data starting with standart header
         //WiServer.println("Content-Type: text/html");
         //WiServer.println();
         float h = dht.readHumidity();
         float t = dht.readTemperature();
         WiServer.print  ("<body style=background-color:grey>"); //set background to white
         WiServer.print("<center>");
         WiServer.println("<font color='#000000'><h1>Arduino control Temperature And Humidex</font></h1>");//send first heading
         WiServer.println("<font color='#ffffff'><h1>Refresh every 5s</font></h1>");//send first heading
         WiServer.println("<font color='#ffffff'><h1>By Infobarquee</font></h1>");//send first heading
         WiServer.print("<font color='white'><h2>Humidity: ");
         WiServer.print(h);
         WiServer.println(" %\t");
         WiServer.print("Temperature: ");
         WiServer.print(t);
         WiServer.println(" *C");
         WiServer.println("</h2>");
          WiServer.println("</h2>");
          WiServer.println("<META HTTP-EQUIV='Refresh' CONTENT='5; URL=http://192.168.2.200'>"); //refresh every 5s
          WiServer.println("</body></html>");
         //WiServer.stop(); //stopping client

       
       // URL was recognized
       return true;
   }
   // URL not found
   return false;
}




void setup()
{    
 Serial.begin(9600); //enable serial datada print
 WiServer.init(sendMyPage);
   WiServer.enableVerboseMode(true);
 pinMode(led1, OUTPUT);
 Serial.println("DHTxx test!");

 dht.begin();
}

void loop(){
     float h = dht.readHumidity();
     float t = dht.readTemperature();
     if (t < 20 || t > 21){analogWrite(led1,255);}else{analogWrite(led1,0);}
      if (isnan(t) || isnan(h)) {
       Serial.println("Failed to read from DHT");
       } else {

         Serial.print("Humidity: ");
         Serial.print(h);
         Serial.print(" %\t");
         Serial.print("Temperature: ");
         Serial.print(t);
         Serial.println(" *C");
       }      
 
 
 WiServer.server_task();
 

 delay(10);
       }
     
   
 



EDIT un petit gauffrage dans le code :)
Title: Re: projet couveuse ventilée
Post by: infobarquee on Feb 29, 2012, 11:28 pm
petit feedback pour le dht21
assez précis, mais pas du tout réactif aux différences de températures.
il lui faut plusieurs minutes pour arriver à la bonne température ou alors je me suis vautré dans le codage.
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 01, 2012, 10:51 am
bonjour,
alors pour revenir au dht21, il faut lui retirer 1C pour qu'il soit juste.

sinon pour les couveuses semi pro, la sonde est une dallas, qui elle équipe les stations météo semi pro et pro, précise et surtout réactive, quelqu'un en parle sur le forum dans la partie anglaise, il faut utiliser le wire.h pour la faire fonctionner.
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1198065647
Title: Re: projet couveuse ventilée
Post by: Artouste on Mar 01, 2012, 11:45 am

bonjour,
alors pour revenir au dht21, il faut lui retirer 1C pour qu'il soit juste.

sinon pour les couveuses semi pro, la sonde est une dallas, qui elle équipe les stations météo semi pro et pro, précise et surtout réactive, quelqu'un en parle sur le forum dans la partie anglaise, il faut utiliser le wire.h pour la faire fonctionner.
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1198065647

les DS1621 sont équivalent aux dDS18S20 la seule différence est la connexion en 2fils pour la 1621 et en 1-wire pour la 18s20.
la precision est de 0.5 C° 9 bits de résolution presentée = echelon au 1/2 °C
c'est du parfaitement courant comme precision de capteur
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 05, 2012, 10:22 am
bonjour,
un ti up pour l'avancement de la chose, surtout que ca commence a urger, les oeufs arrivent tous les jours comme si c'était paques.

donc, installation de 2 relais pour piloter une lampe de 60w pour les tests et prochaine étape mise en place de 2 ventilos de pc montés sur des cornets afin de bien canaliser le flux d'air.
en passant, madame m'a un peu engueulé, j'ai fait sauter les plombs de la maison :) , erreur de débutant de ma part en branchant le 200v et la terre au lieu de la masse  :smiley-red:

modification du script en remettant une carte ethernet car avec la wishield je trouve pas la solution, afin de rentrer les valeurs mini et maxi sur mon server pour envoyer par socket à l'arduino.
par contre je n'arrive pas encore a stocker les valeurs en mémoire en cas de coupure de courant, il faut remettre les valeurs dans "l'admin"
Title: Re: projet couveuse ventilée
Post by: Artouste on Mar 05, 2012, 01:20 pm


par contre je n'arrive pas encore a stocker les valeurs en mémoire en cas de coupure de courant, il faut remettre les valeurs dans "l'admin"

Bonjour Msieur coin-coin !  :smiley-mr-green:
pourquoi tu ne stocke pas en eeprom sur l'arduino tes dernieres valeurs de consigne envoyées ?
en cas de perte de liaison pour raison x ou y , au retour de la liaison tu viens relire ces valeurs et tu les réinjecte dasn ton "admin" ?
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 05, 2012, 01:36 pm
c'est bien ce que j'essaye de faire Artouste,
je viens de jeter un oeil sur eeprom.write et read, mais je ne pige pas trop le principe pour mettre 2 valeurs
je voudrais donc garder en eeprom ceci :
tempmini = 37
tempmaxi = 38.5
par exemple.

j'essaye ceci :
Code: [Select]

tempmini =  atof(packetBuffer);
tempmaxi =  atof(packetBuffer1);
eeprom.write(temp(0) ,  tempmini);
eeprom.write(temp(1) ,  tempmaxi);

puis pour les ressortir, mais j'ai une erreur
Code: [Select]

tempmini = eeprom.write(temp(0) );
tempmaxi =  eeprom.write(temp(1));




Title: Re: projet couveuse ventilée
Post by: Artouste on Mar 05, 2012, 01:48 pm

c'est bien ce que j'essaye de faire Artouste,
je viens de jeter un oeil sur eeprom.write et read, mais je ne pige pas trop le principe pour mettre 2 valeurs
je voudrais donc garder en eeprom ceci :
tempmini = 37
tempmaxi = 38.5
par exemple.

j'essaye ceci :
Code: [Select]

tempmini =  atof(packetBuffer);
tempmaxi =  atof(packetBuffer1);
eeprom.write(temp(0) ,  tempmini);
eeprom.write(temp(1) ,  tempmaxi);

puis pour les ressortir, mais j'ai une erreur
Code: [Select]

tempmini = eeprom.write(temp(0) );
tempmaxi =  eeprom.write(temp(1));






a priori
tu ne peux ecrire et lire en eeprom que du byte (8 bits)
si tu veux du .5 ça ne tient sur un byte : le type d'origine n'est pas bon il faut gérer l'occupation en eeprom et  les types de data
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 05, 2012, 04:33 pm
merci Artouste pour l'info,
j'ai contourné le problème en multipliant par 100 les valeurs mini et maxi puis opération inverse pour les récupérer avec les décimales.
par contre je n'ai pas l'impression que les valeurs restent en mémoire.
si quelqu'un pouvait me confirmer que ca fonctionne ou doit foncitonner, j'ai pris exemple sur le cookbook

Code: [Select]
#include <EEPROM.h>
#include <SPI.h>       // needed for Arduino versions later than 0018
#include <Ethernet.h>
#include <Client.h>
#include <Udp.h>         // UDP library from: bjoern@cs.stanford.edu 12/30/2008
#include "DHT.h"
#define DHTPIN 7
int ventilo = 9; // led
int resistance = 8; // led



// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {
  192,168,2,200 };
unsigned char gateway[] = {
  192,168,2,2 };
unsigned char mask[] = {
  255,255,255,0};
Server server(80);

unsigned int localPort = 80;      // local port to listen on
float tempmini;
float  tempmaxi;

//constants EEPROM
const byte EEPROM_ID = 0x99; // used to identify if valid data in EEPROM
const int ID_ADDR = 0; // the EEPROM address used to store the ID
const int tempminimem = 1; // the EEPROM address used to store temperature mini
const int tempmaximem = 2; // the EEPROM address used to store temperature maxi
byte id;
byte id1;

// the next two variables are set when a packet is received
byte remoteIp[4];        // holds received packet's originating IP
unsigned int remotePort; // holds received packet's originating port

// buffers for receiving and sending data
char  packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char packetBuffer1[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char  ReplyBuffer[] = "acknowledged";       // a string to send back
char  ReplyBuffer1[] = "acknowledged";       // a string to send back

#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);


void setup() {
  // start the Ethernet and UDP:
  Ethernet.begin(mac, ip, gateway, mask);
  Udp.begin(localPort);
  dht.begin();
  Serial.begin(9600);
  pinMode(ventilo, OUTPUT);
  pinMode(resistance, OUTPUT);
  server.begin();

  byte id = EEPROM.read(ID_ADDR); // read the first byte from the EEPROM     
  if( id == EEPROM_ID){     

    byte id1 = EEPROM.read(tempminimem); // read the 2 byte from the EEPROM   
    byte id2 = EEPROM.read(tempmaximem); // read the 3 byte from the EEPROM
    tempmini = id1/100;
    tempmaxi = id2/100;
  }
}

void loop() {
  Serial.print("id1 : ");
  Serial.println(id1); 

  // if there's data available, read a packet
  int packetSize = Udp.available(); // note that this includes the UDP header
  if(packetSize)
  {


    packetSize = packetSize - 8;      // subtract the 8 byte header
    Serial.print("Received packet of size ");
    Serial.println(packetSize);


    memset(packetBuffer, 0, UDP_TX_PACKET_MAX_SIZE);
    memset(packetBuffer1, 0, UDP_TX_PACKET_MAX_SIZE);

    // read the packet into packetBufffer and get the senders IP addr and port number
    Udp.readPacket(packetBuffer,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
    Serial.println("Contents:");
    Serial.println(packetBuffer);
    Udp.readPacket(packetBuffer1,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
    Serial.println("Contents1:");
    Serial.println(packetBuffer1);   

     tempmini =  atof(packetBuffer); //atof lre float
    tempmaxi =  atof(packetBuffer1); //atof lre float
    int tempminimem1 = tempmini*100; //passage pour retirer decimale
    int tempmaximem1 = tempmaxi*100; //passage pour retirer decimale

    Serial.println("Writing default data to EEPROM");
    Serial.print("tempminimem1 : ");
    Serial.println(tempminimem1);
    Serial.print("tempmaximem1 : ");
    Serial.println(tempmaximem1);       
    EEPROM.write(ID_ADDR,EEPROM_ID); // write the ID to indicate valid data
    EEPROM.write(tempminimem,tempminimem1); // write the temp mini * 100
    EEPROM.write(tempmaximem,tempmaximem1); // save the temp maxi *100

    Serial.print("tempmini : ");
    Serial.println(tempmini);
    Serial.print("tempmaxi : ");
    Serial.println(tempmaxi);     


    analogWrite(13, atoi(packetBuffer)); //utiliser la valeur reçu pour allumer la led
    analogWrite(5, atoi(packetBuffer1)); //utiliser la valeur reçu pour allumer la led


  }
  delay(2);
  float h = dht.readHumidity();
  float t = dht.readTemperature();   

  t=t-1;
  if (t < tempmini){
    digitalWrite(ventilo,1);
    digitalWrite(resistance,1);
  }
  else if(t > tempmaxi){
    digitalWrite(ventilo,1);
    digitalWrite(resistance,0);
  }
  else{
    digitalWrite(ventilo,0);
    digitalWrite(resistance,0);   
  }
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  }
  else {

    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
    Serial.print("Tempmini: ");
    Serial.print(tempmini);
    Serial.println(" *C");
    Serial.print("Tempmaxi: ");
    Serial.print(tempmaxi);
    Serial.println(" *C");   
  }


}


Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 05, 2012, 08:36 pm
en attendant de trouver une solution pour garder en eeprom les variables, je viens de rajouter un lcd sur le proto.
grosse prise de tête avec le lcd gdm1602a pour les branchements, mais maintenant j'ai le répéteur de temp et hum sur le lcd, faut commencer a pousser les murs pour trouver des broches de libre sans pour autant créer de conflit.
je mets le code quand même pour ceux qui seraient intéressés.

Code: [Select]
#include <SPI.h>       // needed for Arduino versions later than 0018
#include <Ethernet.h>
#include <Client.h>
#include <LiquidCrystal.h>
#include <Udp.h>         // UDP library from: bjoern@cs.stanford.edu 12/30/2008
#include "DHT.h"
#define DHTPIN A0
int ventilo = 8; // led
int resistance = 9; // led

LiquidCrystal lcd1(7, 6, 5, 4, 3, 2);

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,2,200 };
unsigned char gateway[] = { 192,168,2,2 };
unsigned char mask[] = {255,255,255,0};
Server server(80);

unsigned int localPort = 80;      // local port to listen on
float tempmini;
float  tempmaxi;


// the next two variables are set when a packet is received
byte remoteIp[4];        // holds received packet's originating IP
unsigned int remotePort; // holds received packet's originating port

// buffers for receiving and sending data
char  packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char packetBuffer1[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char  ReplyBuffer[] = "acknowledged";       // a string to send back
char  ReplyBuffer1[] = "acknowledged";       // a string to send back

#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);


void setup() {
  // start the Ethernet and UDP:
  Ethernet.begin(mac, ip, gateway, mask);
  Udp.begin(localPort);
   dht.begin();
  Serial.begin(9600);
   pinMode(ventilo, OUTPUT);
  pinMode(resistance, OUTPUT);
     server.begin();
       lcd1.begin(16, 2);
}

void loop() {

  // if there's data available, read a packet
  int packetSize = Udp.available(); // note that this includes the UDP header
  if(packetSize)
  {

     
    packetSize = packetSize - 8;      // subtract the 8 byte header
    Serial.print("Received packet of size ");
    Serial.println(packetSize);
   

    memset(packetBuffer, 0, UDP_TX_PACKET_MAX_SIZE);
    memset(packetBuffer1, 0, UDP_TX_PACKET_MAX_SIZE);

    // read the packet into packetBufffer and get the senders IP addr and port number
    Udp.readPacket(packetBuffer,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
    Serial.println("Contents:");
    Serial.println(packetBuffer);
     Udp.readPacket(packetBuffer1,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
    Serial.println("Contents1:");
    Serial.println(packetBuffer1);   
   
      //tempmini =  float (atoi(packetBuffer));
      //tempmaxi =  float (atoi(packetBuffer1));
       tempmini =  atof(packetBuffer);
        tempmaxi =  atof(packetBuffer1);
     
     Serial.print("tempmini : ");
     Serial.println(tempmini);
          Serial.print("tempmaxi : ");
     Serial.println(tempmaxi);     


    analogWrite(11, atoi(packetBuffer)); //utiliser la valeur reçu pour allumer la led
        analogWrite(12, atoi(packetBuffer1)); //utiliser la valeur reçu pour allumer la led
       
  }
  delay(2);
    float h = dht.readHumidity();
  float t = dht.readTemperature();   

  t=t-1;
  if (t < tempmini){
    digitalWrite(ventilo,1);
    digitalWrite(resistance,1);
  }
  else if(t > tempmaxi){
    digitalWrite(ventilo,1);
    digitalWrite(resistance,0);
  }
  else{
    digitalWrite(ventilo,0);
    digitalWrite(resistance,0);   
  }
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  }
  else {

    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
    Serial.print("Tempmini: ");
    Serial.print(tempmini);
    Serial.println(" *C");
    Serial.print("Tempmaxi: ");
    Serial.print(tempmaxi);
    Serial.println(" *C");
  lcd1.setCursor(0, 0);
    lcd1.print("hum: ");
    lcd1.print(h);
    lcd1.print("%\t");
    lcd1.setCursor(0, 1);
    lcd1.print("Temp: ");
    lcd1.print(t);
    lcd1.print("C");   
  }
}
Title: Re: projet couveuse ventilée
Post by: jfs on Mar 05, 2012, 09:04 pm
Avec une couveuse comme ça, à l'éclosion tu auras des éléphants  XD
Title: Re: projet couveuse ventilée
Post by: Artouste on Mar 05, 2012, 09:30 pm

en attendant de trouver une solution pour garder en eeprom les variables,

selon le type de variable que tu veux conserver en eeprom
il faut la décomposer en tableau de byte
l'ecrire
et faire la reconstitution inverse à la lecture.

les petits genies du coding doivent bien avoir ça dans leurs tiroirs  :smiley-mr-green:
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 05, 2012, 09:33 pm
j'ai mis ma tentative au post #35 Artouste ;)

mais si je coupe l'alim, ca ne reste pas en memoire apparemment.
remarque maintenant avec le lcd, je peux peut être vérifier si ca reste ou pas.
Title: Re: projet couveuse ventilée
Post by: zoroastre on Mar 05, 2012, 09:46 pm
Yep!

EEPROM + Float :

Code: [Select]
#include "EEPROM.h"

float value = 19.88;
int adress = 0;

// Utilities for writing and reading from the EEPROM
float readFloat(int address) {
  union floatStore {
    byte floatByte[4];
    float floatVal;
  } floatOut;
 
  for (int i = 0; i < 4; i++)
    floatOut.floatByte[i] = EEPROM.read(address + i);
  return floatOut.floatVal;
}

void writeFloat(float value, int address) {
  union floatStore {
    byte floatByte[4];
    float floatVal;
  } floatIn;
 
  floatIn.floatVal = value;
  for (int i = 0; i < 4; i++)
    EEPROM.write(address + i, floatIn.floatByte[i]);
}

void setup() {
  Serial.begin(9600);
 
  writeFloat(value, adress);
 
  float n = readFloat(adress);
  Serial.println(n);
 
}

void loop() { }


Pour insérer une seconde valeur, ne pas oublier de décaler l'adresse de 4 bytes.

@+

Zoroastre.
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 05, 2012, 10:48 pm
merci zoroastre,
après plusieurs tatonnements ca fonctionne, car ma variable n'est pas prédéfinie au départ, mais au moment ou je rentre les données via ma page web sur mon server.
maintenant, je vais essayer de piger comment décaler de 4 bits comme tu l'as suggéré.
Title: Re: projet couveuse ventilée
Post by: zoroastre on Mar 06, 2012, 08:30 am
Yep!

Oui tu peux appeler les fonctions n'importe où dans le programme. A considérer que les floats sont plus gourmands que les bytes ou int.

Si tes données peuvent être modifiées par l'exterieur, j'essairais de structurer légerement le programme pour inclure les données reçues dans un tableau.

Code: [Select]
float TABLEAU[2] = { a, b };

Ainsi chaque donnée à son emplacement propre dans le tableau et une position dans celui-ci.

Il suffirait ensuite de créer un flag : if (donnée modifié) { on sauvegarde; }

La position du tableau est déterminante car multipliée par 4 te donne l'adressage de l'EEPROM.

Code: [Select]
for (int data = 0; data < TABLEAULONG; data++) { writeFloat(TABLEAU[data], data*4); }

data*4 = 0 => pour 0
data*4 = 4 => pour 1
data*4 = 8 => pour 2
etc...

Tu as bien ton décalage.

Ce n'est qu'un suggestion parmis tant d'autre. J'ai un peu cette structure. Mon programme python me permet de modifier des paramètres à la volée, j'ai pourtant pris soin de positionner chaque élement de la trame dans un tableau, pour la continuité du programme et pour faciliter la sauvegarde.

C'est la solution la plus simple. Tu peux aussi définir un tableau à deux dimensions avec des adressages pré-définies :

Exemple :

Code: [Select]
float TABLEAU [4][2] = {
 { TEMPMAX, 0},
 {HUMIDMAX, 12},
 {TEMPMIN, 4},
 {HUMIDMIN, 8}
};


Code: [Select]
for (int i = 0; i < TABLEAULONG; i++) { writeFloat(TABLEAU[i][0], TABLEAU[i][1]); }

A noter que ces solutions, t'oblige à écrire la totalité de l'EEPROM systématiquement. Il y a certainement moyen d'avoir quelquechose de plus dynamique.

@+

Zoroastre.
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 06, 2012, 11:28 am
je suis carrément paumé là :( , ca va se finir par un nouveau projet, l'arduino volant  :smiley-mr-green:

ca me garde que la dernières variable, l'autre étant à -0.01
je mets le code, en résumant, je modifie via une page web les valeurs mini maxi ou l'une ou l'autre.
les sockets sont bien envoyés, mais au reboot, pouf

Code: [Select]
#include <EEPROM.h>
#include <SPI.h>       // needed for Arduino versions later than 0018
#include <Ethernet.h>
#include <Client.h>
#include <LiquidCrystal.h>
#include <Udp.h>         // UDP library from: bjoern@cs.stanford.edu 12/30/2008
#include "DHT.h"
#define DHTPIN A0
int ventilo = 8; // led
int resistance = 9; // led

LiquidCrystal lcd1(7, 6, 5, 4, 3, 2);

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,2,200 };
unsigned char gateway[] = { 192,168,2,2 };
unsigned char mask[] = {255,255,255,0};
Server server(80);

unsigned int localPort = 80;      // local port to listen on
float tempmini;
float  tempmaxi;


// the next two variables are set when a packet is received
byte remoteIp[4];        // holds received packet's originating IP
unsigned int remotePort; // holds received packet's originating port

// buffers for receiving and sending data
char  packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char packetBuffer1[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char  ReplyBuffer[] = "acknowledged";       // a string to send back
char  ReplyBuffer1[] = "acknowledged";       // a string to send back

#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);


int address = 0;
byte value;
float tempminimem;
float tempmaximem;


// Utilities for writing and reading from the EEPROM
float readFloat(int address) {
  union floatStore {
    byte floatByte[4];
    float floatVal;
  } floatOut;
 
  for (int i = 0; i < 4; i++)
    floatOut.floatByte[i] = EEPROM.read(address + i);
  return floatOut.floatVal;
}

void writeFloat(float value, int address) {
  union floatStore {
    byte floatByte[4];
    float floatVal;
  } floatIn;
 
  floatIn.floatVal = value;
  for (int i = 0; i < 4; i++)
    EEPROM.write(address + i, floatIn.floatByte[i]);
     
}



void setup() {
  // start the Ethernet and UDP:
  Ethernet.begin(mac, ip, gateway, mask);
  Udp.begin(localPort);
   dht.begin();
  Serial.begin(9600);
   pinMode(ventilo, OUTPUT);
  pinMode(resistance, OUTPUT);
     server.begin();
       lcd1.begin(16, 2);
       

 
  tempminimem = readFloat(address);
  Serial.print("tempminimem :");
  Serial.println(tempminimem);
   tempmini=tempminimem;
  tempmaximem = readFloat(address+1);
  Serial.print("tempmaximem :");
  Serial.println(tempmaximem);
   tempmaxi=tempmaximem;       
}

void loop() {

  // if there's data available, read a packet
  int packetSize = Udp.available(); // note that this includes the UDP header
  if(packetSize)
  {

     
    packetSize = packetSize - 8;      // subtract the 8 byte header
    Serial.print("Received packet of size ");
    Serial.println(packetSize);
   

    memset(packetBuffer, 0, UDP_TX_PACKET_MAX_SIZE);
    memset(packetBuffer1, 0, UDP_TX_PACKET_MAX_SIZE);

    // read the packet into packetBufffer and get the senders IP addr and port number
    Udp.readPacket(packetBuffer,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
    Serial.println("Contents:");
    Serial.println(packetBuffer);
     Udp.readPacket(packetBuffer1,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
    Serial.println("Contents1:");
    Serial.println(packetBuffer1);   
   
      //tempmini =  float (atoi(packetBuffer));
      //tempmaxi =  float (atoi(packetBuffer1));
       tempmini =  atof(packetBuffer);
        tempmaxi =  atof(packetBuffer1);
       
     writeFloat(tempmini,address);
     writeFloat(tempmaxi,address+1);     
     
     Serial.print("tempmini : ");
     Serial.println(tempmini);
          Serial.print("tempmaxi : ");
     Serial.println(tempmaxi);     


    analogWrite(11, atoi(packetBuffer)); //utiliser la valeur reçu pour allumer la led
        analogWrite(12, atoi(packetBuffer1)); //utiliser la valeur reçu pour allumer la led
       
  }
  delay(2);
    float h = dht.readHumidity();
  float t = dht.readTemperature();   

  t=t-1;
  if (t < tempmini){
    digitalWrite(ventilo,1);
    digitalWrite(resistance,1);
  }
  else if(t > tempmaxi){
    digitalWrite(ventilo,1);
    digitalWrite(resistance,0);
  }
  else{
    digitalWrite(ventilo,0);
    digitalWrite(resistance,0);   
  }
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  }
  else {
   
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
    Serial.print("Tempmini: ");
    Serial.print(tempmini);
    Serial.println(" *C");
    Serial.print("Tempmaxi: ");
    Serial.print(tempmaxi);
    Serial.println(" *C");
  lcd1.setCursor(0, 0);
    lcd1.print("H:");lcd1.print(h); lcd1.print("%");
    lcd1.print("Mi:");lcd1.print(tempmini);;   
    lcd1.setCursor(0, 1);
    lcd1.print("T:");lcd1.print(t);lcd1.print("C");
    lcd1.print("Ma:");lcd1.print(tempmaxi);     
  }


}

Title: Re: projet couveuse ventilée
Post by: B@tto on Mar 06, 2012, 11:45 am
Je prend le train en route : si tu veux de la précision en température (<= 0.1°C), ya pas 36 solutions, sonde pt100. En plus il en existe un peu sous tous les formats, il y en a surement une plus adaptée pour des oeufs qu'un composant.

Si tu as des questions sur le sujets, je régule des températures et de l'humidité quasiment à longueur de journée xD
Title: Re: projet couveuse ventilée
Post by: zoroastre on Mar 06, 2012, 12:01 pm
Yep!

Tu as déjà un problème ici :

Code: [Select]
tempmaximem = readFloat(address+1);

int address = 0;

Donc tu demandes à lire l'EEPROM à partir de la case 1.

Considères ton EEPROM comme des cases (byte). Pour écrire un seul float, tu as besoin de 4 cases (les cases de 0 à 3 pour le premier chiffre et 4 à 7 pour ton second chiffre).

Lorsque tu appeles readFloat(), tu vas réunir les informations contenues dans les bytes 0 à 3 pour reconstituer ton float. Pour le second chiffre, tu vas réunir les informations dans les bytes 4 à 7 pour reconstituer la valeur flottant.
L'appel au programme te simplifie le travail dans le sens où il te demande seulement de donner le byte initial de la valeur (soit 0, soit 4).

Ici tu réécris au dessus de la première valeur :

Code: [Select]
writeFloat(tempmaxi,address+1);

Essayes plutôt avec :

Code: [Select]
...
tempmaximem = readFloat(address+4);
...
writeFloat(tempmaxi,address+4);
...


En gros la structure de l'EEPROM :

{  tempmini  }{ tempmaxi  }
| 0 | 1 | 2 | 3 || 4 | 5 | 6 | 7 | 8 | etc
   |__ 1er adresse
                        |__ 2sd adresse

@+

Zoroastre.
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 06, 2012, 12:23 pm
nickel, pourtant j'avais testé cette solution.
ha je sais pourquoi, j'étais partit sur ton
int adress = 0
dans ton premier exemple.
vraiment élu le boulet du jour pour ma pomme  :smiley-roll-blue:

Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 06, 2012, 01:15 pm

Je prend le train en route : si tu veux de la précision en température (<= 0.1°C), ya pas 36 solutions, sonde pt100. En plus il en existe un peu sous tous les formats, il y en a surement une plus adaptée pour des oeufs qu'un composant.

Si tu as des questions sur le sujets, je régule des températures et de l'humidité quasiment à longueur de journée xD


ce que je cherche surtout, c'est une sonde qui soit réactive dans la ou les 2 secondes maxi.
ce projet de couveuse va déboucher sur un autre projet que j'ai en cours pour mes bornes wifi solaires et des projecteurs laser pour facade.

quand cette couveuse sera terminée, je ferai un exposé photo ;)
Title: Re: projet couveuse ventilée
Post by: B@tto on Mar 06, 2012, 01:24 pm
On se sert justement des pt100 dans les étuves ventilées, les formes divers permettent de répondre à tous les type de besoin, sachant que souvent c'est la transmission de la chaleur à l'intérieur du capteur qui pose plus problème que sa réelle réponse intrinsèque.
Title: Re: projet couveuse ventilée
Post by: Artouste on Mar 06, 2012, 01:56 pm

On se sert justement des pt100 dans les étuves ventilées, les formes divers permettent de répondre à tous les type de besoin, sachant que souvent c'est la transmission de la chaleur à l'intérieur du capteur qui pose plus problème que sa réelle réponse intrinsèque.


bonjour B@tto
d'accord avec toi les PT100 sont d'excellents capteurs de T°
mais difficilement intégrable dans un projet amateur comme celui là
si tu pars sur une classe A (même pas sur du 1/3) , rien que le cout d'acquisition d'une PT100 et d'un transmetteur fait s'envoler le budget.
Title: Re: projet couveuse ventilée
Post by: B@tto on Mar 06, 2012, 02:39 pm
Tout est relatif : j'ai le catalogue Conrad sous les yeux (bon après la qualité de leur produit est plus que discutable), ya des 1/3 DIN à 5€, Heraeus en plus.
Title: Re: projet couveuse ventilée
Post by: Artouste on Mar 06, 2012, 03:28 pm

Tout est relatif : j'ai le catalogue Conrad sous les yeux (bon après la qualité de leur produit est plus que discutable), ya des 1/3 DIN à 5€, Heraeus en plus.

1/3 avec certificat ?  :smiley-mr-green:
peut être , mais une PT100 sans conditionneur "kivabien" ça n'est pas exploitable directement par un arduino.

Il faut raisonner là : coût capteur(PT100)  + coût conditionneur du signal = coût de la precision avant même d'être acquis par l'arduino.

Si tu es un spécialiste de la thermométrie, tu sais qu'à l'exception de quelques applications "pointues" , le besoin est surtout de détecter rapidement les "écarts sur processus stabilisé" 
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 06, 2012, 03:52 pm
je viens de jeter un oeil et aie aie aie.

sachant que lorsque la température est stabilisée, ca reste raisonnable avec le dht21.
je vais commencer a dépouiller l'ancien frigo et utiliser la partie frigo au lieu de congélo car j'ai déjà une bonne 20ene d'oeufs qui attendent.
j'ai encore la partie ventilo a penser et surtout voir à combien la lampe va faire monter la T°. la flemme de faire le cacul calo ces jours ci.
Title: Re: projet couveuse ventilée
Post by: B@tto on Mar 06, 2012, 04:01 pm


Tout est relatif : j'ai le catalogue Conrad sous les yeux (bon après la qualité de leur produit est plus que discutable), ya des 1/3 DIN à 5€, Heraeus en plus.

1/3 avec certificat ?  :smiley-mr-green:
peut être , mais une PT100 sans conditionneur "kivabien" ça n'est pas exploitable directement par un arduino.

Il faut raisonner là : coût capteur(PT100)  + coût conditionneur du signal = coût de la precision avant même d’être acquis par l'arduino.

Si tu es un spécialiste de la thermométrie, tu sais qu'à l'exception de quelques applications "pointues" , le besoin est surtout de détecter rapidement les "écarts sur processus stabilisé" 


Bin franchement, après avoir testé plein de montages, j'ai pas vraiment vu de différences entre faire un simple pont diviseur avec un ADC qui va bien, et les autres beaucoup plus complexes (et c'est vérifié de -196°C à +500°C). Sinon je suis pas du tout spécialisé dans la thermométrie ^^ mais je suis chimiste et je conçois des appareils toujours blindé de four et autres joyeusetés du genre :)

Sinon je crois pas qu'Infobarquee soit soumis à la norme ISO, donc le certificat, à moins que les cannes ne le réclame, ne sera pas nécessaire xD
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 06, 2012, 04:08 pm
ha si si elles viennent de me la demander et font la grève tant que je l'ai pas fournis.  :smiley-mr-green:
mais c'est toujours bon de savoir que quelqu'un bosse la dedans, ca peut servir, ne serait ce que pour les bonnes info fournies.
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 07, 2012, 11:40 am
alors, le proto avance à grand pas.
par contre je bute sur une chose, je voudrais que lorsque j'envoie les données ou que je consulte la page sur mon server, l'arduino me renvoie automatiquement l'humidité et la t° de la couveuse.
j'ai bien le repeater lcd sur la couveuse, mais sortir pour aller dans mon atelier voir les données, ca me gonfle un peu, surtout le soir.
j'ai bien essayé de mettre
Code: [Select]
    if (client.connect()) {
      Serial.println("Connexion au server wit");
      Serial.println();
      delay(1000);
      Serial.println("connected données");
      client.print("GET /twit.php?ipcouveuse=");
      client.print(ip);
      client.print("&temp=");
      client.print(t);       
      client.print("&humidex=");
      client.println(h); 
      client.stop();
}
    }


ca me ressort une belle erreur
Code: [Select]
couveusememoire.cpp: In function 'void loop()':
couveusememoire.cpp:158: erreur: call of overloaded 'print(byte [4])' is ambiguous
/usr/share/arduino/hardware/arduino/cores/arduino/Print.h:44: note: candidats sont: void Print::print(const String&) <near match>
/usr/share/arduino/hardware/arduino/cores/arduino/Print.h:45: note:                 void Print::print(const char*) <near match>
/usr/share/arduino/hardware/arduino/cores/arduino/Print.h:46: note:                 void Print::print(char, int) <near match>
/usr/share/arduino/hardware/arduino/cores/arduino/Print.h:47: note:                 void Print::print(unsigned char, int) <near match>
/usr/share/arduino/hardware/arduino/cores/arduino/Print.h:48: note:                 void Print::print(int, int) <near match>
/usr/share/arduino/hardware/arduino/cores/arduino/Print.h:49: note:                 void Print::print(unsigned int, int) <near match>
/usr/share/arduino/hardware/arduino/cores/arduino/Print.h:50: note:                 void Print::print(long int, int) <near match>
/usr/share/arduino/hardware/arduino/cores/arduino/Print.h:51: note:                 void Print::print(long unsigned int, int) <near match>

Title: Re: projet couveuse ventilée
Post by: Stef84 on Mar 07, 2012, 12:24 pm
j ai une couveuse à vendre si tu veux  ;)

sinon :

le générateur de brume à ultra sons : les ultra sons ne poseront pas de problèmes sur les oeufs et futur caneton ? çà risque de se propager du caisson au frigo

une cellule peltier inversé en tension ne produit pas du chaud ? comme ca il y a le chauffage et le froid lol
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 07, 2012, 12:46 pm
merci pour la couveuse, mais ce petit projet va me servir pour le reste de mon boulot.
tu veux leur faire un micro onde? :)

j'ai regardé la cellule peltier, qui peut faire du chaud ou froid.
j'ai vu sur une boutique un ruban résistance chauffant pas trop cher qui pourrait me servir.
http://www.ducatillon.com/produit_resistance-souple-50-watts-424-1164.html
par contre aucun renseignement sur son alimentation.

EDIT : je n'avais pas vu le pdf, donc alim en 220V
Title: Re: projet couveuse ventilée
Post by: jfs on Mar 07, 2012, 01:21 pm
Prend autrement la partie chauffante d'un rétroviseur de voiture... ou plusieurs, c'est en 12V
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 07, 2012, 01:38 pm

Prend autrement la partie chauffante d'un rétroviseur de voiture... ou plusieurs, c'est en 12V

j'y ais pensé aussi, mais pas assez de chaleur produite.
vu le prix en neuf ou à la casse, autant passer sur autre chose.
j'ai commandé la résistance de 50w, elle est vendu pour des couveuses justement.
Title: Re: projet couveuse ventilée
Post by: Artouste on Mar 07, 2012, 01:46 pm

j ai une couveuse à vendre si tu veux  ;)

sinon :

le générateur de brume à ultra sons : les ultra sons ne poseront pas de problèmes sur les oeufs et futur caneton ? çà risque de se propager du caisson au frigo

une cellule peltier inversé en tension ne produit pas du chaud ? comme ca il y a le chauffage et le froid lol


la solution pour controle d'hygro a été abandonnée par infobarquee
mais sur le point de US/COCO  :smiley-mr-green: les US ne propage pas dangereusement là, ils sont amortis par l'eau qui entre en brumisation.
de plus il y a une detection manque d'eau qui arrete la generation, et de plus encore dans l'optique où cela aurait été retenu comme G H°
Cela aurait été au plus pres de l'entrée de l'air externe et pas à proximité des oeufs.

Pour la cellule peltier, meme si cela est envisageable, c'etait surtout "une boutade" de ma part  8)
Title: Re: projet couveuse ventilée
Post by: Stef84 on Mar 07, 2012, 01:55 pm
Pour la pelletier, pris comme çà aussi  ;)

envisageable : je ne sais pas si ca vaut le cout pour un aussi gros volume, comme on voit le rendement/conso/dissipation
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 11, 2012, 02:55 pm
des petites news du projet.
en fouillant dans tout mon ### qui me sert d'atelier, j'ai retrouvé un four micro onde.
dépouillage en règle ce midi vite fait, y a rien la dedans quand on regarde bien.

prochaine étape, ajuster les ventilos et préparer la carte pour le boitier externe qui va accueillir l'arduino et le lcd.
je pense a faire des photos par la même occasion.
Title: Re: projet couveuse ventilée
Post by: taddot on Mar 12, 2012, 10:29 am
oeuf ? micro-Ondes ? ça me rappelle une histoire avec un hamster :)
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 12, 2012, 01:19 pm
ca me fait penser à ca
http://www.youtube.com/watch?v=9YbfEAr5kqg
Title: Re: projet couveuse ventilée
Post by: taddot on Mar 12, 2012, 02:40 pm
:D
Title: Re: projet couveuse ventilée
Post by: infobarquee on Mar 24, 2012, 10:47 pm
bonjour,
bon j'ai pris un peu de temps ce soir pour commencer le boitier de prog.
ca va rappeler des souvenirs à certains le bon vieux temps des diskettes :)
montage à blanc de la carte et d'une partie de la platine, les relais 220v seront ailleurs question sécurité.
recyclage, vous avez dis recyclage?
Title: Re: projet couveuse ventilée
Post by: infobarquee on Apr 13, 2012, 09:34 am
bonjour,
petite avancée pour la couveuse, mise en place d'un détecteur de mouvement histoire d'être avertit si un caneton perce la coquille :)
alerte via une led plus un twit afin d'être alerté en cas d'absence.
les premiers cyber canetons
Title: Re: projet couveuse ventilée
Post by: Artouste on Apr 13, 2012, 12:17 pm

bonjour,
petite avancée pour la couveuse, mise en place d'un détecteur de mouvement histoire d'être avertit si un caneton perce la coquille :)
alerte via une led plus un twit afin d'être alerté en cas d'absence.
les premiers cyber canetons

ça couve bien donc !
par curiosité tu a qq photos de ta couveuse ?
Title: Re: projet couveuse ventilée
Post by: infobarquee on Apr 13, 2012, 01:13 pm
j'en ferai ce we, car là le boulot est plutot charette  ]:D