Talaan ng mga Nilalaman:

Ligtas ng Arduino High Tech: 6 na Hakbang
Ligtas ng Arduino High Tech: 6 na Hakbang

Video: Ligtas ng Arduino High Tech: 6 na Hakbang

Video: Ligtas ng Arduino High Tech: 6 na Hakbang
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Hulyo
Anonim
Ligtas ng Arduino High Tech
Ligtas ng Arduino High Tech

Ito ang aking arduino high tech na ligtas. Kailangan mong i-scan ang iyong daliri, i-scan ang iyong card, pagkatapos ay maglagay ng isang 4 na digit na password upang ma-unlock ang drawer. Ang proyektong ito ay hindi inirerekomenda para sa mga nagsisimula sapagkat ito ay napaka-advanced. Mahaba ang code, ngunit ibabahagi ko ito sa proyektong ito. Ang gastos ay humigit-kumulang na $ 75 kung magtatayo ka ng parehong ligtas sa akin. Ang proyektong ito ay maaari ding tumagal ng 1-3 araw upang makumpleto. Kaya, magsimula na!

Mga gamit

Upang mabuo ang parehong ligtas tulad ng sa akin kakailanganin mo:

Arduino (Inirekomenda ng Uno dahil wala akong mga hakbang para sa arduino mega o nano. Ngunit maaari mo pa ring gamitin ang mga ito)

breadboard

servo

jumper wires

joystick

20 * 4 (maaari mong gamitin ang 16 * 4, ngunit kailangan mong baguhin ang code)

scanner ng fingerprint

mfrc522 rfid card scanner

isang balde ng legos

Hakbang 1: Pagbuo ng isang Kahon

Pagbuo ng isang Kahon
Pagbuo ng isang Kahon

Una kakailanganin mo ng isang kahon upang ilagay ang iyong electronics. Maaari kang gumamit ng mga lego, isang naka-print na kahon na 3d, o kahit na karton! (Bagaman maaaring maging mahirap ito) Huwag kalimutang maglagay ng mga butas dito para sa isang drawer, at ang iyong electronics. Kung gumagamit ka ng scanner ng rfid card, hindi mo kailangang maglagay ng butas para doon kung manipis ang iyong dingding. Gumagana pa rin ang mga kard, ngunit kailangan mong ilagay malapit ang mga keychain upang mabasa ito ng senador ng RFID card. Mag-iwan din ng puwang para sa iyong arduino at mga wire sa loob. TANDAAN: Kapag itinayo mo ang drawer, mag-iwan ng butas dito upang ang iyong servo ay maaaring i-on at i-lock ang drawer.

Hakbang 2: Up ng Kable

Pag-mount Up!
Pag-mount Up!

Ang hakbang na ito ay maaaring maging kumplikado dahil kailangan mong mag-plug ng mga wire sa eksaktong lugar o hindi gagana ang electronics. Wala akong diagram ng mga kable, ngunit sasabihin ko sa iyo na ang bawat isa ay pupunta. Ang mga kable ay para sa arduino uno lamang. Kailangan mong maghanap para mailagay ang mga wire kung gumagamit ka ng isang arduino mega o nano. Kung hindi mo ginagamit ang lahat ng mga electronis na mayroon ako, maaari mo lamang laktawan ang mga kable na iyon.

Scanner ng daliri sa pag-print: berdeng kawad: D2 puting kawad: D3 itim na kawad: GND pulang kawad: 5V

Joystick: 5V = 3.3V GND = GND X = A2 Y = A3 Switch = D4

rfid card scanner: 3.3V = 3.3V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

lcd screen: 5V = 5V GND = GND sda = A4 sck = A5

Servo: pulang kawad: 5V Brown wire: GND dilaw na kawad: D6

TANDAAN: HUWAG I-plug ang RFID CARD SCANNER SA 5V. KUNG GAWIN MO, SISIRA ITO !!!

Maaaring nagtataka ka kung bakit sinabi kong i-plug ang Joystick power sa 3.3V nang sabihin na 5V sa gilid. Iyon ay dahil ang servo, screen, at fingerprint scanner ay nangangailangan ng 5V. Kung idinagdag mo ang joystick doon, maaaring hindi gumana ang electronics dahil kailangan ng lahat ng 5V. Ang joystick ay gagana pa rin sa 3.3V. Lamang ang max na halaga ay hindi 1023, ito ay magiging ~ 670.

Hakbang 3: Pag-download ng Mga Aklatan

Sa proyektong ito, kakailanganin mo ng 6 na mga aklatan upang magamit ang lahat ng mga electronics. 1 para sa servo, 1 para sa sensor ng fingerprint, 2 para sa RFID card scanner, at 2 para sa screen. Ang joystick ay hindi nangangailangan ng isang silid-aklatan. Ngayon, ano ang isang aklatan? Karaniwan ito ay isang file na nagtataglay ng maraming code na maaari mong gamitin sa iyong proyekto gamit ang mga simpleng utos. Upang makuha ang mga libraryong ito, kailangan mong pumunta sa isang lugar na tinatawag na GitHub. Kung alam mo kung paano mag-download at mag-unzip ng mga aklatan, pumunta lamang sa mga link sa ibaba para sa mga pag-download. Kung hindi mo alam kung paano, maaari kang pumunta sa aking itinuro kung aling mga pag-uusap tungkol sa kung paano mag-download ng isang silid aklatan sa hakbang 3:

o maghanap ng isang video sa youtube kung paano mag-download ng arduino library mula sa GitHub

Mga Link SA LIRARIES:

Servo

sensor ng fingerprint:

spi

sensor ng rfid card

screen library 1

screen library 2

Hakbang 4: Pag-set up ng Fingerprint Sensor at Rfid Card Sensor

Pinag-uusapan ng hakbang na ito ang tungkol sa kung paano mag-set up ng sensor ng fingerprint at sensor ng rfid card. Maliban kung nagamit mo na ang iyong sensor ng fingerprint, kakailanganin mong ipakita dito kung ano ang hitsura ng iyong fingerprint upang mai-save ito sa memorya nito. Kahit na ginamit mo ito dati, dapat mo pa ring gawin ang hakbang na ito. Sasabihin ko sa iyo kung paano ito gawin nang maikli, ngunit kung ito ay walang katuturan pumunta sa parehong itinuturo na link sa huling hakbang. Napupunta ito nang napakahusay. Pangunahing pagbukas lamang ng arduino ide. Pumunta sa file> mga halimbawa> sensor ng fingerprint ng adafruit> magpatala. Mag-upload ng code sa arduino, buksan ang serial monitor, at sundin ang mga hakbang na sinasabi nito sa iyo. Kapag sinabi nito sa iyo na bigyan ito ng isang numero. Mag-type sa 1 #.

Ngayon para sa rfid card, ang hakbang na ito ay medyo madali. Buksan ang arduino ide. Pumunta sa file> mga halimbawa> mfrc522> basahin ang personal na data. Mag-upload sa arduino at buksan ang serial monitor. I-scan ang card o keychain na nais mong gamitin na kasama ng iyong sensor. Pagkatapos bibigyan ka nito ng ilang impormasyon. Hanapin ang ID ng card na ito ay magiging 4 na hanay ng 2 mga digit. Tulad nito: AB 45 2Y 45 ngunit magkakaiba ang iyong code. Isulat ito sa isang piraso ng papel. Kakailanganin mo ulit ito mamaya. Iyon lang para sa hakbang na ito.

Hakbang 5: ANG KODE

Ito ang magiging pinakamahirap na hakbang sa karamihan sa iyo, ngunit ito ay medyo simple. Una kopyahin at i-paste ang code sa ideyang arduino mula sa ibaba. Pangalawa, i-edit ang 2 seksyon kung saan sinasabi ang EDIT CODE. Ang 1 seksyon ay para sa card scanner, 1 ay para sa joystick. Ang mga hakbang na ito ay hindi maaaring laktawan. Kapag tapos na, mag-upload ng code sa arduino!

# isama ang # isama ang Fingerprint.h>

# isama

# isama

# isama

# isama

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

# tukuyin ang RST_PIN 9

# tukuyin ang SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Adafruit_Fingerprint daliri = Adafruit_Fingerprint (& mySerial);

Servo servo;

char d1;

char d2;

char d3;

char d4;

