A volte i nostri progetti richiedono un livello di sicurezza in più. Questo può capitare in varie applicazioni, come meccanismi di chiusura porta, prevenzione dell’uso non sicuro o non autorizzato dei macchinari o, per qualcosa di più di nicchia, oggetti di scena per escape room. In questo articolo ti guideremo in un assemblaggio con tastierino e attuatore e vedremo come proteggere con password il funzionamento del tuo attuatore lineare.
Ecco cosa utilizzeremo:
- Arduino Uno.
- Tastierino a matrice 4x4.
- Modulo relè a 2 canali (nelle immagini è mostrato un 4 canali, ma sono necessari solo 2 canali).
- Attuatore PA-03-6-600.
- Alimentatore PS-20-12.
- Buzzer (opzionale).
Cablaggio dell’attuatore
Per prima cosa inizieremo dal cablaggio. Per poter estendere e ritrarre il tuo attuatore, dovremo usare entrambi i canali del nostro modulo relè a 2 canali. In questo modo, quando Relay One è attivo, la corrente scorrerà in una direzione e quando Relay Two è attivo, la corrente scorrerà nella direzione opposta. Se nessuno dei due o entrambi i relè sono attivi, non scorrerà alcuna corrente verso l’attuatore. Per ottenere ciò, serviranno i collegamenti seguenti.
Relè verso attuatore e alimentatore
- +12V a NC1 (morsetto normalmente chiuso sul relè uno) (filo bianco).
- -12V a NO1 (morsetto normalmente aperto sul relè uno) (filo nero).
- NC1 a NC2 (cavetto ponticello blu).
- NO1 a NO2 (cavetto ponticello verde).
- COMMON1 all’Attuatore (filo marrone dell’attuatore).
- COMMON2 all’Attuatore (filo blu dell’attuatore).
Arduino verso tastierino e modulo relè
- Collega i pin 1-8 del tastierino ai pin 2-9 dell’Arduino (in quell’ordine).
- Pin 10 di Arduino a IN1 sul modulo relè.
- Pin 11 di Arduino a IN2 sul modulo relè.
- 5V di Arduino a VCC sul modulo relè.
- GND di Arduino a GND sul modulo relè.
- Anodo del buzzer (reoforo più lungo) al pin 12 (opzionale).
- Catodo del buzzer (reoforo più corto) a GND (opzionale).

Programmare il progetto
Ora che abbiamo effettuato tutti i collegamenti, siamo pronti per il codice. Lo scopo di questo codice è leggere gli input da un tastierino, cercare l’input corretto di 5 cifre e azionare di conseguenza i nostri relè. È presente anche il codice per un buzzer opzionale per fornire feedback. Se non desideri usare il buzzer, puoi semplicemente non collegarlo e lasciare il codice così com’è. Se invece ti serve usare il pin del buzzer per qualcos’altro, elimina o commenta tutto il codice usato per le funzioni del buzzer o di “beep”.
Nel codice qui sotto troverai commenti su quasi ogni riga (testo grigio chiaro che segue “//”). Questi commenti descrivono cosa sta succedendo nello sketch, oltre alle modifiche che puoi apportare. Inoltre analizzeremo qui alcune sezioni importanti per una spiegazione più approfondita.
Codice di setup
Nel codice di setup, definiremo i pin del buzzer e dei relè come uscite. Il buzzer partirà LOW e i relè partiranno HIGH. Questo li renderà tutti inattivi quando alimentiamo per la prima volta il nostro Arduino. Eseguirermo anche la funzione “retract ()” una volta, così che l’Arduino conosca lo stato corretto dell’attuatore.
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
}
Codice del tastierino
Per questo sketch stiamo usando la libreria Keypad.h. Questa libreria contiene le funzioni che usiamo per ricevere gli input dal tastierino. Per usare questa libreria, dobbiamo creare un array bidimensionale per mappare i caratteri del nostro tastierino. Si può fare definendo innanzitutto il numero di righe e di colonne presenti sul tastierino. Poi creiamo il nostro array con ogni carattere del tastierino. Il nostro tastierino ha quattro righe, quattro colonne e otto pin di uscita. C’è un pin per ogni riga e uno per ogni colonna. Nel codice lo mostriamo creando un array “rowPins” che contiene gli ingressi digitali collegati ai pin di riga e un array “colPins” che contiene gli ingressi digitali collegati ai pin di colonna. Quando premiamo un tasto, colleghiamo uno dei pin di riga con uno dei pin di colonna. Ad esempio, se premiamo il tasto 2, creiamo un circuito chiuso tra il pin di riga uno e il pin di colonna due.
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
Codice del passcode
In questo esempio di controllo sicuro dell’attuatore lineare, il nostro passcode è lungo 5 cifre, quindi definiamo “Passcode_Length” come “6”. Questo perché serve uno spazio extra per un carattere nullo. Se vuoi cambiare la lunghezza del passcode, cambia semplicemente il 6 con un numero maggiore di uno rispetto alla lunghezza desiderata. Dopodiché, modifica il valore di “Passcode” con i caratteri che preferisci (impostato su “12345” per impostazione predefinita).
Il carattere associato a ogni tasto premuto verrà memorizzato nell’array “Input”. Una volta che quell’array contiene 5 caratteri, confronterà il valore di “Input” e “Passcode” per verificare se il passcode è corretto. Se i valori sono uguali, il nostro codice dirà all’Arduino di estendere o ritrarre l’attuatore (a seconda dello stato attuale dell’attuatore). Se il passcode è errato, il pin del buzzer andrà HIGH tre volte rapidamente e poi tornerà LOW. In entrambi i casi verrà chiamata la funzione “clearInput()” per cancellare l’array Input e fare spazio a un nuovo inserimento.
Codice di estensione e retrazione
Abbiamo due funzioni molto simili in questo codice: “void extend()” e “void retract()”. Quando chiamata, void extend() porterà Relay One a LOW, rendendolo attivo. Questo chiuderà un circuito e applicherà una tensione positiva all’attuatore. Il relè rimarrà attivo per il tempo assegnato a “const int extendTime” (impostato a 25.000 millisecondi per impostazione predefinita). La funzione void retract() farà esattamente la stessa cosa, tranne che userà il relè due per invertire la tensione invece del relè uno.
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();
}
Ritocchi finali
Dopo aver effettuato tutti i collegamenti e caricato il codice, dovremmo avere un sistema di controllo dell’attuatore protetto da password perfettamente funzionante. Se riscontri problemi al primo avvio, prova a utilizzare lo strumento monitor seriale nell’IDE di Arduino. Può essere estremamente utile per capire se i problemi sono dovuti al codice, al cablaggio o a componenti difettosi.
Questo codice può anche essere modificato oltre al semplice cambio del passcode. Potresti prendere in considerazione la sostituzione della tua scheda relè con uno shield MegaMoto per avere il controllo della velocità o l’uso di un attuatore con feedback ad effetto Hall per il controllo di posizione.
Speriamo che questo articolo ti sia stato utile! Se hai domande su questo, su qualsiasi altro attuatore lineare telecomandato o vuoi condividere il tuo progetto con noi, sentiti libero di chiamarci o scriverci via e-mail.