Агуулгын хүснэгт:

Arduino High Tech Safe: 6 алхам
Arduino High Tech Safe: 6 алхам

Видео: Arduino High Tech Safe: 6 алхам

Видео: Arduino High Tech Safe: 6 алхам
Видео: НЕ ВЗДУМАЙ снимать аккумулятор с машины. Делай это ПРАВИЛЬНО ! 2024, Долдугаар сарын
Anonim
Arduino High Tech Safe
Arduino High Tech Safe

Энэ бол миний өндөр технологийн arduino сейф юм. Шүүгээний түгжээг тайлахын тулд та хуруугаа скан хийж, картаа сканнердаж, дараа нь 4 оронтой нууц үгээ оруулах ёстой. Энэ төсөл нь маш дэвшилтэт тул эхлэгчдэд ашиглахыг зөвлөдөггүй. Код урт, гэхдээ би үүнийг энэ төсөлд хуваалцах болно. Хэрэв та надтай адил сейф хийвэл зардал нь ойролцоогоор 75 доллар болно. Энэ төслийг хэрэгжүүлэхэд 1-3 хоног шаардагдана. Тиймээс, эхэлцгээе!

Хангамж

Минийхтэй ижил сейф барихын тулд танд дараахь зүйлс хэрэгтэй болно.

Arduino (Надад arduino mega эсвэл нано хийх алхам байхгүй тул Uno -г санал болгож байна. Гэхдээ та тэдгээрийг ашиглах боломжтой хэвээр байна)

талх

servo

холбогч утас

joystick

20*4 (та 16*4 ашиглаж болно, гэхдээ та кодыг өөрчлөх шаардлагатай болно)

хурууны хээ сканнер

mfrc522 rfid карт сканнер

нэг хувин лего

Алхам 1: Хайрцаг барих

Хайрцаг барих
Хайрцаг барих

Эхлээд танд цахилгаан хэрэгслээ оруулах хайрцаг хэрэгтэй болно. Та легос, 3d хэвлэсэн хайрцаг эсвэл бүр картон ашиглаж болно! (Энэ нь илүү хэцүү байж магадгүй ч гэсэн) шургуулга, цахилгаан хэрэгсэлд нүх оруулахаа бүү мартаарай. Хэрэв та rfid карт скан хийгч ашиглаж байгаа бол хэрвээ хана тань нимгэн байвал үүнийг нүхлэх шаардлагагүй болно. Картууд хэвээр байгаа боловч та түлхүүрийн оосорыг хаах хэрэгтэй бөгөөд ингэснээр rfid картны сенатор уншиж чадна. Мөн ардуино болон утсандаа зай үлдээгээрэй. ТАЙЛБАР: Шүүгээ хийхдээ нүхээ үлдээгээрэй, ингэснээр таны servo шургуулгыг эргүүлж түгжиж болно.

Алхам 2: Цахилгааны утас

Цахилгаан утас!
Цахилгаан утас!

Энэ үе шат нь нарийн төвөгтэй байж болно, учир нь та утсыг яг таг залгах хэрэгтэй, эс тэгвээс электрон төхөөрөмж ажиллахгүй болно. Надад утас диаграм байхгүй, гэхдээ хүн бүр явах болно гэдгийг би танд хэлье. Утас нь зөвхөн arduino uno -д зориулагдсан болно. Хэрэв та arduino мега эсвэл нано ашиглаж байгаа бол утас тавихын тулд хайх хэрэгтэй болно. Хэрэв та надад байгаа бүх электрон төхөөрөмжийг ашиглаагүй бол та энэ утсыг алгасаж болно.

Хурууны хээ сканнер: ногоон утас: D2 цагаан утас: D3 хар утас: GND улаан утас: 5V

Joystick: 5V = 3.3V GND = GND X = A2 Y = A3 Switch = 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

Servo: улаан утас: 5V Хүрэн утас: GND шар утас: D6

ТАЙЛБАР: RFID картын сканнерыг 5V -д бүү залгаарай. Хэрэв та үүнийг хийвэл эвдэрнэ !!!

