Parfois, nos projets ont besoin d’une sécurité supplémentaire. Cela peut concerner diverses applications, comme les mécanismes de verrouillage de porte, la prévention d’une utilisation dangereuse ou non autorisée de machines ou, plus niche encore, des accessoires d’escape room. Dans cet article, nous vous guiderons à travers l’assemblage d’un actionneur à clavier et verrons comment protéger par mot de passe le fonctionnement de votre vérin linéaire.
Voici ce que nous allons utiliser :
- Arduino Uno.
- Clavier matriciel 4x4.
- Module relais 2 canaux (un 4 canaux est montré sur les photos, mais seuls 2 canaux sont nécessaires).
- Actionneur PA-03-6-600.
- Alimentation PS-20-12.
- Buzzer (optionnel).
Câblage de votre actionneur
Tout d’abord, commençons par le câblage. Pour pouvoir étendre et rétracter votre actionneur, nous devons utiliser les deux canaux de notre module relais 2 canaux. Ainsi, lorsque Relais 1 est actif, le courant circulera dans un sens et lorsque Relais 2 est actif, le courant circulera dans le sens opposé. Si aucun des relais n’est actif ou si les deux le sont, aucun courant ne circulera vers l’actionneur. Pour cela, effectuez les connexions suivantes.
Relais vers l’actionneur et l’alimentation
- +12 V vers NC1 (borne normalement fermée sur le relais 1) (fil blanc).
- -12 V vers NO1 (borne normalement ouverte sur le relais 1) (fil noir).
- NC1 vers NC2 (pont bleu).
- NO1 vers NO2 (pont vert).
- COMMON1 vers actionneur (fil marron de l’actionneur).
- COMMON2 vers actionneur (fil bleu de l’actionneur).
Arduino vers le clavier et le module relais
- Reliez 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 5 V vers VCC sur le module relais.
- Arduino GND vers GND sur le module relais.
- Anode du buzzer (patte la plus longue) vers la broche 12 (optionnel).
- Cathode du buzzer (patte la plus courte) vers GND (optionnel).

Programmation de votre projet
Maintenant que toutes les connexions sont réalisées, nous sommes prêts pour le code. Le but de ce code est de lire les entrées d’un clavier, de rechercher la bonne saisie à 5 chiffres et de piloter nos relais en conséquence. Il existe également du code pour un buzzer optionnel afin de fournir un retour. Si vous ne souhaitez pas utiliser le buzzer, ne le connectez tout simplement pas et laissez le code tel quel. Si vous avez besoin d’utiliser la broche du buzzer pour autre chose, supprimez ou commentez tout le code utilisé pour les fonctions du buzzer ou de « beep ».
Dans le code ci-dessous, vous trouverez des commentaires sur presque chaque ligne (texte gris clair qui suit « // »). Ces commentaires décrivent ce qui se passe dans le sketch, ainsi que les modifications que vous pouvez apporter. Nous allons également détailler quelques sections importantes ici pour une explication plus approfondie.
Code de configuration
Dans notre code de configuration, nous définirons le buzzer et les broches des relais comme sorties. Le buzzer démarrera à LOW et les relais à HIGH. Cela les rendra tous inactifs lorsque nous alimenterons l’Arduino pour la première fois. Nous exécuterons également la fonction « retract() » une fois afin que l’Arduino connaisse l’état correct de l’actionneur.
void setup() //runs once on startup
{
digitalWrite(buzzer, LOW);//deactivates buzzer
digitalWrite(relay1,HIGH);//deactivates relay1
digitalWrite(relay2,HIGH);//deactivates relay2
for(int i=10;i<14;i++)
{
pinMode(i,OUTPUT);//sets pins 10 - 13 as outputs
}
Serial.begin(9600);//Starts the serial monitor at 9600 baud rate (for debugging only)
retract();//retracts the actuator on startup if it is not already. comment this out if you do not want the actuator to retract on startup
Serial.println("READY");//lets us know the serial monitor is running
}
Code du clavier
Pour ce sketch, nous utilisons la bibliothèque Keypad.h. Cette bibliothèque contient les fonctions que nous utilisons pour recevoir des entrées depuis notre clavier. Pour utiliser cette bibliothèque, nous devons créer un tableau à deux dimensions pour cartographier les caractères de notre clavier. Cela peut être réalisé en définissant d’abord le nombre de lignes et le nombre de colonnes du clavier. Ensuite, nous créons notre tableau avec chaque caractère présent sur le clavier. Notre clavier possède quatre lignes, quatre colonnes et huit broches de sortie. Il y a une broche pour chaque ligne et une broche pour chaque colonne. Nous le montrons dans notre code en créant un tableau « rowPins » qui contient les entrées numériques reliées aux broches de ligne et un tableau « colPins » qui contient les entrées numériques reliées aux broches de colonne. Lorsque nous appuyons sur une touche, nous relions l’une des broches de ligne à l’une des broches de colonne. Par exemple, si nous appuyons sur la touche 2, nous créons un circuit fermé entre la broche de ligne 1 et la broche de colonne 2.
char customKey; //characters input by pressing keypad
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = { //layout your "keymap" here
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6, 7, 8, 9}; //connect to the column pinouts of the keypad
Keypad customKeypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); //initialize an instance of class NewKeypad
Code du mot de passe
Dans cet exemple de commande sécurisée de vérin linéaire, notre mot de passe comporte 5 chiffres, nous définissons donc « Passcode_Length » à « 6 ». Cela s’explique par le fait qu’un espace supplémentaire est nécessaire pour un caractère nul. Si vous souhaitez modifier la longueur du mot de passe, remplacez simplement 6 par un nombre supérieur d’une unité à la longueur souhaitée. Ensuite, changez la valeur de « Passcode » avec les caractères de votre choix (réglé par défaut sur « 12345 »).
Le caractère associé à chaque pression de touche sera stocké dans le tableau « Input ». Une fois que ce tableau contient 5 caractères, il comparera la valeur de « Input » et de « Passcode » pour vérifier si le mot de passe est correct. Si les valeurs sont égales, notre code indiquera à l’Arduino d’étendre ou de rétracter l’actionneur (selon l’état actuel de l’actionneur). Si le mot de passe est incorrect, la broche du buzzer passera rapidement à l’état haut trois fois puis repassera à l’état bas. Dans tous les cas, la fonction « clearInput() » sera appelée ensuite pour effacer le tableau Input et faire de la place pour une nouvelle saisie.
Code d’extension et de rétraction
Nous avons deux fonctions très similaires dans ce code, « void extend() » et « void retract() ». Lorsqu’elle est appelée, void extend() écrira un niveau bas sur le Relais 1, le rendant actif. Cela fermera un circuit et appliquera une tension positive à l’actionneur. Le relais restera actif pendant la durée assignée à « const int extendTime » (réglé par défaut sur 25 000 millisecondes). La fonction void retract() fera exactement la même chose, sauf qu’elle utilisera le relais 2 pour inverser la tension au lieu du relais 1.
void extend()//extend the actuator
{
longBeep();
Serial.println("EXTENDING...");
digitalWrite(relay2,HIGH);//makes sure relay2 is not active
digitalWrite(relay1,LOW);//activates relay1
delay(extendTime);
digitalWrite(relay1,HIGH);//deactivates relay1
Serial.println("DONE EXTENDING");
extended = true; //tells the arduino that the actuator is extended
longBeep();
}
void retract()//extend the actuator
{
longBeep();
Serial.println("RETRACTING...");
digitalWrite(relay1,HIGH);//makes sure relay1 is not active
digitalWrite(relay2,LOW);//activates relay2
delay(retractTime);
digitalWrite(relay2,HIGH);//deactivates relay2
Serial.println("RETRACTING DONE");
extended = false; //tells the arduino that the actuator is retracted
longBeep();
}
Touches finales
Après avoir réalisé toutes nos connexions et téléversé notre code, nous devrions disposer d’un système de commande d’actionneur protégé par mot de passe pleinement fonctionnel. Si vous rencontrez des difficultés lors de la première configuration, essayez d’utiliser l’outil Moniteur série dans l’IDE Arduino. Cela peut être extrêmement utile pour déterminer si vos problèmes sont causés par le code, le câblage ou des composants défectueux.
Ce code peut également être modifié au-delà du simple changement de mot de passe. Vous pouvez envisager de remplacer votre carte relais par un shield MegaMoto afin de bénéficier d’un contrôle de 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 ! Si vous avez des questions à ce sujet, sur un autre vérin linéaire télécommandé, ou si vous souhaitez partager votre projet avec nous, n’hésitez pas à nous appeler ou nous envoyer un e-mail.