Arduino #6 Finale

Bon pour commencer par la fin :

J’ai découpé une ouverture pour pouvoir voir dans la couveuse sans ouvrir. Le trou est fermé avec un plastique rigide transparent.

 

IMG_4280

 

Une structure de planches non visées sert de font et ferme le trou de vol – Seul le corps de la ruchette a été modifié, je ne suis pingre mais je ne suis riche.

 

IMG_4281 IMG_4282

 

Vous remarquerez le montage un peu simpliste de deux ventilateurs , de 6 résistances chauffante sur une planchette. Les résistances sont en deux circuits séparés. car lors de la coupure de l’alimentation par un des relais que vous devinez en bas à droite de la dernière photo, il se dissipe encore de la chaleur. Il ne faut pas que la T° dépasse les 35° ou les reines meurent.

 

Au niveaux sorties utilisées sur l’arduino en dehors du capteur Dallas déjà détaillé avant, il y a juste l’alimentation des 3 leds. Les relais sont raccordés sur le même circuit que les leds rouges.

 

Voici le code du programme :

 

/*
LiquidCrystal Library – Hello World

The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/LiquidCrystal
*/
#include <OneWire.h> // Inclusion de la librairie OneWire
#include <LiquidCrystal.h>

#define DS18B20 0x28 // Adresse 1-Wire du DS18B20
#define BROCHE_ONEWIRE 2 // Broche utilisée pour le bus 1-Wire
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int ledrouge = 11;
int ledverte = 13;
int ledrouge2 =12;

OneWire ds(BROCHE_ONEWIRE); // Création de l’objet OneWire ds

// Fonction récupérant la température depuis le DS18B20
// Retourne true si tout va bien, ou false en cas d’erreur
boolean getTemperature(float *temp){
byte data[9], addr[8];
// data : Données lues depuis le scratchpad
// addr : adresse du module 1-Wire détecté

if (!ds.search(addr)) { // Recherche un module 1-Wire
ds.reset_search(); // Réinitialise la recherche de module
return false; // Retourne une erreur
}

if (OneWire::crc8(addr, 7) != addr[7]) // Vérifie que l’adresse a été correctement reçue
return false; // Si le message est corrompu on retourne une erreur

if (addr[0] != DS18B20) // Vérifie qu’il s’agit bien d’un DS18B20
return false; // Si ce n’est pas le cas on retourne une erreur

ds.reset(); // On reset le bus 1-Wire
ds.select(addr); // On sélectionne le DS18B20

ds.write(0x44, 1); // On lance une prise de mesure de température
delay(1000); // Et on attend la fin de la mesure

ds.reset(); // On reset le bus 1-Wire
ds.select(addr); // On sélectionne le DS18B20
ds.write(0xBE); // On envoie une demande de lecture du scratchpad

for (byte i = 0; i < 9; i++) // On lit le scratchpad
data[i] = ds.read(); // Et on stock les octets reçus

// Calcul de la température en degré Celsius
*temp = ((data[1] << 8) | data[0]) * 0.0625;

// Pas d’erreur
return true;
}

// setup()
void setup() {
Serial.begin(9600); // Initialisation du port série
// set up the LCD’s number of columns and rows:

lcd.begin(16, 2);

// initialize the digital pin13 as an output.
pinMode(ledrouge, OUTPUT);

// initialize the digital pin12 as an output.
pinMode(ledverte, OUTPUT);

// initialize the digital pin11 as an output.
pinMode(ledrouge2, OUTPUT);

}

// loop()
void loop() {

float temperature;

// Lit la température ambiante à ~1Hz
if(getTemperature(&temperature)) {

if (temperature < 34.9 and temperature > 34.5 )
{ digitalWrite(ledrouge, HIGH);
digitalWrite(ledverte, LOW);
digitalWrite (ledrouge2, LOW);
}
else
if (temperature < 34.5)
{
digitalWrite(ledrouge, HIGH);
digitalWrite(ledverte, LOW);
digitalWrite(ledrouge2, HIGH);
}

else
if (temperature > 34.9 )
{
digitalWrite(ledrouge, LOW);
digitalWrite(ledrouge2, LOW);
digitalWrite(ledverte, HIGH);
}

// Affiche la température sur la sortie série

Serial.print(« T »);
Serial.write(176); // caractère °
Serial.write( » : « );
Serial.print(temperature);
Serial.write(176); // caractère °
Serial.write(‘C’);
Serial.println();

lcd.setCursor(2, 0);
// Place le curseur du LCD sur le 3ème caractère de la ligne 0 (la première)
lcd.print(« JPC Project »);
// Ecrir sur le LCD « JPC Project car cela fait joli :=) »

lcd.setCursor(2, 1);
//
lcd.print(« T : »);

lcd.setCursor(7, 1);
// print the number of seconds since reset:
lcd.print(temperature); // Ecrire sur le LCD la T° mesurée
}
}

 

 

IMG_4283 IMG_4284

 

 

 

Arduino #5 Une ruchette-couveuse pour les reines d’abeilles

Chose promise chose due,

 

Voici la finalité de mon projet.

 

il est 21 h16 IMG_4275 IMG_4276 IMG_4277

 

Je viens de brancher le projet sur le 220 v .

 

Un transfo l’alimente en 12 volt continu via les 2 fiches bananes.

J’ai choisi le 12 volt continu car je désire que la couveuse puisse fonctionner sur une prise allume cigare de voiture.

 

Ce que j’ai modifié par rapport à l’article précédent : 

 

Des circuits qui allument des leds (2 rouges et une verte)

Deux relais car l’arduino n’a pas assez de sortie en puissance pour alimenter les résistances

La ruchette mini plus qui est fermée et à peine modifiée.

Le code que je partage après.

 

Le but : 

Les reines d’abeilles une fois leur cellule operculée n’ont plus besoin de nourriture pour se développer et naitre, juste une chaleur comprise entre 33 et 36 °c.

 

La couveuse va permettre de placer les cellule au chaud pour permettre la naissance des reines qui seront enfermées dans des bigoudis. On les enferme car sinon la première née va tuer les autres.

 

Il est 21h29

 

Les deux séries de résistances chauffante (les deux leds rouges sont alumées noter la différence de T°)IMG_4279

 

Cela chauffe bien et vite.

 

Je vous explique en photos demain la suite du montage.