Хажуу талд нь 5В гэж байхад яагаад би joystick -ийн хүчийг 3.3V -т залгаарай гэж хэлсэн юм бол гэж та гайхаж байж магадгүй юм. Учир нь servo, дэлгэц, хурууны хээ скан хийгчид 5V хэрэгтэй. Хэрэв та үүнд joystick -ийг нэмбэл бүх зүйл 5V -тэй байх тул электрон төхөөрөмж ажиллахгүй байж магадгүй юм. Жойстик 3.3V -тэй ажиллах болно. Зүгээр л хамгийн дээд утга нь 1023 биш, ~ 670 болно.

Алхам 3: Номын санг татаж авах

Энэхүү төсөлд бүх электроник хэрэгслийг ашиглахын тулд танд 6 номын сан хэрэгтэй болно. Серво 1, хурууны хээ мэдрэгч 1, rfid карт сканнер 2, дэлгэц 2. Тоглоомын санд номын сан хэрэггүй. Одоо номын сан гэж юу вэ? Энэ нь үндсэндээ төсөл дээрээ ашиглаж болох олон тооны кодыг агуулсан файл юм. Эдгээр номын санг авахын тулд та GitHub гэдэг газар очих хэрэгтэй. Хэрэв та номын санг хэрхэн татаж авах, задлахыг мэддэг бол доорх линкээр орж татаж авах боломжтой. Хэрэв та яаж хийхээ мэдэхгүй байгаа бол 3-р алхам дээр номын санг хэрхэн татаж авах талаар ярьдаг миний зааварчилгаа руу очиж болно:

эсвэл GitHub -аас arduino номын санг хэрхэн татаж авах талаар youtube видео хайх

LIRARIES -ийн холбоосууд:

Серво

хурууны хээ мэдрэгч:

github.com/PaulStoffregen/SPI

rfid карт мэдрэгч

дэлгэцийн номын сан 1

дэлгэцийн номын сан 2

Алхам 4: Хурууны хээ мэдрэгч ба Rfid карт мэдрэгчийг тохируулах

Энэ алхам нь хурууны хээ мэдрэгч болон rfid карт мэдрэгчийг хэрхэн тохируулах талаар ярьдаг. Хэрэв та хурууны хээ мэдрэгчээ ашиглаагүй бол хурууны хээгээ хэрхэн харуулахыг харуулах хэрэгтэй бөгөөд ингэснээр санах ойд хадгалагдах болно. Өмнө нь хэрэглэж байсан ч гэсэн та энэ алхамыг хийх ёстой. Үүнийг хэрхэн яаж хийхийг би товчхон хэлье, гэхдээ энэ нь утгагүй бол сүүлийн алхам дээрх зааварчилгаа өгөх линк рүү орно уу. Энэ нь маш сайн давж гардаг. Үндсэн arduino ide -ийг нээнэ үү. Файл> жишээ> adafruit хурууны хээ мэдрэгч> бүртгүүлэх хэсэгт очно уу. Arduino руу код байршуулж, цуваа дэлгэцийг нээгээд түүнд заасан алхмуудыг дагана уу. Энэ нь дугаар өгөхийг танд хэлэх үед. 1#гэж бичнэ үү.

Одоо rfid картын хувьд энэ алхам нь маш хялбар юм. Arduino ide -ийг нээнэ үү. Файл> жишээ> mfrc522> хувийн мэдээллийг уншина уу. Arduino руу байршуулж, цуваа дэлгэцийг нээнэ үү. Мэдрэгчтэйгээ хамт ирсэн карт эсвэл түлхүүрийн оосороо сканнердаарай. Дараа нь танд тодорхой мэдээлэл өгөх болно. Картын ID -г хайж олоорой, энэ нь 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);

Цуваа эхлэх (9600);

байхад (! Цуваа);

SPI.begin ();

mfrc522. PCD_Init ();

саатал (4);

mfrc522. PCD_DumpVersionToSerial ();

саатал (100);

Serial.println ("\ n / nAdafruit хуруу илрүүлэх тест");

хуруу.begin (57600);

саатал (5);

if (хуруу.verifyPassword ()) {

Serial.println ("Бүх систем ажиллаж байна");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Хуруугаа шалгана уу");

} өөр {

Serial.println ("ERROR: Хурууны хэвлэх мэдрэгч олдсонгүй!");

lcd.setCursor (0, 0);

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

lcd.setCursor (1, 1);

lcd.print ("мэдрэгч олдсонгүй!");

while (1) {саатал (1); }

}

хуруу.getTemplateCount ();

Serial.print ("Мэдрэгч агуулсан"); Serial.print (хуруу.templateCount); Serial.println ("загварууд"); Serial.println ("Зөв хуруугаа хүлээж байна …"); }

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

саатал (50);

}

uint8_t getFingerprintID () {

uint8_t p = хуруу.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 = хуруу.image2Tz ();

солих (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 = хуруу.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 дугаар олдлоо"); Цуваа.хэв (хуруу.хурууны ID);

Serial.print ("итгэлтэйгээр"); Serial.println (хуруу. итгэлтэй байдал);

буцах хуруу.fingerID;

}

int getFingerprintIDez () {

uint8_t p = хуруу.getImage ();

хэрэв (p! = FINGERPRINT_OK) буцах -1;

p = хуруу.image2Tz ();

хэрэв (p! = FINGERPRINT_OK) буцах -1;

p = хуруу.fingerFastSearch ();

хэрэв (p! = FINGERPRINT_OK) буцах -1;

Serial.print ("ID дугаар олдлоо"); Цуваа.хэв (хуруу.хурууны ID);

Serial.print ("итгэлтэйгээр"); Serial.println (хуруу. итгэлтэй байдал);

хэрэв (хуруу.хурууныID == 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 ());

байхад (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ====================== КОД ЗАСАХ ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // ID бүхий бичиг цаасыг ав, 2 оронтой 4 багц байсан.

mfrc522.uid.uidByte [2] == 0x90 && // Кодыг хар, 0x92, 0xAB, 0x90, 0x1c гэж хаана бичсэнийг харна уу? Тус бүрийг оруулна уу

0x -ийн дараа 2 оронтой хэсгийн mfrc522.uid.uidByte [3] == 0x1C) {//. Тухайлбал, иргэний үнэмлэхний хэсэгт ингэж бичжээ

lcd.clear (); // 3E, дараа нь 0x3E болгохын тулд 0x -ийн дараа 3E оруулна уу. Хэсэг бүрт үүнийг хий

lcd.setCursor (3, 0);

lcd.print ("Эцэст нь оруулна уу");

lcd.setCursor (1, 1);

lcd.print ("joystick нууц үг");

байхад (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);

байхад (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);

байхад (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);

байхад (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 ("relock to joystick");

servo.write (90);

байхад (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 зүйл бол би үүнийг зураг авахаасаа өмнө барьсан болохоор хайрцгийг хэрхэн яаж хийснээ харуулаагүй юм. Нөгөө нь servo хэсгийг эргэдэг хэсэг рүү шургуулахыг зөвлөж байна. Хэрэв ингэхгүй бол хэн нэгэн шүүгээг түгжээтэй байхад нь татаж аваад хэсгийг нь тайлж болно. Гэхдээ үүнийг шургуулахаасаа өмнө servo нь тодорхой хэмжээгээр эргэдэг тул хаана байрлуулахаа зөв олох хэрэгтэй. Эсвэл та үүнийг кодоор өөрчилж болно. Хэрэв зарим электроникууд инээдтэй аашилж байгаа бол та заримд нь 5V -ийг авах өөр аргыг хайж олохыг хүсч магадгүй юм. Миний хурууны хээ сканнер анивчихад дэлгэц бага зэрэг анивчиж, servo нь чимээ гаргах болно гэдгийг би анзаарсан. Серво хөдлөхөд дэлгэц нь бүдэгрэх болно. Төсөл танд таалагдсан гэж найдаж байна! Хэрэв танд асуулт байгаа бол тэдгээрийг сэтгэгдэл дээр үлдээнэ үү. Би зааварчилгаанд тийм ч их оролцдоггүй, гэхдээ би тэдэнд аль болох хурдан хариулах болно!

Зөвлөмж болгож буй: