Orodha ya maudhui:

Arduino High Tech Salama: 6 Hatua
Arduino High Tech Salama: 6 Hatua

Video: Arduino High Tech Salama: 6 Hatua

Video: Arduino High Tech Salama: 6 Hatua
Video: Измерение расстояния с помощью 6-контактного лазерного модуля VL53L0X с Arduino 2024, Julai
Anonim
Arduino High Tech Salama
Arduino High Tech Salama

Hii ni salama yangu ya juu ya arduino. Lazima uchanganue kidole chako, changanua kadi yako, kisha ingiza nenosiri lenye tarakimu 4 ili kufungua droo. Mradi huu haupendekezi kwa Kompyuta kwa sababu ni ya hali ya juu sana. Nambari ni ndefu, lakini nitaishiriki katika mradi huu. Gharama ni karibu $ 75 ikiwa utaunda salama sawa na mimi. Mradi huu pia unaweza kuchukua siku 1-3 kukamilika. Kwa hivyo, hebu tuanze!

Vifaa

Kuunda salama sawa na yangu utahitaji:

Arduino (Uno alipendekeza kwa sababu sina hatua za mega au nano arduino. Lakini bado unaweza kuzitumia)

ubao wa mkate

servo

waya za kuruka

fimbo ya furaha

20 * 4 (unaweza kutumia 16 * 4, lakini itabidi ubadilishe nambari)

skana ya alama za vidole

skana ya mfrc522 rfid

ndoo ya legos

Hatua ya 1: Kujenga Sanduku

Kujenga Sanduku
Kujenga Sanduku

Kwanza utahitaji sanduku kuweka vifaa vyako vya elektroniki. Unaweza kutumia legos, sanduku la kuchapishwa la 3d, au hata kadibodi! (Ingawa hii inaweza kuwa ngumu) Usisahau kuweka mashimo ndani yake kwa droo, na umeme wako. Ikiwa unatumia skana ya kadi ya rfid, hauitaji kuweka shimo kwa hiyo ikiwa kuta zako ni nyembamba. Kadi bado zinafanya kazi, lakini lazima uweke viti vya funguo karibu ili senor wa kadi ya rfid aweze kuzisoma. Pia acha nafasi ya arduino yako na waya ndani. KUMBUKA: Unapojenga droo, acha shimo ndani yake ili servo yako iweze kugeuka na kufunga droo.

Hatua ya 2: Wiring Up

Wiring Up!
Wiring Up!

Hatua hii inaweza kuwa ngumu kwa sababu unahitaji kuziba waya mahali pengine au umeme hautafanya kazi. Sina mchoro wa wiring, lakini nitakuambia kila mmoja atakwenda. Wiring ni ya arduino uno tu. Itabidi utafute walikuwa kuweka waya ikiwa unatumia mega au nano arduino. Ikiwa hutumii elektroni zote nilizonazo, unaweza kuruka wiring hiyo tu.

Skana ya kuchapisha vidole: waya wa kijani: waya mweupe D2: waya mweusi D3: waya mwekundu wa GND: 5V

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

skana ya kadi ya rfid: 3.3V = 3.3V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

skrini ya lcd: 5V = 5V GND = GND sda = A4 sck = A5

Servo: waya nyekundu: 5V waya wa hudhurungi: waya wa manjano wa GND: D6

KUMBUKA: USITENGENEZE SEKANI YA KATA YA RFID KWENYE 5V. UKIFANYA, ITAVUNJIKA !!!

Labda unajiuliza ni kwanini nimesema kuziba nguvu ya faraja kwa 3.3V wakati inasema 5V upande. Hiyo ni kwa sababu skana ya servo, skrini, na alama za vidole zinahitaji 5V. Ikiwa unaongeza kifurushi kwa hiyo, umeme hauwezi kufanya kazi kwa sababu kila kitu kinahitaji 5V. Fimbo ya furaha bado itafanya kazi na 3.3V. Ni thamani ya juu tu 1023, itakuwa ~ 670.

Hatua ya 3: Kupakua Maktaba

Katika mradi huu, utahitaji maktaba 6 kutumia umeme wote. 1 kwa servo, 1 kwa sensa ya alama ya vidole, 2 kwa skana ya kadi ya rfid, na 2 kwa skrini. Fimbo ya furaha haiitaji maktaba. Sasa, maktaba ni nini? Kimsingi ni faili ambayo inashikilia nambari nyingi ambazo unaweza kutumia katika mradi wako na amri rahisi. Ili kupata maktaba hizi, unahitaji kwenda mahali panapoitwa GitHub. Ikiwa unajua jinsi ya kupakua na kufungua maktaba, nenda kwenye viungo hapa chini kwa upakuaji. Ikiwa haujui jinsi, unaweza kwenda kwa anayeweza kufundishwa ambayo inazungumza juu ya jinsi ya kupakua maktaba katika hatua ya 3: https://www.instructables.com/id/Makey-Makeyarduin …….

