Elektroniskā slēdzene priekš arduino nano. RFID bloķēšanas izveidošana, izmantojot Arduino

Šajā nodarbībā mēs iemācīsimies izveidot vienkāršu sistēmu, kas atbloķēs slēdzeni, izmantojot elektronisko atslēgu (Tag).

Nākotnē varat modificēt un paplašināt funkcionalitāti. Piemēram, pievienojiet funkciju "pievienot jaunas atslēgas un noņemt tās no atmiņas". Pamata gadījumā apsveriet vienkāršu piemēru, kad programmas kodā ir iepriekš iestatīts unikāls atslēgas identifikators.

Šajā apmācībā mums būs nepieciešams:

Lai īstenotu projektu, mums ir jāinstalē bibliotēkas:

2) Tagad jums ir jāpievieno skaņas signāls, kas dos signālu, ja atslēga tiek nospiesta un slēdzene tiek atvērta, un otru signālu, kad slēdzene ir aizvērta.

Mēs savienojam skaņas signālu šādā secībā:

Arduino Zummers
5V VCC
GND GND
tapa 5 IO

3) Servo tiks izmantots kā atbloķēšanas mehānisms. Var izvēlēties jebkuru servo, atkarībā no jums nepieciešamajiem izmēriem un spēkiem, ko servo rada. Servo ir 3 tapas:

Skaidrāk, jūs varat redzēt, kā mēs savienojām visus moduļus zemāk esošajā attēlā:

Tagad, ja viss ir savienots, varat pāriet uz programmēšanu.

Skice:

#iekļauts #iekļauts #iekļauts // "RFID" bibliotēka. #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); neparakstīts garš uidDec, uidDecTemp; // lai saglabātu etiķetes numuru decimālā formātā Servo servo; void setup () (Serial.begin (9600); Serial.println ("Gaida karti..."); SPI.begin (); // inicializācija SPI / Init SPI bus.mfrc522.PCD_Init (); // inicializācija MFRC522 / Init MFRC522 card.servo.attach (6); servo.write (0); // iestatiet servo uz slēgtu) Void loop () (// Atrodiet jaunu etiķeti, ja (! Mfrc522.PICC_IsNewCardPresent ()) (atgriezties ; ) // Atlasiet etiķeti, ja (! Mfrc522.PICC_ReadCardSerial ()) (return;) uidDec = 0; // Izsniedziet etiķetes sērijas numuru.for (baits i = 0; i< mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданому то серва открывает. { tone(5, 200, 500); // Делаем звуковой сигнал, Открытие servo.write(90); // Поворациваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.) delay(3000); // пауза 3 сек и механизм запирается. tone(5, 500, 500); // Делаем звуковой сигнал, Закрытие } servo.write(0); // устанавливаем серву в закрытое сосотояние }

Apskatīsim skici tuvāk:

Lai uzzinātu kartes UID (Tags), jums ir jāuzraksta šī skice arduino, jāsamontē iepriekš aprakstītā shēma un jāatver konsole (Serial port monitoring). Kad ievedat atzīmi RFID, konsolē tiks parādīts numurs

Iegūtais UID jāievada šādā rindā:

If (uidDec == 3763966293) // Salīdziniet etiķetes Uid, ja tas ir vienāds ar doto, tad servo atver vārstu.

Katrai kartei ir unikāls identifikators, un tā neatkārtojas. Tādējādi, atnesot karti, kuras identifikatoru esat iestatījis programmā, sistēma atvērs piekļuvi, izmantojot servo piedziņu.

Video:

Arduino ir labākā sistēma jebkuras aparatūras kopēšanai. Lielākā daļa ideju nebūtu iespējamas bez viņas. Jau sen ir bijusi tāda doma: izveidot arduino īpašu kombinācijas slēdzeni. Lai to atvērtu, jums ir nepieciešams turēt nospiestu noteiktu taustiņu. Šajā gadījumā slēdzenei nevajadzētu atvērties, pat ja jūs zināt vēlamo pogu. Lai to atvērtu, ir nepieciešams uzturēt noteiktus intervālus, izmantojot muskuļu atmiņu. Tāds noziedznieks nevar. Bet tas viss ir tikai teorija.

Lai to savāktu, jums jāizmanto īpaša taisnstūrveida impulsu ierīce, kā arī vairāki skaitītāji un kaudze. Bet gatavajai ierīcei būtu lieli izmēri un to būtu neērti lietot. Parasti šādas domas nedod mieru. Pirmais solis šī sapņa īstenošanā bija Arduino programmas izveide. Tā ir viņa, kas kalpos kā kombinācijas atslēga. Lai to atvērtu, jānospiež nevis viens taustiņš, bet vairāki un jādara tas vienlaikus. Gatavā shēma izskatās šādi:

Attēla kvalitāte nav tā labākā, bet tiek izveidoti savienojumi ar zemi, D3, D5, D7, D9 un D11.

Kods ir parādīts zemāk:

Const int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; baits a = 0; baits b = 0; baits c = 0; baits d = 0; neparakstīts ilgs laiks = 0; // neaizmirsti visu, ko milis () uzņem unsigned long temp = 0; // saglabāt neparakstītā garā baita taustiņā = (0, 0, 0, 0, 0, 0, 0, 0); // kodi pareizais baitu taustiņš = (1, 1, 1, 1, 0, 1, 0, 0); baita atslēgac = (1, 0, 1, 0, 1, 1, 1, 0); baits k = 0; void setup () (pinMode (ina, INPUT_PULLUP); // 3 ieejas savienotas ar pogām pinMode (inb, INPUT_PULLUP); pinMode (inc, INPUT_PULLUP); pinMode (ledPin, OUTPUT); // iebūvēta LED 13. pin pinMode (7, OUTPUT); pinMode (11, OUTPUT); digitalWrite (7, LOW); // nomainiet zemējumu digitalWrite (11, LOW); laiks = mili (); // nepieciešams laika noteikšanai) void mirgot divas reizes () ( // LED dubultā mirgošana digitalWrite (ledPin, HIGH); aizkave (100); digitalWrite (ledPin, LOW); aizkave (100); digitalWrite (ledPin, HIGH); aizkave (100); digitalWrite (ledPin, LOW) ; aizkave ( 200);) tukšuma cilpa () (ja (k == 0) (mirgo divreiz (); // prasīt kodu) if (k == 8) (digitalWrite (ledPin, HIGH); aizkave (3000); k = 0 ;) a = digitalRead (ina); // signāla līmeņi tiek nolasīti no pogām - nospiests / nav nospiests b = digitalRead (inb); c = digitalRead (inc); aizkave (100); // nākamais, ja - aizsardzība pret viltus pozitīviem, jums nav jāizmanto if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) (if (a == keya [k]) (ja (b == taustiņš [k]) (ja (c == taustiņš [k]) (k ++; )))) if (k == 1) (if (d == 0) (laiks = mili (); d ++;)) temp = mili (); temp = temp - laiks; ja (temp> 10000) (k = 0; d = 0; laiks = miličos ();))

Lai izvairītos no liekiem jautājumiem par kodu, daži punkti ir jāprecizē. Iestatīšanas funkcija tiek izmantota, lai piešķirtu portus. Nākamā funkcija ir Input_Pullup, kas nepieciešama, lai palielinātu tapas spriegumu par 5 V. Tas tiek darīts ar rezistoru. Sakarā ar to dažādi īssavienojumi nenotiks. Ērtības labad ieteicams izmantot divreiz mirgošanas funkciju. Kopumā, veidojot dažādas programmas, ir jāizmēģina citas funkcijas.

Pēc funkciju piešķiršanas signāls tiek nolasīts no portiem. Ja poga ir nospiesta, tas tiks norādīts ar skaitli 1, un ja ne - 2. Tālāk tiek analizētas visas vērtības. Piemēram, parādījās tāda kombinācija kā 0,1,1. Tas nozīmē, ka pirmais taustiņš ir nospiests, bet pārējie divi nav. Ja visas vērtības ir patiesas, tad arī nosacījums 8 ir patiess. Par to liecina izgaismotā gaismas diode uz priekšējā paneļa. Tālāk jums jāievada konkrēts kods, kas kalpos durvju atvēršanai.

Pēdējie koda elementi tiek izmantoti, lai atiestatītu skaitītāja vērtības. Šī funkcija tiek veikta, ja kopš pēdējās taustiņa nospiešanas ir pagājušas vairāk nekā 10 sekundes. Bez šī koda bija iespējams uzskaitīt visus iespējamos variantus, lai gan to ir diezgan daudz. Pēc šīs ierīces izveides tā ir jāpārbauda. Vairāk

Kādu dienu es skatījos Apbrīnojamo zirnekļcilvēku, un vienā ainā Pīters Pārkers attālināti atver un aizver durvis no sava klēpjdatora. Tiklīdz šo ieraudzīju, uzreiz sapratu, ka vajag arī tādu elektronisko slēdzeni uz ārdurvīm.

Nedaudz piekožot, saliku funkcionējošu viedās slēdzenes modeli. Šajā rakstā es jums pastāstīšu, kā es to saliku.

1. darbība: materiālu saraksts





Lai saliktu Arduino elektronisko slēdzeni, jums būs nepieciešami šādi materiāli:

Elektronika:

  • 5V sienas adapteris

Sastāvdaļas:

  • 6 skrūves fiksatoram
  • kartons
  • vadi

Rīki:

  • lodāmurs
  • līmes pistole
  • urbt
  • urbt
  • piloturbumu urbis
  • kancelejas nazis
  • dators ar Arduino IDE programmu

2. darbība: kā darbojas slēdzene

Ideja ir tāda, ka es varu atvērt vai aizvērt durvis bez atslēgas un pat neaizejot pie tām. Bet tā ir tikai pamatideja, jo var pievienot arī klauvējienu sensoru, lai tas reaģētu uz speciālu sitienu, vai arī var pievienot balss atpazīšanas sistēmu!

Ar fiksatoru savienotā servo svira aizvērsies (0 °) un atvērsies (60 °), izmantojot komandas, kas saņemtas, izmantojot Bluetooth moduli.

3. darbība: elektroinstalācijas shēma


Vispirms savienosim servo ar Arduino plati (ņemiet vērā, ka, lai gan man ir Arduino Nano dēlis, tapas izkārtojums ir tieši tāds pats kā Uno panelī).

  • servo brūnais vads ir iezemēts, mēs to savienojam ar zemējumu Arduino
  • sarkanais vads ir plus, mēs to savienojam ar 5V savienotāju Arduino
  • oranžs vads - servo avota izeja, mēs to savienojam ar Arduino 9. tapu

Es iesaku pārbaudīt servo, pirms turpināt montāžu. Lai to izdarītu, piemēros Arduino IDE programmā atlasiet Sweep. Pārliecinoties, ka servo darbojas, varam pieslēgt Bluetooth moduli. Jums ir jāpievieno Bluetooth moduļa rx tapa ar Arduino tx tapu un moduļa tx tapa ar Arduino rx tapu. Bet vēl nedariet to! Kad šie savienojumi ir pielodēti, jūs vairs nevarēsit augšupielādēt nevienu kodu Arduino, tāpēc vispirms lejupielādējiet visus savus kodus un tikai pēc tam lodējiet savienojumus.

Šeit ir moduļa un mikrokontrollera elektroinstalācijas shēma:

  • Rx modulis - Tx Arduino tāfele
  • Tx modulis - Rx dēļi
  • Moduļa Vcc (pozitīvs) - Arduino plates 3.3v
  • Zeme ir savienota ar zemi (zeme pret zemi)

Ja skaidrojums jums šķiet mulsinošs, ievērojiet pievienoto elektroinstalācijas shēmu.

4. darbība: pārbaudiet

Tagad, kad visas detaļas darbojas, pārliecināsimies, ka servo var pārvietot skrūvi. Pirms fiksatora uzstādīšanas uz durvīm es saliku testa gabalu, lai pārliecinātos, ka servo ir pietiekami jaudīgs. Sākumā man likās, ka mans servo ir vājš un skrūvei pieleju eļļas pilienu, pēc tam darbojās labi. Ir ļoti svarīgi, lai mehānisms labi slīdētu, pretējā gadījumā jūs riskējat tikt iesprostoti savā istabā.

5. solis: elektrisko komponentu korpuss



Nolēmu korpusā likt tikai kontrolieri un Bluetooth moduli, bet servo atstāt ārā. Lai to izdarītu, uz kartona gabala apvelkam Arduino Nano dēļa kontūru un pievienojam 1 cm atstarpi pa perimetru un izgriežam. Pēc tam mēs arī izgriezām vēl piecas korpusa puses. Priekšējā sienā jums būs jāizgriež caurums kontrollera strāvas vadam.

Korpusa sānu izmēri:

  • Apakšā - 7,5x4 cm
  • Vāks - 7,5x4 cm
  • Kreisā sānu siena - 7,5x4 cm
  • Labā sānu siena - 7,5x4 cm
  • Priekšējā siena - 4x4 cm (ar spraugu strāvas vadam)
  • Aizmugurējā siena - 4x4 cm

6. darbība: pieteikšanās

Lai vadītu kontrolieri, nepieciešams Android vai Windows sīkrīks ar iebūvētu Bluetooth. Nav bijusi iespēja notestēt aplikācijas darbību uz apple ierīcēm, varbūt būs nepieciešami kādi draiveri.

Esmu pārliecināts, ka dažiem no jums ir iespēja to pārbaudīt. Android ierīcēm lejupielādējiet Bluetooth termināļa lietotni, operētājsistēmai Windows lejupielādējiet TeraTerm. Pēc tam modulis ir jāpievieno viedtālrunim, nosaukumam jābūt linvor, parolei jābūt 0000 vai 1234. Tiklīdz ir izveidots savienojums pārī, atveriet instalēto lietojumprogrammu, ievadiet opcijas un izvēlieties "Izveidot savienojumu (nedroši)" . Jūsu viedtālrunis tagad ir Arduino sērijas monitors, kas nozīmē, ka varat sazināties ar kontrolieri.

Ievadot 0, durvis tiks aizvērtas un viedtālruņa ekrānā tiks parādīts ziņojums “Durvis aizvērtas”.
Ievadot 1, jūs redzēsiet, ka durvis ir atvērtas, un ekrānā tiks parādīts ziņojums "Durvis atvērtas".
Operētājsistēmā Windows process ir tāds pats, izņemot to, ka jums ir jāinstalē lietojumprogramma TeraTerm.

7. solis: uzstādiet skrūvi


Vispirms jums jāpievieno servo ar fiksatoru. Lai to izdarītu, nogrieziet aizbāžņus no piedziņas korpusa montāžas atverēm. Ja ievietojam servo, montāžas caurumiem jābūt vienā līmenī ar fiksatoru. Pēc tam servo svira jānovieto fiksatora slotā, kur atradās fiksatora rokturis. Pārbaudiet, kā korpusā pārvietojas slēdzene. Ja viss ir kārtībā, nostipriniet servo sviru ar līmi.

Tagad jums ir jāizurbj caurumi skrūvēm durvīs. Lai to izdarītu, piestipriniet aizbīdni pie durvīm un ar zīmuli atzīmējiet durvju vērtnes skrūvju caurumus. Atzīmētajās vietās izurbiet apmēram 2,5 cm dziļus skrūvju caurumus Piestipriniet aizbīdni un nostipriniet ar skrūvēm. Vēlreiz pārbaudiet servo.

8. darbība. Jauda


Lai pabeigtu ierīci, jums būs nepieciešams barošanas avots, vads un mini usb spraudnis, lai izveidotu savienojumu ar Arduino.
Savienojiet barošanas avota zemējuma tapu ar mini usb porta zemējuma tapu, pievienojiet sarkano vadu mini usb porta sarkanajam vadam, pēc tam vadu no slēdzenes līdz durvju eņģei un no turienes uz kontaktligzdu.

9. darbība: kods

#include Servo myservo; int poz = 0; int state; int karodziņš = 0; Void setup () (myservo.attach (9); Serial.begin (9600); myservo.write (60); aizkave (1000);) tukšuma cilpa () (ja (Serial.available ()> 0) (stāvoklis = Serial.read (); karodziņš = 0;) // ja stāvoklis ir "0", līdzstrāvas motors izslēgsies if (state == "0") (myservo.write (8); aizkave (1000); Serial. println ("Durvis ir aizslēgtas");) else if (state == "1") (myservo.write (55); aizkave (1000); Serial.println ("Durvis atslēgtas");)))

10. darbība: pabeigta Arduino bloķēšana

Izbaudiet savu tālvadības pults slēdzeni un neaizmirstiet "nejauši" ieslēgt savus draugus telpā.

Šodienas nodarbība par to, kā izmantot RFID lasītāju ar Arduino, lai izveidotu vienkāršu bloķēšanas sistēmu, vienkāršiem vārdiem sakot - RFID slēdzeni.

RFID (angļu radiofrekvenču identifikācija) ir objektu automātiskas identifikācijas metode, kurā ar radiosignālu palīdzību tiek nolasīti vai ierakstīti tā sauktajos transponderos jeb RFID tagos glabātie dati. Jebkura RFID sistēma sastāv no lasītāja (lasītāja, lasītāja vai pieprasītāja) un transpondera (pazīstams arī kā RFID tags, dažreiz tiek lietots arī termins RFID tag).

Šajā apmācībā tiks izmantots RFID tags no Arduino. Ierīce nolasa katra RFID taga unikālo identifikatoru (UID), ko ievietojam blakus lasītājam, un parāda to OLED displejā. Ja taga UID ir vienāds ar iepriekš definēto vērtību, kas tiek saglabāta Arduino atmiņā, tad displejā redzēsim ziņojumu “Unlocked”. Ja unikālais identifikators nav vienāds ar iepriekš noteikto vērtību, ziņojums "Atbloķēts" neparādīsies - skatiet tālāk redzamo fotoattēlu.

Slēdzene ir aizvērta

Slēdzene ir atvērta

Sīkāka informācija, kas nepieciešama, lai izveidotu šo projektu:

  • RFID lasītājs RC522
  • OLED displejs
  • Maizes dēlis
  • Vadi

Papildu informācija:

  • Akumulators (powerbank)

Projekta komponentu kopējās izmaksas bija aptuveni 15 USD.

2. darbība: RFID lasītājs RC522

Katram RFID marķējumam ir maza mikroshēma (attēlā ir balta karte). Ja pavērsiet lukturīti pret šo RFID karti, jūs varat redzēt nelielu mikroshēmu un spoli, kas to ieskauj. Šai mikroshēmai nav akumulatora, lai radītu enerģiju. Tas saņem jaudu no lasītāja bezvadu režīmā, izmantojot šo lielo spoli. Šādu RFID karti var nolasīt līdz pat 20 mm attālumā.

Tāda pati mikroshēma ir RFID atslēgas piekariņa tagos.

Katram RFID marķējumam ir unikāls numurs, kas to identificē. Šis ir UID, kas tiek rādīts OLED displejā. Izņemot šo UID, katrs tags var saglabāt datus. Šāda veida kartē var saglabāt līdz 1000 datu. Iespaidīgi, vai ne? Šī funkcija šodien netiks izmantota. Mūsdienās viss, kas interesē, ir noteiktas kartes identificēšana pēc tās UID. RFID lasītāja un šo divu RFID karšu izmaksas ir aptuveni 4 ASV dolāri.

3. darbība: OLED displejs

Šajā apmācībā tiek izmantots 0,96 "128x64 I2C OLED monitors.

Šis ir ļoti labs displejs lietošanai ar Arduino. Tas ir OLED displejs, un tas nozīmē, ka tam ir zems enerģijas patēriņš. Šī displeja enerģijas patēriņš ir aptuveni 10-20mA, un tas ir atkarīgs no pikseļu skaita.

Displeja izšķirtspēja ir 128x64 pikseļi, un tas ir mazs. Ir divas displeja opcijas. Viens no tiem ir vienkrāsains, bet otrs, tāpat kā apmācībā izmantotais, var attēlot divas krāsas: dzeltenu un zilu. Ekrāna augšdaļa var būt tikai dzeltena, bet apakšdaļa - zila.

Šis OLED displejs ir ļoti spilgts, un tam ir lieliska un ļoti jauka bibliotēka, ko Adafruit ir izstrādājis šim displejam. Papildus tam displejā tiek izmantots I2C interfeiss, tāpēc savienojuma izveide ar Arduino ir neticami vienkārša.

Jums ir jāpievieno tikai divi vadi, izņemot Vcc un GND. Ja esat iesācējs Arduino un vēlaties savā projektā izmantot lētu un vienkāršu displeju, sāciet šeit.

4. darbība: savienojiet visas detaļas

Saziņa ar Arduino Uno plati ir ļoti vienkārša. Vispirms pievienojiet strāvas padevi gan lasītājam, gan displejam.

Esiet piesardzīgs, jo RFID lasītājam jābūt savienotam ar Arduino Uno 3,3 V izeju, pretējā gadījumā tas tiks sabojāts.

