ou comment faire de la brume avec un arduino
Ayant fabriqué une caisse de ward (https://fr.wikipedia.org/wiki/Caisse_de_Ward) , j’ai voulu ajouter un brumisateur pour faire plaisir aux plantes et donner un petit effet brumeux…
l’ensemble présenté dans ce tuto permet de générer un peu de brouillard une fois par jour automatiquement ou de déclencher cette brume manuellement avec un bouton poussoir.
Budget : Non défini
n’ayant pas de prise adaptée au brumisateur acheté j’ai coupé le fil…
repérer la polarité (partie extérieure du connecteur = masse) repérer les couleurs des fils en mesurant la resistance avec un voltmètre / ohmmètre par example)
Le circuit a trois parties:
1) le contrôle du brumisateur
J’utilise un relais pour déclencher le brumisateur. Le relais est activé directement par l’arduino (pin 9), une diode de protection est utilisée.
2) le déclenchement avec un bouton poussoir (pin 11). Cette pin 11 est reliée à une resistance “pull up” qui la maintient à 5V (HIGH) lorsque l’interrupteur est ouvert. Lorsque le bouton est activé la pin 11 est reliée à la masse et passe en “LOW”
3) un potentiomètre qui permet de régler la durée du cycle de brume.
La pin A1 est reliée au point milieu du potentiomètre. elle va varier entre 0 et 5V (donc entre 1 et 1024 avec la fonction analogRead). On utilise la fonction “map” pour convertir la valeur obtenue en un temps d’activation de le brume.
Le skecth :
int pushpin = 9; // pin arduino vers bouton
int fog_control = 11; // pin arduino vers relais
int potarpin = 1; // pin arduino analog1 vers potentiometre
long currentTime = 0; // counter
long lastfog = -86401000; // permet d’enclencher le brouillard au demarrage
long fogduration = 10000; //durée du brouillard
long interfog = 86400000; //24H entre deux brouillards
void setup() {
Serial.begin(9600);
Serial.println(“Brumisateur 1.0”);
Serial.println(“Concours arduino ouiaremakers.com 02/2016”);
pinMode(fog_control, OUTPUT);
pinMode(pushpin, INPUT);
}
void loop() {
// let’s fog at start up
currentTime = millis();
if (currentTime > lastfog + interfog ) {
lastfog = millis(); // le dernier brouillard est maintenant
fog_on(); //brouillard
}
// verifier le bouton
if (!digitalRead(pushpin)) {
Serial.println(digitalRead(pushpin));
Serial.println(!digitalRead(pushpin));
fog_on();
}
delay(500);
}
void fog_on() {
long starttime = millis(); // on enregistre l’heure de debut
digitalWrite(fog_control, HIGH); // debut du bouillard
// petite boucle de la durée demandée, on verifie le reglage de la durée pendant cette boucle
while (millis() < starttime + fogduration ) {
checkpotar(); // verification de la durée du brouillard
delay(500); // petite pause avant de reprendre le debut du while
}
digitalWrite(fog_control, LOW); // on a fini et on arrete le brouillard
}
void checkpotar(){
int potarLevel = analogRead(potarpin);
Serial.println(fogduration / 1000);
potarLevel = map(potarLevel, 0, 1024, 0, 9);
switch (potarLevel) {
case 0:
fogduration = 10000; // 10 secondes
break;
case 1:
fogduration = 20000; // 20 secondes
break;
case 2:
fogduration = 30000; // 30 secondes
break;
case 3:
fogduration = 60000; // 1 minute
break;
case 4:
fogduration = 120000; // 2 minutes
break;
case 5:
fogduration = 180000; // 3 minutes
break;
case 6:
fogduration = 240000; // 4 minutes
break;
case 7:
fogduration = 300000; // 5 minutes
break;
case 8:
fogduration = 360000; // 6 minutes
break;
case 9:
fogduration = 6000000; // 10 minutes
break;
}
}
http://www.tempescope.com/