How to Control an Actuator with a Keypad

Comment contrôler un actionneur avec un clavier

Guest Writer
Guest Writer
PA Engineer

Nos projets nécessitent parfois une sécurité renforcée. Cela peut concerner diverses applications, telles que les mécanismes de verrouillage de portes, la prévention de l'utilisation dangereuse ou non autorisée de machines, ou encore des accessoires plus spécifiques pour escape games. Dans cet article, nous vous présenterons un actionneur à clavier et vous expliquerons comment protéger le fonctionnement de votre actionneur linéaire par mot de passe.

Voici ce que nous allons utiliser :

Câblage de votre actionneur

Commençons par le câblage. Pour déployer et rétracter votre actionneur, nous devons utiliser les deux canaux de notre module relais à 2 canaux. Ainsi, lorsque Relais un est actif, le courant circulera dans un sens et lorsque Relais deux Si aucun relais, ou les deux, n'est actif, le courant circule en sens inverse. Si aucun relais, ou les deux, n'est actif, aucun courant ne circule vers l'actionneur. Pour ce faire, nous devons réaliser les connexions suivantes.

Relais vers l'actionneur et l'alimentation

  • +12V à NC1 (borne normalement fermée sur le relais un) (fil blanc).
  • -12V vers NO1 (borne normalement ouverte sur le relais un) (fil noir).
  • NC1 à NC2 (fil cavalier bleu).
  • NO1 à NO2 (fil de liaison vert).
  • COMMON1 vers l'actionneur (fil d'actionneur marron).
  • COMMON2 vers l'actionneur (fil bleu de l'actionneur).

Arduino au clavier et au module relais

  • Connectez les broches 1 à 8 du clavier aux broches 2 à 9 de l'Arduino (dans cet ordre).
  • Broche Arduino 10 vers IN1 sur le module relais.
  • Broche Arduino 11 vers IN2 sur le module relais.
  • Arduino 5V vers VCC sur module relais.
  • Arduino GND à GND sur le module relais.
  • Anode du buzzer (fil le plus long) à la broche 12 (en option).
  • Cathode du buzzer (fil le plus court) à GND (en option).
Arduino au clavier et au module relais

Coder votre projet

Maintenant que toutes les connexions sont effectuées, nous sommes prêts pour le code. Ce code permet de lire les entrées d'un clavier, de trouver la bonne entrée à 5 chiffres et de commander nos relais en conséquence. Il existe également un code pour un buzzer optionnel permettant de fournir un retour d'information. Si vous ne souhaitez pas utiliser le buzzer, vous pouvez simplement ne pas le connecter et laisser le code tel quel. Si vous devez utiliser la broche du buzzer pour autre chose, supprimez ou commentez tout le code utilisé pour les fonctions buzzer ou bip.

Dans le code ci-dessous, vous trouverez des commentaires sur presque chaque ligne (texte gris clair après « // »). Ces commentaires décrivent le déroulement du croquis, ainsi que les modifications que vous pouvez y apporter. Nous détaillerons également quelques sections importantes pour une explication plus détaillée.

Utilisez nos microcontrôleurs Arduino pour des options de contrôle illimitées de votre actionneur !

Code de configuration

Dans notre code de configuration, nous allons définir les broches du buzzer et du relais comme sorties. Le buzzer démarrera à l'état BAS et les relais à l'état HAUT. Ils seront alors tous inactifs lors de la première mise sous tension de l'Arduino. Nous exécuterons également la fonction « retract() » une fois afin que l'Arduino connaisse l'état correct de l'actionneur.

 void setup() // s'exécute une fois au démarrage
 {
 digitalWrite(buzzer, LOW);//désactive le buzzer
 digitalWrite(relay1,HIGH);//désactive le relais 1
 digitalWrite(relay2,HIGH);//désactive le relais 2
 pour(int i=10;i<14;i++)
 {
 pinMode(i,OUTPUT);//définit les broches 10 à 13 comme sorties
 }


 Serial.begin(9600);//Démarre le moniteur série à un débit de 9600 bauds (pour le débogage uniquement)
 retract();//rétracte l'actionneur au démarrage s'il ne l'est pas déjà. Commentez ceci si vous ne voulez pas que l'actionneur se rétracte au démarrage
 Serial.println("READY");//nous permet de savoir que le moniteur série est en cours d'exécution
 }

Code du clavier

Pour ce schéma, nous utilisons la bibliothèque Keypad.h. Cette bibliothèque contient les fonctions permettant de recevoir les entrées de notre clavier. Pour l'utiliser, nous devons créer un tableau bidimensionnel pour représenter les caractères de notre clavier. Pour ce faire, nous définissons d'abord le nombre de lignes et de colonnes du clavier. Ensuite, nous créons notre tableau avec chaque caractère du clavier. Notre clavier comporte quatre lignes, quatre colonnes et huit broches de sortie. Il y a une broche pour chaque ligne et une broche pour chaque colonne. Nous illustrons cela dans notre code en créant un tableau « rowPins » contenant les entrées numériques connectées aux broches de ligne et un tableau « colPins » contenant les entrées numériques connectées aux broches de colonne. Lorsque nous appuyons sur une touche, nous connectons une broche de ligne à une broche de colonne. Par exemple, si nous appuyons sur le bouton 2, nous créons un circuit fermé entre la broche de ligne 1 et la broche de colonne 2.

 char customKey; //caractères saisis en appuyant sur le clavier 
const byte ROWS = 4; //quatre lignes
 const byte COLS = 4; //quatre colonnes

 char keys[ROWS][COLS] = { //disposez votre « keymap » ici
 {'1', '2', '3', 'A'},
 {'4', '5', '6', 'B'},
 {'7', '8', '9', 'C'},
 {'*', '0', '#', 'D'}
 };
 byte rowPins[ROWS] = {2, 3, 4, 5}; // se connecter aux broches de ligne du clavier
 byte colPins[COLS] = {6, 7, 8, 9}; // se connecte aux broches de colonne du clavier
 Clavier customKeypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); //initialiser une instance de la classe NewKeypad

