Arduino жоғары технологиялық қауіпсіз: 6 қадам
Arduino жоғары технологиялық қауіпсіз: 6 қадам
Anonim
Arduino жоғары технологиялық қауіпсіз
Arduino жоғары технологиялық қауіпсіз

Бұл менің жоғары технологиялы arduino сейфім. Саусақты сканерлеу, картаны сканерлеу, содан кейін жәшіктің құлпын ашу үшін 4 таңбалы құпия сөзді енгізу қажет. Бұл жоба жаңадан бастаушыларға ұсынылмайды, себебі ол өте жетілдірілген. Код ұзақ, бірақ мен оны осы жобада бөлісемін. Егер сіз мен сияқты сейф жасасаңыз, бағасы шамамен 75 долларды құрайды. Бұл жобаны аяқтауға 1-3 күн қажет болуы мүмкін. Сонымен, бастайық!

Жабдықтар

Менікі сияқты сейф жасау үшін сізге қажет:

Arduino (Uno ұсынылады, себебі менде arduino мега немесе наноға арналған қадамдар жоқ. Бірақ сіз оларды әлі де пайдалана аласыз)

нан тақтасы

серво

секіргіш сымдар

джойстик

20*4 (сіз 16*4 қолдана аласыз, бірақ кодты өзгертуге тура келеді)

саусақ ізі сканері

mfrc522 rfid картасының сканері

бір шелек лего

1 -қадам: қорап салу

Қорап салу
Қорап салу

Алдымен сізге электрониканы салу үшін қорап қажет болады. Сіз легос, 3d басылған қорап немесе тіпті картон қолдана аласыз! (Бұл қиынырақ болса да) тартпаның және электрониканың тесіктерін қоюды ұмытпаңыз. Егер сіз rfid картасының сканерін қолдансаңыз, қабырғаларыңыз жұқа болса, оған тесік қоюдың қажеті жоқ. Карталар әлі де жұмыс істейді, бірақ rfid картасының сенаторы оларды оқи алатындай етіп сіз ілгектерді жабуыңыз керек. Сондай -ақ, ардуино мен сымдар үшін орын қалдырыңыз. ЕСКЕРТПЕ: Тартпаны салған кезде, оның свойоны тартпаны бұрып құлыптай алатындай етіп тесік қалдырыңыз.

2 -қадам: Қосылу

Қосылу!
Қосылу!

Бұл қадам күрделі болуы мүмкін, себебі сымдарды дәл жерге қосу керек немесе электроника жұмыс істемейді. Менде электр схемасы жоқ, бірақ мен сізге айтамын, олардың әрқайсысы барады. Сымдар тек arduino uno үшін. Егер сіз arduino мега немесе нано қолдансаңыз, сымдарды қою керек еді. Егер сізде менде бар барлық электрониканы пайдаланбасаңыз, онда бұл сымды өткізіп жіберуге болады.

Саусақ ізі сканері: жасыл сым: D2 ақ сым: D3 қара сым: GND қызыл сымы: 5В

Джойстик: 5V = 3.3V GND = GND X = A2 Y = A3 қосқыш = D4

rfid картасының сканері: 3.3V = 3.3V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

lcd экраны: 5V = 5V GND = GND sda = A4 sck = A5

Серво: қызыл сым: 5В Қоңыр сым: GND сары сым: D6

ЕСКЕРТПЕ: RFID картасының сканерін 5В -ке қоспаңыз. Егер сіз осылай жасасаңыз, ол бұзылады !!!

Сіз бүйірінде 5В жазылса, неліктен джойстиктің қуатын 3.3В -қа қосу керек дедім деп ойлайтын шығарсыз. Себебі серво, экран және саусақ ізі сканері 5В қажет. Егер сіз джойстикті қоссаңыз, электроника жұмыс істемеуі мүмкін, себебі бәрі 5В қажет. Джойстик әлі де 3.3V жұмыс істейді. Бұл максималды мән 1023 болмайды, ол ~ 670 болады.

3 -қадам: кітапханаларды жүктеу

Бұл жобада сізге барлық электрониканы қолдану үшін 6 кітапхана қажет болады. Серво үшін 1, саусақ ізі сенсоры үшін 1, rfid карт сканері үшін 2 және экран үшін 2. Джойстикке кітапхана қажет емес. Енді кітапхана дегеніміз не? Бұл негізінен сіздің жобаңызда қарапайым командалармен қолдануға болатын көптеген кодты қамтитын файл. Бұл кітапханаларды алу үшін GitHub деп аталатын жерге бару керек. Егер сіз кітапханаларды қалай жүктеуді және ашу керектігін білсеңіз, төмендегі сілтемелерге өтіңіз. Егер сіз қалай білмесеңіз, 3-қадамда кітапхананы қалай жүктеу керектігі туралы айтылатын нұсқаулыққа кіре аласыз:

немесе GitHub -тан arduino кітапханасын қалай жүктеуге болатыны туралы youtube бейнесін іздеңіз

ЛИРАРИЯЛАРҒА СІЛТЕМЕЛЕР:

Серво

саусақ ізі сенсоры:

github.com/PaulStoffregen/SPI

rfid картасының сенсоры

экран кітапханасы 1

экран кітапханасы 2

4 -қадам: саусақ ізі сенсоры мен Rfid картасының сенсорын орнату

Бұл қадам саусақ ізі сенсоры мен rfid картасының сенсорын қалай орнату керектігі туралы айтады. Егер сіз саусақ ізі сенсорын қолданбаған болсаңыз, оны саусақ ізінің қалай көрінетінін көрсетуіңіз керек, ол оны жадында сақтай алады. Егер сіз бұрын қолданған болсаңыз да, сіз бұл қадамды жасауыңыз керек. Мен сізге қысқаша қалай жасау керектігін айтамын, бірақ егер мағынасы болмаса, соңғы қадамдағы нұсқаулыққа өтіңіз. Ол өте жақсы өтеді. Негізгі ашық arduino ide. Файл> мысалдар> adafruit саусақ ізі сенсоры> тіркеуге өтіңіз. Arduino -ға кодты жүктеңіз, сериялық мониторды ашыңыз және сізге айтылған қадамдарды орындаңыз. Ол сізге нөмір беру керектігін айтқан кезде. 1#теріңіз.

Енді rfid картасы үшін бұл қадам өте оңай. Arduino ide ашыңыз. Файл> мысалдар> mfrc522> жеке деректерді оқуға өтіңіз. Arduino -ға жүктеңіз және сериялық мониторды ашыңыз. Сенсормен бірге келген картаны немесе салпыншақты сканерлеңіз. Содан кейін ол сізге біраз ақпарат береді. Картаның идентификаторын іздеңіз, ол 2 цифрдан тұратын 4 жиын болады. Мынадай нәрсе: AB 45 2Y 45, бірақ сіздің кодыңыз басқаша болады. Мұны қағазға жазыңыз. Сізге кейінірек қайтадан қажет болады. Бұл осы қадам үшін.

5 -қадам: КОД

Бұл сіздің көпшілігіңіз үшін ең қиын қадам болады, бірақ бұл өте қарапайым. Алдымен кодты төменнен arduino ide -ге көшіріп, қойыңыз. Екіншіден, EDIT CODE деп аталатын 2 бөлімді өңдеңіз. 1 бөлім карта сканеріне, 1 бөлім джойстикке арналған. Бұл қадамдарды өткізіп жіберуге болмайды. Аяқтағаннан кейін arduino -ға кодты жүктеңіз!

#қосу #саусақ ізін қосу.h>

#қосу

#қосу

#қосу

#қосу

LiquidCrystal_I2C LCD (0x27, 2, 1, 0, 4, 5, 6, 7, 3, Позитивті);

#RST_PIN 9 анықтаңыз

#SS_PIN 10 анықтаңыз

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Adafruit_Fingerprint саусақ = Adafruit_Fingerprint (& mySerial);

Servo servo;

char d1;

char d2;

char d3;

char d4;

жарамсыз орнату () {

servo.attach (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

while (! сериялық);

SPI.begin ();

mfrc522. PCD_Init ();

кешіктіру (4);

mfrc522. PCD_DumpVersionToSerial ();

кешіктіру (100);

Serial.println («\ n / nАдам жемісін саусақпен анықтау тесті»);

саусақ.баста (57600);

кешіктіру (5);

if (finger.verifyPassword ()) {

Serial.println («Барлық жүйелер жұмыс істейді»);

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print («Саусақты сканерлеңіз»);

} басқа {

Serial.println («ҚАТЕ: Саусақпен басып шығару сенсоры табылмады!»);

lcd.setCursor (0, 0);

lcd.print («ҚАТЕ: Саусақ ізі»);

lcd.setCursor (1, 1);

lcd.print («сенсор табылмады!»);

while (1) {delay (1); }

}

finger.getTemplateCount ();

Serial.print («Сенсор бар»); Serial.print (finger.templateCount); Serial.println («шаблондар»); Serial.println («Жарамды саусақ күтілуде …»); }

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

кешіктіру (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

ауысу (p) {

FINGERPRINT_OK жағдайы:

Serial.println («Сурет алынды»);

үзіліс;

FINGERPRINT_NOFINGER жағдайы:

Serial.println («Саусақ анықталмаған»);

қайтару p;

FINGERPRINT_PACKETRECIEVEERR жағдайы:

Serial.println («Байланыс қатесі»);

қайтару p;

FINGERPRINT_IMAGEFAIL жағдайы:

Serial.println («Бейнелеу қатесі»);

қайтару p;

әдепкі:

Serial.println («Белгісіз қате»);

қайтару p;

}

p = саусақ.сурет2Tz ();

ауысу (p) {

FINGERPRINT_OK жағдайы:

Serial.println («Сурет түрлендірілген»);

үзіліс;

FINGERPRINT_IMAGEMESS жағдайы:

Serial.println («Кескін тым ретсіз»);

қайтару p;

FINGERPRINT_PACKETRECIEVEERR жағдайы:

Serial.println («Байланыс қатесі»);

қайтару p;

FINGERPRINT_FEATUREFAIL жағдайы:

Serial.println («Саусақ ізінің мүмкіндіктері табылмады»);

қайтару p;

FINGERPRINT_INVALIDIMAGE жағдайы:

Serial.println («Саусақ ізінің мүмкіндіктері табылмады»);

қайтару p;

әдепкі:

Serial.println («Белгісіз қате»);

қайтару p;

}

p = finger.fingerFastSearch ();

егер (p == FINGERPRINT_OK) {

Serial.println («Басып шығару сәйкестігі табылды!»);

} if if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println («Байланыс қатесі»);

қайтару p;

} егер басқа (p == FINGERPRINT_NOTFOUND) {

Serial.println («Сәйкестік табылмады»);

қайтару p;

} басқа {

Serial.println («Белгісіз қате»);

қайтару p;

}

Serial.print («ID нөмірі табылды»); Serial.print (саусақ саусақ идентификаторы);

Serial.print («сеніммен»); Serial.println (саусақпен сену);

саусақты қайтару.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

егер (p! = FINGERPRINT_OK) -1 қайтарса;

p = саусақ.сурет2Tz ();

егер (p! = FINGERPRINT_OK) -1 қайтарса;

p = finger.fingerFastSearch ();

егер (p! = FINGERPRINT_OK) -1 қайтарса;

Serial.print («ID нөмірі табылды»); Serial.print (саусақ саусақ идентификаторы);

Serial.print («сеніммен»); Serial.println (саусақпен сену);

егер (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print («Саусақ қабылданды»);

lcd.setCursor (2, 0);

lcd.print («енді картаны сканерлеу …»);

lcd.setCursor (0, 3);

lcd.print («==================>»);

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ====================== КОДТЫ ӨҢДЕУ ======== ===============

mfrc522.uid.uidByte [1] == 0xAB && // Идентификаторы бар қағазды алыңыз, 2 цифрдан тұратын 4 жиын болды.

mfrc522.uid.uidByte [2] == 0x90 && // Кодты қараңыз, онда 0x92, 0xAB, 0x90, 0x1c қай жерде жазылғанын қараңыз? Әрқайсысын енгізіңіз

mfrc522.uid.uidByte [3] == 0x1C) {// 0x -тен кейінгі 2 таңбалы бөлімнің. Мысалы, жеке куәлік бөлімінде былай делінген

lcd.clear (); // 3E, содан кейін 0x3E жасау үшін 0x -тен кейін 3E енгізіңіз. Мұны әр бөлім үшін жасаңыз

lcd.setCursor (3, 0);

lcd.print («Соңында енгізіңіз»);

lcd.setCursor (1, 1);

lcd.print («джойстик паролі»);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print («*»); егер (analogRead (A2) <= 100) {

d1 = L;

}

егер (analogRead (A2)> = 670) {

d1 = R;

}

егер (analogRead (A3) <= 100) {

d1 = U;

}

егер (analogRead (A3)> = 670) {

d1 = D;

}

кешіктіру (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print («*»);

егер (analogRead (A2) <= 100) {

d2 = L;

}

егер (analogRead (A2)> = 670) {

d2 = R;

}

егер (analogRead (A3) <= 100) {

d2 = U;

}

егер (analogRead (A3)> = 670) {

d2 = D;

}

кешіктіру (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print («*»);

егер (analogRead (A2) <= 100) {

d3 = L;

}

егер (analogRead (A2)> = 670) {

d3 = R;

}

егер (analogRead (A3) <= 100) {

d3 = U;

}

егер (analogRead (A3)> = 670) {

d3 = D;

}

кешіктіру (500);

while (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print («*»);

егер (analogRead (A2) <= 100) {

d4 = L;

}

егер (analogRead (A2)> = 670) {

d4 = R;

}

егер (analogRead (A3) <= 100) {

d4 = U;

}

егер (analogRead (A3)> = 670) {

d4 = D;

}

кешіктіру (500);

егер (d1 == L && d2 == U && d3 == L && d4 == R) {// ================ КОДТЫ ӨҢДЕУ ====== =================

lcd.clear (); // Бұл бөлімде сіз парольді джойстикпен өңдей аласыз

lcd.setCursor (2, 0); // құпия сөз солға, жоғарыға, оңға орнатылады. Егер сіз өзгергіңіз келсе

lcd.print («Қол жеткізуге рұқсат!»); // бұл, солға L, оңға R, жоғарыға U немесе төменге D қойыңыз

lcd.setCursor (2, 1); // == белгілерінен кейін әрпі бар 4 бөлім.

lcd.print («Тартпаның құлпы ашылды.»);

lcd.setCursor (2, 2);

lcd.print («Аяқтағанда, жылжыту»);

lcd.setCursor (1, 3);

lcd.print («орнын ауыстыруға арналған джойстик»);

servo.write (90);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print («Тартпасы құлыптаулы»);

кешіктіру (3000);

resetFunc ();

} басқа {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print («КІРУ ҚАБЫЛДАНДЫ !!!»);

lcd.setCursor (0, 2);

lcd.print («Жүйені қайта қосу …»);

кешіктіру (3000);

resetFunc ();

}

} басқа {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print («КІРУ ҚАБЫЛДАНДЫ !!!»);

lcd.setCursor (0, 2);

lcd.print («Жүйені қайта қосу …»);

кешіктіру (3000);

resetFunc ();

}

} басқа {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print («КІРУ ҚАБЫЛДАНДЫ !!!»);

lcd.setCursor (0, 2);

lcd.print («Жүйені қайта қосу …»);

кешіктіру (3000);

resetFunc ();

}

саусақты қайтару.fingerID; }

6 -қадам: Аяқтаңыз

Сізге айтуды ұмытып кеткен бір нәрсе, мен 2 нәрсені суретке түсірместен бұрын салдым, сондықтан мен қорапты қалай құрастырғанымды көрсете алмадым. Екіншіден, серво бөлігін бұрылатын бөлікке бұрау ұсынылады. Олай етпесеңіз, біреу тартпаны құлыптаулы күйінде тартып алып, оны шешіп алады. Бірақ оны бұрамас бұрын, оны қоюға болатын орынды табыңыз, себебі серво белгілі бір дәрежеде бұрылады. Немесе оны кодта өзгертуге болады. Егер кейбір электроника күлкілі болса, олардың кейбіреулері үшін 5В -ты алудың басқа жолын іздегіңіз келуі мүмкін. Мен саусақ ізі сканері жыпылықтаған кезде, экран аздап жыпылықтап, серво шу шығаратынын байқадым. Серво жылжытылған кезде экран күңгірт болады. Сізге жоба ұнады деп сенемін! Егер сізде сұрақтар туындаса, оларды түсініктемелерде қалдырыңыз. Мен нұсқаулықта көп емеспін, бірақ мен оларға мүмкіндігінше тезірек жауап беремін!

Ұсынылған: