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 :