Test module ILS pour Arduino

Le module  ILS – Reed Switch LM393 est un interrupteur à lames souples. C’est un capteur qui ouvre ou ferme un contact bilames en fonction d’un champ magnétique.
Le module dispose également d’une puce LM393 qui permet de transformer le capteur analogique d’un simple ILS en capteur digital qui renvoi 0 ou 1.
Par défaut, le capteur renvoi 1 lorsqu’il n’a pas d’aimant à proximité.

Pour ma part, j’ai acheté plusieurs modules chez Zone 314 et j’en suis très content.

Caractéristiques du module :

  • Pin 1 : Sortie digital (0/1)
  • Pin 2 : GND
  • Pin 3 : VCC
  • Comparateur LM393
  • Tension de 3 à 5V
  • Ampérage au moins 15mA

Le schéma de montage est tout simple :

 

Et voici le programme pour tester l’ouverture d’une porte (ne pas oublier de mettre un aimant sur la partie mobile).

//-----------------------------------------------------------
//
//                Test module ILS pour Arduino
//             Interrupteur Lame Souple avec LM393
//                  Reed Switch with LM393
//  
//-----------------------------------------------------------
// EpixFR - Février 2017 
// Source matériel : http://www.ebay.fr/itm/182149404898
//-----------------------------------------------------------

// Inclusion de la bibliothèque pour les messages en Français
#include <PrintFr.h> //Source : https://github.com/EpixFr/Arduino-PrintFr

/* Déclaration des constantes définissant l'utilisation des broches */

//Broche utilisée pour les données du contact ILS
const int pin_ils = 8;
//Broche utilisée pour la Led (intégrée à la carte Arduino Uno)
const int pin_led = 13; 

/* Déclaration des variables globales */
//Etat du contact ILS
int etat_ils = 0;
//Etat précédent enregistré du contact ILS
int etat_ils_mem = 0;
//Nombre de cycle ouverture/fermeture
int nb_ouverture = 0;


void setup() {
  //Initialisation de la broche ILS en entrée numérique
  pinMode(pin_ils, INPUT);
  //Initialisation de la broche LED en sortie numérique
  pinMode(pin_led, OUTPUT);
}

void loop() {
  //Création de l'instance Message de type PrintFr 
  PrintFr Message;  

  //Ecoute du contact ILS
  etat_ils = digitalRead(pin_ils);

  //Si l'état ILS est différent de celui enregistré
  if (etat_ils != etat_ils_mem) {

    //Si le contact est ouvert (donc l'aimant est éloigné) 
    if (etat_ils == HIGH) {
          Message.Affiche("Ouverture porte");
          //On allume la LED de l'Arduino
          digitalWrite(pin_led, HIGH);
    } else {  
      //On éteint la LED de l'arduino
      digitalWrite(pin_led,LOW);
      Message.Affiche("Fermeture porte");
      //On incrémente le compteur d'ouverture
      nb_ouverture++;
      Message.Affiche("Nombre d'ouverture de porte : ",false);
      Serial.println(nb_ouverture);
    }
    //Petite temporisation pour la stabilité de l'acquisition des données
    delay(50);
  }
  //Enregistrement de l'état de l'ILS
  etat_ils_mem = etat_ils;
}

Attention pour que le code fonctionne, il faut bien posséder la bibliothèque suivante :

Cette bibliothèque permet d’écrire des messages avec des caractères accentués, plus d’infos ici.

Sources :