1. Introduction

Mon projet est de fabriquer un sèche-chaussure. En effet, lorsqu’il pleut, ou après un entrainement intense, il est nécessaire de faire sécher ses chaussures. En été et par beau temps, les placer au soleil un court moment est suffisant pour les sécher correctement. Mais en hiver ou par temps de pluie, les faire sécher à l’intérieur est long et malaisé. Les chaussures restent mouillées pendant plusieurs heures ce qui, à la longue, les abîme et est désagréable si on doit les remettre alors qu’elles sont encore humides.

C’est pourquoi un sèche-chaussure, soufflant de l’air chaud à l’intérieur de la chaussure, serait fort utile aux sportifs et aux amateurs de promenades pluvieuses.

1.1 Intérêt du projet

Mon projet va me permettre d'apprendre à utiliser des fonctions plus avancées de la plate-forme Arduino. Il me faudra également apprendre à gérer les interactions entre les détecteurs d'humidité et l'Arduino. Il me faudra installer la librairie des capteurs et comprendre comment fonctionne les nouvelles fonctions qui en découlent. Ce projet me permettra aussi de m'intéresser à des circuits électriques étant donné qu'un sèche cheveux a besoin d'être branché sur une prise 230 Volts.

1.2 But

Mon but pour ce projet est de fabriquer un prototype fonctionnel. Pour commencer qui fonctionne pour une chaussure, et ainsi démontrer que mon concept marche et est utilisable.

2. Matériel et méthodes

2.1 Fonctionnement global

Le coeur du système est une Arduino UNO qui contient le programme du système et contrôle le sèche cheveux. Le programme permet de lire les données envoyées par les capteurs d'humidités et éteint le système automatiquement lorsque la chaussure est sèche.

2.2 Liste du matériel utilisé

Composants

  • Une Arduino UNO
  • Des câbles pour la plate-forme Arduino et des résistances en suffisance
  • Deux détecteur d’humidité DHT-11
  • Un relais compatible avec Arduino qui puisse supporter du 230 Volts
  • Un bouton poussoir
  • Un sèche cheveux
  • Une rallonge 230 Volts modifiée pour être contrôlée par le relais
  • Une diode
  • Du carton
  • Du scotch
  • Une boîte à chaussure

2.2 Image du projet


Voilà le prototype D.M.C.M une fois monté Montage_general.JPG
Le sèche cheveux envoie de l'air dans la chaussure chaussure.JPG

3. Composants

3.1 Le relais

Pour pouvoir intéragir avec un sèche cheveux sur une prise 230 Volts depuis une Arduino, il faut utiliser un relais. Pour ce projet, le relais doit pouvoir fermer un circuit de 230 Volts en étant contrôlé par un circuit de 5 Volts (Arduino). Ce relais de SparkFun convient parfaitement pour mon projet. Relais.JPG

3.2 La rallonge modifiée

Pour intégrer le relais au circuit de 230 Volts, le plus simple est de modifier une rallonge classique que l'on trouve dans toute grande surface. Il faut ouvrir la gaine de la rallonge et installer le relais le long du câble du côté du +. prise_modifiee.JPG

3.3 Les capteurs d'humidité

Des capteurs de type DHT-11 conviennent parfaitement pour le projet, car ils sont petits et bon marchés. Ils devraient permettre au programme de définir si la chaussure est sèche en utilisant la différence d'humidité entre les deux capteurs (un dans la chaussure, un comme mesure étalon). Il faut installer une librairie spécifique dans l'IDE pour assurer la compatibilité avec l'Arduino. capteur_DHT-11.JPG

3.4 Schéma du montage

réalisé avec Fritzing Capture_d_ecran_2015-02-18_a_02.19.06.png

4. Fonctionnement détaillé

Le code complet se trouve ici
Voici la machine d'état du programme: machine_d_etat.png

4.1 La fonction attachInterrupt