walang bisa ang pag-setup () {

servo.attach (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

habang (! Serial);

SPI.begin ();

mfrc522. PCD_Init ();

antala (4);

mfrc522. PCD_DumpVersionToSerial ();

pagkaantala (100);

Serial.println ("\ n / nAdecruit daliri makita ang pagsubok");

daliri.begin (57600);

antala (5);

kung (daliri.verifyPassword ()) {

Serial.println ("Lahat ng mga system na gumagana,");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Mangyaring i-scan ang daliri");

} iba pa {

Serial.println ("ERROR: Hindi nakita ang sensor ng daliri sa pag-print!");

lcd.setCursor (0, 0);

lcd.print ("ERROR: Finger print");

lcd.setCursor (1, 1);

lcd.print ("hindi nahanap ang sensor!");

habang (1) {pagkaantala (1); }

}

daliri.getTemplateCount ();

Serial.print ("Naglalaman ang Sensor"); Serial.print (daliri.templateCount); Serial.println ("mga template"); Serial.println ("Naghihintay para sa wastong daliri …"); }

walang bisa (* resetFunc) (walang bisa) = 0;

void loop () {

getFingerprintIDez ();

antala (50);

}

uint8_t getFingerprintID () {

uint8_t p = daliri.getImage ();

lumipat (p) {

kaso FINGERPRINT_OK:

Serial.println ("Kuha ng larawan");

pahinga;

kaso FINGERPRINT_NOFINGER:

Serial.println ("Walang nakitang daliri");

ibalik p;

kaso FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Error sa komunikasyon");

ibalik p;

kaso FINGERPRINT_IMAGEFAIL:

Serial.println ("Error sa imaging");

ibalik p;

default:

Serial.println ("Hindi kilalang error");

ibalik p;

}

p = daliri.image2Tz ();

lumipat (p) {

kaso FINGERPRINT_OK:

Serial.println ("Na-convert ang imahe");

pahinga;

kaso FINGERPRINT_IMAGEMESS:

Serial.println ("Masyadong magulo ang imahe");

ibalik p;

kaso FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Error sa komunikasyon");

ibalik p;

kaso FINGERPRINT_FEATUREFAIL:

Serial.println ("Hindi makahanap ng mga tampok sa fingerprint");

ibalik p;

kaso FINGERPRINT_INVALIDIMAGE:

Serial.println ("Hindi makahanap ng mga tampok sa fingerprint");

ibalik p;

default:

Serial.println ("Hindi kilalang error");

ibalik p;

}

p = daliri.fingerFastSearch ();

kung (p == FINGERPRINT_OK) {

Serial.println ("Nahanap ang isang laban sa pag-print!");

} iba pa kung (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Error sa komunikasyon");

ibalik p;

} iba pa kung (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Hindi nakakita ng tugma");

ibalik p;

} iba pa {

Serial.println ("Hindi kilalang error");

ibalik p;

}

Serial.print ("Found ID #"); Serial.print (daliri.fingerID);

Serial.print ("may kumpiyansa ng"); Serial.println (daliri. kumpiyansa);

ibalik ang daliri.fingerID;

}

int getFingerprintIDez () {

uint8_t p = daliri.getImage ();

kung (p! = FINGERPRINT_OK) bumalik -1;

p = daliri.image2Tz ();

kung (p! = FINGERPRINT_OK) bumalik -1;

p = daliri.fingerFastSearch ();

kung (p! = FINGERPRINT_OK) bumalik -1;

Serial.print ("Found ID #"); Serial.print (daliri.fingerID);

Serial.print ("may kumpiyansa ng"); Serial.println (daliri. kumpiyansa);

kung (daliri.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Tinanggap ang daliri,");

lcd.setCursor (2, 0);

lcd.print ("ngayon ay i-scan ang card …");

lcd.setCursor (0, 3);

lcd.print ("===================>");

habang (! mfrc522. PICC_IsNewCardPresent ());

habang (! mfrc522. PICC_ReadCardSerial ());

kung (mfrc522.uid.uidByte [0] == 0x92 && // ==================== EDIT CODE ==== ====

mfrc522.uid.uidByte [1] == 0xAB && // Kunin ang piraso ng papel na may ID dito, mayroong 4 na hanay ng 2 digit

mfrc522.uid.uidByte [2] == 0x90 && // Tumingin sa pamamagitan ng code, tingnan kung saan sinasabi nito 0x92, 0xAB, 0x90, 0x1c? Ipasok ang bawat isa

mfrc522.uid.uidByte [3] == 0x1C) {// ng seksyon ng 2 digit pagkatapos ng 0x. Halimbawa, sinasabi ng seksyon ng ID

lcd.clear (); // 3E, pagkatapos ay ipasok ang 3E pagkatapos ng 0x upang gumawa ng 0x3E. Gawin ito para sa bawat seksyon

lcd.setCursor (3, 0);

lcd.print ("Panghuli, ipasok");

lcd.setCursor (1, 1);

lcd.print ("joystick password");

habang (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print ("*"); kung (analogRead (A2) <= 100) {

d1 = L;

}

kung (analogRead (A2)> = 670) {

d1 = R;

}

kung (analogRead (A3) <= 100) {

d1 = U;

}

kung (analogRead (A3)> = 670) {

d1 = D;

}

pagkaantala (500);

habang (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

kung (analogRead (A2) <= 100) {

d2 = L;

}

kung (analogRead (A2)> = 670) {

d2 = R;

}

kung (analogRead (A3) <= 100) {

d2 = U;

}

kung (analogRead (A3)> = 670) {

d2 = D;

}

pagkaantala (500);

habang (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

kung (analogRead (A2) <= 100) {

d3 = L;

}

kung (analogRead (A2)> = 670) {

d3 = R;

}

kung (analogRead (A3) <= 100) {

d3 = U;

}

kung (analogRead (A3)> = 670) {

d3 = D;

}

pagkaantala (500);

habang (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

kung (analogRead (A2) <= 100) {

d4 = L;

}

kung (analogRead (A2)> = 670) {

d4 = R;

}

kung (analogRead (A3) <= 100) {

d4 = U;

}

kung (analogRead (A3)> = 670) {

d4 = D;

}

pagkaantala (500);

kung (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= EDIT CODE ==== ====

lcd.clear (); // Ang seksyon na ito ay maaari mong mai-edit ang password gamit ang joystick

lcd.setCursor (2, 0); // ang password ay nakatakda sa kaliwa, kaliwa, kanan. Kung nais mong magbago

lcd.print ("Ipinagkaloob ang Pag-access!"); // ito, maglagay ng L para sa kaliwa, R para sa kanan, U para sa pataas, o D para sa pababa sa alinman sa

lcd.setCursor (2, 1); // 4 na seksyon na may isang titik pagkatapos ng == mga palatandaan.

lcd.print ("Na-unlock ang drawer.");

lcd.setCursor (2, 2);

lcd.print ("Kapag tapos na, lumipat");

lcd.setCursor (1, 3);

lcd.print ("Joystick to relock");

servo.write (90);

habang (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("Naka-lock ang drawer");

pagkaantala (3000);

resetFunc ();

} iba pa {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS DENIED !!!");

lcd.setCursor (0, 2);

lcd.print ("Restarting system…");

pagkaantala (3000);

resetFunc ();

}

} iba pa {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS DENIED !!!");

lcd.setCursor (0, 2);

lcd.print ("Restarting system…");

pagkaantala (3000);

resetFunc ();

}

} iba pa {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS DENIED !!!");

lcd.setCursor (0, 2);

lcd.print ("Restarting system…");

pagkaantala (3000);

resetFunc ();

}

ibalik ang daliri.fingerID; }

Hakbang 6: Tapusin

Isang bagay na nakalimutan kong sabihin sa iyo, well 2 bagay ay naitayo ko ito bago ako kumuha ng litrato, kaya hindi ko maipakita sa iyo kung paano ko itinayo ang kahon. Ang iba pa ay inirerekumenda na i-tornilyo ang bahagi ng servo sa bahagi na lumiliko. Kung hindi mo gagawin, maaaring may hilahin ang drawer habang naka-lock ito at hilahin ang piraso. Ngunit bago mo ito lokohin, hanapin ang tamang lugar kung saan ito isusuot dahil ang servo ay lumiliko sa isang tiyak na antas. O maaari mo lamang itong baguhin sa code. Kung ang ilan sa mga electronics ay kumikilos nang nakakatawa, baka gusto mong makahanap ng ibang paraan upang makakuha ng 5V para sa ilan sa kanila. Napansin ko nang nag-flash ang aking fingerprint scanner, ang screen ay bahagyang mag-flash kasama nito, at ang servo ay maingay. Kapag lumipat ang servo, lumabo ang screen. Sana nasiyahan ka sa proyekto! Kung mayroon kang anumang mga katanungan, iwanan ang mga ito sa mga komento. Hindi ako marami sa mga itinuturo, ngunit sasagutin ko sila sa lalong madaling panahon!

Inirerekumendang: