Էլեկտրոնային կողպեք arduino nano-ի վրա: RFID կողպեքի պատրաստում Arduino-ի միջոցով

Այս դասում մենք կսովորենք, թե ինչպես պատրաստել պարզ համակարգ, որը կբացի կողպեքը էլեկտրոնային բանալիով (Label):

Ապագայում դուք կարող եք կատարելագործել և ընդլայնել ֆունկցիոնալությունը: Օրինակ՝ ավելացրեք «նոր ստեղների ավելացում և հիշողությունից հանում» գործառույթը։ Հիմնական դեպքում դիտարկենք մի պարզ օրինակ, երբ ծրագրի կոդում նախապես նշված է եզակի բանալին նույնացուցիչը:

Այս ձեռնարկում մեզ անհրաժեշտ կլինի.

Նախագիծն իրականացնելու համար մեզ անհրաժեշտ է տեղադրել գրադարանները.

2) Այժմ դուք պետք է միացնեք Buzzer-ը, որը ազդանշան կտա, եթե բանալին աշխատի, և կողպեքը բացվի, և երկրորդ ազդանշանը, երբ կողպեքը փակվի:

Մենք միացնում ենք ազդանշանը հետևյալ հաջորդականությամբ.

Արդուինո Բուզեր
5 Վ VCC
GND GND
քորոց 5 IO

3) Սերվոն կօգտագործվի որպես ապակողպման մեխանիզմ: Ցանկացած սերվոն կարող է ընտրվել՝ կախված ձեր պահանջվող չափերից և այն ուժերից, որոնք ստեղծում է սերվոն: Սերվոն ունի 3 կապ.

Ավելի պարզ, դուք կարող եք տեսնել, թե ինչպես ենք մենք միացրել բոլոր մոդուլները ստորև նկարում.

Այժմ, եթե ամեն ինչ միացված է, ապա կարող եք անցնել ծրագրավորման:

Էսքիզ:

#ներառում #ներառում #ներառում // «RFID» գրադարան. #սահմանել SS_PIN 10 #սահմանել RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); անստորագիր երկար uidDec, uidDecTemp; // պիտակի համարը տասնորդական ձևաչափով պահելու համար Servo servo; void setup() ( Serial.begin (9600); Serial.println ("Սպասում է քարտին..."); SPI.begin(); // SPI սկզբնավորում / Init SPI ավտոբուս. mfrc522.PCD_Init(); // սկզբնավորում MFRC522 / Մուտքագրեք MFRC522 card.servo.attach(6); servo.write(0); // դրել servo-ն փակ վիճակում) void loop() ( // Որոնել նոր պիտակ, եթե (! mfrc522.PICC_IsNewCardPresent()) ( վերադարձ; ) // Ընտրելով պիտակ, եթե (! mfrc522.PICC_ReadCardSerial()) ( return; ) uidDec = 0; // Տեգի սերիական համարի թողարկում (բայթ 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); // устанавливаем серву в закрытое сосотояние }

Եկեք ավելի մանրամասն վերլուծենք էսքիզը.

Քարտի UID-ը (Պիտակները) պարզելու համար հարկավոր է գրել այս ուրվագիծը arduino-ում, հավաքել վերը նկարագրված սխեման և բացել Վահանակը (Սերիական պորտի մոնիտորինգ): Երբ պիտակը բերում եք RFID-ին, վահանակում կցուցադրվի համար

Ստացված UID-ը պետք է մուտքագրվի հետևյալ տողում.

Եթե ​​(uidDec == 3763966293) // Համեմատե՛ք պիտակի Uid-ը, եթե այն հավասար է նշվածին, ապա սերվոն բացում է փականը։

Յուրաքանչյուր քարտի համար այս նույնացուցիչը եզակի է և չի կրկնվում: Այսպիսով, երբ դուք ներկայացնում եք քարտ, որի ID-ն դուք սահմանել եք ծրագրում, համակարգը կբացի մուտքը սերվոյի միջոցով:

Տեսանյութ.

Arduino-ն ցանկացած տեսակի սարքավորում պատճենելու լավագույն համակարգն է: Գաղափարների մեծ մասը հնարավոր չէր լինի առանց նրա: Նման գաղափար վաղուց կար՝ ստեղծել հատուկ համակցված կողպեք arduino-ում: Այն բացելու համար հարկավոր է սեղմած պահել որոշակի ստեղնը: Այս դեպքում կողպեքը չպետք է բացվի, նույնիսկ եթե դուք գիտեք ճիշտ կոճակը: Այն բացելու համար դուք պետք է պահպանեք որոշակի ընդմիջումներ՝ օգտագործելով մկանային հիշողությունը: Հանցագործը չի կարող նման բան անել։ Բայց այս ամենը միայն տեսություն է:

Այն հավաքելու համար հարկավոր է օգտագործել ուղղանկյուն իմպուլսների հատուկ սարք, ինչպես նաև մի քանի հաշվիչներ և կույտ: Բայց պատրաստի սարքը կունենա մեծ ընդհանուր չափեր և անհարմար կլիներ օգտագործել: Նման մտքերը, որպես կանոն, հանգիստ չեն տալիս։ Երազանքն իրականություն դարձնելու առաջին քայլը Arduino-ի համար ծրագրի ստեղծումն էր։ Այն կծառայի որպես համակցված կողպեք: Այն բացելու համար պետք է սեղմել ոչ թե մեկ, այլ մի քանի ստեղն և դա անել միաժամանակ։ Ավարտված միացումն ունի հետևյալ տեսքը.

