mardi 19 janvier 2016

Un détecteur de fumée connecté !


Ah les vacances ... On voit ses potes, on lit un peu, on regarde des films ... et on démonte des objets.

Hier c'était au tour d'un détecteur de fumée.

Détecteur Avertisseur Autonome de Fumée (DAAF)

Il y a quelques jours je cherchais des piles 9V, et je suis tombé sur la moins chère de Carrefour : 2,90€ ... elle était vendue avec un DAAF, ou peut-être était-ce l'inverse ? Enfin peu importe.

Dans notre cas nous allons utiliser un détecteur optique (et non par ionisation). Son fonctionnement est simple : il est équipé d'une chambre à détection d'opacité par LED infrarouge.

Explications

En temps normal, une LED infrarouge (ou ultraviolet) émet  dans une direction fixe afin que le récepteur infrarouge (photodiode) ne reçoit aucun signal.
Source : Wikipedia
Mais lors d'un incident, la fumée ou la vapeur entre dans la chambre, l'infrarouge est bien visible par le récepteur grâce à l'opacité du gaz. La chambre (qui est un capteur) envoie un courant positif à un circuit intégré qui gère alors un signal sonore, un signal lumineux et, au besoin, un signal de "dialogue" ...
Ce dernier permet, entre autres, de lier plusieurs détecteurs, afin de faire sonner tous les DAAF d'un bâtiment par exemple, ou encore ... d'intégrer un système type domotique !

Décortiquons
Un DAAF à l'air libre

C'est un exemple de ce que vous pourrez retrouver dans votre détecteur, certains éléments peuvent différer bien entendu.
Une enceinte piézoélectrique
- enceinte piézoélectrique : Tout d'abord nous avons une pièce métallique plate. C'est le signal sonore ! En termes "composant" on parlera plus d'enceinte piézoélectrique. De plus celle-ci est passive. Autrement dit il sera nécessaire d'utiliser une oscillation afin de faire vibrer la partie céramique et produire un son.
- pile 9V : ce pour quoi j'ai acheté le détecteur !
- carcasse et vis : ...
- support pile 9V : ...
- LED : C'est le signal lumineux. Cette LED s'allumera soit parce que tout est normal, soit parce que la chambre optique a détecté de la fumée.
- un bouton : Généralement le bouton de test, il nous servira par la suite.
- un composant intégré : Dans mon cas je suis en présence d'un CS2105-GO. Le constructeur en parle ainsi : "Photoelectric Smoke Detector IC with hush,I/O and continous horn driver".
Il est nécessaire que votre IC comporte une sortie I/O (généralement en 7). Si ce n'est pas le cas je vous préconise de réaliser ce projet en utilisant la sortie de l'IC pour le contrôle de l'élément piézoélectrique.

Circuit Intégré (IC)

