Utiliser un relais avec interrupteur et ou capteur PIR



Salut le monde !!

Cette semaine accrocher vous car nous allons voir comment utiliser un relais, un bouton et un détecteur de présences, si c'est beau ça ! du 3 en 1 !

Prérequis..

      Pour ce montage il vous faudra :
  • 1x NodeMCU et leur alimentation (ou autres ESP8266)
  • 1x Relais KY-019 ou autres type de relais
  • 1x Capteur de présence PIR 
  • 1x Interrupteur

Schématique..

Pour ce tuto j'ai pris des éléments qui peuvent beaucoup servir en domotique. Par exemple vous pourriez appliquer ce système pour commander une lumière si il y a une présence ou forcer manuellement cette action avec l'interrupteur. Sinon nous pourrions supprimer le capteur PIR pour créer un système d'arrosage simple. Je vous laisse imaginer vos propre application.

Schéma créer sur Fritzing

Installation du Firmware..

Pour installer ce petit programme sur une ESP je vous laisse faire un détour vers mon premier tuto que j'ai fais sur EspEasy

Confiuration EspEasy..

Avant de commencer je vous recommande 2 choses. La première est d'activer le NTP pour pouvoir déclencher des événements en fonction de l'heure. Vous pouvez regarder un de mes anciens tuto ! La 2ème configurer l'envoi d'email via depuis les notifications, la aussi si vous ne savez pas comment faire voici un autre tuto !

Maintenant aller sur l'onglet tools puis sur le bouton advanced, cocher la case Rules et valider avec le bouton submit tout en bas de la page !


Que vous actualiser la page vous pouvez voir qu'un nouvel onglet Rules est apparu, cliquer dessus. Depuis ici vous pourrez créé 4 règles maximum 2048 caractères chacune !

Pour bien comprendre comment les notifications fonctionnent dans les règles. Tout d'abord la syntaxe à utiliser est
Notify <numéro>, "contenu du message"
Dans l'image ci-dessous vous pouvez voir que dans la liste des notifications j'ai choisi la numéro  .

  
Donc par exemple une commande comme celle-ci
Notify 1, "Salut le monde"


Voilà maintenant que vous avez activer ou pas le NTP et les notifications cliquer sur l'onglet Devices et choisissez comme l'option Switch Input / Switch. A savoir que cette option peut être appliquée pour plusieurs type de capteurs comme un relais, un contact de porte, un détecteur de présences, interrupteurs en gros n'importe quel commutateur.
Comme d'habitude vous pourrez trouver en bas une description des champs du formulaire ci-dessous.

Paramètres de la tâche (Task Settings)

  • Périphérique : Nom du plugin
  • Nom : Nom de la tâche (exemple nom Porte, lumière, bouton, etc.. )
  • Activer : A activer sinon ben ça fonctionnera pas

Paramètre du capteur (Sensor Settings)

  • Pull-up interne Cochez si vous souhaitez utiliser le pull-up interne de l'ESP mais prenez garde toutes les broches GPIO n'ont pas ce pull-up interne.
  • Logique inverse Parfois il arrive que la valeur physique élevée soit publiée en tant que valeur basse. Par exemple, si un interrupteur déclenche une valeur basse (0) lorsque vous appuyez dessus la valeur d'état de  Switch#State  serait donc logique d'être défini sur 1 
  • GPIO Quel GPIO doit être utilisé, il est recommandé de ne pas utiliser de commutateur de verrouillage qui peut mettre l'ESP en mode flash s'il est laissé sur haut/bas.
  • Type de commutateur Réglez le type de commutateur sur « Switch » ou « Dimmer » selon le type d'application que vous voulez en faire
  • Commutateur La manière par défaut de gérer un commutateur est un bouton marche/arrêt. Il est soit activé ( 1) soit désactivé ( 0).
  • Gradateur Non utilisé par les interrupteurs de porte, si vous souhaitez toujours l'utiliser, vous pouvez consulter la page Switch .
  • Type de bouton de commutation Définissez le type de commutateur, « Commutateur normal », « Bouton-poussoir actif bas » ou « Bouton-poussoir actif haut ». * Commutateur normal : Il s'agit du réglage général à utiliser pour un commutateur PIR.
  • Bouton poussoir actif bas Non utilisé par les interrupteurs de porte (en général), si vous souhaitez toujours l'utiliser, vous pouvez consulter la page Switch .
  • Envoyer l'état de démarrage Si coché, l'unité publiera l'état du commutateur lors du démarrage. Si cette case n'est pas cochée, vous risquez de vous retrouver avec un interrupteur de verrouillage pris dans les limbes. Cela signifie que l'unité enregistre une valeur basse/élevée mais que l'état physique du commutateur peut être le contraire. Si vous utilisez un interrupteur mécanique qui peut être physiquement réglé sur un état, vous devez cocher cette option.

