Inhoudsopgave:
- Benodigdheden
- Stap 1: Een doos bouwen
- Stap 2: Bedrading
- Stap 3: Bibliotheken downloaden
- Stap 4: Vingerafdruksensor en RFID-kaartsensor instellen
- Stap 5: DE CODE
- Stap 6: Voltooien
Video: Arduino High Tech Safe: 6 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
Dit is mijn arduino high-tech kluis. U moet uw vinger scannen, uw kaart scannen en vervolgens een 4-cijferig wachtwoord invoeren om de lade te ontgrendelen. Dit project wordt niet aanbevolen voor beginners omdat het erg geavanceerd is. De code is lang, maar ik zal het in dit project delen. De kosten bedragen ongeveer $ 75 als je dezelfde kluis bouwt als ik. Dit project kan ook 1-3 dagen in beslag nemen. Dus laten we beginnen!
Benodigdheden
Om dezelfde kluis te bouwen als de mijne heb je nodig:
Arduino (Uno aanbevolen omdat ik geen stappen heb voor arduino mega of nano. Maar je kunt ze nog steeds gebruiken)
broodplankje
servo-
jumperdraden
joystick
20*4 (u kunt 16*4 gebruiken, maar u moet de code wijzigen)
vingerafdrukscanner
mfrc522 rfid-kaartscanner
een emmer lego's
Stap 1: Een doos bouwen
Eerst heb je een doos nodig om je elektronica in te doen. Je kunt lego's, een 3D-geprinte doos of zelfs karton gebruiken! (Hoewel dit misschien moeilijker is) Vergeet niet om er gaten in te maken voor een lade en je elektronica. Als u de rfid-kaartscanner gebruikt, hoeft u daar geen gat voor te maken als uw muren dun zijn. De kaarten werken nog, maar je moet de sleutelhangers dicht doen zodat de rfid-kaart senor ze kan lezen. Laat ook ruimte over voor je arduino en draden binnenin. OPMERKING: Wanneer u de lade bouwt, laat u er een gat in zodat uw servo kan draaien en de lade kan vergrendelen.
Stap 2: Bedrading
Deze stap kan ingewikkeld zijn omdat u de draden op de exacte plek moet aansluiten, anders werkt de elektronica niet. Ik heb geen bedradingsschema, maar ik zal je vertellen dat ze allemaal gaan. De bedrading is alleen voor arduino uno. Je zult moeten zoeken naar waar je de draden moet plaatsen als je een arduino mega of nano gebruikt. Als je niet alle elektronica gebruikt die ik heb, kun je die bedrading gewoon overslaan.
Vingerafdrukscanner: groene draad: D2 witte draad: D3 zwarte draad: GND rode draad: 5V
Joystick: 5V = 3.3V GND = GND X = A2 Y = A3 Schakelaar = D4
rfid-kaartscanner: 3.3V = 3.3V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10
lcd-scherm: 5V = 5V GND = GND sda = A4 sck = A5
Servo: rode draad: 5V Bruine draad: GND gele draad: D6
OPMERKING: SLUIT DE RFID-KAARTSCANNER NIET AAN OP 5V. ALS JE DAT DOET, ZAL HET BREKEN!!!
Je vraagt je misschien af waarom ik zei om de joystickvoeding aan te sluiten op 3,3V als er 5V aan de zijkant staat. Dat komt omdat de servo, het scherm en de vingerafdrukscanner 5V nodig hebben. Als je daar de joystick aan toevoegt, werkt de elektronica misschien niet omdat alles 5V nodig heeft. De joystick werkt nog steeds met 3.3V. Het is gewoon dat de maximale waarde niet 1023 is, maar ~ 670.
Stap 3: Bibliotheken downloaden
In dit project heb je 6 bibliotheken nodig om alle elektronica te gebruiken. 1 voor de servo, 1 voor de vingerafdruksensor, 2 voor rfid-kaartscanner en 2 voor het scherm. De joystick heeft geen bibliotheek nodig. Wat is nu een bibliotheek? Het is eigenlijk een bestand dat veel code bevat die u met eenvoudige opdrachten in uw project kunt gebruiken. Om deze bibliotheken te krijgen, moet je naar een plaats met de naam GitHub gaan. Als je weet hoe je bibliotheken moet downloaden en uitpakken, ga dan naar de onderstaande links voor de downloads. Als je niet weet hoe, kun je naar mijn instructable gaan die vertelt over het downloaden van een bibliotheek in stap 3:
of zoek een YouTube-video over het downloaden van een Arduino-bibliotheek van GitHub
LINKS NAAR LIARATEN:
Servo
vingerafdruksensor:
spi
rfid-kaartsensor
schermbibliotheek 1
schermbibliotheek 2
Stap 4: Vingerafdruksensor en RFID-kaartsensor instellen
In deze stap wordt beschreven hoe u de vingerafdruksensor en rfid-kaartsensor instelt. Tenzij u uw vingerafdruksensor al hebt gebruikt, moet u deze laten zien hoe uw vingerafdruk eruitziet, zodat deze in het geheugen kan worden opgeslagen. Zelfs als u het eerder hebt gebruikt, moet u deze stap waarschijnlijk nog steeds uitvoeren. Ik zal je in het kort vertellen hoe je het moet doen, maar als het geen zin heeft, ga dan naar dezelfde instructable link in de laatste stap. Het gaat er heel goed overheen. Basic open gewoon arduino ide. Ga naar bestand > voorbeelden > adafruit vingerafdruksensor > inschrijven. Upload code naar Arduino, open de seriële monitor en volg de stappen die het je vertelt. Wanneer het je vertelt om het een nummer te geven. Typ 1# in.
Voor de rfid-kaart is deze stap vrij eenvoudig. Open arduino-idee. Ga naar bestand > voorbeelden > mfrc522 > lees persoonsgegevens. Upload naar arduino en open seriële monitor. Scan de kaart of sleutelhanger die je bij je sensor wilt gebruiken. Dan krijg je wat informatie. Zoek naar de ID van de kaart, dit zijn 4 sets van 2 cijfers. Zoiets als dit: AB 45 2Y 45 maar uw code zal anders zijn. Schrijf dit op een stuk papier. Je hebt het later weer nodig. Dat is het voor deze stap.
Stap 5: DE CODE
Dit zal voor de meesten van jullie de moeilijkste stap zijn, maar het is vrij eenvoudig. Kopieer en plak eerst de code van onderaf in de arduino ide. Ten tweede, bewerk de 2 secties waar EDIT CODE staat. 1 sectie is voor de kaartscanner, 1 is voor de joystick. Deze stappen kunnen niet worden overgeslagen. Als je klaar bent, upload je de code naar arduino!
#include #include Fingerprint.h>
#erbij betrekken
#erbij betrekken
#erbij betrekken
#erbij betrekken
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIEF);
#define RST_PIN 9
#define SS_PIN 10
MFRC522 mfrc522(SS_PIN, RST_PIN);
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
Servo-servo;
char d1;
char d2;
teken d3;
char d4;
ongeldige setup(){
servo.bevestigen (6);
servo.schrijven(170);
lcd.begin(20, 4);
Serieel.begin(9600);
terwijl (!Serial);
SPI.begin();
mfrc522. PCD_Init();
vertraging(4);
mfrc522. PCD_DumpVersionToSerial();
vertraging (100);
Serial.println("\n\nAdafruit-vingerdetectietest");
vinger.begin(57600);
vertraging (5);
if (finger.verifyPassword()) {
Serial.println("Alle systemen werken, ");
lcd.wissen();
lcd.setCursor(1, 0);
lcd.print("Vinger scannen a.u.b.");
} anders {
Serial.println("FOUT: Vingerafdruksensor niet gevonden!");
lcd.setCursor(0, 0);
lcd.print("FOUT: Vingerafdruk");
lcd.setCursor(1, 1);
lcd.print("sensor niet gevonden!");
terwijl (1) { vertraging(1); }
}
vinger.getTemplateCount();
Serial.print("Sensor bevat "); Serial.print(vinger.templateCount); Serial.println ("sjablonen"); Serial.println("Wachten op geldige vinger…"); }
void(* resetFunc) (void) = 0;
lege lus() {
getFingerprintIDez();
vertraging (50);
}
uint8_t getFingerprintID() {
uint8_t p = vinger.getImage();
schakelaar (p) {
geval FINGERPRINT_OK:
Serial.println("Afbeelding genomen");
pauze;
geval FINGERPRINT_NOFINGER:
Serial.println("Geen vinger gedetecteerd");
retour p;
geval FINGERPRINT_PACKETRECIEVERR:
Serial.println("Communicatiefout");
retour p;
geval FINGERPRINT_IMAGEFAIL:
Serial.println("Afbeeldingsfout");
retour p;
standaard:
Serial.println("Onbekende fout");
retour p;
}
p = vinger.image2Tz();
schakelaar (p) {
geval FINGERPRINT_OK:
Serial.println("Beeld geconverteerd");
pauze;
geval FINGERPRINT_IMAGEMESS:
Serial.println("Afbeelding te rommelig");
retour p;
geval FINGERPRINT_PACKETRECIEVERR:
Serial.println("Communicatiefout");
retour p;
geval FINGERPRINT_FEATUREFAIL:
Serial.println("Kon vingerafdrukken niet vinden");
retour p;
geval FINGERPRINT_INVALIDIMAGE:
Serial.println("Kon vingerafdrukken niet vinden");
retour p;
standaard:
Serial.println("Onbekende fout");
retour p;
}
p = vinger.fingerFastSearch();
if (p == VINGERAFDRUK_OK) {
Serial.println("Een afdrukovereenkomst gevonden!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println ("Communicatiefout");
retour p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Geen overeenkomst gevonden");
retour p;
} anders {
Serial.println("Onbekende fout");
retour p;
}
Serial.print("Gevonden ID #"); Seriële.afdruk (vinger.vinger-ID);
Serial.print(" met vertrouwen van "); Serial.println(vinger.vertrouwen);
return finger.fingerID;
}
int getFingerprintIDez() {
uint8_t p = vinger.getImage();
if (p != VINGERAFDRUK_OK) retourneer -1;
p = vinger.image2Tz();
if (p != VINGERAFDRUK_OK) retourneer -1;
p = vinger.fingerFastSearch();
if (p != VINGERAFDRUK_OK) retourneer -1;
Serial.print("Gevonden ID #"); Seriële.afdruk (vinger.vinger-ID);
Serial.print(" met vertrouwen van "); Serial.println(vinger.vertrouwen);
if(vinger.fingerID == 1){
lcd.wissen();
lcd.setCursor(2, 0);
lcd.print("Vinger geaccepteerd, ");
lcd.setCursor(2, 0);
lcd.print("nu kaart scannen…");
lcd.setCursor(0, 3);
lcd.print("===================>");
while(! mfrc522. PICC_IsNewCardPresent());
while(! mfrc522. PICC_ReadCardSerial());
if (mfrc522.uid.uidByte[0] == 0x92 && //========================CODE BEWERKEN======== ==============
mfrc522.uid.uidByte[1] == 0xAB && //Neem dat stuk papier met de ID erop, er waren 4 sets van 2 cijfers
mfrc522.uid.uidByte[2] == 0x90 && //Kijk naar de code, zie waar 0x92, 0xAB, 0x90, 0x1c staat? Voer elk in
mfrc522.uid.uidByte [3] == 0x1C) { // van de 2-cijferige sectie na de 0x. Het gedeelte van de ID zegt bijvoorbeeld:
lcd.wissen(); //3E, voer dan de 3E in na de 0x om 0x3E te maken. Doe dit voor elke sectie
lcd.setCursor(3, 0);
lcd.print("Eindelijk, voer in");
lcd.setCursor(1, 1);
lcd.print("joystick-wachtwoord");
while(analogRead(A2) >= 100 &&
analoog lezen (A2) <= 670 &&
analoog lezen (A3) >= 100 &&
analoog lezen (A3) <= 670){
}
lcd.setCursor(8, 4);
lcd.print("*"); if(analogRead(A2) <= 100){
d1 = L;
}
if(analogRead(A2) >= 670){
d1 = R;
}
if(analogRead(A3) <= 100){
d1 = U;
}
if(analogRead(A3) >= 670){
d1 = D;
}
vertraging (500);
while(analogRead(A2) >= 100 &&
analoog lezen (A2) <= 670 &&
analoog lezen (A3) >= 100 &&
analoog lezen (A3) <= 670){
}
lcd.print("*");
if(analogRead(A2) <= 100){
d2 = L;
}
if(analogRead(A2) >= 670){
d2 = R;
}
if(analogRead(A3) <= 100){
d2 = U;
}
if(analogRead(A3) >= 670){
d2 = D;
}
vertraging (500);
while(analogRead(A2) >= 100 &&
analoog lezen (A2) <= 670 &&
analoog lezen (A3) >= 100 &&
analoog lezen (A3) <= 670){
}
lcd.print("*");
if(analogRead(A2) <= 100){
d3 = L;
}
if(analogRead(A2) >= 670){
d3 = R;
}
if(analogRead(A3) <= 100){
d3 = U;
}
if(analogRead(A3) >= 670){
d3 = D;
}
vertraging (500);
while(analogRead(A2) >= 10 &&
analoog lezen (A2) <= 670 &&
analoog lezen (A3) >= 100 &&
analoog lezen (A3) <= 670){
}
lcd.print("*");
if(analogRead(A2) <= 100){
d4 = L;
}
if(analogRead(A2) >= 670){
d4 = R;
}
if(analogRead(A3) <= 100){
d4 = U;
}
if(analogRead(A3) >= 670){
d4 = D;
}
vertraging (500);
if(d1 == L && d2 == U && d3 == L && d4 == R){ //=================CODE BEWERKEN====== ================
lcd.wissen(); // Dit gedeelte is waar je het wachtwoord kunt bewerken met de joystick
lcd.setCursor(2, 0); // het wachtwoord is ingesteld op links, links, rechts. Als je wilt veranderen
lcd.print("Toegang verleend!"); //it, zet een L voor links, R voor rechts, U voor omhoog of D voor omlaag in een van de
lcd.setCursor(2, 1); //4 secties met een letter na de == tekens.
lcd.print("Lade ontgrendeld.");
lcd.setCursor(2, 2);
lcd.print("Als je klaar bent, verplaats dan");
lcd.setCursor(1, 3);
lcd.print("joystick om opnieuw te vergrendelen");
servo.schrijven(90);
while(analogRead(A2) >= 100 &&
analoog lezen (A2) <= 670 &&
analoog lezen (A3) >= 100 &&
analoog lezen (A3) <= 670);
servo.schrijven(170);
lcd.setCursor(3, 0);
lcd.print("Lade vergrendeld");
vertraging (3000);
resetFunc();
}anders{
lcd.wissen();
lcd.setCursor(2, 0);
lcd.print("TOEGANG GEWEIGERD!!!");
lcd.setCursor(0, 2);
lcd.print("Systeem opnieuw opstarten…");
vertraging (3000);
resetFunc();
}
}anders{
lcd.wissen();
lcd.setCursor(2, 0);
lcd.print("TOEGANG GEWEIGERD!!!");
lcd.setCursor(0, 2);
lcd.print("Systeem opnieuw opstarten…");
vertraging (3000);
resetFunc();
}
}anders{
lcd.wissen();
lcd.setCursor(2, 0);
lcd.print("TOEGANG GEWEIGERD!!!");
lcd.setCursor(0, 2);
lcd.print("Systeem opnieuw opstarten…");
vertraging (3000);
resetFunc();
}
return finger.fingerID; }
Stap 6: Voltooien
Een ding ben ik vergeten te vertellen, nou 2 dingen is dat ik dit heb gebouwd voordat ik foto's nam, dus ik kon je niet laten zien hoe ik de doos heb gebouwd. De andere is dat het aan te raden is om het servodeel op het draaiende deel te schroeven. Als je dat niet doet, kan iemand aan de lade trekken terwijl deze is vergrendeld en het stuk eraf trekken. Maar voordat je hem vastschroeft, moet je de juiste plek vinden om hem op te zetten, omdat de servo tot op zekere hoogte draait. Of je kunt het gewoon in de code veranderen. Als sommige elektronica raar doet, wil je misschien een andere manier vinden om voor sommige van hen 5V te krijgen. Ik merkte dat wanneer mijn vingerafdrukscanner flitste, het scherm er een beetje mee flitste en dat de servo geluid zou maken. Als de servo bewoog, werd het scherm gedimd. Ik hoop dat je genoten hebt van het project! Als je vragen hebt, laat ze dan achter in reacties. Ik ben niet veel op instructables, maar ik zal ze zo snel mogelijk beantwoorden!
Aanbevolen:
Corona Safe: automatische waterbesparende kraan: 6 stappen
Corona Safe: Automatische Waterbesparende Kraan: We moeten allemaal af en toe onze handen wassen om het virus en de bacteriën kwijt te raken. Speciaal voor het Corona virus moeten we onze handen 20 seconden wassen om er helemaal vanaf te komen. Ook de zeepdispenser of de kraanknop is misschien niet hygiënisch of k
Arduino Key Safe: 4 stappen
Arduino Key Safe: Ideeën van: https://www.instructables.com/id/Key-Safe/Ik ben iemand die altijd mijn spullen zonder reden kwijtraakte. Ik maak deze sleutel veilig, zodat ik eraan kan denken om mijn spullen erin te stoppen, zonder dat er dingen verloren gaan. In dit project heb ik wat verbeteringen aangebracht
Wearable Tech for Kids: Hero Armband: 4 stappen
Wearable Tech for Kids: Hero Armband: deze instructable behandelt hoe je een 'heldenarmband' kunt maken die oplicht wanneer je hem draagt. Met behulp van geleidende textieltape, geleidende draad en naaibare LED's is dit een geweldige activiteit voor scholieren om de basisprincipes van circuits en draagbare technologie te leren. Te
Tech-jack: 6 stappen
Tech Jacket: deze instructable is gemaakt om te voldoen aan de projectvereiste van de Makecourse-Art aan de Universiteit van Zuid-Florida (www.makecourse-art.com). Ons project is een jas die technologie implementeert om een low-tech, punk te produceren rock futuristisch
High-tech dennennaald Camo geverfde laptopcomputer - Ajarnpa
High-Tech Pine Needle Camo Painted LapTop Computer: Ik was net klaar met het opzetten van mijn oude Toshiba LapTop met Linux en was op zoek naar de Instructable-site toen ik toevallig het bericht van " murph38_99 tegenkwam. Ik was echt niet op zoek naar een methode om verf een pistool mee, maar ik kreeg een gek idee en