Le circuit intégré de votre détecteur c'est le composant noir de forme rectangulaire et qui a plusieurs pattes. Il se cache en général sous une plaque métallique du circuit imprimé.
Voici une liste non exhaustive de circuits intégrés qu'il vous sera possible d'exploiter :
- A5350/5360 (I/O en patte 2 et non 7) ;
- BL59A10/BL59S10 ;- CS2105/2107 ;
- CS7117 (version 
- M75010/M75012 ;
- MC146010/MC146012 ;- RE46C141/RE46C143.
Si votre détecteur n'a pas de correspondance avec ces IC je vous conseille d'en changer ou d'essayer par vous-même la sortie du composant piézoélectrique.

Matériel nécessaire
Le matériel en image

Pour réaliser ce projet il vous faudra :
- un DAAF optique avec IC comportant une entrée/sortie (I/O) ;
- RPI ou arduino ;
- un fer à souder et de l'étain ;
- 2 fils fin (ø0,25cm souhaitable), longueur variable en fonction de vos besoins ;
- soit 2 résistances équivalentes (arduino) ou 3 résistances équivalentes (RPI)  (1kΩ par exemple) pour faire un pont diviseur de tension ;
- soit 1 transistor NPN type 2N222 (BCS 546 à 548 fonctionnent aussi) , 1 résistance de 200Ω et 1 autre de 10kΩ ;
- un cutter ;
- un multimètre.

Modification du détecteur

1) Couper deux fils de couleurs différentes (avec au moins un fil noir ou marron de préférence) et de longueur 15cm environ ;
Dénuder les câbles sur au moins une extrémité et les étamer.
Démonter votre détecteur sans le casser afin de sortir le circuit imprimé.
Fils de connexion
2) Vérifier le type de circuit intégré dont il est constitué (cf ¶ Circuit Intégré (IC)).
3) Appliquer un point de soudure au niveau de la patte entrée/sortie (I/O) du composant. La lecture de l'IC se fait avec le "point" vers le haut. La patte en haut à gauche est la numéro 1, celle en dessous c'est la 2, etc.
Appliquer également un point de soudure sur une masse (la borne négative du support de la pile par exemple). Si vous n'êtes pas sûr de trouver une masse, n'hésitez pas à utiliser un multimètre (test de continuité entre la borne négative du support de la pile et le point dont vous n'êtes pas sûr) !
Comment trouver la patte 7
4) Souder le câble noir à la masse de votre circuit imprimé via le point de soudure que vous avez précédemment réalisé. Souder l'autre câble au point rattaché à la patte 7 du circuit imprimé.
Soudure des câbles
5) Le test de vérité ! Il va falloir vérifier que tout fonctionne. Branchez la pile 9V, restez appuyé sur le bouton de test et mesurez la tension entre vos deux câbles ... vous trouvez entre 7 et 10V ? C'est parfait ! Enlevez votre pile.
6) Maintenant vous devez faire un choix : voulez-vous conserver l'alarme sonore ou non ? Dans tous les cas votre détecteur n'est plus homologué ... mais toujours utilisable bien évidemment. Si vous ne voulez pas le conserver vous pouvez décoller la pastille métallique qu'est le composant piézoélectrique et l'ajouter à votre armoire à composants électroniques (ou à la poubelle si vous êtes en couple). Pour ma part je l'ai retiré.
7) On ferme la boîte ! Attention aux connecteurs, vis et sens de maintien des éléments. Tirez proprement vos deux câbles de la structure afin de les utiliser ultérieurement. Au besoin vous devrez créer un espace pour les sortir.
Un DAAF trafiqué
8) Un dernier petit test au multimètre pour voir si rien n'a altéré nos soudures et nos câbles.
Test au multimètre

Connexion à un Raspberry Pi

Solution 1 - le pont diviseur de tension
Un pont diviseur de tension
C'est le moyen le plus simple pour garder votre RPi en vie. Supposons que notre détecteur envoie 9V s'il détecte de la fumée, il va falloir récupérer environ 3,3V de tension en entrée de notre RPi ...
Plutôt que de s'embêter à réguler la tension de sortie avec précision nous allons la diviser par 3. La RPi définit toute tension supérieure à 2V comme étant un état haut !
Le schéma suivant est à reproduire en imaginant la pile 9V comme le détecteur et l'Arduino comme la RPi.
Attention à bien mettre en place vos câbles. Si vous manipulez mal le pont diviseur vous risquez d'avoir 6V au lieu de 3V et je peux vous garantir que votre RPi n'aimera pas (au mieux elle perdra une broche, au pire elle cramera)
Montage pour la RPi
Pour la programmation vous aurez un niveau haut lorsqu'il y aura de la fumée et un niveau bas lorsqu'il n'y en aura pas !
Donc supposons un montage avec une LED en sortie de la GPIO 9 et le détecteur en entrée de la GPIO 8. Je veux que ma LED s'allume lorsque le détecteur sent de la fumée. Voici un code possible :

# On importe la bibliothèque classique RPi.GPIO
from RPi.GPIO import GPIO
# On initialise les broches
detecteur = 3
led_alarme = 5
GPIO.setmode(GPIO.BOARD)
GPIO.setup(detecteur, GPIO.IN)
GPIO.setup(led_alarme, GPIO.OUT, initial = GPIO.LOW)
# On fait une boucle infinie pour la détection de changement
# d'état des broches
try:
 while True:
  if GPIO.input(detecteur) == GPIO.HIGH:
   GPIO.output(led_alarme, GPIO.HIGH)
  else:
   GPIO.output(led_alarme, GPIO.LOW)
# Lorsque c'est fini on "cleanup" !
finally:
 GPIO.cleanup()

Solution 2 - le transistor interrupteur
Je ne vais pas vous faire un cours sur le transistor, ce serait l’hôpital qui se fout de la charité.
Si on applique la sortie du détecteur sur la base de notre transistor, tandis que l'on met la masse à l'émetteur et le 3,3V ainsi que notre entrée RPi au collecteur (précédemment la numéro 3), nous devrions obtenir un 3,3V (état haut) lorsque le détecteur ne capte aucune fumée et un 0V (état bas) lorsque de la fumée est présente dans la chambre du capteur.
Je ne vous remets pas le code, il suffit d'inverser le niveau attendu pour l'entrée sur la broche du détecteur.
Le schéma utilisant en imaginant la pile 9V comme étant le détecteur et l'Arduino comme étant la RPi, je vous conseille de mettre la résistance de 200Ω avant la base du transistor, et celle de 10kΩ entre le 3,3V du RPi et le collecteur du transistor, comme suit :
Schéma avec transistor NPN

Connexion à un Arduino

Solution 1 - le pont diviseur de tension
C'est le moyen le plus simple pour garder votre Arduino en vie. Supposons que notre détecteur envoie 9V s'il détecte de la fumée, il va falloir récupérer environ 5V de tension en entrée de notre Arduino...
Plutôt que de s'embêter à réguler la tension de sortie avec précision nous allons la diviser par 2. Ce sera bien suffisant pour avoir un état haut !
Le schéma suivant est à reproduire en imaginant la pile 9V comme le détecteur.
Montage pour l'Arduino
Pour la programmation vous aurez un niveau haut lorsqu'il y aura de la fumée et un niveau bas lorsqu'il n'y en aura pas !
Donc supposons un montage avec une LED en sortie de la broche numérique 3 et le détecteur en entrée de la broche numérique 2. Je veux que ma LED s'allume lorsque le détecteur sent de la fumée. Voici un sketch possible :
// On définit la broche d'entrée de notre détecteur
// qui passe bien sûr par le pont diviseur
#define DETECTEUR 2
// On définit la broche de sortie de la LED d'alarme en
// cas de détection des fumées
#define LED_ALARME 3
void setup() {
  // Le détecteur est en entrée
  pinMode(DETECTEUR, INPUT);
  // La LED d'alarme est en sortie
  pinMode(LED_ALARME, OUTPUT);
}
void loop() {
  // Si le détecteur envoie un niveau haut
  if (digitalRead(DETECTEUR)) {
    // On allume la LED d'alarme
    digitalWrite(LED_ALARME, HIGH);
  // Sinon on l'éteint
  } else {
    digitalWrite(LED_ALARME, LOW);
  }
}
Le résultat en image
 Solution 2 - le transistor interrupteur
Je ne vais pas vous faire un cours sur le transistor, ce serait l’hôpital qui se fout de la charité.
Si on applique la sortie du détecteur sur la base de notre transistor, tandis que l'on met la masse à l'émetteur et le 5V ainsi que notre entrée Arduino au colleteur (précédemment la numéro 2), nous devrions obtenir un 5V (état haut) lorsque le détecteur ne capte aucune fumée et un 0V (état bas) lorsque de la fumée est présente dans la chambre du capteur.
Je ne vous remets pas le code, il suffit de mettre un point d'exclamation ("!") avant le niveau attendu pour l'entrée sur la broche du détecteur.
Le schéma utilisant en imaginant la pile 9V comme étant le détecteur, je vous conseille de mettre la résistance de 200Ω avant la base du transistor, et celle de 10kΩ entre le 5V de l'Arduino et le collecteur du transistor, comme suit :
Schéma avec transistor NPN

5 commentaires:

  1. bravo pour cet article!
    je cherchais justement des infos sur ce CS2105 (pin 7 I/O) issu de mon détecteur de fumée.
    Pour l'utiliser en sirène connecté, sans doute avec un ESP8266.
    Mais pourquoi pas en détecteur ET sirène connectée...le but est d'intégrer un Wemos (avec une alim sur secteur) pour le connecter à ma box domotique Jeedom par l’intermédiaire du plugin ESPEasy.

    RépondreSupprimer
    Réponses
    1. Bonjour, avez vous avancé sur votre projet de detecteur et alarme connectés? Merci

      Supprimer
  2. Merci pour cette article. Je vais essayer une troisième solution qui est l'utilisation d'un opto-coupleur. Cela me rassurera côté isolation des circuits.

    RépondreSupprimer
  3. Merci pour cette article. Je vais essayer une troisième solution qui est l'utilisation d'un opto-coupleur. Cela me rassurera côté isolation des circuits.

    RépondreSupprimer
  4. Oui, j'ai fini par le réaliser ce détecteur de fumée connecté sous ESPasy et box domotique Jeedom. https://www.jeedom.com/forum/viewtopic.php?f=185&t=34836

    RépondreSupprimer