Pour pouvoir éteindre et allumer le système à tout moment, il faut utiliser la fonction attachInterrupt. Elle permet de créer une boucle parallèle au void loop. Le programme peut ainsi changer d'état indépendamment de la progression du "void loop". J'ai privilégié un interrupt de type FALLING car ce dernier est généralement plus stable que les autres.
La fonction attachInterrupt est à mettre dans le "void setup"

attachInterrupt(BUTTON, OnOff, FALLING);


Le "void OnOff", permettant de passer de l'état allumé (1) à l'état éteint (0):

void OnOff(){
    if (etat==0){etat=1;
                 compteur=0; 
                 }
      else if (etat==1){etat=0;
                        compteur=0;
                        }
    }


Lorsque le bouton est pressé, une baisse de tension survient dans la pin BUTTON (pin 0), ce qui a pour effet de lancer le "void OnOff" par le bais de l'Interrupt, et modifie ainsi l'état du système.

4.2 Lecture des capteurs DHT-11

Les deux capteurs de type DHT-11 envoie régulièrement une variable de type dht respectivement sur les pins 4 et 5 (DHTPIN et DHTPINBIS). Cette variable contient plusieurs informations, comme l'humidité et la température. La déclaration de ces deux variables (dht et dht2) s'effection par les lignes de codes suivantes:

DHT dht(DHTPIN, DHTTYPE);
DHT dht2(DHTPINBIS, DHTTYPE);

Il faut ensuite activer ces deux variables avec les formules suivantes, dans le "void setup":

dht.begin();
dht2.begin();

La lecture des données envoyées par les capteurs va ensuite se faire à l'aide de la fonction dht.readHumidity() (ou Temperature). Ces mesures se fixent sur des variables de type float.

float h = dht.readHumidity();        // La variable t correspond à l'humidité mesurée par le 1er capteur
float t = dht.readTemperature();     // La variable h correspond à la température mesurée par le 1er capteur
float h2 = dht2.readHumidity();      // La variable t2 correspond à l'humidité mesurée par le 2ème capteur
float t2 = dht2.readTemperature();   // La variable h2 correspond à la température mesurée par le 2ème capteur
int dh = h2-h;                       // La variable dh correspond à la différence d'humiditée entre les deux capteurs

4.3 La variable compteur

La variable compteur est au coeur du programme. Elle augmente d'une unité à chaque tour du "void loop" si la différence d'humidité (variable dh) entre les capteurs est supérieure à 17 alors qu'elle est nulle tant que la différence d'humidité reste en dessous. Lorsque la variable compteur atteint 30, la chaussure peut être considérée comme sèche et le système s'éteint. Ainsi, une fois enclenché, le système va au minimum fonctionner le temps que la variable compteur arrive à 30. Cela permet de limiter les perturbations extérieures comme par exemple un bref courant d'air plus sec sur un des capteurs. Définir le seuil de la variable dh auquel la chaussure peut être considérée comme sèche est ardu. En effet, cela varie selon les matériaux utilisés ou le type du sèche cheveux. Après avoir fait quelques essais, j'ai trouvé que le seuil idéal pour moi était 17. Mais il faudra probablement ajusté cette valeur selon le montage et l'emplacement de l'appareil.
L'incrément de la variable compteur:

 if (dh < 10 && etat==1) {compteur=++compteur ;}
     else{compteur = 0 ;}

La limite de la variable compteur (la pin RELAIS est reliée au relais):

if (compteur < 10 && etat==1){digitalWrite(RELAIS, HIGH);}
   else{digitalWrite(RELAIS, LOW);
       compteur = 0;
       etat = 0;
   }

4.4 La fonction delay

La fonction delay permet non seulement de définir le temps de boucle du "void loop", nécessaire pour la variable compteur, mais aussi pour rendre le programme plus stable en évitant des chevauchement d'ordres ou autres confusions lors de l'exécution.

delay(250);      // Attente de 250 millisecondes

5. Présentation vidéo

Une petite vidéo de présentation du D.M.C.M.

7. Résultat

Comme on peut le voir sur la vidéo de présentation du D.D.C.M., le prototype est fonctionnel. Il permet de sécher une chaussure et s'arrête de manière automatique. Le code permet plusieurs utilisations à la suit sans redémarrer le système. Le code est relativement stable, ne produit normalement pas d'erreurs mettant en danger l'exécution de la tâche. Il n'est toutefois pas très solide, et devrait se détériorer rapidement (humidité et carton ne font pas bon ménage). Le sèche cheveux n'est pas idéal non plus car il n'est pas fait pour fonctionner longtemps. De plus, le résultat final est très laid. Mais ce n'est qu'un prototype, qui fonctionne, et c'est au final ce qu'on demande à un prototype.

8. Discussion

8.1 Difficultés rencontrées

Lors de la conception de ce projet, j'ai été confrontés à quelques difficultés. En voici les principales:
La chose la plus dure à réaliser a été le code même du programme. Je débutais alors sur Arduino, et ai d'abord du me familiariser avec l'IDE et les commandes. De plus, je n'avais jamais installé de librairie. J'ai passé beaucoup de temps à comprendre comment installer et utiliser cette nouvelle librairie pour intéragir avec les capteurs.
L'utilisation de la fonction attachInterrupt m'a également posé quelques problèmes. J'ai été confrontés à des grosses instabilités car je ne l'avais pas tout de suite réalisé en FALLING, qui est généralement plus fiable.
Arriver à déterminer quand est-ce que la chaussure est sèche était compliqué, principalement parce que l'air chaud sortant du sèche cheveux est plus sec que l'air ambiant. Cela crée une grosse différence qu'il faut tenter de calculer en faisant des essais. L'emplacement du système, la disposition des pièces les une par rapport aux autres, ou encore les matériaux utilisés influent sur cette différence. Il faut ainsi "calibrer" le système dans une disposition précise et ne pas la changer. Quelqu'un voulant reproduire mon projet devrait ajuster le code selon sa propre configuration.

8.2 Améliorations possibles

Mon projet n'est qu'un prototype. La première chose à améliorer serait de remplacer les parties faites de carton et de scotch par un matériau plus adapté comme par exemple des tues en plastiques. La boîte devrait aussi être changée, car elle n'est pas hermétique et le carton absorbe forcément une partie de l'humidité. Ces modifications rendraient le D.M.C.M. bien plus précis et donc plus fiable.
Une nette amélioration d'un point de vue de la sécurité serait également nécessaire. En effet, il reste des fils dénudés, l'Arduino et le relais sont à découverts. Fixés ces éléments dans une structure close et solide permettrait de prévenir d'éventuels accidents. Il aurait également été possibles d'améliorer la sécurité pas le code même. Par exemple en faisant s'éteindre le système si un capteur mesure des valeurs abhérrantes ou si un problème de connection (fil de l'Arduino détaché par exemple) survenait.
Compacter le résultat final le rendrait beaucoup plus sûr et pratique à utiliser. Il n'y aurait plus besoin de faire attention à l'emplacement de chaque câble. Le résultat visuel final en serait également grandement amélioré.
On pourrait aussi imaginer de nouvelles fonctionnalités, comme par exemple un détecteur de poids démarrant le système tout seul lorsqu'on y pose une chaussure. Ou alors un système de minuterie permettant de définir un temps de séchage maximum, que le système s'éteigne si ce temps est dépassé et ainsi éviter de rester bloqué inutilement.

9. Conclusion

Le D.M.C.M n'est n'est en quelque sorte pas totalement terminé, c'est un prototype. Mais le but a été atteint, la validité du concept est prouvée. On pourrait le dupliquer, et refaire le même montage avec des matériaux plus adaptés et jolis et en compactant tout le système en une boîte. Il deviendrait ensuite parfaitement imaginable de l'utiliser quotidiennement, voir même de le commercialiser. On pourrait également rajouter de nouvelles fonctionnalités rendant encore plus facile l'intéraction avec le système.

10. Ressources