Նկարի որակը լավագույնը չէ, բայց միացումը կատարվում է գետնին, D3, D5, D7, D9 և D11:

Կոդը ներկայացված է ստորև.

Const intina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; բայթ a = 0; բայթ b = 0; բայթ c = 0; բայթ d = 0; չստորագրված երկար ժամանակ = 0; //մի մոռացեք որևէ բան, որը վերցնում է millis() unsigned long temp = 0 արժեքը; //պահել անստորագիր երկար բայթ keya = ( 0, 0, 0, 0, 0, 0, 0, 0); //կոդերը իրականում բայթ ստեղնաշար = ( 1, 1, 1, 1, 0, 1, 0, 0); բայթ keyc = ( 1, 0, 1, 0, 1, 1, 1, 0); բայթ k = 0; void setup() (pinMode(ina, INPUT_PULLUP); //3 մուտքեր միացված են կոճակներին pinMode(inb, INPUT_PULLUP); pinMode(inc, INPUT_PULLUP); pinMode(ledPin, OUTPUT); //ներկառուցված LED 13 pinMode-ի վրա (7, OUTPUT); pinMode (11, OUTPUT); digitalWrite (7, LOW); //փոխարինել գրունտային digitalWrite (11, LOW); ժամանակ = millis (); //անհրաժեշտ է ժամանակի համար ) void blinktwice () ( // LED-ի կրկնակի թարթում DigitalWrite (ledPin, HIGH); ուշացում (100); digitalWrite (ledPin, LOW); ուշացում (100); digitalWrite (ledPin, HIGH); ուշացում (100); digitalWrite (ledPin, LOW); հետաձգում ( 200); ) void loop() (if(k==0) (blinktwice(); // հուշում է մուտքագրել կոդը) if (k == 8) ( digitalWrite (ledPin, HIGH); ուշացում (3000); k = 0 ;) a = digitalRead(ina); //կարդա ազդանշանի մակարդակները կոճակներից - սեղմված/չսեղմված b = digitalRead(inb); c = digitalRead(inc); delay(100); //հաջորդ, եթե - պաշտպանություն դեմ կեղծ դրական, if((digitalRead(ina) == a)&&(digitalRead(inb) ==b)&&(digitalRead(inc)==c)) ( if (a == keya[k]) ( if (b) == keyb[k]) (եթե (c == keyc[k]) (k++; ) ) ) ) եթե (k==1) (եթե (d ==0) (ժամանակ = միլիս (); d++; ) ) ջերմաստիճան = միլիս(); temp = temp - ժամանակ; եթե (ջերմաստիճանը > 10000) ( k= 0; d=0; ժամանակ = միլիս (); ) )

Օրենսգրքի հետ կապված ավելորդ հարցերից խուսափելու համար պետք է հստակեցնել որոշ կետեր։ Setup ֆունկցիան օգտագործվում է նավահանգիստներ նշանակելու համար: Հաջորդ գործառույթը Input_Pullup-ն է, որն անհրաժեշտ է փին լարումը 5 Վ-ով բարձրացնելու համար: Դա արվում է ռեզիստորի միջոցով: Դրա շնորհիվ տարբեր կարճ միացումներ չեն առաջանա: Ավելի մեծ հարմարության համար խորհուրդ է տրվում օգտագործել blinktwice ֆունկցիան: Ընդհանրապես, տարբեր ծրագրեր ստեղծելիս պետք է փորձել այլ գործառույթներ։

Ֆունկցիաներ նշանակելուց հետո ազդանշանը կարդացվում է նավահանգիստներից: Եթե ​​կոճակը սեղմված է, ապա դա կնշվի 1 թվով, իսկ եթե ոչ՝ 2: Հաջորդը, բոլոր արժեքները վերլուծվում են: Օրինակ, կա այնպիսի համակցություն, ինչպիսին է 0,1,1: Սա նշանակում է, որ առաջին ստեղնը սեղմված է, իսկ մյուս երկուսը՝ ոչ: Եթե ​​բոլոր արժեքները ճշմարիտ են, ապա 8-րդ պայմանը նույնպես ճշմարիտ է: Սա ցույց է տալիս առջևի վահանակի լուսադիոդը: Հաջորդը, դուք պետք է մուտքագրեք հատուկ ծածկագիր, որը կծառայի դուռը բացելու համար:

Կոդի վերջին տարրերն օգտագործվում են հաշվիչի արժեքները վերականգնելու համար: Այս գործառույթն իրականացվում է, եթե վերջին ստեղնը սեղմելուց հետո անցել է ավելի քան 10 վայրկյան: Առանց այս կոդի հնարավոր էր դասավորել բոլոր հնարավոր տարբերակները, թեև դրանք բավականին շատ են։ Այս սարքը ստեղծելուց հետո դուք պետք է փորձարկեք այն։ Ավելին

Օրերս ես նորից դիտում էի The Amazing Spider-Man-ը, և մի տեսարանում Փիթեր Փարքերը հեռակա կարգով բացում և փակում է դուռը իր նոութբուքից: Սա տեսնելուն պես անմիջապես հասկացա, որ ինձ անհրաժեշտ է նման էլեկտրոնային կողպեք մուտքի դռան վրա։

Մի փոքր ջութակ անելուց հետո ես հավաքեցի խելացի կողպեքի աշխատող մոդելը։ Այս հոդվածում ես ձեզ կասեմ, թե ինչպես եմ այն ​​հավաքել:

Քայլ 1. Նյութերի ցանկ





Arduino-ում էլեկտրոնային կողպեք հավաքելու համար ձեզ հարկավոր են հետևյալ նյութերը.

Էլեկտրոնիկա:

  • 5V պատի ադապտեր

Բաղադրիչներ:

  • 6 պտուտակ սողնակի համար
  • ստվարաթուղթ
  • մետաղալարեր

Գործիքներ:

  • զոդման երկաթ
  • սոսինձ ատրճանակ
  • փորվածք
  • փորվածք
  • փորձնական անցք փորվածք
  • գրենական պիտույքների դանակ
  • համակարգիչ Arduino IDE-ով

Քայլ 2. Ինչպես է աշխատում կողպեքը

Գաղափարն այն է, որ ես կարող եմ բացել կամ փակել դուռը առանց բանալի, և նույնիսկ առանց դրա մոտ գնալու: Բայց դա ընդամենը հիմնական գաղափարն է, քանի որ դուք կարող եք ավելացնել թակոցային սենսոր՝ հատուկ թակոցին արձագանքելու համար, կամ կարող եք ավելացնել ձայնի ճանաչման համակարգ:

Պտուտակին միացված սերվո լծակը կփակի (0°) և կբացի (60°) պտուտակը՝ օգտագործելով Bluetooth մոդուլի միջոցով ստացված հրամանները:

Քայլ 3. Միացման դիագրամ


Եկեք նախ միացնենք servo-ն Arduino տախտակին (նկատի ունեցեք, որ թեև ես օգտագործում եմ Arduino Nano տախտակ, բայց pinout-ը ճիշտ նույնն է Uno տախտակի վրա):

  • servo-ի շագանակագույն մետաղալարը հիմք է, մենք այն միացնում ենք գետնին Arduino-ի վրա
  • կարմիր լարը դրական է, մենք այն միացնում ենք Arduino-ի 5V միակցիչին
  • նարնջագույն մետաղալար - սերվո աղբյուրի ելք, միացրեք այն Arduino-ի 9-րդ կապին

Խորհուրդ եմ տալիս փորձարկել սերվոն նախքան հավաքումը շարունակելը: Դա անելու համար Arduino IDE ծրագրում ընտրեք Sweep օրինակներում։ Համոզվելով, որ սերվոն աշխատում է, մենք կարող ենք միացնել Bluetooth մոդուլը։ Դուք պետք է միացնեք Bluetooth մոդուլի rx փին Arduino-ի tx փին, իսկ մոդուլի tx փինը՝ Arduino-ի rx փին: Բայց դեռ մի արեք դա: Երբ այս կապերը զոդվեն, դուք չեք կարողանա որևէ կոդ վերբեռնել Arduino-ում, այնպես որ նախ վերբեռնեք ձեր բոլոր կոդերը և միայն այնուհետև միացրեք կապերը:

Ահա մոդուլի և միկրոկոնտրոլերի միացման դիագրամը.

  • Rx մոդուլ - Tx Arduino տախտակ
  • Tx մոդուլ - Rx տախտակ
  • Մոդուլի Vcc (դրական տերմինալ) - Arduino տախտակի 3,3 վ
  • Գետնին միացում գետնին (գետնից գետնին)

Եթե ​​բացատրությունը ձեզ համար պարզ չէ, հետևեք տրված էլեկտրագծերի գծապատկերին:

Քայլ 4. Փորձարկում

Այժմ, երբ մենք ունենք բոլոր աշխատանքային մասերը, եկեք համոզվենք, որ սերվոն կարող է շարժել սողնակը: Նախքան սողնակը դռան վրա տեղադրելը, ես հավաքեցի փորձնական նմուշ՝ համոզվելու համար, որ սերվոն բավականաչափ ամուր է: Սկզբում ինձ թվաց, որ իմ սերվոն թույլ է, և ես մի կաթիլ յուղ ավելացրի սողնակին, հետո ամեն ինչ լավ աշխատեց։ Շատ կարևոր է, որ մեխանիզմը լավ սահի, հակառակ դեպքում դուք ռիսկի եք դիմում փակվել ձեր սենյակում:

Քայլ 5. Էլեկտրական բաղադրիչների պարիսպ



Որոշեցի միայն կարգավորիչն ու Bluetooth մոդուլը դնել պատյանի մեջ, իսկ սերվոն թողնել դրսում։ Դա անելու համար ստվարաթղթի վրա գծեք Arduino Nano տախտակի ուրվագիծը և պարագծի շուրջը ավելացրեք 1 սմ տարածություն և կտրեք այն: Դրանից հետո մենք կտրեցինք նաև մարմնի ևս հինգ կողմ։ Առջևի պատում ձեզ հարկավոր է անցք կտրել կարգավորիչի հոսանքի լարը:

Գործի կողմերի չափերը.

  • Ներքևը՝ 7,5x4 սմ
  • Կափարիչ - 7,5x4 սմ
  • Ձախ կողմի պատ - 7,5x4 սմ
  • Աջ կողմի պատ - 7,5x4 սմ
  • Առջևի պատ - 4x4 սմ (սնուցման մալուխի բնիկով)
  • Հետևի պատ - 4x4 սմ

Քայլ 6. Դիմում

Կարգավորիչը կառավարելու համար ձեզ անհրաժեշտ է Android կամ Windows գաջեթ՝ ներկառուցված Bluetooth-ով: Apple սարքերի վրա հավելվածը փորձարկելու հնարավորություն չեմ ունեցել, միգուցե որոշ դրայվերներ պետք լինեն։

Համոզված եմ, որ ձեզանից ոմանք հնարավորություն ունեն ստուգելու այն: Android-ի համար ներբեռնեք Bluetooth Terminal հավելվածը, Windows-ի համար՝ TeraTerm: Այնուհետև դուք պետք է միացնեք մոդուլը ձեր սմարթֆոնին, անունը պետք է լինի linvor, գաղտնաբառը՝ 0000 կամ 1234: Զուգավորումը հաստատելուց հետո բացեք տեղադրված հավելվածը, մուտքագրեք ընտրանքները և ընտրեք «Հաստատել կապը (անապահով)»: Ձեր սմարթֆոնն այժմ Arduino սերիական մոնիտորն է, ինչը նշանակում է, որ դուք կարող եք շփվել կարգավորիչի հետ:

Եթե ​​մուտքագրեք 0, դուռը կփակվի, և սմարթֆոնի էկրանին կցուցադրվի «Դուռը փակ է» հաղորդագրությունը:
Եթե ​​մուտքագրեք 1, կտեսնեք, որ դուռը բաց է, և էկրանին կհայտնվի «Դուռը բաց» հաղորդագրությունը:
Windows-ում գործընթացը նույնն է, միայն թե պետք է տեղադրել TeraTerm հավելվածը։

Քայլ 7. ամրացրեք պտուտակը


Նախ անհրաժեշտ է սերվոն միացնել սողնակին: Դա անելու համար կտրեք խրոցակները շարժիչի պատյանների մոնտաժային անցքերից: Եթե ​​մենք դնում ենք servo, ապա մոնտաժային անցքերը պետք է հարթվեն սողնակով: Այնուհետև դուք պետք է տեղադրեք սերվո լծակը սողնակի բնիկում, որտեղ գտնվում էր սողնակը: Ստուգեք, թե ինչպես է կողպեքը շարժվում պատյանում: Եթե ​​ամեն ինչ կարգին է, ամրացրեք սերվոյի լծակը սոսինձով:

Այժմ դուք պետք է դռան վրա փորձնական անցքեր փորեք պտուտակների համար: Դա անելու համար ամրացրեք սողնակը դռան վրա և մատիտով նշեք դռան տերևի վրա պտուտակների անցքերը: Նշված տեղերում պտուտակների համար անցքեր բացեք մոտավորապես 2,5 սմ խորությամբ, ամրացրեք սողնակը և ամրացրեք այն պտուտակներով: Կրկին ստուգեք սերվոն:

Քայլ 8. Սնուցում


Սարքը ավարտելու համար ձեզ անհրաժեշտ կլինի սնուցման աղբյուր, լար և մինի USB վարդակից՝ Arduino-ին միանալու համար:
Միացրեք սնուցման տերմինալը mini usb պորտի վերգետնյա տերմինալին, կարմիր լարը միացրեք mini usb պորտի կարմիր լարին, այնուհետև լարը կողպեքից անցկացրեք դռան ծխնի, իսկ այնտեղից՝ վարդակից: .

Քայլ 9. Կոդ

#ներառել Servo myservo; int pos = 0; int վիճակ; int flag=0; void setup() (myservo.attach(9); Serial.begin(9600); myservo.write(60); delay(1000); ) void loop() (if(Serial.available() > 0) (state = Serial.read(); flag=0;) // եթե վիճակը «0» է, DC շարժիչը կանջատվի, եթե (state == «0») (myservo.write(8); delay (1000); Serial. println ("Door Locked"); ) else if (state == "1") (myservo.write(55); delay(1000); Serial.println("Door Unlocked"); ) )

Քայլ 10. Ավարտված Arduino կողպեքը

Վայելեք ձեր հեռակառավարման կողպեքը և մի մոռացեք «պատահաբար» փակել ձեր ընկերներին սենյակում:

Այսօրվա դասն այն մասին է, թե ինչպես օգտագործել RFID ընթերցողն Arduino-ի հետ՝ ստեղծելու պարզ կողպման համակարգ, պարզ բառերով ասած՝ RFID կողպեք:

RFID-ը (անգլ. Radio Frequency IDentification, radiofrequency identification) օբյեկտների ավտոմատ նույնականացման մեթոդ է, որում այսպես կոչված տրանսպոնդերներում կամ RFID պիտակներում պահվող տվյալները կարդացվում կամ գրվում են ռադիոազդանշանների միջոցով: Ցանկացած RFID համակարգ բաղկացած է ընթերցողից (ընթերցող, ընթերցող կամ հարցաքննող) և տրանսպոնդերից (նույնը` RFID պիտակ, երբեմն օգտագործվում է նաև RFID պիտակ տերմինը):

Ուսուցումը կօգտագործի RFID թեգ Arduino-ով: Սարքը կարդում է յուրաքանչյուր RFID թեգի եզակի նույնացուցիչը (UID), որը մենք տեղադրում ենք ընթերցողի կողքին և ցուցադրում այն ​​OLED էկրանի վրա: Եթե ​​պիտակի UID-ը հավասար է Arduino-ի հիշողության մեջ պահվող նախապես սահմանված արժեքին, ապա էկրանին կտեսնենք «Unlocked» հաղորդագրությունը: Եթե ​​եզակի նույնացուցիչը հավասար չէ նախապես սահմանված արժեքին, ապա «Բացել» հաղորդագրությունը չի հայտնվի. տես ստորև ներկայացված լուսանկարը:

Ամրոցը փակ է

Ամրոցը բաց է

Այս նախագծի ստեղծման համար անհրաժեշտ մանրամասները.

  • RFID ընթերցող RC522
  • OLED էկրան
  • Հացի տախտակ
  • մետաղալարեր

Լրացուցիչ մանրամասներ.

  • Մարտկոց (ուժային բանկ)

Ծրագրի բաղադրիչների ընդհանուր արժեքը կազմել է մոտավորապես $15:

Քայլ 2. RFID ընթերցող RC522

Յուրաքանչյուր RFID պիտակ ունի փոքրիկ չիպ (լուսանկարում սպիտակ քարտ): Եթե ​​լապտերը ուղղեք այս RFID քարտի վրա, կարող եք տեսնել մի փոքրիկ չիպ և կծիկ, որը շրջապատում է այն: Այս չիպը չունի մարտկոց՝ էներգիա արտադրելու համար: Այն ընթերցողից էներգիա է ստանում անլար՝ օգտագործելով այս մեծ կծիկը: Նման RFID քարտը հնարավոր է կարդալ մինչև 20 մմ հեռավորությունից:

Նույն չիպը գոյություն ունի RFID հիմնական ֆոբ պիտակներում:

Յուրաքանչյուր RFID թեգ ունի եզակի համար, որը նույնականացնում է այն: Սա UID-ն է, որը ցուցադրվում է OLED էկրանին: Բացառությամբ այս UID-ի, յուրաքանչյուր պիտակ կարող է պահել տվյալներ: Այս տեսակի քարտը կարող է պահել մինչև 1000 տվյալ: Տպավորիչ է, այնպես չէ՞։ Այս ֆունկցիան այսօր չի օգտագործվի: Այսօր հետաքրքրական է միայն որոշակի քարտի նույնականացումն իր UID-ով: RFID ընթերցողը և այս երկու RFID քարտերն արժեն մոտ $4:

Քայլ 3OLED էկրան

Ուսուցումն օգտագործում է 0,96 դյույմ 128x64 I2C OLED մոնիտոր:

Սա շատ լավ էկրան է Arduino-ի հետ օգտագործելու համար: Սա OLED էկրան է, և դա նշանակում է, որ այն ունի ցածր էներգիայի սպառում: Այս էկրանի էներգիայի սպառումը կազմում է մոտ 10-20 մԱ և դա կախված է պիքսելների քանակից:

Ցուցադրումն ունի 128 x 64 պիքսել թույլտվություն և փոքր չափսեր: Ցուցադրման երկու տարբերակ կա. Մեկը մոնոխրոմ է, իսկ մյուսը, ինչպես ձեռնարկում օգտագործվածը, կարող է ցուցադրել երկու գույն՝ դեղին և կապույտ: Էկրանի վերին մասը կարող է լինել միայն դեղին, իսկ ներքևի մասը՝ կապույտ:

Այս OLED էկրանը շատ պայծառ է և ունի հիանալի և շատ գեղեցիկ գրադարան, որը Adafruit-ը մշակել է այս էկրանի համար: Բացի դրանից, էկրանն օգտագործում է I2C ինտերֆեյս, այնպես որ Arduino-ին միանալը աներևակայելի հեշտ է:

Ձեզ անհրաժեշտ է միայն երկու լար միացնել, բացառությամբ Vcc-ի և GND-ի: Եթե ​​դուք նոր եք Arduino-ում և ցանկանում եք ձեր նախագծում օգտագործել էժան և պարզ էկրան, ապա սա սկսելու տեղն է:

Քայլ 4. Բոլոր մասերը միասին դնելը

Arduino Uno տախտակի հետ շփումը շատ պարզ է: Նախ միացրեք հոսանքը և՛ ընթերցողին, և՛ էկրանին:

Զգույշ եղեք, RFID ընթերցողը պետք է միացված լինի Arduino Uno-ի 3.3 Վ ելքին, հակառակ դեպքում այն ​​կվնասվի:

Քանի որ էկրանը կարող է աշխատել նաև 3,3 Վ լարման վրա, մենք VCC-ը երկու մոդուլներից միացնում ենք դրական հացահատիկի ռելսին: Այս երկաթուղին այնուհետև միացված է Arduino Uno-ի 3.3 Վ ելքին: Այնուհետև մենք միացնում ենք երկու հիմքերը (GND) հացատախտակի հիմքի ավտոբուսին: Այնուհետև մենք հացատախտակի GND ավտոբուսը միացնում ենք Arduino GND-ին:

OLED էկրան → Arduino

SCL → Անալոգային փին 5

SDA → Անալոգային փին 4

RFID ընթերցող → Arduino

RST → Թվային փին 9

IRQ → Միացված չէ

MISO → Թվային փին 12

MOSI → Թվային փին 11

SCK → Թվային փին 13

SDA → Թվային փին 10

RFID ընթերցողի մոդուլն օգտագործում է SPI ինտերֆեյսը Arduino-ի հետ հաղորդակցվելու համար: Այսպիսով, մենք պատրաստվում ենք օգտագործել Arduino UNO ապարատային SPI կապում:

RST փին անցնում է թվային փին 9: IRQ փին մնում է անջատված: MISO փին անցնում է թվային փին 12. MOSI փին անցնում է թվային 11 փին: SCK փին գնում է թվային 13, և վերջապես SDA փին գնում է թվային 10 փին: Ահա և վերջ:

RFID ընթերցողը միացված է: Այժմ մենք պետք է միացնենք OLED էկրանը Arduino-ին՝ օգտագործելով I2C ինտերֆեյսը: Այսպիսով, էկրանի վրա SCL քորոցը անցնում է անալոգային Pin 5-ին, իսկ SDA-ն էկրանի վրա՝ անալոգային Pin 4-ին: Եթե մենք այժմ միացնենք նախագիծը և տեղադրենք RFID քարտը ընթերցողի կողքին, մենք կարող ենք տեսնել, որ նախագիծը լավ է աշխատում:

Քայլ 5. Ծրագրի կոդը

Որպեսզի նախագծի կոդը կազմվի, մենք պետք է ներառենք որոշ գրադարաններ: Առաջին հերթին մեզ անհրաժեշտ է MFRC522 Rfid գրադարանը:

Տեղադրելու համար անցեք Էսքիզ -> Ներառել գրադարաններ -> Կառավարել գրադարանները(Գրադարանների կառավարում). Գտեք MFRC522 և տեղադրեք այն:

Ցուցադրման համար մեզ անհրաժեշտ է նաև Adafruit SSD1306 գրադարանը և Adafruit GFX գրադարանը:

Տեղադրեք երկու գրադարանները: Adafruit SSD1306 գրադարանը մի փոքր փոփոխության կարիք ունի: Գնացեք թղթապանակ Arduino -> Գրադարաններ, բացեք Adafruit SSD1306 թղթապանակը և խմբագրեք գրադարանը Adafruit_SSD1306.h. Մեկնաբանեք 70-րդ տողը և հանեք 69-րդ տողը, քանի որ Էկրանի թույլատրելիությունը 128x64 է:

Նախ, մենք հայտարարում ենք RFID թեգի արժեքը, որը Arduino-ն պետք է ճանաչի: Սա ամբողջ թվերի զանգված է.

int կոդը = (69,141,8,136); // UID

Այնուհետև մենք նախաստորագրում ենք RFID ընթերցիչը և ցուցադրում.

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

Դրանից հետո հանգույց ֆունկցիայում մենք ստուգում ենք պիտակը ընթերցողի վրա յուրաքանչյուր 100 մս-ում:

Եթե ​​ընթերցողն ունի պիտակ, մենք կարդում ենք նրա UID-ն և տպում այն ​​էկրանին: Այնուհետև մենք համեմատում ենք մեր նոր կարդացած թեգի UID-ը կոդի փոփոխականում պահված արժեքի հետ: Եթե ​​արժեքները նույնն են, մենք ցուցադրում ենք UNLOCK հաղորդագրությունը, հակառակ դեպքում մենք չենք ցուցադրի այս հաղորդագրությունը:

If(match) ( Serial.println("\nԵս գիտեմ այս քարտը!"); printUnlockMessage(); )else (Serial.println("\nԱնհայտ քարտ"); )

Իհարկե, դուք կարող եք փոխել այս կոդը՝ պահելու 1-ից ավելի UID արժեք, որպեսզի նախագիծը ճանաչի ավելի շատ RFID պիտակներ: Սա ընդամենը օրինակ է։

Ծրագրի կոդը:

#ներառում #ներառում #ներառում #ներառում #define OLED_RESET 4 Adafruit_SSD1306 էկրան (OLED_RESET); #սահմանել SS_PIN 10 #սահմանել RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN); // MFRC522 դասի օրինակ::MIFARE_Key բանալի; int կոդը = (69,141,8,136); //Սա պահված UID-ն է int codeRead = 0; String uidString; void setup() ( Serial.begin(9600); SPI.begin(); // Init SPI bus rfid.PCD_Init(); // Init MFRC522 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // սկզբնավորել I2C հավելիչով 0x3D (128x64-ի համար) // Մաքրել buffer.display.clearDisplay();display.display();display.setTextColor(WHITE); // կամ BLACK); display.setTextSize(2); display.setCursor(10,0); display.print («RFID Lock»); display.display(); ) void loop() ( if(rfid.PICC_IsNewCardPresent()) ( readRFID(); ) delay(100); ) void readRFID() (rfid.PICC_ReadCardSerial(); Serial.print(F("\nPICC տեսակը. ") ); MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); Serial.println(rfid.PICC_GetTypeName(piccType)); // Ստուգեք դասական MIFARE տիպի PICC-ն է, եթե (2:2:MICCTY5!) && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) ( Serial.println(F("Ձեր պիտակը MIFARE Classic տեսակի չէ")); վերադարձ; ) clearUIDl(); Սկանավորված PICC-ի UID:"); printDec(rfid.uid.uidByte, rfid.uid.size); uidString = String(rfid.uid.uidByte)+" "+String(rfid.uid.uidByte)+" "+ String(rfid.uid.uidByte)+ " "+String(rfid.uid.uidByte); printUID(); int i = 0; բուլյան համընկնում = ճշմարիտ; while(i

Քայլ 6. Վերջնական արդյունք

Ինչպես երևում է դասից, քիչ գումարի դիմաց կարող եք ավելացնել RFID ընթերցող ձեր նախագծերին: Դուք կարող եք հեշտությամբ ստեղծել անվտանգության համակարգ այս ընթերցիչով կամ ստեղծել ավելի հետաքրքիր նախագծեր, օրինակ, որպեսզի USB կրիչից տվյալները կարդացվեն միայն ապակողպելուց հետո:

Այս նախագիծը մոդուլային է, այսինքն. դուք կարող եք միացնել / անջատել տարբեր տարրեր և ստանալ տարբեր ֆունկցիոնալություն: Վերևի նկարները ցույց են տալիս լիարժեք ֆունկցիոնալ տարբերակ, մասնավորապես.

  • փակման մեխանիզմ. Օգտագործվում է դուռը ԲԱՑԵԼՈՒ և ՓԱԿԵԼՈՒ համար։ Այս նախագիծը դիտարկում է երեք տարբեր մեխանիզմների օգտագործումը.
    • Սերվո. Մեծերը կան, փոքրերը կան։ Շատ կոմպակտ և զուգակցված ծանր փակուղու հետ՝ հիանալի տարբերակ
    • Էլեկտրական մեքենայի դռան փական. Մեծ ու հզոր բան, բայց այն ուղղակի ուտում է խելագար հոսանքներ
    • Էլեկտրամագնիսական սողնակ: Լավ տարբերակ է, քանի որ ինքն իրեն փակվում է

    Որոնվածի կարգավորումներում կարող եք ընտրել երեք տեսակներից որևէ մեկը (պարամետր կողպեք_տիպ)

  • Կոճակը ներսում. Օգտագործվում է դուռը ներսից ԲԱՑԵԼՈՒ և ՓԱԿԵԼՈՒ համար։ Կարող է տեղադրվել դռան բռնակին (ափի կամ մատի կողմը), բուն դռան կամ խցիկի վրա
  • Կոճակ դրսում. Ծառայում է դուռը փակելու, ինչպես նաև էներգախնայողությունից արթնանալու համար։ Կարող է տեղադրվել դռան բռնակին (ափի կամ մատի կողմը), բուն դռան կամ խցիկի վրա
  • հոլովակդուռը փակելու համար։ Ծառայում է կողպեքի ավտոմատ փակման համար, երբ դուռը փակ է։ Դրանք կարող են լինել.
    • Տակտ կոճակ
    • Դահլիճի սենսոր + մագնիս բուն դռան վրա
    • Reed անջատիչ + մագնիս դռան վրա
  • Գաղտնիք մուտքի վերակայման կոճակ. Օգտագործվում է գաղտնաբառը վերականգնելու / նոր գաղտնաբառ մուտքագրելու / նոր ստեղնը / համադրությունը մտապահելու համար և այլն: Կարող է թաքնված լինել մարմնի ինչ-որ տեղ
  • Լույս արտանետող դիոդգործողությունը նշելու համար. Օգտագործվում են RGB LED, կարմիր և կանաչ գույները (խառնվելիս դեղին են տալիս).
    • Կանաչ միացված - կողպեքը ԲԱՑ է: Վառ, որպեսզի չմոռանաս փակել դուռը
    • Պինդ դեղին - համակարգը արթուն է և սպասում է գաղտնաբառի
    • Թարթող կարմիր - մարտկոցի պակաս

Այս տարրերից որևէ մեկը կարող է բացառվել համակարգից.

  • Մենք հեռացնում ենք հոլովակը: Պարամետրերում գտնվող որոնվածում մենք նաև անջատում ենք այն (կարգավորում tail_button): Այժմ կողպեքը փակելու համար անհրաժեշտ է սեղմել կոճակը
  • Հեռացրեք արտաքին կոճակը: Պարամետրերում գտնվող որոնվածում մենք նաև անջատում ենք այն (կարգավորում wake_button): Այժմ համակարգը արթնացնելու կարիք չունի, այն ինքն իրեն արթնանում է (էներգիայի սպառումը մի փոքր ավելի բարձր է): Եվ նաև մենք այլևս չունենք փակման կոճակ դռան առջևում, և մեզ անհրաժեշտ է սահմանային անջատիչ: Կամ դղյակն է դժոխք
  • Մենք հեռացնում ենք ներքին կոճակը: Այս տարբերակը հարմար է պահարանների և պահարանների համար: Կարգավորումներում ոչինչ փոխելու կարիք չկա:
  • Մենք հեռացնում ենք LED- ը: Կարգավորումներում ոչինչ փոխելու կարիք չկա:
  • Մուտքի վերակայման կոճակը կարող է չզոդվել առաջին անգամ օգտագործելուց հետո, կամ կարող եք վերաշարադրել կոդը ինքներդ
  • Դուռը փակ, սեղմված ԴՐՍԻՆ - արթնացեք, սպասեք գաղտնաբառի մուտքագրմանը/RFID պիտակին/էլեկտրոնային բանալիին/մատնահետքին
  • Դուռը փակ է, համակարգը արթնացել է՝ սպասելով գաղտնաբառը մուտքագրելուն։ Ժամանակը կարող է սահմանվել (կարգավորել քնի_ժամանակ)
  • Դուռը փակ է, մուտքագրված գաղտնաբառ/պիտակ/բանալին և այլն: - բաց
  • Դուռը փակ, սեղմված ներսից - բաց
  • Դուռը բաց, սեղմված ԴՐՍԻՆ - փակել
  • Դուռը բաց, սեղմված ներսից - փակ
  • Դուռը բաց է, LIMIT անջատիչը սեղմված է՝ փակիր

Կողպեքը նախատեսված է ցածր էներգիայի խնայողության ռեժիմում մարտկոցի էներգիայով աշխատելու համար (Միացնել անջատել՝ կարգավորումը sleep_enable), այսինքն:

  • Արթնացեք ամեն մի քանի վայրկյանը մեկ, հետևեք EVENT-ին (ըստ ցանկության, եթե դրսում կոճակ չկա: Կարող եք միացնել այն կարգավորումներում wake_button)
  • Դիտեք մարտկոցի լարումը ամեն մի քանի րոպեն մեկ (միացման/անջատման կարգավորում մարտկոցի_մոնիտոր)
  • Եթե ​​մարտկոցը լիցքաթափված է (լարումը սահմանված է պարամետրում bat_low):
    • բացեք դուռը (ըստ ցանկության, կարող է կարգավորվել որոնվածի մեջ open_bat_low)
    • արգելել հետագա բացումը և փակումը
    • կոճակը սեղմելիս թարթում է կարմիր լուսադիոդը
    • դադարեցնել հետևել EVENT-ին (այսինքն՝ գաղտնաբառի մուտքագրում/պիտակ և այլն)

Երբ համակարգը արթուն է, սեղմեք փոխել գաղտնաբառը կոճակը (թաքնված կոճակը): Մենք ընկնում ենք գաղտնաբառի փոփոխման ռեժիմ:
Մուտքագրեք գաղտնաբառ թվերից ( ԱՌԱՎԵԼԱԳՈՒՅՆ 10 ԹԻՎ!!!)

  • Երբ սեղմում եք *, գաղտնաբառը գրվում է հիշողության մեջ, և համակարգը դուրս է գալիս գաղտնաբառի փոփոխությունից
  • Երբ սեղմում եք #, գաղտնաբառը վերականգնվում է (կարող եք նորից մուտքագրել այն)
  • Եթե ​​10 վայրկյան ոչինչ չսեղմեք, մենք ավտոմատ կերպով դուրս կգանք գաղտնաբառի փոփոխման ռեժիմից, գաղտնաբառը կմնա հինը։

Երբ համակարգը չի քնում (արթնանում է կոճակով կամ քունն անջատված է), սեղմեք *՝ գաղտնաբառի մուտքագրման ռեժիմը մտնելու համար։
Եթե ​​համակարգը քնում է և պարբերաբար արթնանում է EVENT-ը ստուգելու համար, ապա սեղմեք * և պահեք մինչև կարմիր LED-ը վառվի:
Գաղտնաբառի մուտքագրման ռեժիմ.

  • Գաղտնաբառի մշակումը կատարվում է այնպես, որ ճիշտ գաղտնաբառը հաշվվում է միայն թվերի ճիշտ հաջորդականությունը մուտքագրելու դեպքում, այսինքն՝ եթե գաղտնաբառը 345 է, ապա կարող եք ցանկացած թվեր մուտքագրել, մինչև հայտնվի 345 հաջորդականությունը, այսինքն. 30984570345-ը կբացի կողպեքը, քանի որ այն ավարտվում է 345-ով:
  • Եթե ​​գաղտնաբառը ճիշտ է, դուռը կբացվի
  • Եթե ​​ոչինչ չսեղմեք, 10 վայրկյան հետո համակարգը կվերադառնա նորմալ (սպասման) ռեժիմին
  • Եթե ​​սեղմեք #, մենք անմիջապես դուրս կգանք գաղտնաբառի մուտքագրման ռեժիմից
  • Եթե ​​գաղտնաբառի մուտքագրման ռեժիմում գաղտնաբառ փոխելու համար սեղմեք գաղտնի կոճակը, ապա մենք նույնպես դուրս կգանք դրանից