Gestion avancée des événements (Advanced event management)

  • De-bounce (ms) Quelle doit être la durée de l'impulsion (le temps pendant lequel vous appuyez sur le bouton), si elle est réglée sur élevée, vous devez la publier plus longtemps avant que l'unité ne l'enregistre comme un changement d'état. Vous pouvez expérimenter avec ce paramètre pour trouver un bon comportement du bouton si vous sentez qu'il ne répond pas selon vos préférences.
  • Evénement double clic Non utilisé par les interrupteurs de porte (en général), si vous souhaitez toujours l'utiliser, vous pouvez consulter la page Switch .
  • Intervalle maximum de double-clic (ms) Identique à ci-dessus.
  • Événement d'appui long Comme ci-dessus.
  • Intervalle minimum d'appui long (ms) Identique à ci-dessus.
  • Utiliser le bouton de sécurité (plus lent) Comme ci-dessus.

Acquisition des données

  • Envoyer au contrôleur Vérifiez sur quel contrôleur (le cas échéant) vous souhaitez publier. Tout ou aucun contrôleur peut être utilisé.
  • Intervalle A quelle fréquence la tâche doit être publiée sa valeur (optionnel pour les plugins de commutation).

Configuration EspEasy Relais..

Pour ne pas me répéter plusieurs fois je vais vous laisser jeter un œil sur mes différentes configuration je pense que ce sera le plus simple ! 


Nous allons voir maintenant différentes commande pour actionner ce relais, elle peuvent être aussi bien utilisée dans une règle ou par requête HTTP. Vous pourrez voir il n'y en a pas qu'une mais la 1ère et la 3ème vont particulièrement nous intéresser dans ce tuto !

Commande (GPIO/Valeur)

Informations supplémentaires

GPIO,<GPIO>,<state>

GPIO : 0 … 16

État:

2 (HIGH-Z, entrée)

1 (ÉLEVÉ, sortie)

0 (BAS, sortie)

marche/arrêt de base. Nous pouvons contrôler une broche avec de simples commandes d'URL http. Pour changer la broche en sortie stable haute ou basse. Régler GPIO sur 2 signifie qu'il sera capable de détecter des relais de bas niveau (avec une impédance élevée, Z).

GPIOtoggle,<GPIO>

GPIO : 0 … 16

Activer/désactiver. Basculer l'état actuel (sortie) de la broche GPIO donnée. Lorsqu'il est exécuté, il change le mode de broche en sortie.

LongPulse,<GPIO>,<state>,<duration>

GPIO : 0 … 16

État : 1/0

Durée : 1 … 999 S

Pour envoyer une impulsion * longue * à une certaine broche. Une impulsion longue est fondamentalement la même que l'impulsion simple. La durée est définie en secondes, ce qui la rend plus adaptée à une durée plus longue. Cette commande n'est pas bloquante, mais enverra 2 événements pour démarrer et arrêter l'impulsion. Cela peut varier en fonction de la charge système du module. La variation est généralement jusqu'à 10 ms, mais peut aller jusqu'à une seconde, selon les plugins actifs et les contrôleurs effectuant des opérations de blocage.

LongPulse_mS,<GPIO>,<state>,<duration>

GPIO : 0 … 16

État : 1/0

Durée : 10 … 15000 ms

Pour envoyer une impulsion * longue * à une certaine broche. LongPulse_mSest le même que le normal LongPulseLa seule différence est la base de temps en millisecondes plutôt qu'en secondes.

Pulse,<GPIO>,<state>,<duration>

GPIO : 0 … 16

État : 1/0

Durée : 0 … 1000 ms

Pour envoyer une impulsion *courte* à une certaine broche. Exemple pour envoyer une impulsion active haute (1) sur GPIO 14 pendant 500 mSecondes. La durée d'impulsion est en millisecondes. L'état est 1 ou 0. NB il s'agit d'un appel bloquant, ce qui signifie qu'aucune autre action ne sera effectuée pendant l'impulsion.

PWM,<GPIO>,<duty>

PWM,<GPIO>,<duty>,<duration>

PWM,<GPIO>,<duty>,<duration>,<frequency>

GPIO : 0 … 15

Devoir : 0 … 1023

Durée : 100 … 15000 msec (en option)

Fréquence : 100 … 40000 Hz (en option)

Pour définir un certain niveau PWM. Si vous avez défini un certain GPIO sur un niveau PWM et que vous souhaitez l'utiliser comme une broche HIGH/LOW normale, vous devez réinitialiser en définissant le niveau PWM sur 0.

