RFID റീഡർ: സാങ്കേതികവിദ്യയെക്കുറിച്ച് സംസാരിക്കുന്നു. RFID എളുപ്പമാക്കി. നിങ്ങളുടെ സ്വന്തം RFID ട്രാൻസ്‌പോണ്ടറും റീഡറും നടപ്പിലാക്കൽ

RFID (റേഡിയോ ഫ്രീക്വൻസി ഐഡൻ്റിഫിക്കേഷൻ) ഒബ്‌ജക്‌റ്റുകളിൽ ഘടിപ്പിച്ചിരിക്കുന്ന ടാഗുകൾ സ്വയമേവ തിരിച്ചറിയുന്നതിനും ട്രാക്കുചെയ്യുന്നതിനും വൈദ്യുതകാന്തിക ഫീൽഡുകൾ ഉപയോഗിക്കുന്നു. ടാഗുകളിൽ ഇലക്ട്രോണിക് സംഭരിച്ച വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്നു. നിഷ്ക്രിയ ടാഗുകൾ അടുത്തുള്ള RFID റീഡറിൽ നിന്ന് റേഡിയോ സിഗ്നലുകളിൽ നിന്ന് ഊർജ്ജം ശേഖരിക്കുന്നു. സജീവമായ ടാഗുകൾക്ക് ഒരു പ്രാദേശിക പവർ സ്രോതസ്സുണ്ട് (ബാറ്ററി പോലെയുള്ളവ) കൂടാതെ റീഡറിൽ നിന്ന് നൂറുകണക്കിന് മീറ്ററുകൾ പ്രവർത്തിക്കാനും കഴിയും. ഒരു ബാർകോഡിൽ നിന്ന് വ്യത്യസ്തമായി, ടാഗ് ഉപകരണത്തിൻ്റെ കാഴ്ചയിൽ ആയിരിക്കണമെന്നില്ല, അതിനാൽ അത് ട്രാക്ക് ചെയ്യുന്ന ഒബ്‌ജക്റ്റിൽ ഉൾച്ചേർക്കാൻ കഴിയും. ഓട്ടോമാറ്റിക് ഐഡൻ്റിഫിക്കേഷനും ഡാറ്റ ശേഖരണത്തിനുമുള്ള ഒരു രീതിയാണ് RFID.

അപേക്ഷ

RFID ടാഗുകൾ പല വ്യവസായങ്ങളിലും ഉപയോഗിക്കുന്നു. ഉദാഹരണത്തിന്, നിർമ്മാണ സമയത്ത് വാഹനത്തിൽ ഘടിപ്പിച്ചിരിക്കുന്ന ഒരു RFID റീഡർ ഒരു അസംബ്ലി ലൈനിലൂടെ പുരോഗതി ട്രാക്ക് ചെയ്യാൻ ഉപയോഗിക്കാം. ലേബൽ ചെയ്ത ഫാർമസ്യൂട്ടിക്കൽസ് വെയർഹൗസുകളിലൂടെ ട്രാക്ക് ചെയ്യാൻ കഴിയും. കന്നുകാലികളിൽ RFID മൈക്രോചിപ്പുകൾ സ്ഥാപിക്കുന്നത് മൃഗങ്ങളെ തിരിച്ചറിയാൻ സഹായിക്കുന്നു.

കാരണം RFID ടാഗുകൾ പണം, വസ്ത്രം, സ്വത്ത് എന്നിവയിൽ ഘടിപ്പിക്കാം, അല്ലെങ്കിൽ മൃഗങ്ങളിലും മനുഷ്യരിലും ഘടിപ്പിക്കാം, വായിക്കാനുള്ള കഴിവ് സ്വകാര്യ വിവരംഉപയോക്താവിൻ്റെ സമ്മതമില്ലാതെ കോളുകൾ ഗുരുതരമായ പ്രശ്നംസ്വകാര്യത. ഈ അപകടസാധ്യതകൾ വ്യക്തിഗത ഡാറ്റ സുരക്ഷാ പ്രശ്‌നങ്ങളെ അഭിസംബോധന ചെയ്യുന്ന സ്റ്റാൻഡേർഡ് സ്‌പെസിഫിക്കേഷനുകൾ വികസിപ്പിക്കുന്നതിലേക്ക് നയിച്ചു. ചെക്ക്ഔട്ട് വേഗത്തിലാക്കാനും മോഷണം തടയാനും സ്റ്റോറുകളിലും ടാഗുകൾ ഉപയോഗിക്കാം.

കഥ

1945-ൽ ലിയോൺ തെർമിൻ ഒരു ശ്രവണ ഉപകരണം കണ്ടുപിടിച്ചു സോവ്യറ്റ് യൂണിയൻ, ഇത് അധിക ഓഡിയോ വിവരങ്ങളോടൊപ്പം റേഡിയോ തരംഗങ്ങൾ വീണ്ടും സംപ്രേക്ഷണം ചെയ്തു. വൈബ്രേഷൻ സമയത്ത് ശബ്ദ വൈബ്രേഷനുകൾ ഡയഫ്രത്തെ സ്വാധീനിച്ചു, ഇത് റെസൊണേറ്ററിൻ്റെ ആകൃതിയെ ചെറുതായി മാറ്റി, പ്രതിഫലിക്കുന്ന റേഡിയോ ഫ്രീക്വൻസി മോഡുലേറ്റ് ചെയ്തു. ഈ ഉപകരണം ഒരു ഐഡി ടാഗ് എന്നതിലുപരി ഒരു രഹസ്യ ചോർച്ച ഉപകരണമായിരുന്നുവെങ്കിലും, ഇത് USB RFID റീഡറിൻ്റെ മുൻഗാമിയായി കണക്കാക്കപ്പെടുന്നു, കാരണം ഇത് ഓഡിയോ തരംഗങ്ങൾ വഴി സജീവമാക്കിയതാണ്. ബാഹ്യ ഉറവിടം. പ്രവർത്തിക്കുന്ന മിക്ക വിമാനങ്ങളിലും ട്രാൻസ്‌പോണ്ടറുകൾ ഇപ്പോഴും ഉപയോഗിക്കുന്നു. മുമ്പ്, രണ്ടാം ലോക മഹായുദ്ധത്തിൽ സഖ്യകക്ഷികളും ജർമ്മനിയും വിമാനങ്ങളെ തിരിച്ചറിയാൻ RFID ടാഗ് റീഡറുകൾ പോലുള്ള സമാനമായ സാങ്കേതികവിദ്യ പതിവായി ഉപയോഗിച്ചിരുന്നു.

1973 ജനുവരി 23-ന് പേറ്റൻ്റ് നേടിയ മരിയോ കാർഡുല്ലോയുടെ ഉപകരണം, മെമ്മറിയുള്ള ഒരു നിഷ്ക്രിയ റേഡിയോ റിസീവർ ആയതിനാൽ ആധുനിക RFID-യുടെ ആദ്യത്തെ യഥാർത്ഥ മുൻഗാമിയായിരുന്നു. ഒറിജിനൽ ഉപകരണം നിഷ്ക്രിയമായിരുന്നു, ഒരു പോളിംഗ് സിഗ്നൽ ഉപയോഗിച്ചാണ് പ്രവർത്തിക്കുന്നത്. 1971-ൽ ന്യൂയോർക്ക് സിറ്റി ഭരണകൂടത്തിനും മറ്റുള്ളവർക്കും ഇത് പ്രദർശിപ്പിച്ചു സാധ്യതയുള്ള ഉപയോക്താക്കൾകൂടാതെ ഉപയോഗിക്കുന്നതിന് 16-ബിറ്റ് മെമ്മറിയുള്ള ഒരു ട്രാൻസ്‌പോണ്ടർ ഉൾക്കൊള്ളുന്നു പണമടച്ചുള്ള ഉപകരണം. കാർഡുല്ലോയുടെ പ്രധാന പേറ്റൻ്റ് റേഡിയോ ഫ്രീക്വൻസികൾ, ശബ്ദവും പ്രകാശവും പ്രക്ഷേപണ മാധ്യമമായി ഉപയോഗിക്കുന്നത് ഉൾക്കൊള്ളുന്നു.

ഉപയോഗ മേഖല

1969-ൽ നിക്ഷേപകർക്ക് അവതരിപ്പിച്ച യഥാർത്ഥ ബിസിനസ് പ്ലാൻ RFID റീഡറിനായി ഇനിപ്പറയുന്ന ആപ്ലിക്കേഷനുകൾ പ്രദർശിപ്പിച്ചു:

  • ഗതാഗതത്തിൽ ഉപയോഗിക്കുക (വാഹന തിരിച്ചറിയൽ, ഓട്ടോമാറ്റിക് പേയ്മെൻ്റ് സിസ്റ്റം, ഇലക്ട്രോണിക് ലൈസൻസ് പ്ലേറ്റ്, ഇലക്ട്രോണിക് മാനിഫെസ്റ്റ്, റൂട്ടിംഗ് വാഹനം, വാഹന കാര്യക്ഷമത നിരീക്ഷണം);
  • ബാങ്കിംഗ് (ഇലക്‌ട്രോണിക് ചെക്ക്ബുക്ക്, ഇലക്ട്രോണിക് ക്രെഡിറ്റ് കാർഡ്);
  • ഉദ്യോഗസ്ഥർ, ഓട്ടോമാറ്റിക് ഗേറ്റുകൾ, നിരീക്ഷണം); മെഡിക്കൽ വ്യവസായം (തിരിച്ചറിയൽ, രോഗിയുടെ ചരിത്രം).

1973-ൽ ലോസ് അലാമോസ് നാഷണൽ ലബോറട്ടറിയിൽ വച്ച് സ്റ്റീഫൻ ഡെപ്പ്, ആൽഫ്രഡ് കോല്ലെ, റോബർട്ട് ഫ്രൈമാൻ എന്നിവർ ചേർന്ന്, നിഷ്ക്രിയവും അർദ്ധ-നിഷ്‌ക്രിയവുമായ RFID ടാഗുകളുടെ പ്രതിഫലന ശക്തിയുടെ (മോഡുലേറ്റഡ് ബാക്ക്‌സ്‌കാറ്റർ) ഒരു ആദ്യകാല പ്രദർശനം നടത്തി. പോർട്ടബിൾ സിസ്റ്റം 915 MHz-ൽ ഓടുകയും 12-ബിറ്റ് ടാഗുകൾ ഉപയോഗിക്കുകയും ചെയ്തു. മിക്ക ആധുനിക UHFID, മൈക്രോവേവ് RFID റീഡറുകളും ഈ രീതി ഉപയോഗിക്കുന്നു. ആധുനിക ജീവിതത്തിൽ, അത്തരം ഉപകരണങ്ങൾക്ക് വലിയ ഡിമാൻഡാണ്.

സ്പെസിഫിക്കേഷൻ

തിരിച്ചറിയാനാകുന്ന ഒബ്‌ജക്‌റ്റുകളിൽ ഘടിപ്പിച്ചിരിക്കുന്ന ടാഗുകൾ RFID ഉപയോഗിക്കുന്നു. നിങ്ങളുടേതായ RFID റീഡർ നിർമ്മിക്കുമ്പോൾ, ചോദ്യം ചെയ്യുന്നവർ അല്ലെങ്കിൽ വായനക്കാർ എന്ന് വിളിക്കുന്ന ടു-വേ റേഡിയോ ട്രാൻസ്മിറ്റർ-റിസീവറുകൾ ടാഗിലേക്ക് ഒരു സിഗ്നൽ അയച്ച് അതിൻ്റെ പ്രതികരണം വായിക്കുമെന്ന് ഓർമ്മിക്കുക. RFID ടാഗുകൾ നിഷ്ക്രിയമോ സജീവമോ നിഷ്ക്രിയമോ ആകാം. സജീവമായ ടാഗിന് ഒരു ബിൽറ്റ്-ഇൻ ബാറ്ററിയുണ്ട് കൂടാതെ അതിൻ്റെ ഐഡി സിഗ്നൽ ഇടയ്ക്കിടെ കൈമാറുന്നു. ബാറ്ററി നിഷ്ക്രിയമായ (BAP) ബോർഡിൽ ഒരു ചെറിയ ബാറ്ററിയുണ്ട്, അത് ഒരു RFID റീഡറിൻ്റെ സാന്നിധ്യത്താൽ സജീവമാണ്. ബാറ്ററി ഇല്ലാത്തതിനാൽ ഒരു നിഷ്ക്രിയ ടാഗ് വിലകുറഞ്ഞതും ചെറുതുമാണ്. പകരം, റീഡർ പ്രക്ഷേപണം ചെയ്യുന്ന റേഡിയോ തരംഗമാണ് ടാഗ് ഉപയോഗിക്കുന്നത്. എന്നിരുന്നാലും, ഒരു നിഷ്ക്രിയ ടാഗ് പ്രവർത്തിക്കുന്നതിന്, സിഗ്നൽ സംപ്രേഷണം ചെയ്യുന്നതിനേക്കാൾ ഏകദേശം ആയിരം മടങ്ങ് ശക്തമായ പവർ ലെവലിൽ അത് പ്രകാശിപ്പിക്കണം. ഇത് ഇടപെടലിനെയും വികിരണത്തെയും ബാധിക്കുന്നു.

