Noen ganger trenger prosjektene våre ekstra sikkerhet. Dette kan være tilfelle i en rekke forskjellige bruksområder, som dørlåsmekanismer, forebygging av usikker eller uautorisert bruk av maskiner eller å få enda mer nisjepregede rekvisitter til escape room. I denne artikkelen vil vi ta deg gjennom en montering av en tastaturaktuator og gå gjennom hvordan du kan passordbeskytte driften av den lineære aktuatoren din.
Her er hva vi skal bruke:
- Arduino Uno.
- 4x4 matrisetastatur.
- 2-kanals relémodul (en 4-kanals vises på bildene, men bare. 2 kanaler er nødvendig).
- PA-03-6-600 Aktuator.
- PS-20-12 strømforsyning.
- Summer (valgfritt).
Koble til aktuatoren
Først begynner vi med kablingen. For å kunne forlenge og trekke inn aktuatoren din, må vi bruke begge kanalene i vår 2-kanals relémodul. På denne måten, når Stafett én er aktiv, vil strømmen flyte én retning, og når Stafett to er aktiv, vil strømmen flyte i motsatt retning. Hvis ingen av eller begge reléene er aktive, vil det ikke flyte strøm til aktuatoren. For å oppnå dette må vi gjøre følgende tilkoblinger.
Reléer til aktuatoren og strømforsyningen
- +12V til NC1 (normalt lukket terminal på relé én) (hvit ledning).
- -12V til NO1 (normalt åpen terminal på relé én) (svart ledning).
- NC1 til NC2 (blå jumperledning).
- NO1 til NO2 (grønn jumperledning).
- COMMON1 til aktuator (brun aktuatorledning).
- COMMON2 til aktuator (blå aktuatorledning).
Arduino til tastaturet og relémodulen
- Koble pinnene 1–8 på tastaturet til pinnene 2–9 på Arduinoen (i den rekkefølgen).
- Arduino pin 10 til IN1 på relémodul.
- Arduino pin 11 til IN2 på relémodul.
- Arduino 5V til VCC på relémodul.
- Arduino GND til GND på relémodul.
- Summeranode (lengre ledning) til pinne 12 (valgfritt).
- Summerkatode (kortere ledning) til GND (valgfritt).

Koding av prosjektet ditt
Nå som vi har koblet alle kodene våre, er vi klare for koden. Hensikten med denne koden er å lese inngangene fra et tastatur, se etter riktig 5-sifret inngang og betjene reléene våre deretter. Det finnes også kode for en valgfri summer for å gi tilbakemelding. Hvis du ikke ønsker å bruke summeren, kan du ganske enkelt ikke koble den til og la koden være som den er. Hvis du trenger å bruke summer-PIN-en til noe annet, kan du slette eller kommentere ut all koden som brukes for summer- eller «pipelyd»-funksjonene.
I koden nedenfor finner du kommentarer på nesten hver linje (lys grå tekst som følger «//»). Disse kommentarene vil beskrive hva som skjer i skissen, samt endringer du kan gjøre. Vi vil også dele opp noen viktige deler her for en mer grundig forklaring.
Oppsettkode
I oppsettskoden vår definerer vi summer- og relépinnene som utganger. Summeren starter LAV, og reléene starter HØY. Dette vil føre til at de alle er inaktive når vi slår på Arduinoen for første gang. Vi kjører også funksjonen «retract()» én gang, slik at Arduinoen vet riktig status for aktuatoren.
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
}
Tastaturkode
For denne skissen bruker vi Keypad.h-biblioteket. Dette biblioteket inneholder funksjonene vi bruker for å motta input fra tastaturet vårt. For å bruke dette biblioteket må vi lage en todimensjonal matrise for å kartlegge tegnene på tastaturet vårt. Dette kan oppnås ved først å definere antall rader og antall kolonner det er på tastaturet. Deretter lager vi matrisen vår med hvert tegn på tastaturet. Tastaturet vårt har fire rader, fire kolonner og åtte utgangspinner. Det er én pin for hver rad og én pin for hver kolonne. Vi viser dette i koden vår ved å lage en “radPinner"array som inneholder de digitale inngangene koblet til radpinnene og en "colPins"-matrise som inneholder de digitale inngangene som er koblet til kolonnepinnene. Når vi trykker på en tast, kobler vi en av radpinnene til en av kolonnepinnene. Hvis vi for eksempel trykker på knapp 2, oppretter vi en lukket krets mellom radpinne én og kolonnepinne to.
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
Kodekode
I dette eksemplet for sikker lineær aktuatorkontroll er passordet vårt 5 sifre langt, så vi definerer «Passordlengde«» som «6». Dette er fordi vi trenger ett ekstra mellomrom for et nulltegn. Hvis du vil endre lengden på passordet, endrer du ganske enkelt 6 til et tall som er én større enn ønsket kodelengde. Deretter endrer du verdien av «»Passord” til hvilke tegn du ønsker (sett til «12345» som standard).
Tegnet som er knyttet til hver tast som trykkes på, lagres i «I»-mappen.inndata"-arrayet. Når arrayet inneholder 5 tegn, vil det sammenligne verdien av "Inndata" og "Passord" for å se om vi har riktig passord. Hvis verdiene er like, vil koden vår fortelle Arduinoen at den enten skal forlenge eller trekke tilbake aktuatoren (avhengig av aktuatorens nåværende tilstand). Hvis passordet er feil, vil summerpinnen gå høyt tre ganger raskt og deretter gå lavt. I begge tilfeller vil "clearInput()”-funksjonen vil bli kalt etterpå for å tømme input-arrayet og gi plass til en ny oppføring.
Utvide og trekke tilbake kode
Vi har to veldig like funksjoner i denne kodenvoid extend()" og "void retract()Når void extend() kalles, vil den skrive Relé én lav, noe som gjør den aktiv. Dette vil lukke en krets og legge en positiv spenning på aktuatoren. Reléet vil forbli aktivt i den tiden som er tildelt til «const int forlengelsestid”. (satt til 25 000 millisekunder som standard). Void retract()-funksjonen vil gjøre akkurat det samme, bortsett fra at den vil bruke relé to til å reversere spenningen i stedet for relé én.
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();
}
Finishing touch
Etter at vi har koblet til alle systemene våre og lastet opp koden, skal vi ha et fungerende passordbeskyttet aktuatorkontrollsystem. Hvis du har problemer når du konfigurerer det for første gang, kan du prøve å bruke seriell monitorverktøy i Arduino IDE. Dette kan være svært nyttig for å avgjøre om problemene skyldes kode, kabling eller defekte komponenter.
Denne koden kan også endres utover bare passordet. Du bør kanskje vurdere å bytte ut relékortet med et MegaMoto-skjold, slik at du kan ha hastighetskontroll, eller bruke en aktuator med halleffekttilbakemelding for posisjonskontroll.
Vi håper denne artikkelen var nyttig! Hvis du har spørsmål om dette, andre fjernstyrte lineære aktuatorer, eller ønsker å dele prosjektet ditt med oss, er du velkommen til å kontakte oss. ring eller send oss en e-post.