Le paramètre de durée (en msec) créera un fondu. La valeur 0 ne définira pas de durée.

La fréquence (en Hz) sera réglée sur 1000 Hz lorsqu'elle n'est pas indiquée. Les fréquences supérieures à 30 kHz ne sont pas stables et feront probablement planter l'ESP.

Servo,<servo ID>,<GPIO>,<position>

GPIO : 0 … 15

Servo : 1/2

Position : -180 … 180 (voir avertissement ci-dessous)

Pour contrôler un servomoteur. Les versions antérieures au 22/11/2020 ne prenaient en charge qu'un maximum de 2 servos. Les versions ultérieures autorisent plus et n'ont plus besoin du car un nouvel ID est généré en fonction de la broche GPIO utilisée. Pour rester compatible avec les règles existantes, le nombre de paramètres n'a pas changé.servo ID

Avertissement

La plupart des servos ne sont pas capables de tourner à 360° ! Normalement les servos sont capables d'aller de -90° à 90° , quelques rares servos permettent de -135° à 135°.

Une valeur de position de 9000 arrêtera le signal PWM. Cela peut être utile pour économiser de l'énergie sur les servos qui n'ont pas besoin d'alimentation pour rester à la même position.

Monitor,G,<GPIO>

GPIO : 0 … 16

Pour surveiller un état GPIO. En utilisant la commande, vous recevrez des événements lorsque l'état GPIO de cette broche passera de 1 à 0 et de 0 à 1.

UnMonitor,G,<GPIO>

GPIO : 0 … 16

Pour annuler la surveillance d'un état GPIO. En utilisant la commande, vous cesserez de recevoir des événements lorsque l'état GPIO de cette broche passera de 1 à 0 et de 0 à 1.

Status,G,<GPIO>

GPIO : 0 … 16

Renvoie l'état d'une broche. En utilisant la commande, vous recevrez le statut de la broche correspondante.

Configuration EspEasy Interrupteur..


Bon.. L'idée maintenant c'est de pouvoir forcer manuellement ce relais à l'aide de l'interrupteur que ce sois pour actionner une lumière ou un arrosage automatique mais pour réaliser ceci il faudra d'abord créer une règle donc je vous laisse aller sur l'onglet  Rules ,soit vous pouvez continuer dans la première règle soit choisir celle qui vous fait plaisir ! 

Pour vous faciliter la compréhension du code dans l'image ci-dessous vous pourrez voir que j'ai entrouré de certaine couleur les éléments clé du code ! 

Il ne vous reste plus qu'a copier le code suivant dans la règle que vous avez choisi
on Bouton1#State do   // Quand Bouton 1 Change d'état fait
if [Bouton1#State]=1       // SI l'état de bouton1 est égal à 1
GPIO,14,                 // Met le GPIO n°14 sur HIGH
elseif [Bouton1#State]=0   // Sinon SI l'état de Bouton1 est égal à 0
GPIO,14,0                  // Met le GPIO n°14 sur LOW
endif                      // Fin de la condition SI
endon                      // Arrêt de la procédure

Configuration EspEasy PIR..

Et pour finir le détecteur de présences, qui lui servirai plutôt dans un projet d'alarme ou d'éclairage automatique. A nouveau une image pour comprendre de ou viennent les éléments du code.


Et pour finir le code à appliquer à la suite d'une règle ou dans une nouvelle !

on PIR#State=1 do       // Quand l'état du PIR est égal à 1 fait..
  timerSet,1,1          // Crée le Timer n°1 qui dure 1 seconde
endon                   // Fin de la procédure

on rules#timer=1 do     // Quand le Timer n°1 arrive à zéro fait
 if [PIR#State]=0       // SI l'état du PIR est égal à 0
  //Action s'il n y a pas de détection
    GPIO,14,0           // <Commande>,<N° GPIO>,<Etat>
 else                   // Condition SINON
  //Action si il y a une détection
    LongPulse,14,1,120  // <Commande>,<N° GPIO>,<Etat>,<Durée en secondes>
 endif                  // Fin de la condition SI
endon                   // Fin de la procédure

C'est terminé pour ce tuto ! J'espère qu'il vous donnera plein d'idée avec l'arrivé des beaux jours qui arrivent !! N'oublier pas de vous abonner à ma page Facebook et Twitter sans oublier pour suivre mes dernières actus !! Merci !!!

Les capteurs/compteurs :

Les écrans :
  • OLED SSD1306
  • 7-segment display
  • Nextion
  • LCD2004
Les Contrôleurs :

Bon week-end mes Noobs !!


Commentaires

Articles les plus consultés