Code d'accès

Dans cet exemple de contrôle d'actionneur linéaire sécurisé, notre code d'accès comporte 5 chiffres ; nous définissons donc « Passcode_Length » à « 6 ». Ceci est dû au fait que nous avons besoin d'un espace supplémentaire pour un caractère nul. Pour modifier la longueur du code d'accès, remplacez simplement le chiffre 6 par un nombre supérieur d'une unité à la longueur souhaitée. Ensuite, remplacez la valeur de « Passcode » par les caractères de votre choix (définie par défaut sur « 12345 »).

Le caractère associé à chaque touche enfoncée est stocké dans le tableau « Input ». Une fois que ce tableau contient 5 caractères, il compare les valeurs de « Input » et de « Passcode » pour vérifier si le mot de passe est correct. Si les valeurs sont égales, notre code indique à l'Arduino d'étendre ou de rétracter l'actionneur (selon son état). Si le mot de passe est incorrect, la broche du buzzer passe rapidement à l'état haut trois fois, puis à l'état bas. Dans les deux cas, la fonction « clearInput() » est appelée pour effacer le tableau « Input » et faire de la place pour une nouvelle entrée.

Extension et rétraction du code

Ce code contient deux fonctions très similaires : « void extend() » et « void retract() ». Lorsqu'elle est appelée, void extend() met le relais 1 à l'état bas, le rendant ainsi actif. Cela ferme un circuit et applique une tension positive à l'actionneur. Le relais reste actif pendant la durée définie par « const int extendTime » (définie à 25 000 millisecondes par défaut). La fonction void retract() effectue exactement la même opération, mais utilise le relais 2 pour inverser la tension au lieu du relais 1.

 void extend()//étendre l'actionneur
 {
 longBeep();
 Serial.println("EXTENSION...");
 digitalWrite(relay2,HIGH);//s'assure que le relais 2 n'est pas actif
 digitalWrite(relay1,LOW);//active le relais 1
 délai(prolonger le temps);
 digitalWrite(relay1,HIGH);//désactive le relais 1
 Serial.println("EXTENSION TERMINÉE");
 extended = true; //indique à l'arduino que l'actionneur est étendu
 longBeep();
 }

 void retract()//étendre l'actionneur
 {
 longBeep();
 Serial.println("RÉTRACTION..."); 
digitalWrite(relay1,HIGH);//s'assure que le relais 1 n'est pas actif
 digitalWrite(relay2,LOW);//active le relais 2
 délai(temps de rétraction);
 digitalWrite(relay2,HIGH);//désactive le relais 2
 Serial.println("RÉTRACTION TERMINÉE");
 extended = false; //indique à l'arduino que l'actionneur est rétracté
 longBeep();
 }

Touches finales

Une fois toutes les connexions effectuées et le code téléchargé, nous devrions disposer d'un système de contrôle d'actionneur fonctionnel et protégé par mot de passe. Si vous rencontrez des difficultés lors de la configuration initiale, essayez d'utiliser l'outil de surveillance série de l'IDE Arduino. Cela peut s'avérer très utile pour déterminer si vos problèmes sont dus au code, au câblage ou à des composants défectueux.

Ce code peut également être modifié au-delà du simple mot de passe. Vous pouvez envisager de remplacer votre carte relais par un shield MegaMoto pour contrôler la vitesse ou d'utiliser un actionneur avec rétroaction à effet Hall pour le contrôle de position.

Nous espérons que cet article vous a été utile ! Pour toute question concernant ce produit, tout autre actionneur linéaire télécommandé ou si vous souhaitez nous faire part de votre projet, n'hésitez pas à nous contacter. appelez-nous ou envoyez-nous un e-mail .