Tā kā displejs var darboties arī ar 3,3 V spriegumu, mēs savienojam VCC no abiem moduļiem ar maizes paneļa pozitīvo sliedi. Pēc tam šī kopne tiek savienota ar 3,3 V izeju no Arduino Uno. Tad mēs savienojam abus zemējumus (GND) ar maizes paneļa zemējuma kopni. Pēc tam mēs savienojam maizes paneļa GND kopni ar Arduino GND.

OLED displejs → Arduino

SCL → Analogā tapa 5

SDA → Analogā tapa 4

RFID lasītājs → Arduino

RST → Digitālā tapa 9

IRQ → Nav savienots

MISO → digitālā tapa 12

MOSI → digitālā tapa 11

SCK → digitālā tapa 13

SDA → Digital Pin 10

RFID lasītāja modulis izmanto SPI saskarni, lai sazinātos ar Arduino. Tāpēc mēs izmantosim aparatūras SPI tapas no Arduino UNO.

RST kontakts iet uz digitālo kontaktu 9. IRQ kontakts paliek atvienots. MISO kontakts iet uz digitālo tapu 12. MOSI kontakts iet uz digitālo tapu 11. SCK kontakts iet uz digitālo tapu 13, un visbeidzot SDA kontakts nonāk digitālajā tapā 10. Tas arī viss.

Pievienots RFID lasītājs. Tagad mums ir jāsavieno OLED displejs ar Arduino, izmantojot I2C interfeisu. Tātad displeja SCL kontakts iet uz Pin 5 analogo tapu un SDA displejā uz analogo Pin 4. Ja tagad ieslēdzam projektu un novietojam RFID karti blakus lasītājam, mēs varam redzēt, ka projekts ir strādā labi.

5. darbība: projekta kods

Lai projekta kods tiktu apkopots, mums ir jāiekļauj dažas bibliotēkas. Pirmkārt, mums ir nepieciešama MFRC522 Rfid bibliotēka.

Lai to instalētu, dodieties uz Skice -> Iekļaut bibliotēkas -> Pārvaldīt bibliotēkas(Bibliotēkas vadība). Atrodiet MFRC522 un instalējiet to.

Kartēšanai mums ir nepieciešama arī Adafruit SSD1306 bibliotēka un Adafruit GFX bibliotēka.

Instalējiet abas bibliotēkas. Adafruit SSD1306 bibliotēkai ir nepieciešamas nelielas izmaiņas. Dodieties uz mapi Arduino -> Bibliotēkas, atveriet mapi Adafruit SSD1306 un rediģējiet bibliotēku Adafruit_SSD1306.h... Komentējiet 70. rindiņu un neatņemiet komentāru 69. rindiņu, jo displeja izšķirtspēja ir 128x64.

Pirmkārt, mēs deklarējam RFID taga vērtību, kas Arduino ir jāatpazīst. Šis ir veselu skaitļu masīvs:

Int kods = (69,141,8,136); // UID

Pēc tam inicializējam RFID lasītāju un parāda:

Rfid.PCD_Init (); display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

Pēc tam cilpas funkcijā mēs pārbaudām lasītāja tagu ik pēc 100 ms.

Ja uz lasītāja ir atzīme, mēs nolasām tā UID un izdrukājam to displejā. Pēc tam mēs salīdzinām tikko nolasītā taga UID ar koda mainīgajā saglabāto vērtību. Ja vērtības ir vienādas, mēs izdrukājam ziņojumu UNLOCK, pretējā gadījumā mēs nerādīsim šo ziņojumu.

Ja (atbilst) (Serial.println ("\ nEs zinu šo karti!"); PrintUnlockMessage ();) else (Serial.println ("\ nNezināma karte");)

Protams, varat mainīt šo kodu, lai saglabātu vairāk nekā 1 UID vērtību, lai projekts atpazītu vairāk RFID tagu. Šis ir tikai piemērs.

Projekta kods:

#iekļauts #iekļauts #iekļauts #iekļauts #define OLED_RESET 4 Adafruit_SSD1306 displejs (OLED_RESET); #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid (SS_PIN, RST_PIN); // Klases MFRC522 gadījums :: MIFARE_Key atslēga; int kods = (69,141,8,136); // Šis ir saglabātais UID int codeRead = 0; String uidString; void setup () (Serial.begin (9600); SPI.begin (); // Init SPI kopni rfid.PCD_Init (); // Init MFRC522 display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // inicializē ar I2C adr 0x3D (128x64) // Notīrīt buffer.display.clearDisplay (); display.display (); display.setTextColor (BALTS); // vai MELNS; display.setTextSize (2); display.setCursor (10,0); display.print ("RFID Lock"); displejs.displejs (); ) Void loop () (if (rfid.PICC_IsNewCardPresent ()) (lasīšanas RFID ();) aizkave (100);) anulēt readRFID () (rfid.PICC_ReadCardSerial (); Serial.print (F ("\ nPICC tips:")) ); MFRC522 :: PICC_Type piccType = rfid.PICC_GetType (rfid.uid.sak); Serial.println (rfid.PICC_GetTypeName (piccType)); // Pārbaudiet, vai klasiskā MIFARE tipa PICC! : PICC_TYPE_MIFARE_1K && piccType! = MFRC522 :: PICC_TYPE_MIFARE_4K) (Serial.println (F ("Jūsu tags nav MIFARE Classic.")); return;) clearUID (); atgriezties;) clearUID (); Skenētie PICC "s UID:"); printDec (rfid.uid.uidByte, rfid.uid.size); uidString = Virkne (rfid.uid.uidByte) + "" + Virkne (rfid.uid.uidByte) + "" + Virkne (rfid. uid.uidByte) + "" + Virkne (rfid.uid.uidByte); printUID (); int i = 0; Būla atbilstība = true; while (i

6. solis: gala rezultāts

Kā redzams no nodarbības – par nelielu naudu saviem projektiem var pievienot RFID lasītāju. Izmantojot šo lasītāju, varat ērti izveidot drošības sistēmu vai izveidot, piemēram, interesantākus projektus, lai dati no USB diska tiktu nolasīti tikai pēc atbloķēšanas.

Šis projekts ir modulārs, t.i. jūs varat savienot / atvienot dažādus elementus un iegūt dažādu funkcionalitāti. Iepriekš redzamajos attēlos ir parādīta opcija ar pilnu funkcionalitāti, proti:

  • Bloķēšanas mehānisms... Kalpo durvju ATVĒRŠANAI un AIZVĒRŠANAI. Šis projekts aptver trīs dažādu mehānismu izmantošanu:
    • Servo. Ir lielie, ir mazie. Ļoti kompakts, un ar smagu skrūvi ir lieliska iespēja
    • Automašīnas durvju slēdzenes elektriskā piedziņa. Liela un spēcīga lieta, bet ēd vienkārši neprātīgas straumes
    • Solenoīda aizbīdnis. Labs variants, jo pats slamās

    Programmaparatūras iestatījumos varat izvēlēties jebkuru no trim veidiem (iestatījums slēdzenes_veids)

  • Poga iekšā... Paredzēts durvju ATVĒRŠANAI un AIZVĒRŠANAI no iekšpuses. Var novietot uz durvju roktura (plaukstas vai pirksta pusē), uz pašām durvīm vai uz aplodas
  • Poga ārpusē... Kalpo durvju AIZVĒRŠANAI, kā arī PAMODINĀŠANAI no enerģijas taupīšanas. Var novietot uz durvju roktura (plaukstas vai pirksta pusē), uz pašām durvīm vai uz aplodas
  • Beigu pietura lai aizvērtu durvis. Nodrošina automātisku slēdzenes aizvēršanu, kad durvis ir aizvērtas. Tie var būt:
    • Takts poga
    • Zāles sensors + magnēts uz pašām durvīm
    • Niedru slēdzis + magnēts uz pašām durvīm
  • Noslēpums piekļūt atiestatīšanas pogai... Nodrošina paroles atiestatīšanu / jaunas paroles ievadīšanu / jaunas atslēgas / kombinācijas iegaumēšanu utt. Var būt paslēpts kaut kur korpusā
  • Gaismas diode norādīt darbu. Tiek izmantotas RGB LED, sarkanas un zaļas krāsas (jauktas, tās iegūst dzeltenu):
    • Iedegas zaļā krāsā - slēdzene ir ATVĒRTA. Apdeg, lai neaizmirstu aizvērt durvis
    • Dzeltens — sistēma ir pamodusies un gaida paroles ievadi
    • Mirgo sarkanā krāsā - akumulators ir izlādējies

Jebkuru no šiem elementiem var izslēgt no sistēmas:

  • Mēs noņemam gala slēdzi. Programmaparatūrā iestatījumos mēs to arī izslēdzam (iestatījums astes_poga). Tagad, lai aizvērtu slēdzeni, jums jānospiež poga
  • Mēs noņemam ārējo pogu. Programmaparatūras iestatījumos mēs to arī atspējojam (iestatījums wake_button). Tagad sistēma nav jāmodina, tā mostas pati (enerģijas patēriņš ir nedaudz lielāks). Un arī mums vairs nav aizvēršanas pogas durvju priekšpusē, un mums ir nepieciešams gala slēdzis. Vai nu slēdzene ir heck
  • Mēs noņemam iekšējo pogu. Šī opcija ir piemērota skapjiem un seifiem. Iestatījumos nekas nav jāmaina
  • Mēs noņemam LED. Iestatījumos nekas nav jāmaina
  • Piekļuves atiestatīšanas pogu var atlodēt pēc pirmās lietošanas reizes, vai arī varat pārrakstīt kodu sev
  • Durvis aizvērtas, nospiestas ĀRĀ - mosties, gaidi paroli / RFID tagu / elektronisko atslēgu / pirkstu nospiedumu
  • Durvis ir aizvērtas, sistēma ir pamodusies, gaidot paroles ievadīšanu. Laiku var regulēt (iestatījums miega laiks)
  • Durvis ir aizvērtas, ievadīta parole/birka/atslēga utt. - atvērts
  • Durvis aizvērtas, nospiests IEKŠĒJĀ - vaļā
  • Durvis atvērtas, nospiestas ĀRĀ – aizvērt
  • Durvis vaļā, nospiests IEKŠĀ - aizvērt
  • Durvis ir vaļā, BEIGAS nospiests - aizver

Slēdzene nodrošina akumulatora darbību zema enerģijas taupīšanas režīmā (ieslēgt, izslēgt: iestatījums miega_iespējot), proti:

  • Pamodieties ik pēc dažām sekundēm, sekojiet NOTIKUMAM (pēc izvēles, ja ārpusē nav pogas. Varat to iespējot iestatījumos wake_button)
  • Ik pēc dažām minūtēm uzraugiet Akum spriegumu (ieslēgšanas / izslēgšanas iestatījums akumulatora_monitors)
  • Ja Akum ir izlādējies (spriegums ir iestatīts iestatījumā bat_low):
    • atveriet durvis (pēc izvēles, var konfigurēt programmaparatūrā open_bat_low)
    • aizliegt turpmāku atvēršanu un aizvēršanu
    • kad pogas ir nospiestas, mirgo sarkanā gaismas diode
    • pārtrauciet PASĀKUMA uzraudzību (t.i., ievadiet paroli / tagu utt.)

Kad sistēma ir nomodā, nospiediet paroles maiņas pogu (slēptā poga). Mēs iekrītam paroles maiņas režīms:
Ievadiet paroli no cipariem ( MAKSIMĀLS 10 CIPARI !!!)

  • Nospiežot *, parole tiek saglabāta atmiņā un sistēma iziet no paroles maiņas
  • Nospiežot #, parole tiek atiestatīta (varat to ievadīt vēlreiz)
  • Ja neko nenospiedīsit 10 sekundes, mēs automātiski iziesim no paroles maiņas režīma, parole paliks veca

Kad sistēma ir nomodā (pamodās ar pogām vai miega režīms ir atspējots), nospiediet *, lai pārietu uz paroles ievades režīmu
Ja sistēma guļ un periodiski pamostas, lai pārbaudītu NOTIKUMU, nospiediet * un turiet, līdz iedegas sarkanā gaismas diode.
Paroles ievades režīms:

  • Paroles apstrāde tiek veikta tā, ka pareizā parole tiek skaitīta tikai tad, kad ir ievadīta pareizā ciparu secība, tas ir, ja parole ir 345, tad var ievadīt jebkurus ciparus, līdz parādās secība 345, t.i. 30984570345 atvērs slēdzeni, kad tā beigsies 345.
  • Ja parole ir ievadīta pareizi, durvis tiks atvērtas
  • Ja neko nenospiežat, pēc 10 sekundēm sistēma atgriezīsies normālā (gaidīšanas) režīmā
  • Nospiežot #, mēs nekavējoties iziesim no paroles ievades režīma
  • Ja paroles ievades režīmā nospiedīsiet slepeno pogu paroles maiņai, mēs arī no tās iziesim