ഒരു സുഹൃത്തിൻ്റെ അഭ്യർത്ഥന പ്രകാരമാണ് ഈ പ്രോജക്റ്റ് നിർമ്മിച്ചിരിക്കുന്നത്, ഒരു സ്റ്റോറേജ് റൂമിലേക്കുള്ള ഒരു വാതിൽ ഇൻസ്റ്റാൾ ചെയ്യാൻ. തുടർന്ന്, സുഹൃത്തുക്കളുടെയും പരിചയക്കാരുടെയും അഭ്യർത്ഥനപ്രകാരം നിരവധി കാര്യങ്ങൾ കൂടി ചെയ്തു. ഡിസൈൻ ലളിതവും വിശ്വസനീയവുമായി മാറി. പ്രവർത്തിക്കുന്നു ഈ ഉപകരണംഇതുപോലെ: ഉപകരണത്തിൻ്റെ മെമ്മറിയിൽ മുമ്പ് സംഭരിച്ചിരുന്ന RFID കാർഡുകൾ മാത്രമേ ഇത് അനുവദിക്കൂ.

ആക്സസ് കൺട്രോളറിൻ്റെ പ്രധാന സവിശേഷതകൾ:

RFID കാർഡുകൾ EMmarin 125kHz ഫോർമാറ്റ്

മൈക്രോകൺട്രോളർ ATtiny13

കാർഡുകളുടെ/കീ ഫോബുകളുടെ എണ്ണം - 10.
"OPEN" ബട്ടൺ സാധാരണയായി തുറന്നതും ഒട്ടിപ്പിടാതെ സംരക്ഷിക്കപ്പെട്ടതുമാണ്.
ലോക്ക് കൺട്രോൾ ഔട്ട്പുട്ട്, ഉയർന്ന കറൻ്റ് ഫീൽഡ്-ഇഫക്റ്റ് ട്രാൻസിസ്റ്റർ, ലാച്ച് ഓപ്പറേറ്റിംഗ് മോഡ് (താൽക്കാലികമായി ഓണാക്കുന്നു).

പവർ - 12v.
സ്റ്റാൻഡ്ബൈ മോഡിൽ ഉപഭോഗം 35 mA ആണ്.
ആക്സസ് കാർഡുകളുടെ എണ്ണം / ഫോബ്സ് - 10 പീസുകൾ.
"OPEN" ബട്ടണുള്ള ആശയവിനിമയ ദൈർഘ്യം 10 ​​മീറ്ററാണ്.
ലോക്ക് കൺട്രോൾ ഔട്ട്പുട്ട് തരം - ഓപ്പൺ ഡ്രെയിൻ (ശക്തമായ ഫീൽഡ്-ഇഫക്റ്റ് ട്രാൻസിസ്റ്റർ, നിലവിലെ 2A വരെ).

10 കാർഡുകൾക്കുള്ള (ATtiny13 മൈക്രോകൺട്രോളറിൽ):

നിങ്ങൾക്ക് ഒരു വൈദ്യുതകാന്തിക ലോക്ക് നിയന്ത്രിക്കണമെങ്കിൽ, ആവശ്യമായ കോൺടാക്റ്റ് ഗ്രൂപ്പുമായി നിങ്ങൾ ഒരു ഔട്ട്പുട്ട് റിലേ ഇൻസ്റ്റാൾ ചെയ്യണം.

അസംബിൾ ചെയ്ത RFID വാലിഡേറ്ററിൻ്റെ രൂപം:

പോണിപ്രോഗിൽ ഫ്യൂസ് ബിറ്റുകൾ സജ്ജീകരിക്കുന്നു:

ഉപകരണത്തിൻ്റെ പ്രവർത്തനം, രചയിതാവ് റെക്കോർഡ് ചെയ്ത ഒരു വീഡിയോ ഡൗൺലോഡ് ചെയ്യുക.
വായനക്കാരിൽ ഒരാൾ കൂടിച്ചേർന്ന ഉപകരണത്തിൻ്റെ ഒരു വീഡിയോയും പ്രസിദ്ധീകരിച്ചു:

പ്രോഗ്രാമിംഗ് നിർദ്ദേശങ്ങൾ

ഓപ്പറേറ്റിംഗ് മോഡ് - കൺട്രോളറിലേക്ക് 12V നൽകുമ്പോൾ, LED 1Hz മിന്നുന്നു.
പ്രോഗ്രാമിംഗ് മോഡ് - LED ഫ്ലാഷുകൾ 2Hz.
നിങ്ങൾ "ഓപ്പൺ" ബട്ടൺ അമർത്തുമ്പോൾ, ലോക്ക് തുറക്കുമ്പോൾ ചെറിയ ബീപ്പുകളുടെ ഒരു പരമ്പര സംഭവിക്കും.

ശബ്ദ സിഗ്നലുകൾ

1 ഹ്രസ്വ സിഗ്നൽ - കാർഡ് അല്ലെങ്കിൽ കീ ഫോബ് കൺട്രോളറിൻ്റെ മെമ്മറിയിൽ എഴുതിയിരിക്കുന്നു.
2 ഹ്രസ്വ ബീപ്പുകൾ - കാർഡ് അല്ലെങ്കിൽ കീ ഫോബ് കൺട്രോളറിൻ്റെ മെമ്മറിയിൽ ഇതിനകം സംഭരിച്ചിരിക്കുന്നു.
5 ഹ്രസ്വ ബീപ്പുകൾ - പ്രോഗ്രാമിംഗ് മോഡിൽ നിന്ന് പുറത്തുകടക്കുക.
1 നീണ്ട ബീപ്പ്- കൺട്രോളറിൽ നിന്ന് കീ കാർഡ് മെമ്മറി മായ്‌ച്ചു.
തുടർച്ചയായി ചെറിയ സിഗ്നലുകൾ- കാർഡ്/കീ മെമ്മറി നിറഞ്ഞിരിക്കുന്നു, പരമാവധി 10 പീസുകൾ. (കൺട്രോളറിലേക്ക് പവർ ഓഫ് ചെയ്യേണ്ടത് ആവശ്യമാണ്).

മാസ്റ്റർ കാർഡും ലോക്ക് തുറക്കുന്ന സമയവും റെക്കോർഡുചെയ്യുന്നു

1 - കൺട്രോളർ പവർ ഓഫ് ചെയ്യുക.
2 - "OPEN" ബട്ടൺ അമർത്തുക
3 - ബട്ടൺ അമർത്തിപ്പിടിക്കുമ്പോൾ, 5 സെക്കൻഡിനുശേഷം കൺട്രോളറിലേക്ക് പവർ ബന്ധിപ്പിക്കുക. കൺട്രോളർ "BEEPS", LED 2 Hz ആവൃത്തിയിൽ മിന്നിമറയും.
4 - ബട്ടൺ റിലീസ് ചെയ്യുക.
5 - റീഡിംഗ് ഏരിയയിലേക്ക് ഒരു കാർഡ് അല്ലെങ്കിൽ കീ ഫോബ് കൊണ്ടുവരിക, ഒരൊറ്റ ശബ്ദം മുഴങ്ങും ശബ്ദ സിഗ്നൽ, മാസ്റ്റർ കാർഡ് അല്ലെങ്കിൽ കീ ഫോബ് റെക്കോർഡ് ചെയ്‌തു, കൂടാതെ 1 സെക്കൻഡ് ലോക്ക് തുറക്കുന്ന സമയം രേഖപ്പെടുത്തും.

6 - റീഡിംഗ് ഏരിയയിൽ കാർഡ് അല്ലെങ്കിൽ കീ ഫോബ് പിടിക്കുക, ശബ്ദ സിഗ്നലുകൾ എണ്ണുക. അളവ് ലോക്ക് തുറക്കാൻ ആവശ്യമായ സമയം നിർണ്ണയിക്കുന്നു, 1 സെക്കൻഡിൻ്റെ വർദ്ധനവ്, എന്നാൽ 32 സെക്കൻഡിൽ കൂടരുത്.
7 - കൺട്രോളറിലേക്കുള്ള പവർ ഓഫ് ചെയ്യുക അല്ലെങ്കിൽ 30 സെക്കൻഡ് താൽക്കാലികമായി നിർത്തുക.

കീ ഫോബ് കാർഡുകളുടെ എല്ലാ മെമ്മറിയും മായ്‌ക്കുന്നു

1 - ഓപ്പറേറ്റിംഗ് മോഡ്.
2 - "ഓപ്പൺ" ബട്ടൺ അമർത്തിപ്പിടിക്കുക, മാസ്റ്റർ കാർഡ് അല്ലെങ്കിൽ കീ ഫോബ് റീഡറിലേക്ക് കൊണ്ടുവന്ന് പിടിക്കുക, 5 സെക്കൻഡിനുശേഷം ഒരു നീണ്ട ബീപ്പ് മുഴങ്ങും - കാർഡുകളുടെ/കീ ഫോബുകളുടെ മെമ്മറി മായ്ച്ചിരിക്കുന്നു.
3 - ബട്ടൺ വിടുക, കാർഡ് അല്ലെങ്കിൽ കീ ഫോബ് എടുത്തുകളയുക.

വർഷങ്ങളോളം RFID വിഷയങ്ങളിൽ പ്രവർത്തിച്ചതിനും Mifare, EMMARINE, TIRIS തുടങ്ങിയ ജനപ്രിയ സ്റ്റാൻഡേർഡുകളുടെ ട്രാൻസ്‌പോണ്ടർ മോഡലുകൾക്കായി വിവിധ വായനക്കാരെ വികസിപ്പിച്ചതിനും ശേഷം... ഈ ചോദ്യം എന്നെ പലപ്പോഴും ആശയക്കുഴപ്പത്തിലാക്കാൻ തുടങ്ങി - അക്ഷരാർത്ഥത്തിൽ കഴിഞ്ഞ വര്ഷംജനപ്രിയ പ്രോട്ടോക്കോളുകളുടെയും വിവിധ കീ/കീ ഫോബ് കോപ്പിയറുകളുടെയും ടാഗുകൾക്ക് കീഴിലുള്ള വിവിധ തരത്തിലുള്ള എമുലേറ്ററുകൾ വ്യാപകമായ ജനപ്രീതി നേടിയിട്ടുണ്ട്.

ജനപ്രിയ RFID പ്രോട്ടോക്കോളുകൾക്കും വിലകുറഞ്ഞ വായനക്കാർക്കുമായി വാണിജ്യപരമായി ലഭ്യമായ പ്രത്യേക ചിപ്പുകളുടെ എണ്ണം കണക്കിലെടുക്കുമ്പോൾ, ഡിജിറ്റൽ ഓസിലോസ്കോപ്പുകൾ, സ്നിഫറുകൾ, സ്പെക്ട്രം അനലൈസറുകൾ തുടങ്ങിയ ഉപകരണങ്ങളുടെ വ്യാപകമായ ഉപയോഗം, ഈ ചോദ്യംപല ഡെവലപ്പർമാർക്കും കൂടുതൽ പ്രസക്തമായിരിക്കുന്നു. മുകളിൽ വിവരിച്ച മാനദണ്ഡങ്ങളിൽ നിന്ന് വ്യത്യസ്തമായ പ്രോജക്റ്റുകളിലൊന്നിനായി ഒരു എക്സ്ചേഞ്ച് പ്രോട്ടോക്കോൾ സൃഷ്ടിക്കാൻ ഞാൻ തീരുമാനിച്ചു.

സംശയമില്ല ഈ ആശയംപരിഹരിക്കുന്നില്ല ആഗോള പ്രശ്നങ്ങൾസുരക്ഷ പുതിയ സംവിധാനംമറ്റ് ഡെവലപ്പർമാർക്ക് ഉപകരണങ്ങൾ ഉണ്ടെങ്കിൽ അവർക്ക് വിശകലനം ചെയ്യാൻ കഴിയും, എന്നാൽ ഇതൊന്നും സമാനമല്ല എന്നതാണ് കാര്യം നിലവിലുള്ള മാനദണ്ഡങ്ങൾകോപ്പിയറുകളുടെ എല്ലാ ഹാർഡ്‌വെയറുകളും അത്തരം ഒരു അൽഗോരിതം വേഗത്തിൽ പകർത്താനും പുനർനിർമ്മിക്കാനും നിങ്ങളെ അനുവദിക്കില്ല. തീർച്ചയായും സമാനമായ സംവിധാനംഇവിടെ അവതരിപ്പിച്ചിട്ടില്ല പൂർണ്ണമായ പരിഹാരംസുരക്ഷാ പ്രശ്നങ്ങൾ, എന്നാൽ RFID എങ്ങനെ പൊരുത്തപ്പെടുത്താം അടച്ച സിസ്റ്റം. ഒരു നല്ല പ്ലസ്സമാനമായ മറ്റ് കാര്യങ്ങളിൽ സുരക്ഷയുടെ വിഷയത്തിൽ വയർലെസ് സിസ്റ്റങ്ങൾലോ-ഫ്രീക്വൻസി RFID സാങ്കേതികവിദ്യ തന്നെയാണ് - ടാഗുകൾ ദീർഘദൂരത്തിൽ വായിക്കാൻ ഇത് അനുവദിക്കുന്നില്ല.

നിഷ്ക്രിയ ടാഗുകൾ വളരെ കുറഞ്ഞ പവർ ഉള്ളവയാണ്, അവ പവർ ചെയ്യുന്നതിന് ശക്തമായ ഒരു റീഡർ ജനറേറ്റർ ആവശ്യമാണ്; ഈ ആവൃത്തികളിലെ റേഡിയോ തരംഗ പ്രചരണത്തിൻ്റെ പ്രത്യേകതകൾ ഈ സിസ്റ്റത്തിൻ്റെ പ്രവർത്തന പരിധികളെ പരിമിതപ്പെടുത്തുന്നു. EmMarine പോലെയുള്ള 125 KHz സ്റ്റാൻഡേർഡുകൾക്ക് ട്രാൻസ്‌പോണ്ടറുകളുടെ യഥാർത്ഥ റീഡിംഗ് റേഞ്ച് 20 cm കവിയാറില്ല, EM4001 സ്റ്റാൻഡേർഡ് പറയുന്നു; Mifare (13.56 MHz) പോലുള്ള മറ്റ് പ്രോട്ടോക്കോളുകൾക്ക് ഇത് ദൈർഘ്യമേറിയതാണ് (iso15693-ന് 1.5 മീറ്റർ). യഥാക്രമം കോയിലിൻ്റെയും സപ്ലൈ വോൾട്ടേജിൻ്റെയും വലുപ്പവും റീഡറിൻ്റെ ശക്തിയും വർദ്ധിപ്പിച്ചുകൊണ്ട് നിങ്ങൾക്ക് ലോ-ഫ്രീക്വൻസി റീഡറുകൾക്ക് കൂടുതൽ വായനാ ദൂരം നേടാനാകും. എന്നിരുന്നാലും, അത്തരം സംവിധാനങ്ങൾ വളരെ വലുതാണ്, സാധാരണയായി പോർട്ടബിൾ ആക്കാൻ പ്രയാസമാണ്. ചട്ടം പോലെ, അത്തരം സംവിധാനങ്ങൾ ശാശ്വതമായി മാത്രമേ നടപ്പിലാക്കുകയുള്ളൂ - ഉദാഹരണത്തിന്, കാറുകൾക്ക്.

അതിനാൽ, ഇപ്പോൾ ഞങ്ങളുടെ RFID സിസ്റ്റത്തിൻ്റെ യഥാർത്ഥ ആർക്കിടെക്ചറിനെക്കുറിച്ച്. പരീക്ഷണങ്ങൾക്കായി atmel atmega8 കൺട്രോളർ തിരഞ്ഞെടുത്തു. ട്രാൻസ്‌പോണ്ടർ നിർമ്മാണത്തിൻ്റെ ആവശ്യങ്ങൾക്ക്, ഇത് ഓവർകിൽ പോലെ തോന്നുന്നു. എന്നിരുന്നാലും, ഇൻ ഈ സാഹചര്യത്തിൽ atmega ഉപയോഗിച്ച് ഒരു റെഡിമെയ്ഡ് ഡെവലപ്‌മെൻ്റ് ബോർഡിൽ ഒരു പുതിയ ഇൻ്റർഫേസ് വികസിപ്പിക്കുന്നതിനുള്ള പ്രാഥമിക ചുമതല പരിഹരിച്ചു, തുടർന്ന് ഈ കോഡ് tiny13 പോലുള്ള വിലകുറഞ്ഞ കൺട്രോളറുകളിലേക്ക് പോർട്ട് ചെയ്തു. ട്രാൻസ്‌പോണ്ടറിനായി, CTC മോഡിൽ ടൈമർ T1 ഉപയോഗിച്ച് PWM ജനറേഷൻ മോഡിൻ്റെ അടിസ്ഥാനത്തിലാണ് ഓപ്പറേറ്റിംഗ് അൽഗോരിതം നിർമ്മിച്ചിരിക്കുന്നത്. കൺട്രോളർ ഓൺ ചെയ്യുമ്പോൾ ട്രാൻസ്‌പോണ്ടർ ട്രാൻസ്മിഷൻ ഡാറ്റ EEPROM-ൽ നിന്ന് വായിക്കുന്നു. മൊത്തത്തിൽ, ട്രാൻസ്പോണ്ടർ 10 ബൈറ്റുകൾ കൈമാറുന്നു. ട്രാൻസ്‌പോണ്ടർ EEPROM-ൻ്റെ ഉള്ളടക്കം കാണാൻ കഴിയും ചിത്രം 1.ആദ്യത്തെ ബൈറ്റ് 0xE7 ഒരു ആവശ്യമായ പാക്കറ്റ് ഹെഡറാണ്, കാരണം റീഡർ പാക്കറ്റ് പാഴ്‌സ് ചെയ്യുമ്പോൾ അതിൻ്റെ സാന്നിധ്യം ആദ്യം പരിശോധിക്കും.

ആദ്യത്തെ 8 ബൈറ്റുകൾ ട്രാൻസ്‌പോണ്ടർ പാക്കറ്റിലെ ഉള്ളടക്കങ്ങളാണ്, അവസാന 2 ബൈറ്റുകളിൽ പാക്കറ്റിൻ്റെ ആദ്യ എട്ട് ബൈറ്റുകളുടെ CRC16 ചെക്ക്സം അടങ്ങിയിരിക്കുന്നു. ഉദാഹരണത്തിന്, ഇനിപ്പറയുന്ന ഡാറ്റ ഞങ്ങളുടെ ട്രാൻസ്‌പോണ്ടറിൽ രേഖപ്പെടുത്തിയിട്ടുണ്ട്: പാക്കറ്റ് 0xE7, 0x05, 0xE8, 0x93, 0x43, 0x7F, 0x20, 0xFF കൂടാതെ, അതനുസരിച്ച്, ചെക്ക്സം 0xF5 0xA8. നിങ്ങളുടേതായ അദ്വിതീയ ട്രാൻസ്‌പോണ്ടർ നിർമ്മിക്കുന്നതിന്, ആദ്യ ബൈറ്റ് 0xE7 കൂടാതെ, നിങ്ങൾ അടുത്ത ഏഴ് ബൈറ്റുകൾ EEPROM-ൽ എഴുതേണ്ടതുണ്ട്, തുടർന്ന് ആദ്യത്തെ എട്ട് ബൈറ്റുകളുടെ ചെക്ക്സം കണക്കാക്കുക. ഇതിനുശേഷം, പാക്കറ്റിൻ്റെ അറ്റത്ത് രണ്ട് CRC16 ബൈറ്റുകൾ EEPROM-ലേക്ക് എഴുതുക. ഞങ്ങൾ ആദ്യത്തെ ബൈറ്റ് മാറ്റമില്ലാതെ വിടുന്നു - 0xE7. ട്രാൻസ്‌പോണ്ടർ ഓൺ ചെയ്യുമ്പോൾ, ഈ ബൈറ്റുകളുടെ ഡാറ്റ ബിറ്റുകളായി വിഭജിക്കുകയും OCR രജിസ്റ്ററിൻ്റെ മൂല്യത്തിന് അനുസൃതമായി ഉചിതമായ പൾസ് ദൈർഘ്യം ഉപയോഗിച്ച് എൻകോഡ് ചെയ്യുകയും ചെയ്യുന്നു. പ്രക്ഷേപണത്തിനായി, ലോജിക്കൽ "0", "1" എന്നിവ പ്രക്ഷേപണം ചെയ്യാൻ 2KHz, 5KHz എന്നിവയുടെ 2 ഫ്രീക്വൻസികൾ ഉപയോഗിക്കുന്നു. കൂടാതെ, ഡാറ്റ സിൻക്രൊണൈസേഷൻ പൾസുകളാൽ വേർതിരിച്ചിരിക്കുന്നു - പാക്കറ്റ് ആരംഭ അടയാളങ്ങൾ.

ചിത്രം.1ട്രാൻസ്‌പോണ്ടർ പാക്കറ്റിൻ്റെ ഉള്ളടക്കം.


ചിത്രം.2വെർച്വൽ ഓസിലോസ്കോപ്പ് സ്ക്രീനിൽ ട്രാൻസ്പോണ്ടർ ട്രാൻസ്മിഷൻ ഡംപ്.

ട്രാൻസ്‌പോണ്ടർ ഡയഗ്രം ഇവിടെ കാണാം ചിത്രം 3.മാസ്റ്റർ ഓസിലേറ്ററിൻ്റെ ആവൃത്തി 8 MHz ആണ്. കൺട്രോളർ പവർ സപ്ലൈ +5 വി. നിങ്ങൾക്ക് "L" എന്ന് അടയാളപ്പെടുത്തിയ ഒരു mega8 കൺട്രോളർ ഉപയോഗിക്കാം, തുടർന്ന് 3V ലിഥിയം ബാറ്ററിയിൽ നിന്ന് വൈദ്യുതി നൽകാം (അത്തരം ചിപ്പിനുള്ള പാരാമീറ്ററുകൾ +2.7.... +3.5 ആണ്). ഈ ട്രാൻസിസ്റ്ററിന് പകരം, നിങ്ങൾക്ക് മറ്റേതെങ്കിലും ലോ-പവർ NPN ട്രാൻസിസ്റ്റർ ഉപയോഗിക്കാം. ട്രാൻസ്‌പോണ്ടർ കോയിൽ 0.22 എംഎം വയർ ഉപയോഗിച്ച് 50 എംഎം വ്യാസമുള്ള ഒരു മാൻഡ്രലിൽ മുറിവുണ്ടാക്കി, 50 തിരിവുകൾ ഉണ്ട്. ഓൺ ഈ നിമിഷംട്രാൻസ്‌പോണ്ടർ സജീവമാക്കി - കൂടെ ബാഹ്യ വൈദ്യുതി വിതരണം. അടുത്ത ഘട്ടത്തിൽ, ട്രാൻസ്‌പോണ്ടറിൻ്റെ ഒരു നിഷ്ക്രിയ പതിപ്പ് നിർമ്മിക്കാൻ പദ്ധതിയിട്ടിട്ടുണ്ട്, ഇത് വളരെ ലളിതമാണ് - ഈ കോയിലിൽ നിന്ന് വൈദ്യുതിക്കായി ഒരു ഐസൊലേഷൻ ഉണ്ടാക്കുക, റക്റ്റിഫയർ ബ്രിഡ്ജ് ഡയോഡുകളും ഒരു സ്റ്റെബിലൈസറും ചേർക്കുക.


ചിത്രം.3ട്രാൻസ്പോണ്ടർ സർക്യൂട്ട്.

ഇനി ഈ ട്രാൻസ്‌പോണ്ടറിനുള്ള റീഡർ സർക്യൂട്ടിനെക്കുറിച്ച് പറയാം. മുമ്പ് ഉപയോഗിച്ചിരുന്ന EMMARINE കാർഡ് റീഡറിനെ അടിസ്ഥാനമാക്കിയാണ് സർക്യൂട്ട് സ്വീകരിച്ചത്. 74hc4060 ജനറേറ്ററുള്ള സർക്യൂട്ടിൻ്റെ ഭാഗം ഇവിടെ കാണാം ഈ ഘട്ടത്തിൽഇല്ലാതാക്കാൻ മടിക്കേണ്ടതില്ല, കാരണം ഞങ്ങൾ ഇപ്പോൾ ഒരു സജീവ ലേബൽ ഉപയോഗിക്കുന്നു. എന്നിരുന്നാലും, ഞങ്ങൾ ഒരു നിഷ്ക്രിയ ടാഗ് ഉണ്ടാക്കുമ്പോൾ നമുക്ക് ഈ സർക്യൂട്ടിൻ്റെ ഭാഗം പിന്നീട് ആവശ്യമായി വരും, കൂടാതെ റീഡറിൽ നിന്ന് പവർ സ്വീകരിക്കേണ്ടതുണ്ട്. അല്ലെങ്കിൽ, EMMARINE നായുള്ള റീഡർ സർക്യൂട്ടിൽ നിന്ന് സർക്യൂട്ട് കാര്യമായി വ്യത്യാസപ്പെട്ടില്ല: നിഷ്ക്രിയ പീക്ക് ഡിറ്റക്ടർ - ഫിൽട്ടർ - ആംപ്ലിഫയർ - കംപാറേറ്റർ. സർക്യൂട്ടിന് സാധ്യമായ ഏറ്റവും വലിയ ലാളിത്യമുണ്ട് കൂടാതെ നന്നായി ട്യൂൺ ചെയ്ത സർക്യൂട്ടുകൾ ഉപയോഗിച്ച് 10-12 സെൻ്റിമീറ്റർ അകലെ ട്രാൻസ്പോണ്ടർ ഡാറ്റ വായിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു.

നിങ്ങൾക്ക് സർക്യൂട്ട് കൂടുതൽ ലളിതമാക്കാം, ഒരു ഡിറ്റക്ടറും ഒരു ഫിൽട്ടറും മാത്രം അവശേഷിപ്പിക്കാം, കൂടാതെ ഒരു ട്രാൻസിസ്റ്റർ ഔട്ട്പുട്ടിൽ ഇടുക, അത് ഒരു താരതമ്യത്തിൻ്റെ പങ്ക് വഹിക്കും, പക്ഷേ ഞാൻ അത് ചെയ്തില്ല. ഔട്ട്പുട്ടിൽ, ട്രാൻസ്പോണ്ടർ കൈമാറ്റം ചെയ്യുന്ന എൻകോഡ് ചെയ്ത പൾസ് ദൈർഘ്യത്തിന് അനുസൃതമായി നമുക്ക് ഒരു ബൈനറി ചതുരാകൃതിയിലുള്ള സിഗ്നൽ ലഭിക്കും. സർക്യൂട്ട് പ്രവർത്തനക്ഷമമായ മൂലക മൂല്യങ്ങളുടെ അനുവദനീയമായ വ്യതിയാനങ്ങൾ 5-10% ആണ്. കൺട്രോളറിനും opamp +5V നും വൈദ്യുതി വിതരണം. കൺട്രോളർ മാസ്റ്റർ ഓസിലേറ്ററിൻ്റെ ക്വാർട്സ് ആവൃത്തി 12 MHz ആണ്. LM358-ലെ കംപറേറ്റർ ഔട്ട്‌പുട്ട് INT0 കൺട്രോളറിൻ്റെ ബാഹ്യ ഇൻ്ററപ്റ്റ് പിന്നുമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു. എക്‌സ്‌റ്റേണൽ ഇൻ്ററപ്‌റ്റ് പിൻ INT0-ൽ ഉയരുന്ന അരികിൽ ഒരു ഇൻ്ററപ്റ്റ് വിളിക്കാൻ കൺട്രോളർ പ്രോഗ്രാം കോൺഫിഗർ ചെയ്‌തിരിക്കുന്നു. ഇൻ്ററപ്റ്റ് ഹാൻഡ്‌ലർ ക്ലോക്ക് പൾസുകൾ പരിശോധിക്കുകയും തുടർന്ന് പാക്കറ്റ് ഹെഡർ പരിശോധിക്കുകയും കൺട്രോളർ ബഫറിലേക്ക് ഉള്ളടക്കങ്ങൾ എഴുതുകയും ചെയ്യുന്നു. റീഡ് പാക്കറ്റുകളുടെ ഡാറ്റ RS232 ഇൻ്റർഫേസ് വഴി പിസിയിലേക്ക് കൈമാറുന്നു. ടെർമിനൽ ക്രമീകരിക്കുന്നതിന്, സൂചിപ്പിക്കുക ഇനിപ്പറയുന്ന പാരാമീറ്ററുകൾ: വേഗത 57.6Kb/s, 8 ഡാറ്റ ബിറ്റുകൾ, 1 സ്റ്റോപ്പ് ബിറ്റ്, തുല്യതയില്ല.

ഒരു പാക്കറ്റ് സ്വീകരിക്കുമ്പോൾ, കൺട്രോളർ സ്വീകരിച്ച ബൈറ്റുകളുടെ ചെക്ക്സം കണക്കാക്കുകയും ടെർമിനലിലേക്ക് (പാക്കറ്റും CRC) ഡാറ്റയും കൈമാറുകയും ചെയ്യുന്നു. ഒരു പൊരുത്തം ഉണ്ടെങ്കിൽ ചെക്ക്സംസ്കൺട്രോളർ കണക്കാക്കി പാക്കേജിൽ സ്വീകരിക്കുന്നു, കൺട്രോളറിൻ്റെ PORTB.0 (14) പിൻ ലേക്ക് ഒരു സിഗ്നൽ ഔട്ട്പുട്ട് ചെയ്യുന്നു (രേഖാചിത്രത്തിൽ LED1). എന്നിവയുമായി ബന്ധിപ്പിക്കാവുന്നതാണ് ഈ പോയിൻ്റ്ഒരു ബിൽറ്റ്-ഇൻ ജനറേറ്റർ ഉള്ള ഒരു ട്വീറ്റർ അല്ലെങ്കിൽ ഒരു പ്രതിരോധത്തിലൂടെ ഒരു LED. ശരിയായ കീ വായിക്കുമ്പോൾ, കൺട്രോളർ ബാഹ്യ തടസ്സങ്ങൾ പ്രവർത്തനരഹിതമാക്കുകയും അടുത്ത വായനയ്ക്ക് മുമ്പ് 1 സെ. ഈ റീഡറിനായി ഒരു ഓപ്പറേറ്റിംഗ് മോഡും ഉണ്ട് RFID അടിസ്ഥാനങ്ങൾകോട്ട ഇത് ചെയ്യുന്നതിന്, മുഴുവൻ ട്രാൻസ്പോണ്ടർ ഡംപ് ബൈറ്റുകളും റീഡർ കൺട്രോളറിൻ്റെ EEPROM- ലേക്ക് എഴുതേണ്ടത് ആവശ്യമാണ് - 10 ബൈറ്റുകൾ. ട്രാൻസ്‌പോണ്ടർ EEPROM-ന് സമാനമായി റീഡർ EEPROM-ന് ഡാറ്റ എഴുതുന്നു. ഈ സാഹചര്യത്തിൽ, അടുത്ത ട്രാൻസ്‌പോണ്ടർ വായിക്കുകയും അത് റീഡറുടെ EEPROM-ൽ എഴുതിയിരിക്കുന്നതുമായി പൊരുത്തപ്പെടുകയും ചെയ്യുമ്പോൾ, കൺട്രോളറിൻ്റെ PORTB.1 (15) പിൻ (രേഖാചിത്രത്തിലെ LED2) ലേക്ക് ഒരു സിഗ്നൽ ഔട്ട്‌പുട്ട് ചെയ്യുന്നു. ഒരു റെസിസ്റ്റൻസ് അല്ലെങ്കിൽ ഒരു റിലേയിലെ ഒരു ഔട്ട്പുട്ട് സ്വിച്ച് (ട്രാൻസിസ്റ്റർ) വഴി നിങ്ങൾക്ക് ഈ പോയിൻ്റിലേക്ക് ഒരു LED ബന്ധിപ്പിക്കാൻ കഴിയും ആക്യുവേറ്റർ. ഇപ്പോൾ ഞങ്ങൾക്ക് ഒരു പ്രത്യേക കീയ്‌ക്കായി ഒരു RFID ലോക്കും ഒരു കുപ്പിയിൽ ഒരു സാധാരണ റീഡറും ഉണ്ട്.


ചിത്രം.4 RFID ടാഗ് റീഡർ ഡയഗ്രം. (വലുതാക്കുക ഡയഗ്രം)

അതിനാൽ, നമുക്ക് ഇൻ്റർമീഡിയറ്റ് ഫലങ്ങൾ സംഗ്രഹിക്കാം. ഈ വായനക്കാരന് വേണ്ടി ഞങ്ങൾ സ്വന്തമായി ഒരു റീഡറും ട്രാൻസ്‌പോണ്ടറും ഉണ്ടാക്കി. ഞങ്ങൾ ഞങ്ങളുടെ ഉപകരണങ്ങൾ സംരക്ഷിച്ചു വിദേശ ഉപകരണങ്ങൾജനപ്രിയ RFID പ്രോട്ടോക്കോളുകൾക്കൊപ്പം പ്രവർത്തിക്കുന്നു. അടുത്ത ഘട്ടം, അവർ ചെയ്യുന്നതുപോലെ, ഞങ്ങളുടെ വായനക്കാർക്കായി ഒരു നിഷ്ക്രിയ ടാഗ് ഉണ്ടാക്കുക എന്നതാണ് പ്രശസ്ത നിർമ്മാതാക്കൾവ്യാവസായിക ട്രാൻസ്‌പോണ്ടറുകളും പോർട്ടിംഗ് ഉപകരണ കോഡും വിലകുറഞ്ഞ കൺട്രോളർ മോഡലുകളിലേക്ക്. ആർക്കൈവിൽ ഞാൻ ട്രാൻസ്‌പോണ്ടറിനും റീഡറിനും വേണ്ടിയുള്ള ഫേംവെയർ ലേഖനത്തിലേക്ക് അറ്റാച്ചുചെയ്യുന്നു.

ഫേംവെയർ ഡൗൺലോഡ് ചെയ്യുക:
ഞങ്ങളുടെ സെർവറിൽ നിന്ന് ഫയലുകൾ ഡൗൺലോഡ് ചെയ്യാൻ നിങ്ങൾക്ക് ആക്‌സസ് ഇല്ല

ഇന്ന് ഞാൻ MFRC522 ചിപ്പ് അടിസ്ഥാനമാക്കിയുള്ള RFID മൊഡ്യൂളായ RC522 നെക്കുറിച്ച് സംസാരിക്കും. പവർ സപ്ലൈ 3.3V, 6cm വരെ കണ്ടെത്തൽ പരിധി. വായനയ്ക്കായി രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്നു RFID രേഖകൾ 13.56 MHz ആവൃത്തിയുള്ള ടാഗുകൾ. ഈ കേസിൽ ആവൃത്തി വളരെ പ്രധാനമാണ്, കാരണം RFID ടാഗുകൾ മൂന്ന് ഫ്രീക്വൻസി ശ്രേണികളിൽ നിലവിലുണ്ട്:


  • LF ശ്രേണി അടയാളങ്ങൾ (125-134 kHz)

  • HF ബാൻഡ് ടാഗുകൾ (13.56 MHz)

  • UHF ബാൻഡ് ടാഗുകൾ (860-960 MHz)

ഈ പ്രത്യേക മൊഡ്യൂൾ HF ബാൻഡ് ടാഗുകൾക്കൊപ്പം പ്രവർത്തിക്കുന്നു, പ്രത്യേകിച്ച് MIFARE പ്രോട്ടോക്കോൾ.

നിങ്ങൾക്ക് ഉപയോഗിക്കാവുന്ന മൊഡ്യൂളിനൊപ്പം പ്രവർത്തിക്കാൻ സാധാരണ ലൈബ്രറി RFID ഉൾപ്പെടുത്തിയിട്ടുണ്ട് Arduino IDE, എന്നിരുന്നാലും, ഈ മൊഡ്യൂളിനായി പ്രത്യേകമായി എഴുതിയ മറ്റൊരു ലൈബ്രറിയുണ്ട് - MFRC522 (1 MB). രണ്ട് ലൈബ്രറികളും വളരെ സൗകര്യപ്രദമാണ്, എന്നാൽ MFRC522 ൽ കൂടുതൽ ഉണ്ട് പ്രത്യേക പ്രവർത്തനങ്ങൾ, അവസാന പ്രോഗ്രാം കോഡ് കഴിയുന്നത്ര കുറയ്ക്കാൻ അനുവദിക്കുന്നു.

കണക്ഷൻ

ചില ആളുകൾക്ക് ഒരു പ്രശ്‌നം നേരിടേണ്ടിവരും - മിക്ക പാഠങ്ങളിലും ഗൈഡുകളിലും ഉള്ള പിന്നുകളുടെ പേര് നിങ്ങളുടെ മൊഡ്യൂളിലെ പിൻഔട്ടുമായി പൊരുത്തപ്പെടുന്നില്ലായിരിക്കാം. സ്കെച്ചുകൾ SS പിൻ സൂചിപ്പിക്കുന്നുവെങ്കിലും നിങ്ങളുടെ മൊഡ്യൂളിൽ അത് ഇല്ലെങ്കിൽ, മിക്കവാറും അത് SDA ആയി അടയാളപ്പെടുത്തിയിരിക്കും. ഏറ്റവും സാധാരണമായ ബോർഡുകൾക്കായി ഞാൻ ഒരു മൊഡ്യൂൾ കണക്ഷൻ പട്ടിക ചുവടെ നൽകും.

MFRC522 ആർഡ്വിനോ യുനോ ആർഡ്വിനോ മെഗാ ആർഡ്വിനോ നാനോ v3

ആർഡ്വിനോ ലിയോനാർഡോ/മൈക്രോ

ആർഡ്വിനോ പ്രോ മൈക്രോ
ആർഎസ്ടി 9 5 D9 റീസെറ്റ്/ICSP-5 ആർഎസ്ടി
SDA(SS) 10 53 D10 10 10
മോസി 11 (ICSP-4) 51 D11 ICSP-4 16
MISO 12 (ICSP-1) 50 D12 ICSP-1 14
എസ്.സി.കെ 13 (ICSP-3) 52 D13 ICSP-3 15
3.3V 3.3V 3.3V സ്റ്റെബിലൈസർ 3.3V സ്റ്റെബിലൈസർ 3.3V സ്റ്റെബിലൈസർ 3.3V
ജിഎൻഡി ജിഎൻഡി ജിഎൻഡി ജിഎൻഡി ജിഎൻഡി ജിഎൻഡി

SS(SDA), RST കൺട്രോൾ പിന്നുകൾ സ്കെച്ചിൽ വ്യക്തമാക്കിയിട്ടുണ്ട്, അതിനാൽ നിങ്ങളുടെ ബോർഡ് ഞാൻ എൻ്റെ ഉദാഹരണങ്ങളിൽ ഉപയോഗിക്കുന്നതിൽ നിന്ന് വ്യത്യസ്തമാണെങ്കിൽ, ഞാൻ UNO R3 ഉപയോഗിക്കുന്നുവെങ്കിൽ, സ്കെച്ചിൻ്റെ തുടക്കത്തിൽ പട്ടികയിൽ നിന്നുള്ള പിന്നുകൾ സൂചിപ്പിക്കുക :


#SS_PIN 10 നിർവചിക്കുക #RST_PIN 9 നിർവചിക്കുക

ഉദാഹരണം നമ്പർ 1: കാർഡ് നമ്പർ റീഡിംഗ്

RFID ലൈബ്രറിയിൽ നിന്നുള്ള ഒരു ഉദാഹരണം നോക്കാം - കാർഡ് റീഡ്. ഇത് കാർഡിൽ നിന്നുള്ള ഡാറ്റ പ്രദർശിപ്പിക്കുന്നില്ല, പക്ഷേ അതിൻ്റെ നമ്പർ മാത്രം, ഇത് സാധാരണയായി പല ജോലികൾക്കും മതിയാകും.


#ഉൾപ്പെടുത്തുക #ഉൾപ്പെടുത്തുക #നിർവചിക്കുക SS_PIN 10 #നിർവചിക്കുക RST_PIN 9 RFID rfid(SS_PIN, RST_PIN); // കാർഡ് നമ്പറിനെക്കുറിച്ചുള്ള ഡാറ്റ 5 വേരിയബിളുകളിലാണ് സംഭരിച്ചിരിക്കുന്നത്, അത്തരം ഒരു കാർഡ് ഞങ്ങൾ ഇതിനകം വായിച്ചിട്ടുണ്ടോ എന്ന് പരിശോധിക്കാൻ ഞങ്ങൾ അവരെ ഓർക്കും int serNum0; int serNum1; int serNum2; int serNum3; int serNum4; void setup() ( Serial.begin(9600); SPI.begin(); rfid.init(); ) void loop() ( if (rfid.isCard()) ( if (rfid.readCardSerial()) ( // (rfid.serNum != serNum0 && rfid.serNum != serNum1 && rfid.serNum != serNum2 && rfid.serNum != serNum3 && rfid !) മുമ്പത്തെ കാർഡിൻ്റെ നമ്പറുമായി കാർഡ് നമ്പർ താരതമ്യം ചെയ്യുക. * കാർഡ് പുതിയതാണെങ്കിൽ, വായിക്കുക */ Serial.println(" "); Serial.println ("കാർഡ് കണ്ടെത്തി"); serNum0 = rfid.serNum; serNum1 = rfid.serNum; serNum2 = rfid.serNum; serNum3 = rfid .serNum; serNum4 = rfid.serNum; //കാർഡ് നമ്പർ Serial.println("Cardnumber:") ഔട്ട്‌പുട്ട് ചെയ്യുക; Serial.print("Dec: "); Serial.print(rfid.serNum,DEC); Serial.print( )", "); Serial .print(rfid.serNum,DEC); Serial.print(", "); Serial.print(rfid.serNum,DEC); Serial.print(", "); Serial.print( rfid.serNum,DEC); Serial.print(", "); Serial.print(rfid.serNum,DEC); Serial.println(" "); Serial.print("Hex: "); Serial.print(rfid .serNum,HEX);സീരിയൽ .print(", "); Serial.print(rfid.serNum,HEX); Serial.print(", "); Serial.print(rfid.serNum,HEX); Serial.print(", "); Serial.print(rfid.serNum,HEX); Serial.print(", "); Serial.print(rfid.serNum,HEX); Serial.println(" "); ) else ( /* ഇത് ഇതിനകം ഒരു റീഡ് കാർഡ് ആണെങ്കിൽ, ഡോട്ട് പ്രിൻ്റ് ചെയ്യുക */ Serial.print("."); ) ) rfid.halt(); )

സ്കെച്ച് അപ്‌ലോഡ് ചെയ്തു, മൊഡ്യൂളിലെ പവർ എൽഇഡി പ്രകാശിക്കുന്നു, പക്ഷേ മൊഡ്യൂൾ കാർഡിനോട് പ്രതികരിക്കുന്നില്ലേ? ജോലിയുടെ "ശരിയായ" ഉദാഹരണങ്ങൾക്കായി പരിഭ്രാന്തരാകുകയോ ഓടുകയോ ചെയ്യേണ്ടതില്ല. മിക്കവാറും, പിന്നുകളിലൊന്നിൽ ഒരു കോൺടാക്റ്റും ഇല്ല - ബോർഡിലെ ദ്വാരങ്ങൾ ജമ്പറിൻ്റെ കനത്തേക്കാൾ അല്പം വലുതാണ്, അതിനാൽ അവ പുനഃക്രമീകരിക്കാൻ ശ്രമിക്കുന്നത് മൂല്യവത്താണ്. ബോർഡിലെ LED കത്തുന്നില്ലേ? 3.3V ലേക്ക് നയിക്കുന്ന ജമ്പർ മാറ്റാൻ ശ്രമിക്കുക, അത് ബോർഡിൽ 3.3V ലേക്ക് കണക്ട് ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക; 5V പവർ നൽകുന്നത് നിങ്ങളുടെ ബോർഡിനെ എളുപ്പത്തിൽ നശിപ്പിക്കും.

എല്ലാം നിങ്ങൾക്കായി പ്രവർത്തിക്കുന്നുവെന്ന് പറയാം. തുടർന്ന്, മോണിറ്ററിലെ RFID ടാഗുകൾ വായിക്കുന്നു സീരിയൽ പോർട്ട്ഞങ്ങൾ ഇനിപ്പറയുന്നവ കാണും:


ഇവിടെ ഞാൻ 3 വ്യത്യസ്ത ടാഗുകൾ വായിച്ചു, നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, അവൻ 3 എല്ലാം വിജയകരമായി വായിച്ചു.

ഉദാഹരണം #2: ഒരു കാർഡിൽ നിന്നുള്ള ഡാറ്റ റീഡിംഗ്

നമുക്ക് കൂടുതൽ സങ്കീർണ്ണമായ ഒരു ഓപ്ഷൻ പരിഗണിക്കാം - ഇത് കാർഡ് നമ്പർ മാത്രമല്ല, വായിക്കാൻ ലഭ്യമായ എല്ലാ ഡാറ്റയും വായിക്കും. ഇത്തവണ നമുക്ക് MFRC522 ലൈബ്രറിയിൽ നിന്ന് ഒരു ഉദാഹരണം എടുക്കാം - DumpInfo.


#ഉൾപ്പെടുത്തുക #ഉൾപ്പെടുത്തുക #നിർവചിക്കുക RST_PIN 9 // #define SS_PIN 10 // MFRC522 mfrc522(SS_PIN, RST_PIN); // MFRC522 ഇൻസ്‌റ്റൻസ് അസാധുവായ സെറ്റപ്പ് സൃഷ്‌ടിക്കുക() ( Serial.begin(9600); // (! സീരിയൽ) സമയത്ത് സീരിയൽ പോർട്ട് മോണിറ്റർ ആരംഭിക്കുക; // അത് തുറക്കുന്നത് വരെ ഒന്നും ചെയ്യരുത് (ATMEGA32U4 ചിപ്പിലെ Arduino നായി) SPI.begin( ) ; // SPI ബസ് mfrc522.PCD_Init(); // ആരംഭിക്കുക RFID മൊഡ്യൂൾ ShowReaderDetails(); // MFRC522 മൊഡ്യൂളിനെ കുറിച്ചുള്ള ഡാറ്റ പ്രിൻ്റ് ചെയ്യുക Serial.println(F("UID, ടൈപ്പ്, ഡാറ്റ ബ്ലോക്കുകൾ കാണാൻ PICC സ്കാൻ ചെയ്യുക...")); ) void loop() ( // തിരയുന്നു പുതിയ ഭൂപടംഎങ്കിൽ (! mfrc522.PICC_IsNewCardPresent()) ( മടങ്ങുക; ) // എങ്കിൽ കാർഡുകളിലൊന്ന് തിരഞ്ഞെടുക്കുക ); ) അസാധുവായ ShowReaderDetails() ( // മൊഡ്യൂൾ പതിപ്പ് നമ്പർ നേടുക v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg); Serial.print(F("MFRC522 Software Version: 0x")); Serial.print(v, HEX); എങ്കിൽ (v == 0x91) Serial.print(F(" = v1.0"));അല്ലെങ്കിൽ (v == 0x92) Serial.print(F(" = v2.0")); else Serial.print( F (" (അജ്ഞാതം)"); Serial.println(""); // നമുക്ക് 0x00 അല്ലെങ്കിൽ 0xFF ലഭിക്കുമ്പോൾ, ((v == 0x00) || (v == 0xFF)) ( സീരിയൽ .println( F("മുന്നറിയിപ്പ്: ആശയവിനിമയ പരാജയം, MFRC522 ശരിയായി ബന്ധിപ്പിച്ചിട്ടുണ്ടോ?"));) )

മുമ്പത്തെ ഉദാഹരണം പിശകുകളില്ലാതെ പ്രവർത്തിക്കുന്നുണ്ടെങ്കിൽ, ഇതും ഒരു പ്രശ്നമാകരുത്. എന്നിരുന്നാലും, മുമ്പത്തെ ഉദാഹരണത്തിൽ ഒരു പ്രശ്‌നവുമില്ലാതെ കാർഡ് നമ്പർ നൽകിയ മെട്രോ പാസിന് ഇതിൽ കണ്ടെത്താനാകാത്ത ഡാറ്റാ തരം ഉണ്ടെന്ന് തെളിഞ്ഞു, കൂടാതെ മൊഡ്യൂളിന് കാർഡ് നമ്പറല്ലാതെ മറ്റൊന്നും വായിക്കാൻ കഴിഞ്ഞില്ല.

തൽഫലമായി, കാർഡിൽ നിന്നുള്ള ഡാറ്റ വായിച്ചുകഴിഞ്ഞാൽ, 16 മെമ്മറി സെക്ടറുകളിൽ നിന്ന് അതിൻ്റെ തരം, ഐഡൻ്റിഫയർ, ഡാറ്റ എന്നിവ നമുക്ക് ലഭിക്കും. MIFARE 1K സ്റ്റാൻഡേർഡ് കാർഡുകളിൽ 16 സെക്ടറുകൾ അടങ്ങിയിരിക്കുന്നു, ഓരോ സെക്ടറിലും 4 ബ്ലോക്കുകൾ അടങ്ങിയിരിക്കുന്നു, ഓരോ ബ്ലോക്കിലും 16 ബൈറ്റുകൾ ഡാറ്റ അടങ്ങിയിരിക്കുന്നു.


ഉദാഹരണം നമ്പർ 3: കാർഡിലേക്ക് ഒരു പുതിയ ഐഡൻ്റിഫയർ എഴുതുന്നു

ഈ ഉദാഹരണത്തിൽ, കാർഡ് ഐഡൻ്റിഫയർ (UID) മാറ്റുന്നത് ഞങ്ങൾ നോക്കും. എല്ലാ കാർഡുകളും ഐഡി മാറ്റുന്നതിനെ പിന്തുണയ്ക്കുന്നില്ലെന്ന് അറിയേണ്ടത് പ്രധാനമാണ്. കാർഡ് റീറൈറ്റബിൾ ആയിരിക്കാം, എന്നാൽ അതിനർത്ഥം ഡാറ്റ മാറ്റിയെഴുതാൻ കഴിയുമെന്നാണ്. നിർഭാഗ്യവശാൽ, എൻ്റെ കൈയിൽ ഉണ്ടായിരുന്ന കാർഡുകൾ യുഐഡി റീറൈറ്റിംഗ് പിന്തുണയ്ക്കുന്നില്ല, പക്ഷേ ഞാൻ ഇവിടെ സ്കെച്ച് കോഡ് നൽകും.


#ഉൾപ്പെടുത്തുക #ഉൾപ്പെടുത്തുക /* ഇവിടെ ഒരു പുതിയ യുഐഡി സജ്ജമാക്കുക */ #NEW_UID (0xDE, 0xAD, 0xBE, 0xEF) #നിർവചിക്കുക SS_PIN 10 # define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::MIFARE_Key കീ; void setup() ( Serial.begin(9600); while (!Serial); SPI.begin(); mfrc522.PCD_Init(); Serial.println(F("മുന്നറിയിപ്പ്: ഈ ഉദാഹരണം നിങ്ങളുടെ UID മാറ്റാവുന്ന കാർഡിൻ്റെ UID പുനരാലേഖനം ചെയ്യുന്നു, ശ്രദ്ധയോടെ ഉപയോഗിക്കുക!")); (ബൈറ്റ് i = 0; i< 6; i++) { key.keyByte[i] = 0xFF; } } void loop() { if (! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial()) { delay(50); return; } // Считываем текущий UID Serial.print(F("Card UID:")); for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(mfrc522.uid.uidByte[i], HEX); } Serial.println(); // Записываем новый UID byte newUid = NEW_UID; if (mfrc522.MIFARE_SetUid(newUid, (byte)4, true)) { Serial.println(F("Wrote new UID to card.")); } // Halt PICC and re-select it so DumpToSerial doesn"t get confused mfrc522.PICC_HaltA(); if (! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial()) { return; } // Считываем данные с карты Serial.println(F("New UID and contents:")); mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); delay(2000); }

ഉദാഹരണം നമ്പർ 4: ഒരു കാർഡിലേക്ക് ഡാറ്റ എഴുതുന്നു

അവസാനമായി, ഇത്രയും കാലം ഞങ്ങൾ നേടിയത് ഇതാ - കാർഡിലെ ഡാറ്റ റെക്കോർഡിംഗ്. മൊഡ്യൂളിനൊപ്പം പ്രവർത്തിക്കുന്നതിൻ്റെ “മധുരമായ” ഭാഗം നിലവിലുള്ള ഒരു കാർഡിൻ്റെ ഒരു പകർപ്പ് ഉണ്ടാക്കാനും എന്തെങ്കിലും ചേർക്കാനും മാറ്റാനുമുള്ള കഴിവാണ്, ഇത് വായിക്കുന്നതിനേക്കാൾ വളരെ രസകരമാണ്.

മാപ്പിലെ ഡാറ്റ ബ്ലോക്കുകളിലൊന്ന് മാറ്റാം:


#ഉൾപ്പെടുത്തുക #ഉൾപ്പെടുത്തുക #നിർവചിക്കുക RST_PIN 9 #നിർവചിക്കുക SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::MIFARE_Key കീ; void setup() ( Serial.begin(9600); while (!Serial); SPI.begin(); mfrc522.PCD_Init(); // കീ തയ്യാറാക്കുക // എന്നതിൻ്റെ സ്റ്റാൻഡേർഡ് ആയ FFFFFFFFFFFh കീ ഉപയോഗിക്കുക ശൂന്യമായ കാർഡുകൾ(ബൈറ്റ് i = 0; i< 6; i++) { key.keyByte[i] = 0xFF; } Serial.println(F("Scan a MIFARE Classic PICC to demonstrate read and write.")); Serial.print(F("Using key (for A and B):")); dump_byte_array(key.keyByte, MFRC522::MF_KEY_SIZE); Serial.println(); Serial.println(F("BEWARE: Data will be written to the PICC, in sector #1")); } void loop() { // Ждем новую карту if (! mfrc522.PICC_IsNewCardPresent()) return; // Выбираем одну из карт if (! mfrc522.PICC_ReadCardSerial()) return; // Показываем подробности карты Serial.print(F("Card UID:")); dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size); Serial.println(); Serial.print(F("PICC type: ")); byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); Serial.println(mfrc522.PICC_GetTypeName(piccType)); // Проверяем совместимость if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) { Serial.println(F("This sample only works with MIFARE Classic cards.")); return; } // В этом примере мы используем первый сектор данных карты, блок 4 byte sector = 1; byte blockAddr = 4; byte dataBlock = { // Данные, которые мы запишем на карту 0x01, 0x02, 0x03, 0x04, // 1, 2, 3, 4, 0x05, 0x06, 0x07, 0x08, // 5, 6, 7, 8, 0x08, 0x09, 0xff, 0x0b, // 9, 10, 255, 12, 0x0c, 0x0d, 0x0e, 0x0f // 13, 14, 15, 16 }; byte trailerBlock = 7; byte status; byte buffer; byte size = sizeof(buffer); // Аутентификация Serial.println(F("Authenticating using key A...")); status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid)); if (status != MFRC522::STATUS_OK) { Serial.print(F("PCD_Authenticate() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); return; } // Показываем текущие данные сектора Serial.println(F("Current data in sector:")); mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key, sector); Serial.println(); // Читаем данные из блока Serial.print(F("Reading data from block ")); Serial.print(blockAddr); Serial.println(F(" ...")); status = mfrc522.MIFARE_Read(blockAddr, buffer, &size); if (status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Read() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); } Serial.print(F("Data in block ")); Serial.print(blockAddr); Serial.println(F(":")); dump_byte_array(buffer, 16); Serial.println(); Serial.println(); // Аутентификация Serial.println(F("Authenticating again using key B...")); status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_B, trailerBlock, &key, &(mfrc522.uid)); if (status != MFRC522::STATUS_OK) { Serial.print(F("PCD_Authenticate() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); return; } // Записываем данные в блок Serial.print(F("Writing data into block ")); Serial.print(blockAddr); Serial.println(F(" ...")); dump_byte_array(dataBlock, 16); Serial.println(); status = mfrc522.MIFARE_Write(blockAddr, dataBlock, 16); if (status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Write() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); } Serial.println(); // Читаем данные снова, чтобы проверить, что запись прошла успешно Serial.print(F("Reading data from block ")); Serial.print(blockAddr); Serial.println(F(" ...")); status = mfrc522.MIFARE_Read(blockAddr, buffer, &size); if (status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Read() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); } Serial.print(F("Data in block ")); Serial.print(blockAddr); Serial.println(F(":")); dump_byte_array(buffer, 16); Serial.println(); Serial.println(F("Checking result...")); byte count = 0; for (byte i = 0; i < 16; i++) { if (buffer[i] == dataBlock[i]) count++; } Serial.print(F("Number of bytes that match = ")); Serial.println(count); if (count == 16) { Serial.println(F("Success:-)")); } else { Serial.println(F("Failure, no match:-(")); Serial.println(F(" perhaps the write didn"t work properly...")); } Serial.println(); // Выводим данные Serial.println(F("Current data in sector:")); mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key, sector); Serial.println(); mfrc522.PICC_HaltA(); mfrc522.PCD_StopCrypto1(); } void dump_byte_array(byte *buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { Serial.print(buffer[i] < 0x10 ? " 0" : " "); Serial.print(buffer[i], HEX); } }

തൽഫലമായി, പരിഷ്കരിച്ച ഡാറ്റ ബ്ലോക്കുള്ള ഒരു കാർഡ് ഞങ്ങൾക്ക് ലഭിക്കും:


ഇപ്പോൾ, കാർഡ് ഡാറ്റയുടെ ബ്ലോക്കുകൾ വായിക്കാനും എഴുതാനും പഠിച്ചതിനാൽ, നിങ്ങൾക്ക് ഏറ്റവും സാധ്യതയുള്ള ടാഗുകൾ ഉപയോഗിച്ച് പരീക്ഷിക്കാം - പാസുകൾ, യാത്രാ കാർഡുകൾ പൊതു ഗതാഗതം. ഈ കാർഡുകളിൽ നിന്നുള്ള ഡാറ്റ വായിക്കാനും എഴുതാനും ശ്രമിക്കുക, രണ്ട് ഡ്യൂപ്ലിക്കേറ്റ് പാസുകൾ ഒരിക്കലും ഉപദ്രവിക്കില്ല, അല്ലേ?)

അത്രയേയുള്ളൂ, പ്രസിദ്ധീകരണങ്ങൾ സബ്‌സ്‌ക്രൈബുചെയ്‌ത് പിന്തുടരുക. അടുത്ത തവണ ഞാൻ നിങ്ങളോട് പറയുകയും ഒരു സ്റ്റാൻഡേർഡ് എങ്ങനെ ഉപയോഗിക്കാമെന്ന് കാണിക്കുകയും ചെയ്യും പ്രതീക പ്രദർശനം 1602 ഇഷ്‌ടാനുസൃത പ്രതീകങ്ങൾ ചേർക്കുക, പ്രധാനമായും ഡിസ്‌പ്ലേയിലേക്ക് ഗ്രാഫിക്സ് ചേർക്കുക.

  • മൈക്രോകൺട്രോളർ പ്രോഗ്രാമിംഗ്
  • നിങ്ങൾക്കറിയാവുന്നതുപോലെ, പല ആക്സസ് സിസ്റ്റങ്ങളും 125 KHz ആവൃത്തിയിലുള്ള EM-Marin സ്റ്റാൻഡേർഡിൻ്റെ RFID കാർഡുകൾ ഉപയോഗിക്കുന്നു. എൻ്റെ വീട്ടിലെ ഇൻ്റർകോം ഒരു അപവാദമായിരുന്നില്ല. ഒരു പ്രശ്നം - അത്തരം കാർഡുകൾ എങ്ങനെ പകർത്തണമെന്ന് പഠിക്കുന്നത് നന്നായിരിക്കും, കാരണം അവ പകർത്തുന്നതിനുള്ള വില ടാഗുകൾ പ്രോത്സാഹജനകമല്ല. തീർച്ചയായും, ഓൺലൈനിൽ കുറച്ച് കോപ്പിയർ സ്കീമുകൾ ഉണ്ട് (ചൈനക്കാർ അവരുടെ കോപ്പിയറുകൾ പെന്നികൾക്ക് വിൽക്കുന്നു - എന്നിരുന്നാലും, പകർത്തുമ്പോൾ അവർ പലപ്പോഴും അവരുടെ പാസ്‌വേഡ് ഡിസ്കുകളിൽ ഇടുന്നു), പക്ഷേ എന്തുകൊണ്ട് നിങ്ങളുടെ സ്വന്തം കോപ്പിയർ നിർമ്മിക്കരുത്? അതിനെക്കുറിച്ചാണ് ചുവടെയുള്ള ലേഖനം.

    അത്തരം അടയാളങ്ങൾ എന്തിലേക്ക് പകർത്താനാകുമെന്ന് കണ്ടെത്തി ഒരു കോപ്പിയറിൻ്റെ വികസനം ആരംഭിക്കുന്നത് മൂല്യവത്താണോ? ഫോറങ്ങൾ വായിച്ചതിനുശേഷം, പകർത്തുന്നതിനുള്ള ഏറ്റവും സാധാരണമായ ശൂന്യത T5577, T5557, EM4305 ആണെന്ന് നിങ്ങൾക്ക് കണ്ടെത്താനാകും.

    ഇപ്പോൾ നമുക്ക് ഒരു ഡയഗ്രം ആവശ്യമാണ്. നമുക്ക് RECTO-യിൽ നിന്ന് അത്തരമൊരു കോപ്പിയറിൻ്റെ അനലോഗ് ഭാഗം എടുത്ത് atmega8 മൈക്രോകൺട്രോളറുമായി ബന്ധിപ്പിക്കാം. max232 അടിസ്ഥാനമാക്കിയുള്ള ഒരു COM പോർട്ടിലേക്ക് കണക്റ്റുചെയ്യുന്നതിന് നമുക്ക് ഒരു ലെവൽ കൺവെർട്ടർ ചേർക്കാം (ആഗ്രഹിക്കുന്നവർക്ക് USB വഴി കണക്റ്റുചെയ്യാൻ ST232 അല്ലെങ്കിൽ മറ്റെന്തെങ്കിലും ഉപയോഗിക്കാം, പക്ഷേ എൻ്റെ കമ്പ്യൂട്ടറിൽ ഒരു COM പോർട്ടും അതുപോലെ ഒരു USB-COM അഡാപ്റ്ററും ഉണ്ട്, അതിനാൽ അത് എൻ്റെ ചുമതല നിന്നില്ല).

    നിങ്ങൾക്ക് ഈ ഡയഗ്രം ലഭിക്കും:

    അവൾ എങ്ങനെയാണ് ഇരിക്കുന്നത്? ഡ്യുവൽ എമിറ്റർ ഫോളോവർ, ഓസിലേറ്റിംഗ് സർക്യൂട്ട്, ഡിറ്റക്ടർ, ആർസി ഫിൽട്ടറുകൾ. RC ഫിൽട്ടറുകൾക്ക് വ്യത്യസ്ത സമയ സ്ഥിരാങ്കങ്ങൾ ഉള്ളതിനാൽ, ഘട്ടങ്ങൾ തമ്മിലുള്ള വോൾട്ടേജ് ലെവലുകൾ താരതമ്യം ചെയ്യുന്നതിലൂടെ, RFID ടാഗ് സിഗ്നലിലെ മാറ്റം വേർതിരിച്ചെടുക്കാൻ സാധിക്കും. atmega8-ൽ നിർമ്മിച്ച കംപാറേറ്റർ ഈ ടാസ്‌ക് കൈകാര്യം ചെയ്യും. atmega8-ൽ നിർമ്മിച്ച PWM കൺട്രോളർ 125 KHz സിഗ്നലിൻ്റെ ജനറേഷൻ നൽകും.

    ഒരു RFID ടാഗും ഒരു റീഡറും ചേർന്ന് ഒരു ട്രാൻസ്ഫോർമർ രൂപപ്പെടുന്നു, അവിടെ ടാഗ് ദ്വിതീയ വിൻഡിംഗ് ആണ്. ദ്വിതീയ വിൻഡിംഗിൻ്റെ ലോഡ് മാറ്റി ടാഗ് വഴി വിവരങ്ങൾ കൈമാറുന്നു. തൽഫലമായി, റീഡർ കോയിലിലെ കറൻ്റ് (പ്രൈമറി വൈൻഡിംഗ്) മാറുന്നു. സർക്യൂട്ടിൻ്റെ മുകളിലെ അനലോഗ് ഭാഗം ഈ നിലവിലെ പൾസുകളെ വേർതിരിക്കുന്നതിന് ഉത്തരവാദിയാണ്. ഓസിലേറ്ററി സർക്യൂട്ട്കോൺഫിഗർ ചെയ്യേണ്ടതുണ്ട് പരമാവധി വോൾട്ടേജ്വി നിയന്ത്രണ പോയിൻ്റ്, ഉദാഹരണത്തിന്, ഒരു കോയിലിൻ്റെ തിരിവുകൾ വളയ്ക്കുക/വളയുക. ശരിയാണ്, പരമാവധി വോൾട്ടേജിനേക്കാൾ അല്പം കുറവുള്ളതാണ് നല്ലതെന്ന് അവർ പറയുന്നു - ഇത് കൂടുതൽ സ്ഥിരതയോടെ പ്രവർത്തിക്കുന്നു. എൻ്റെ ടെസ്റ്റ് പോയിൻ്റിൽ ഏകദേശം 40 V ഉണ്ട്.

    പകർത്തിയ അടയാളം മാഞ്ചസ്റ്റർ എൻകോഡിംഗ് ഉപയോഗിക്കുന്നു. ഡീക്രിപ്റ്റ് ചെയ്യുന്നതിനായി ഈ കോഡ്, സിഗ്നൽ എഡ്ജിലെ എന്തെങ്കിലും മാറ്റത്തിന് ബിറ്റ് സ്ലോട്ട് കാലയളവിൻ്റെ മുക്കാൽ ഭാഗം ഒഴിവാക്കിയാൽ മതി, അതിനെ തുടർന്നുള്ള സിഗ്നൽ ഡ്രോപ്പ് അടിസ്ഥാനമാക്കി, ഡ്രോപ്പിന് ശേഷമുള്ള സിഗ്നൽ മൂല്യവുമായി പൊരുത്തപ്പെടുന്ന ബിറ്റ് മൂല്യം ശരിയാക്കുക. ഡീകോഡ് ചെയ്യുമ്പോൾ, സിഗ്നൽ ഡ്രോപ്പ് സംഭവിക്കേണ്ട ഒരു വിൻഡോ വ്യക്തമാക്കുന്നത് മൂല്യവത്താണ് - ബിറ്റ് സ്ലോട്ടിൻ്റെ പകുതിയിലധികം കാലയളവ്.

    ഡീക്രിപ്ഷൻ രീതി മാഞ്ചസ്റ്റർ എൻകോഡിംഗ്അതിനുള്ള കോഡ് ഞാൻ ഷാഡിൽ നിന്ന് എടുത്തു. നിങ്ങൾക്ക് തീർച്ചയായും സ്വന്തമായി എഴുതാം, പക്ഷേ ഞാൻ കോപ്പിയർ സമാരംഭിക്കുന്നതിനുള്ള തിരക്കിലായിരുന്നു - സർക്യൂട്ട് പ്രവർത്തിക്കുന്നുണ്ടെന്നും ടാഗുകൾ സ്വീകരിക്കുന്നുണ്ടെന്നും ഉറപ്പാക്കാൻ ഞാൻ ആഗ്രഹിച്ചു. അതിനാൽ ഈ ശകലം കോപ്പിയർ കോഡിൽ തുടർന്നു. ഡീകോഡിംഗ് കോഡിന് ആവശ്യമുള്ളതിനേക്കാൾ വിപരീതമായാണ് എൻ്റെ താരതമ്യപ്പെടുത്തൽ ക്രമീകരിച്ചിരിക്കുന്നതെന്നും ഇത് മാറി. കോഡിൽ അത് മാറ്റി. അതിനാൽ, നമുക്ക് പൂജ്യങ്ങളുടെയും ഒന്നിൻ്റെയും ക്രമങ്ങൾ ലഭിച്ചു. അവരിൽ നിന്ന് എനിക്ക് എങ്ങനെ കാർഡ് കോഡ് ലഭിക്കും?

    അത് വളരെ ലളിതവുമാണ്. നിബിൾസ് അനുസരിച്ച് കാർഡ് നമ്പറിന് ഫോം ഉണ്ടെന്ന് നമുക്ക് അനുമാനിക്കാം എബി സിഡി ഇഎഫ് ജിഎച്ച് ഐജെ. മാപ്പ് ഇത് കാണിക്കുന്നു:

    1) തുടക്കത്തിൽ ഒമ്പത് യൂണിറ്റുകൾ;
    2) നിബിൾ എ;
    3) നിബിൾ പാരിറ്റി എ (1 ബിറ്റ്);
    4) നിബിൾ ബി;
    5) നിബിൾ പാരിറ്റി ബി (1 ബിറ്റ്);

    16) നിബിൾ I;
    17) നിബിൾ പാരിറ്റി I (1 ബിറ്റ്);
    18) നിബിൾ ജെ;
    19) നിബിൾ പാരിറ്റി J (1 ബിറ്റ്);
    20) നിബിൾസ് എ ബി സി ഡി ഇ എഫ് ജി എച്ച് ഐ ജെ എന്നതിനായുള്ള കോളം പാരിറ്റി നിബിൾ;
    21) ബിറ്റ് 0.

    ഞങ്ങൾ എല്ലാ 64 ബിറ്റുകളും വായിക്കുകയും ഡീക്രിപ്റ്റ് ചെയ്യുകയും കാർഡ് കോഡിൻ്റെ 40 ബിറ്റുകൾ നേടുകയും ചെയ്യുന്നു. റീഡറിൽ ഘടിപ്പിച്ചിരിക്കുന്ന കാർഡിൻ്റെ കോയിൽ അടച്ച് അത്തരമൊരു കോഡ് ഞങ്ങൾ തന്നെ ഇഷ്യൂ ചെയ്യുകയാണെങ്കിൽ, ഞങ്ങൾക്ക് ഒരു കാർഡ് എമുലേറ്റർ ലഭിക്കും എന്നത് യുക്തിസഹമാണ്. എന്നാൽ ഇപ്പോൾ ഞങ്ങൾക്ക് അവനോട് താൽപ്പര്യമില്ല.

    ഞങ്ങൾ ഒരു മാപ്പ് വായിക്കാൻ പഠിച്ചു, എന്നാൽ മാപ്പിലേക്ക് ഡാറ്റ എങ്ങനെ കൈമാറാം? ഇത് ചെയ്യുന്നതിന്, കാർഡുമായുള്ള ആശയവിനിമയ പ്രോട്ടോക്കോൾ അനുസരിച്ച് നിങ്ങൾ 125 KHz ആവൃത്തി ഓണാക്കുകയോ ഓഫാക്കുകയോ ചെയ്യേണ്ടതുണ്ട്. വായനക്കാരൻ്റെ "നിശബ്ദത" സമയത്ത്, സംഭരിച്ച ഊർജ്ജത്താൽ കാർഡ് പ്രവർത്തിക്കുന്നു.

    T5557/T5577 ബ്ലാങ്കുകൾ റെക്കോർഡിംഗ് പ്രോട്ടോക്കോളുകളുടെ കാര്യത്തിൽ പരസ്പരം പൂർണ്ണമായും പൊരുത്തപ്പെടുന്നു, എന്നിരുന്നാലും, അവയ്ക്ക് ചെറിയ വ്യത്യാസമുണ്ട് പരമാവധി തവണപൾസുകൾ (ഭാഗ്യവശാൽ, T5557 ൻ്റെ സമയങ്ങൾ T5577 മായി ഓവർലാപ്പ് ചെയ്യുന്നു). EM4305 ന് മറ്റൊരു റെക്കോർഡിംഗ് പ്രോട്ടോക്കോൾ ഉണ്ട്.

    T5557 റെക്കോർഡ് ചെയ്യാൻ ഞാൻ BolshoyK എന്ന കോഡ് ഉപയോഗിച്ചു. T5557 കീ ഫോബിനുള്ള സിഗ്നൽ പരാമീറ്ററുകൾ ചുവടെയുള്ള പട്ടിക കാണിക്കുന്നു.

    സ്റ്റാർട്ട്‌ഗേപ്പ് സിഗ്നലിൽ നിന്നാണ് റെക്കോർഡിംഗ് ആരംഭിക്കുന്നത് - നിങ്ങൾ ഏകദേശം 300 µs നേരത്തേക്ക് 125 KHz സിഗ്നൽ ഓഫ് ചെയ്യേണ്ടതുണ്ട്. ഡാറ്റ ഇപ്പോൾ അതിലേക്ക് കൈമാറ്റം ചെയ്യാൻ തുടങ്ങുമെന്നതിൻ്റെ ഒരു സിഗ്നലാണിത്. അടുത്തതായി, നിങ്ങൾ വിവരങ്ങൾ ശൂന്യതയിലേക്ക് മാറ്റണം. ട്രാൻസ്മിറ്റ് ചെയ്ത ഡാറ്റയുടെ എൻകോഡിംഗ് അതേ മാഞ്ചസ്റ്ററാണ്.

    T5557/T5577, EM4305 എന്നീ ശൂന്യതകൾ മൾട്ടിഫങ്ഷണൽ ആണ്. വത്യസ്ത ഇനങ്ങൾമോഡുലേഷനുകൾ, പിന്തുണ പാസ്‌വേഡുകൾ എന്നിവയും അതിലേറെയും. ബോർഡിലെ ഓരോ ഡിസ്കിനും 32-ബിറ്റ് ബ്ലോക്കുകളുടെ ഒരു കൂട്ടം ഉണ്ട്. ഈ ബ്ലോക്കുകളുടെ ഉദ്ദേശ്യം വ്യത്യസ്തമാണ്. ചിലർക്ക് നൽകിയ കീ കോഡ് ഉണ്ട് (ഇതിന് രണ്ട് ബ്ലോക്കുകൾ എടുക്കും). മറ്റുള്ളവയിൽ - കോൺഫിഗറേഷൻ. മൂന്നാമതായി, നിർമ്മാതാവിൻ്റെ ഐഡൻ്റിഫയർ. ഞങ്ങൾ പരിമിതമായ പ്രവർത്തനക്ഷമത ഉപയോഗിക്കും, അതിനാൽ ഈ ബിറ്റുകളെല്ലാം എന്താണ് അർത്ഥമാക്കുന്നത് എന്ന് മനസിലാക്കാൻ ആഗ്രഹിക്കുന്നവർക്ക് ശൂന്യതയ്ക്കുള്ള ഡോക്യുമെൻ്റേഷൻ നോക്കാം (ഞാൻ അത് ആർക്കൈവിലേക്ക് അറ്റാച്ച് ചെയ്തിട്ടുണ്ട്).

    ബ്ലോക്കുകൾ രണ്ട് പേജുകളായി (0 ഉം 1 ഉം) ശേഖരിക്കുന്നു.

    പൂജ്യം പേജിൽ സൂചിക 0 ഉള്ള ഒരു കോൺഫിഗറേഷൻ ബ്ലോക്ക് ഉണ്ട്. ഇതാണ് ഞങ്ങൾ സജ്ജീകരിക്കുന്നത്. T5557/T5577-ന് നമുക്ക് ഇനിപ്പറയുന്ന കോൺഫിഗറേഷൻ ബൈറ്റുകൾ ഉണ്ടായിരിക്കും: ഡോക്യുമെൻ്റേഷനിൽ നിന്നുള്ള പട്ടികയ്ക്ക് അനുസൃതമായി 0x00.0x14.0x80.0x40 (ഒരു ബിറ്റ് തിരഞ്ഞെടുത്ത മോഡുകൾ ഞാൻ ചുവപ്പിൽ അടയാളപ്പെടുത്തി):

    അങ്ങനെ, ഞങ്ങൾ തിരഞ്ഞെടുത്തു: ഡാറ്റാ ട്രാൻസ്മിഷൻ ഫ്രീക്വൻസി RF/64 (125 KHz/64), മാഞ്ചസ്റ്റർ തരം എൻകോഡിംഗ്, രണ്ടാമത്തേത് വരെ ബ്ലോക്കുകൾ ഇഷ്യൂ ചെയ്യുന്നു (ബ്ലോക്കുകൾ 1, 2 എന്നിവയിൽ ഞങ്ങൾക്ക് കാർഡ് നൽകുന്ന കോഡ് ലഭിക്കും). എഴുതുന്നതിന് മുമ്പ്, ഒരു ഒപ്‌കോഡും (2 ഒപ്‌കോഡ് ബിറ്റുകൾ) ഒരു ലാച്ച് ബിറ്റും (ലോക്ക്ബിറ്റ്) അയയ്ക്കണം. ഒപ്‌കോഡുകൾ 10 ബി, 11 ബി പേജുകൾ 0, 1 എന്നിവയ്‌ക്കായുള്ള ഡാറ്റ എഴുതുന്നതിന് മുമ്പുള്ളവയാണ് (ഏറ്റവും കുറഞ്ഞ ബിറ്റ് പേജ് നമ്പർ വ്യക്തമാക്കുന്നു, ഏറ്റവും പ്രധാനപ്പെട്ട ബിറ്റ് പേജ് റൈറ്റ് കോഡ് വ്യക്തമാക്കുന്നു). ഞങ്ങൾ ഒപ്‌കോഡിനായി 10 ബി ഇഷ്യൂ ചെയ്യുന്നു (എല്ലാ ജോലികളും ഒരു പൂജ്യം പേജ് ഉപയോഗിച്ചാണ് ചെയ്യുന്നത്) കൂടാതെ ലാച്ച് ബിറ്റിന് 0 ബി. ഈ ഡാറ്റയെല്ലാം കൈമാറ്റം ചെയ്ത ശേഷം, എഴുതേണ്ട പേജിൻ്റെ മൂന്ന്-ബിറ്റ് വിലാസം കൈമാറേണ്ടത് ആവശ്യമാണ്. T5557/T5577 നായുള്ള എല്ലാ ഡാറ്റാ കൈമാറ്റങ്ങളും ഏറ്റവും പ്രധാനപ്പെട്ട ബിറ്റിൽ നിന്ന് ഏറ്റവും കുറഞ്ഞ പ്രാധാന്യമുള്ളതിലേക്ക് നടത്തുന്നു.

    1, 2 ബ്ലോക്കുകളിൽ കാർഡ് കോഡും ബ്ലോക്ക് 0-ൽ കോൺഫിഗറേഷനും സജ്ജീകരിക്കുന്നതിലൂടെ, നിങ്ങൾക്ക് ഒരു ഡ്യൂപ്ലിക്കേറ്റ് RFID ടാഗ് ലഭിക്കും. നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, എല്ലാം ലളിതമാണ്.

    അടുത്ത തരം ശൂന്യത EM4305 ആണ്. അതിനാൽ ഈ ബ്ലാങ്കിൻ്റെ റെക്കോർഡിംഗ് എനിക്ക് തന്നെ കൈകാര്യം ചെയ്യേണ്ടിവന്നു. ഇതിൽ 32 ബിറ്റുകളുടെ ബ്ലോക്കുകളും അടങ്ങിയിരിക്കുന്നു, പക്ഷേ അവയുടെ ഉദ്ദേശ്യം വ്യത്യസ്തമാണ്.

    കാർഡിലേക്ക് കൈമാറുന്ന ഡാറ്റയുടെ എൻകോഡിംഗ് ഒരു സമയ ഇടവേളയിലെ വ്യത്യാസങ്ങളെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്. സമയ ഇടവേളയിൽ വ്യത്യാസമുണ്ടെങ്കിൽ, അത് പൂജ്യവും ഇല്ലെങ്കിൽ, അത് ഒന്നുമാണ്. കോൺഫിഗറേഷൻ വാക്ക് ബൈറ്റ് 4-ൽ സംഭരിച്ചിരിക്കുന്നു, എനിക്കായി ഞാൻ അത് ഇനിപ്പറയുന്ന രീതിയിൽ നിർവചിച്ചു: 0x5F,0x80,0x01,0x00 (മാഞ്ചസ്റ്റർ എൻകോഡിംഗ്, RF/64, ഔട്ട്പുട്ട് വേഡ് 6). 5, 6 എന്നീ വാക്കുകളിൽ ഞാൻ കാർഡ് കോഡ് എഴുതുന്നു (കാർഡ് ഉത്പാദിപ്പിക്കുന്ന അതേ 64 ബിറ്റുകൾ). EM4305-ന് ഏറ്റവും കുറഞ്ഞ ബിറ്റിൽ നിന്ന് ഏറ്റവും പ്രധാനപ്പെട്ട ഒന്നിലേക്ക് ട്രാൻസ്മിഷൻ നടത്തേണ്ടതുണ്ട്. പ്രേരണകളുടെ സംയോജനം നൽകിയതിന് ശേഷം ഒരു കൈമാറ്റം ആരംഭിക്കുന്നുവെന്ന് കാർഡ് മനസ്സിലാക്കുന്നു:

    1. ഞങ്ങൾ 48 µs-ൽ ഫീൽഡ് ഓഫ് ചെയ്യുന്നു.
    2. ഞങ്ങൾ 96 μs വേണ്ടി ഫീൽഡ് ഓൺ ചെയ്യുന്നു.
    3. 320 µs-ൽ ഫീൽഡ് ഓഫ് ചെയ്യുക.
    4. ഞങ്ങൾ 136 μs-ൽ ഫീൽഡ് ഓണാക്കുന്നു.
    5. അടുത്ത കമാൻഡ് വരെ ഫീൽഡ് പ്രവർത്തനരഹിതമാക്കുക.
    മാപ്പിലേക്ക് ഒരു ബ്ലോക്ക് എഴുതാനുള്ള കമാൻഡ് ഇനിപ്പറയുന്ന രീതിയിൽ കൈമാറുന്നു:
    1. മുകളിലുള്ള പ്രേരണകളുടെ ക്രമം ഞങ്ങൾ അയയ്ക്കുന്നു.
    2. ഞങ്ങൾ 0b അയയ്ക്കുന്നു.
    3. ഞങ്ങൾ CC0-CC1 ഉം അവയുടെ പാരിറ്റി P. (റെക്കോർഡിംഗിനായി 0101b, ചുവടെയുള്ള പട്ടികകൾ കാണുക).
    4. ഞങ്ങൾ ബ്ലോക്ക് വിലാസം (പട്ടിക കാണുക), രണ്ട് പിന്നിലുള്ള പൂജ്യങ്ങൾ, വിലാസത്തിൻ്റെ തുല്യത എന്നിവ കൈമാറുന്നു.
    5. ഞങ്ങൾ ബ്ലോക്ക് ഡാറ്റ (32 ബിറ്റുകൾ) കൈമാറുന്നു.

    കമാൻഡ് ഫോർമാറ്റ്


    കമാൻഡ് കോഡുകൾ

    ബ്ലോക്ക് വിലാസ ഫോർമാറ്റ്

    ഇത് EM4305 ൻ്റെ കോൺഫിഗറേഷനും അതിൻ്റെ കോഡും ശൂന്യമാക്കുന്നു.

    യഥാർത്ഥത്തിൽ, ഒരു ലളിതമായ കോപ്പിയർ കൂടുതൽ ഒന്നും ആവശ്യമില്ല.

    വ്യത്യസ്ത ഡിസ്പ്ലേകളുള്ള കോപ്പിയറിൻ്റെ നിരവധി പതിപ്പുകൾ ഞാൻ ഉണ്ടാക്കി. ഉദാഹരണത്തിന്, 1602 ഡിസ്പ്ലേ ഉള്ള ഒരു കോപ്പിയർ ഇതാ:

    LPH9157-02 ഡിസ്‌പ്ലേയിൽ പ്രവർത്തിക്കുന്ന കോപ്പിയറിൻ്റെ ഒരു വീഡിയോ ഇതാ.