au tafuta video ya youtube juu ya jinsi ya kupakua maktaba ya arduino kutoka GitHub

Viungo kwa WALIMU:

Servo

sensa ya alama ya vidole:

spi

sensa ya kadi ya rfid

maktaba ya skrini 1

maktaba ya skrini 2

Hatua ya 4: Kuweka Sensor ya Kidole cha Kidole na Radi ya Rfid Card

Hatua hii inazungumza juu ya jinsi ya kuweka sensor ya kidole na sensa ya kadi ya rfid. Isipokuwa tayari umetumia kitambuzi chako cha alama ya vidole, utahitaji kuionesha alama ya kidole chako inavyoonekana ili iweze kuihifadhi kwenye kumbukumbu yake. Hata kama umewahi kuitumia hapo awali, bado unapaswa kufanya hatua hii. Nitakuambia jinsi ya kuifanya kwa kifupi, lakini ikiwa haina maana nenda kwenye kiunga sawa kinachoweza kufundishwa katika hatua ya mwisho. Inapita juu yake vizuri sana. Msingi wazi tu ideu ya arduino. Nenda kwenye faili> mifano> sensorer ya vidole vya adafruit> jiandikishe. Pakia nambari kwa arduino, fungua mfuatiliaji wa serial, na ufuate hatua ambazo inakuambia. Inapokwambia mpe namba. Chapa 1 #.

Sasa kwa kadi ya rfid, hatua hii ni rahisi sana. Fungua ideu ideuino. Nenda kwenye faili> mifano> mfrc522> soma data ya kibinafsi. Pakia arduino na fungua mfuatiliaji wa serial. Changanua kadi au keychain unayotaka kutumia iliyokuja na kitambuzi chako. Halafu itakupa habari. Tafuta kitambulisho cha kadi hiyo itakuwa seti 4 za nambari 2. Kitu kama hiki: AB 45 2Y 45 lakini nambari yako itakuwa tofauti. Andika hii kwenye karatasi. Utahitaji tena baadaye. Hiyo ni kwa hatua hii.

Hatua ya 5: CODE

Hii itakuwa hatua ngumu zaidi kwa wengi wenu, lakini ni rahisi sana. Nakala kwanza na ubandike nambari kwenye maoni ya arduino kutoka chini. Pili, hariri sehemu 2 ambapo inasema "BONYEZA KODI." Sehemu 1 ni ya skana ya kadi, 1 ni ya fimbo ya kufurahisha. Hatua hizi haziwezi kurukwa. Ukimaliza, pakia nambari kwa arduino!

# pamoja na # pamoja na alama ya kidole.h>

# pamoja

# pamoja

# pamoja

# pamoja

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

#fafanua RST_PIN 9

#fafanua SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Kidole cha Adafruit_Fingerprint = Adafruit_Fingerprint (& mySerial);

Servo servo;

char d1;

char d2;

char d3;

char d4;

usanidi batili () {

ambatisha servo (6);

andika (170);

lcd kuanza (20, 4);

Kuanzia Serial (9600);

wakati (! Serial);

SPI kuanza ();

mfrc522. PCD_Init ();

kuchelewesha (4);

mfrc522. PCD_DumpVersionToSerial ();

kuchelewesha (100);

Serial.println ("\ n / nJaribio la kugundua kidole cha matunda");

kidole. kuanza (57600);

kuchelewesha (5);

ikiwa (kidole.verifyPassword ()) {

Serial.println ("Mifumo yote inafanya kazi,");

lcd wazi ();

lcd.setCursor (1, 0);

lcd.print ("Tafadhali tambaza kidole");

} mwingine {

Serial.println ("KOSA: sensa ya kuchapisha kidole haipatikani!");

lcd.setCursor (0, 0);

lcd.print ("KOSA: Kuchapa kidole");

lcd.setCursor (1, 1);

lcd.print ("sensor haikupatikana!");

wakati (1) {kuchelewesha (1); }

}

kidole.getTemplateCount ();

Serial.print ("Sensor ina"); Serial.print (kidole.templateCount); Serial.println ("templeti"); Serial.println ("Inasubiri kidole halali…"); }

batili (* resetFunc) (batili) = 0;

kitanzi batili () {

pataFingerprintIDez ();

kuchelewesha (50);

}

hauwezi kupataFingerprintID () {

uint8_t p = kidole. Imba Picha ();

kubadili (p) {

kesi FINGERPRINT_OK:

Serial.println ("Picha imechukuliwa");

kuvunja;

kesi FINGERPRINT_NOFINGER:

Serial.println ("Hakuna kidole kilichogunduliwa");

kurudi p;

kesi FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Kosa la Mawasiliano");

kurudi p;

kesi FINGERPRINT_IMAGEFAIL:

Serial.println ("Imaging error");

kurudi p;

chaguomsingi:

Serial.println ("Kosa lisilojulikana");

kurudi p;

}

p = kidole.image2Tz ();

kubadili (p) {

kesi FINGERPRINT_OK:

Serial.println ("Picha imebadilishwa");

kuvunja;

kesi FINGERPRINT_IMAGEMESS:

Serial.println ("Picha imejaa fujo");

kurudi p;

kesi FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Kosa la Mawasiliano");

kurudi p;

kesi FINGERPRINT_FEATUREFAIL:

Serial.println ("Haikuweza kupata huduma za alama za vidole");

kurudi p;

kesi FINGERPRINT_INVALIDIMAGE:

Serial.println ("Haikuweza kupata huduma za alama za vidole");

kurudi p;

chaguomsingi:

Serial.println ("Kosa lisilojulikana");

kurudi p;

}

p = kidole.fingerFastSearch ();

ikiwa (p == FINGERPRINT_OK) {

Serial.println ("Pata mechi ya kuchapisha!");

} mwingine ikiwa (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Kosa la Mawasiliano");

kurudi p;

} mwingine ikiwa (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Hakupata mechi");

kurudi p;

} mwingine {

Serial.println ("Kosa lisilojulikana");

kurudi p;

}

Serial.print ("Iliyopatikana ID #"); Serial.print (kidole cha kidole);

Serial.print ("kwa ujasiri wa"); Serial.println (kidole.kujiamini);

rudisha kidole kidole;

}

int getFingerprintIDez () {

uint8_t p = kidole. Imba Picha ();

ikiwa (p! = FINGERPRINT_OK) kurudi -1;

p = kidole.image2Tz ();

ikiwa (p! = FINGERPRINT_OK) kurudi -1;

p = kidole.fingerFastSearch ();

ikiwa (p! = FINGERPRINT_OK) kurudi -1;

Serial.print ("Iliyopatikana ID #"); Serial.print (kidole cha kidole);

Serial.print ("kwa ujasiri wa"); Serial.println (kidole.kujiamini);

ikiwa (finger.fingerID == 1) {

lcd wazi ();

lcd.setCursor (2, 0);

lcd.print ("Kidole kimekubaliwa,");

lcd.setCursor (2, 0);

lcd.print ("sasa tambaza kadi…");

lcd.setCursor (0, 3);

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

wakati (! mfrc522. PICC_IsNewCardPresent ());

wakati (! mfrc522. PICC_ReadCardSerial ());

ikiwa (mfrc522.uid.uidByte [0] == 0x92 && // ========================== HARAKA CODE ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // Chukua kile kipande cha karatasi kilicho na kitambulisho, kulikuwa na seti 4 za nambari 2

mfrc522.uid.uidByte [2] == 0x90 && // Angalia kwa nambari, angalia ambapo inasema 0x92, 0xAB, 0x90, 0x1c? Ingiza kila moja

mfrc522.uid.uidByte [3] == 0x1C) {// ya sehemu ya tarakimu 2 baada ya 0x. Kwa mfano, sehemu ya kitambulisho inasema

lcd wazi (); // 3E, kisha ingiza 3E baada ya 0x kutengeneza 0x3E. Fanya hivi kwa kila sehemu

lcd.setCursor (3, 0);

lcd.print ("Mwishowe, ingiza");

lcd.setCursor (1, 1);

lcd.print ("nywila ya kufurahisha");

wakati (AnalogSoma (A2)> = 100 &&

Soma Analog (A2) <= 670 &&

AnalogRead (A3)> = 100 &&

AnalogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print ("*"); ikiwa (AnalogSoma (A2) <= 100) {

d1 = L;

}

ikiwa (AnalogSoma (A2)> = 670) {

d1 = R;

}

ikiwa (AnalogSoma (A3) <= 100) {

d1 = U;

}

ikiwa (AnalogSoma (A3)> = 670) {

d1 = D;

}

kuchelewesha (500);

wakati (AnalogSoma (A2)> = 100 &&

Soma Analog (A2) <= 670 &&

AnalogRead (A3)> = 100 &&

AnalogRead (A3) <= 670) {

}

lcd.print ("*");

ikiwa (AnalogSoma (A2) <= 100) {

d2 = L;

}

ikiwa (AnalogSoma (A2)> = 670) {

d2 = R;

}

ikiwa (AnalogSoma (A3) <= 100) {

d2 = U;

}

ikiwa (AnalogSoma (A3)> = 670) {

d2 = D;

}

kuchelewesha (500);

wakati (AnalogSoma (A2)> = 100 &&

Soma Analog (A2) <= 670 &&

AnalogRead (A3)> = 100 &&

AnalogRead (A3) <= 670) {

}

lcd.print ("*");

ikiwa (AnalogSoma (A2) <= 100) {

d3 = L;

}

ikiwa (AnalogSoma (A2)> = 670) {

d3 = R;

}

ikiwa (AnalogSoma (A3) <= 100) {

d3 = U;

}

ikiwa (AnalogSoma (A3)> = 670) {

d3 = D;

}

kuchelewesha (500);

wakati (AnalogSoma (A2)> = 10 &&

Soma Analog (A2) <= 670 &&

AnalogRead (A3)> = 100 &&

AnalogRead (A3) <= 670) {

}

lcd.print ("*");

ikiwa (AnalogSoma (A2) <= 100) {

d4 = L;

}

ikiwa (AnalogSoma (A2)> = 670) {

d4 = R;

}

ikiwa (AnalogSoma (A3) <= 100) {

d4 = U;

}

ikiwa (AnalogSoma (A3)> = 670) {

d4 = D;

}

kuchelewesha (500);

ikiwa (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= BONYEZA CODE ====== ================

lcd wazi (); // Sehemu hii ni kama unaweza kuhariri nywila na fimbo ya furaha

lcd.setCursor (2, 0); // nywila imewekwa kushoto, juu kushoto, kulia. Ikiwa unataka kubadilika

lcd.print ("Ufikiaji umepewa!"); // ni, weka L kushoto, R kulia, U kwa juu, au D chini katika yoyote ya

lcd.setCursor (2, 1); // sehemu 4 zilizo na barua baada ya ishara ==.

lcd.print ("Droo imefunguliwa.");

lcd.setCursor (2, 2);

lcd.print ("Ukimaliza, songa");

lcd.setCursor (1, 3);

lcd.print ("starehe ya kufungua tena");

andika (90);

wakati (AnalogSoma (A2)> = 100 &&

Soma Analog (A2) <= 670 &&

AnalogRead (A3)> = 100 &&

Soma Analog (A3) <= 670);

andika (170);

lcd.setCursor (3, 0);

lcd.print ("Droo imefungwa");

kuchelewesha (3000);

resetFunc ();

} mwingine {

lcd wazi ();

lcd.setCursor (2, 0);

lcd.print ("UPATIKANAJI UMEKANYWA !!!");

lcd.setCursor (0, 2);

lcd.print ("Kuanzisha upya mfumo…");

kuchelewesha (3000);

resetFunc ();

}

} mwingine {

lcd wazi ();

lcd.setCursor (2, 0);

lcd.print ("UPATIKANAJI UMEKANYWA !!!");

lcd.setCursor (0, 2);

lcd.print ("Kuanzisha upya mfumo…");

kuchelewesha (3000);

resetFunc ();

}

} mwingine {

lcd wazi ();

lcd.setCursor (2, 0);

lcd.print ("UPATIKANAJI UMEKANYWA !!!");

lcd.setCursor (0, 2);

lcd.print ("Kuanzisha upya mfumo…");

kuchelewesha (3000);

resetFunc ();

}

rudisha kidole kidole; }

Hatua ya 6: Maliza

Jambo moja ambalo nilisahau kukuambia, vizuri vitu 2 ni kwamba nilijenga hii kabla sijapiga picha, kwa hivyo sikuweza kukuonyesha jinsi nilivyojenga sanduku. Nyingine ni kwamba inashauriwa kugonga sehemu ya servo kwenye sehemu ambayo inageuka. Usipofanya hivyo, mtu anaweza kuvuta droo wakati imefungwa na kuvuta kipande. Lakini kabla ya kuizungusha, pata mahali pazuri pa kuiweka kwa sababu servo inageuka kwa kiwango fulani. Au unaweza kuibadilisha tu katika nambari. Ikiwa elektroniki zingine zinafanya kuchekesha, unaweza kutaka kutafuta njia tofauti ya kupata 5V kwa baadhi yao. Niligundua skana yangu ya kidole ilipowaka, skrini ingeangaza kidogo nayo, na servo ingefanya kelele. Wakati servo ilipohamia, skrini ingekuwa hafifu. Natumai umefurahiya mradi! Ikiwa una maswali yoyote, waache kwenye maoni. Siko juu ya mafundisho mengi, lakini nitawajibu haraka iwezekanavyo!

Ilipendekeza: