បង្កើតសោ RFID ដោយប្រើ Arduino ។ ការអាននិងសរសេរស្លាក RFID ។ ម៉ូឌុល RC522 សម្រាប់ Arduino

ថ្ងៃនេះខ្ញុំនឹងនិយាយអំពីម៉ូឌុល RFID RC522 ដោយផ្អែកលើបន្ទះឈីប MFRC522 ។ ការផ្គត់ផ្គង់ថាមពល 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 មានច្រើនទៀត មុខងារពិសេសអនុញ្ញាតឱ្យកាត់បន្ថយកូដកម្មវិធីចុងក្រោយឱ្យបានច្រើនតាមដែលអាចធ្វើទៅបាន។

ការតភ្ជាប់

មនុស្សមួយចំនួននឹងជួបប្រទះបញ្ហាមួយ - ឈ្មោះម្ជុលនៅក្នុងមេរៀន និងការណែនាំភាគច្រើនប្រហែលជាមិនត្រូវគ្នានឹង pinout នៅលើម៉ូឌុលរបស់អ្នកទេ។ ប្រសិនបើគំនូរព្រាងបង្ហាញពីម្ជុល SS ប៉ុន្តែម៉ូឌុលរបស់អ្នកមិនមានវា នោះទំនងជាវាត្រូវបានសម្គាល់ថា SDA ។ ខាងក្រោមនេះខ្ញុំនឹងផ្តល់នូវតារាងតភ្ជាប់ម៉ូឌុលសម្រាប់ក្រុមប្រឹក្សាភិបាលទូទៅបំផុត។

MFRC522 Arduino Uno Arduino Mega Arduino Nano v3

Arduino Leonardo/Micro

Arduino Pro Micro
RST 9 5 ឃ៩ កំណត់ឡើងវិញ/ICSP-5 RST
SDA(SS) 10 53 ឃ១០ 10 10
MOSI 11 (ICSP-4) 51 ឃ១១ ICSP-4 16
MISO 12 (ICSP-1) 50 ឃ១២ ICSP-1 14
អេសខេ 13 (ICSP-3) 52 ឃ១៣ ICSP-3 15
3.3V 3.3V 3.3V ស្ថេរភាព 3.3V ស្ថេរភាព 3.3V ស្ថេរភាព 3.3V
GND GND GND GND GND GND

ម្ជុលត្រួតពិនិត្យ SS(SDA) និង RST ត្រូវបានបញ្ជាក់នៅក្នុងគំនូរព្រាង ដូច្នេះប្រសិនបើបន្ទះរបស់អ្នកខុសពីអ្វីដែលខ្ញុំនឹងប្រើក្នុងឧទាហរណ៍របស់ខ្ញុំ ហើយខ្ញុំកំពុងប្រើ UNO R3 សូមបង្ហាញម្ជុលពីតារាងនៅដើមនៃគំនូរព្រាង។ :


#define SS_PIN 10 #define RST_PIN 9

ឧទាហរណ៍ទី 1: ការអានលេខកាត

សូមក្រឡេកមើលឧទាហរណ៍ពីបណ្ណាល័យ RFID - cardRead ។ វាមិនបង្ហាញទិន្នន័យពីកាតនោះទេប៉ុន្តែមានតែលេខរបស់វាដែលជាធម្មតាគ្រប់គ្រាន់សម្រាប់កិច្ចការជាច្រើន។


#include #include #define SS_PIN 10 #define RST_PIN 9 RFID RFID(SS_PIN, RST_PIN); // ទិន្នន័យអំពីលេខកាតត្រូវបានរក្សាទុកក្នុងអថេរ 5 យើងនឹងចងចាំពួកវាដើម្បីពិនិត្យមើលថាតើយើងបានអានកាតបែបនេះរួចហើយ int serNum0; int serNum1; int serNum2; int serNum3; int serNum4; ការដំឡើង void() ( 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.serNum != /serNum4 != * ប្រសិនបើកាតថ្មី សូមអាន */ Serial.println("បានរកឃើញកាត"); serNum0 = rfid.serNum; serNum2 = rfid.serNum; rfid.serNum; "); .print(rfid.serNum,DEC); Serial.print(", "); Serial.print(rfid.serNum,DEC); Serial.print(rfid.serNum,DEC); Serial.print(", "); Serial.print(rfid.serNum,DEC); Serial.print("Hex: "); .print(", "); Serial.print(rfid.serNum,HEX); 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 នៅលើម៉ូឌុលនឹងភ្លឺ ប៉ុន្តែម៉ូឌុលមិនឆ្លើយតបទៅនឹងកាតទេ? មិនចាំបាច់ភ័យស្លន់ស្លោឬរត់ដើម្បីរកមើលឧទាហរណ៍ "ត្រឹមត្រូវ" នៃការងារនោះទេ។ ភាគច្រើនទំនងជាមិនមានទំនាក់ទំនងនៅលើម្ជុលមួយទេ - រន្ធនៅលើក្តារមានទំហំធំជាងកម្រាស់របស់ jumper បន្តិច ដូច្នេះវាមានតម្លៃព្យាយាមរៀបចំពួកវាឡើងវិញ។ តើ LED នៅលើក្តារមិនភ្លឺទេ? សាកល្បងផ្លាស់ប្តូរ jumper ដែលនាំទៅដល់ 3.3V ហើយត្រូវប្រាកដថាវាត្រូវបានភ្ជាប់ទៅ 3.3V នៅលើក្តារ ការផ្គត់ផ្គង់ថាមពល 5V អាចសម្លាប់ក្តាររបស់អ្នកយ៉ាងងាយស្រួល។

ចូរនិយាយថាអ្វីគ្រប់យ៉ាងដំណើរការសម្រាប់អ្នក។ បន្ទាប់មកអានស្លាក RFID នៅក្នុងម៉ូនីទ័រ ច្រកសៀរៀលយើងនឹងឃើញដូចខាងក្រោម៖


នៅទីនេះខ្ញុំបានអាន 3 ស្លាកផ្សេងគ្នា ហើយដូចដែលអ្នកឃើញ គាត់អានទាំង 3 ដោយជោគជ័យ។

ឧទាហរណ៍ទី 2៖ ការអានទិន្នន័យពីកាត

ចូរយើងពិចារណាជម្រើសដ៏ស្មុគ្រស្មាញជាងមុន - វានឹងអានមិនត្រឹមតែលេខកាតប៉ុណ្ណោះទេ ថែមទាំងទិន្នន័យទាំងអស់ដែលមានសម្រាប់ការអានផងដែរ។ លើកនេះសូមលើកឧទាហរណ៍ពីបណ្ណាល័យ MFRC522 - DumpInfo ។


#include #include #define RST_PIN 9 // #define SS_PIN 10 // MFRC522 mfrc522(SS_PIN, RST_PIN); // បង្កើត MFRC522 instance void setup() ( Serial.begin(9600); // ចាប់ផ្តើមម៉ូនីទ័រច្រកសៀរៀលខណៈពេលដែល (!Serial); // មិនធ្វើអ្វីទាល់តែវាបើក (សម្រាប់ Arduino នៅលើបន្ទះឈីប ATMEGA32U4) SPI.begin( ); // ចាប់ផ្តើម SPI bus mfrc522.PCD_Init(); // ចាប់ផ្តើម ម៉ូឌុល RFID ShowReaderDetails(); // បោះពុម្ពទិន្នន័យអំពីម៉ូឌុល MFRC522 Serial.println(F("ស្កេន PICC ដើម្បីមើល UID ប្រភេទ និងប្លុកទិន្នន័យ...")); ) void loop() ( // កំពុងរកមើល ផែនទីថ្មី។ប្រសិនបើ (! mfrc522.PICC_IsNewCardPresent()) ( ត្រឡប់; ) // ជ្រើសរើសកាតមួយក្នុងចំណោមកាត ប្រសិនបើ (! mfrc522.PICC_ReadCardSerial()) (ត្រឡប់; ) // ទិន្នន័យលទ្ធផលពីកាត mfrc522.PICC_DumpToSerial(&(mfrc522.uid) ); ) ទុកជាមោឃៈ ShowReaderDetails() ( // ទទួលបានលេខកំណែម៉ូឌុល byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg); Serial.print(F("MFRC522 Software Version: 0x")); Serial.print(v, HEX); ប្រសិនបើ (v == 0x91) Serial.print(F(" = v1.0")); else if (v == 0x92) Serial.print(F(" = v2.0")); (" (មិនស្គាល់) ")); Serial.println(""); // នៅពេលដែលយើងទទួលបាន 0x00 ឬ 0xFF ការបញ្ជូនទិន្នន័យត្រូវបានខូចប្រសិនបើ ((v == 0x00) || (v == 0xFF)) ( Serial.println( F( " " ការព្រមាន៖ ការទំនាក់ទំនងបរាជ័យ តើ MFRC522 បានភ្ជាប់ត្រឹមត្រូវទេ?»));

ប្រសិនបើឧទាហរណ៍មុនដំណើរការដោយគ្មានកំហុស នោះវាក៏មិនគួរមានបញ្ហាដែរ។ ថ្វីត្បិតតែ Metro Pass ដែលផ្តល់លេខកាតដោយគ្មានបញ្ហាក្នុងឧទាហរណ៍មុន បានប្រែទៅជាមានប្រភេទទិន្នន័យដែលមិនអាចរកឃើញនៅក្នុងមួយនេះ ហើយម៉ូឌុលមិនអាចអានអ្វីក្រៅពីលេខកាតបានទេ។

ជាលទ្ធផល ដោយបានអានទិន្នន័យពីកាតនោះ យើងទទួលបានប្រភេទ ឧបករណ៍កំណត់អត្តសញ្ញាណ និងទិន្នន័យរបស់វាពីផ្នែកអង្គចងចាំចំនួន 16 ។ គួរកត់សំគាល់ថា កាតស្តង់ដារ MIFARE 1K មាន 16 ផ្នែក ដែលផ្នែកនីមួយៗមាន 4 ប្លុក ហើយប្លុកនីមួយៗមានទិន្នន័យ 16 បៃ។


ឧទាហរណ៍ទី 3៖ ការសរសេរអត្តសញ្ញាណថ្មីទៅក្នុងកាត

ក្នុងឧទាហរណ៍នេះ យើងនឹងពិនិត្យមើលការផ្លាស់ប្តូរអត្តសញ្ញាណប័ណ្ណ (UID)។ វាជាការសំខាន់ណាស់ដែលត្រូវដឹងថាមិនមែនគ្រប់កាតទាំងអស់គាំទ្រការផ្លាស់ប្តូរលេខសម្គាល់នោះទេ។ កាតអាចសរសេរឡើងវិញបាន ប៉ុន្តែវាមានន័យថាទិន្នន័យអាចសរសេរឡើងវិញបាន។ ជាអកុសល សន្លឹកបៀដែលខ្ញុំមាននៅក្នុងដៃមិនគាំទ្រការសរសេរ UID ឡើងវិញទេ ប៉ុន្តែខ្ញុំនឹងផ្តល់កូដគំនូរព្រាងនៅទីនេះក្នុងករណី។


#include #include /* កំណត់ UID ថ្មីនៅទីនេះ */ #define NEW_UID (0xDE, 0xAD, 0xBE, 0xEF) #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::MIFARE_Key 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: ការសរសេរទិន្នន័យទៅកាត

នេះ​ជា​អ្វី​ដែល​យើង​ទទួល​បាន​យូរ​មក​ហើយ គឺ​ការ​កត់ត្រា​ទិន្នន័យ​នៅ​លើ​កាត។ ផ្នែក "ផ្អែមបំផុត" នៃការធ្វើការជាមួយម៉ូឌុលគឺសមត្ថភាពក្នុងការថតចម្លងកាតដែលមានស្រាប់ បន្ថែម ឬផ្លាស់ប្តូរអ្វីមួយ វាគួរឱ្យចាប់អារម្មណ៍ជាងការអានធម្មតា។

តោះផ្លាស់ប្តូរប្លុកទិន្នន័យមួយនៅលើផែនទី៖


#include #include #define RST_PIN 9 #define SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::MIFARE_Key key; void setup() ( Serial.begin(9600); while (!Serial); SPI.begin(); mfrc522.PCD_Init(); // រៀបចំកូនសោ // ប្រើសោ FFFFFFFFFFFFh ដែលជាស្តង់ដារសម្រាប់ សន្លឹកបៀទទេសម្រាប់ (បៃ 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 បន្ថែមតួអក្សរផ្ទាល់ខ្លួន ជាសំខាន់បន្ថែមក្រាហ្វិកទៅអេក្រង់។

RFID (ការកំណត់អត្តសញ្ញាណប្រេកង់វិទ្យុ) ប្រើវាលអេឡិចត្រូម៉ាញ៉េទិចដើម្បីកំណត់អត្តសញ្ញាណដោយស្វ័យប្រវត្តិ និងតាមដានស្លាកដែលភ្ជាប់ជាមួយវត្ថុ។ ស្លាកមានផ្ទុកព័ត៌មានអេឡិចត្រូនិច។ ស្លាកអកម្មប្រមូលថាមពលពីសញ្ញាវិទ្យុពីឧបករណ៍អាន RFID ដែលនៅជិត។ ស្លាកសកម្មមានប្រភពថាមពលក្នុងស្រុក (ដូចជាថ្ម) ហើយអាចដំណើរការបានរាប់រយម៉ែត្រពីអ្នកអាន។ មិនដូចបាកូដទេ ស្លាកមិនចាំបាច់ស្ថិតនៅក្នុងទិដ្ឋភាពនៃឧបករណ៍នោះទេ ដូច្នេះវាអាចត្រូវបានបង្កប់នៅក្នុងវត្ថុដែលកំពុងតាមដាន។ RFID គឺជាវិធីសាស្រ្តមួយសម្រាប់កំណត់អត្តសញ្ញាណដោយស្វ័យប្រវត្តិ និងការប្រមូលទិន្នន័យ។

ការដាក់ពាក្យ

ស្លាក RFID ត្រូវបានប្រើនៅក្នុងឧស្សាហកម្មជាច្រើន។ ឧទាហរណ៍ ឧបករណ៍អាន RFID ដែលភ្ជាប់ជាមួយយានជំនិះកំឡុងពេលផលិត អាចត្រូវបានប្រើដើម្បីតាមដានវឌ្ឍនភាពនៅតាមបណ្តោយបន្ទាត់ដំឡើង។ ឱសថដែលមានស្លាកអាចត្រូវបានតាមដានតាមរយៈឃ្លាំង។ ការបញ្ចូលមីក្រូឈីប RFID ទៅក្នុងបសុសត្វអនុញ្ញាតឱ្យកំណត់អត្តសញ្ញាណសត្វ។

ដោយសារតែស្លាក RFID អាចត្រូវបានភ្ជាប់ទៅនឹងប្រាក់ សម្លៀកបំពាក់ និងទ្រព្យសម្បត្តិ ឬដាក់ក្នុងសត្វ និងមនុស្ស សមត្ថភាពក្នុងការអាន ព័ត៌មាន​ផ្ទាល់ខ្លួនការហៅទូរស័ព្ទដោយគ្មានការយល់ព្រមពីអ្នកប្រើប្រាស់ បញ្ហាធ្ងន់ធ្ងរឯកជនភាព។ ហានិភ័យទាំងនេះបាននាំទៅដល់ការវិវឌ្ឍន៍នៃលក្ខណៈស្តង់ដារដែលដោះស្រាយបញ្ហាសុវត្ថិភាពទិន្នន័យផ្ទាល់ខ្លួន។ ស្លាក​ក៏​អាច​ត្រូវ​បាន​ប្រើ​នៅ​ក្នុង​ហាង​ដើម្បី​ពន្លឿន​ការ​ដក​ប្រាក់ និង​ការពារ​ការ​លួច។

រឿង

នៅឆ្នាំ 1945 លោក Leon Theremin បានបង្កើតឧបករណ៍ស្តាប់សម្រាប់ សហភាព​សូវៀតដែលបញ្ជូនរលកវិទ្យុឡើងវិញជាមួយនឹងព័ត៌មានអូឌីយ៉ូបន្ថែម។ រំញ័រសំឡេងក្នុងអំឡុងពេលរំញ័រមានឥទ្ធិពលលើ diaphragm ដែលផ្លាស់ប្តូររូបរាងរបស់ resonator បន្តិច ដោយកែប្រែប្រេកង់វិទ្យុដែលឆ្លុះបញ្ចាំង។ ទោះបីជាឧបករណ៍នេះគឺជាឧបករណ៍លួចលាក់ជាជាងស្លាកលេខសម្គាល់ក៏ដោយ វាត្រូវបានគេចាត់ទុកថាជាបុព្វបទសម្រាប់ឧបករណ៍អាន RFID USB ព្រោះវាត្រូវបានធ្វើឱ្យសកម្មដោយរលកសំឡេងពី ប្រភពខាងក្រៅ. ឧបករណ៍បញ្ជូនបន្តនៅតែត្រូវបានប្រើប្រាស់ដោយយន្តហោះប្រតិបត្តិការភាគច្រើន។ កាលពីមុន បច្ចេកវិទ្យាស្រដៀងគ្នា ដូចជាឧបករណ៍អានស្លាក RFID ត្រូវបានប្រើជាទៀងទាត់ដោយសម្ព័ន្ធមិត្ត និងអាល្លឺម៉ង់ក្នុងសង្គ្រាមលោកលើកទី 2 ដើម្បីកំណត់អត្តសញ្ញាណយន្តហោះ។

ឧបករណ៍របស់ Mario Cardullo ដែលមានប៉ាតង់នៅថ្ងៃទី 23 ខែមករា ឆ្នាំ 1973 គឺជាឧបករណ៍ជំនាន់មុនពិតប្រាកដដំបូងគេនៃ RFID ទំនើបព្រោះវាជាអ្នកទទួលវិទ្យុអកម្មជាមួយនឹងអង្គចងចាំ។ ឧបករណ៍ដើមគឺអកម្ម ដំណើរការដោយសញ្ញាបោះឆ្នោត។ វាត្រូវបានបង្ហាញនៅឆ្នាំ 1971 ដល់រដ្ឋបាលទីក្រុងញូវយ៉កនិងអ្នកដទៃ អ្នកប្រើប្រាស់សក្តានុពលនិងមានឧបករណ៍បញ្ជូនទិន្នន័យដែលមានអង្គចងចាំ 16 ប៊ីតសម្រាប់ប្រើជា ឧបករណ៍បង់ប្រាក់. ប៉ាតង់ស្នូលរបស់ Cardullo គ្របដណ្តប់លើការប្រើប្រាស់ប្រេកង់វិទ្យុ សំឡេង និងពន្លឺជាប្រព័ន្ធផ្សព្វផ្សាយបញ្ជូន។

តំបន់ប្រើប្រាស់

ផែនការអាជីវកម្មដើមដែលបង្ហាញដល់អ្នកវិនិយោគក្នុងឆ្នាំ 1969 បានបង្ហាញនូវកម្មវិធីដូចខាងក្រោមៈ ឧបករណ៍អាន RFID:

  • ប្រើប្រាស់ក្នុងការដឹកជញ្ជូន (អត្តសញ្ញាណយានយន្ត, ប្រព័ន្ធស្វ័យប្រវត្តិការទូទាត់, ផ្លាកលេខអេឡិចត្រូនិក, ការបង្ហាញអេឡិចត្រូនិក, កំណត់ផ្លូវ យានជំនិះការត្រួតពិនិត្យប្រសិទ្ធភាពយានយន្ត);
  • ធនាគារ (សៀវភៅមូលប្បទានប័ត្រអេឡិចត្រូនិច កាត​ឥណទាន);
  • បុគ្គលិក, ច្រកទ្វារស្វ័យប្រវត្តិ, ការឃ្លាំមើល); ឧស្សាហកម្មវេជ្ជសាស្រ្ត (អត្តសញ្ញាណ, ប្រវត្តិអ្នកជំងឺ) ។

ការបង្ហាញដំបូងនៃថាមពលដែលបានឆ្លុះបញ្ចាំង (ម៉ូឌុល backscatter) នៃស្លាក RFID ទាំងអកម្ម និងពាក់កណ្តាលអកម្ម ត្រូវបានអនុវត្តដោយ Stephen Depp, Alfred Koelle និង Robert Fryman នៅមន្ទីរពិសោធន៍ជាតិ Los Alamos ក្នុងឆ្នាំ 1973 ។ ប្រព័ន្ធចល័តដំណើរការនៅ 915 MHz និងប្រើស្លាក 12 ប៊ីត។ វិធីសាស្រ្តនេះត្រូវបានប្រើដោយអ្នកអាន UHFID ទំនើបបំផុត និងមីក្រូវ៉េវ RFID ។ IN ជីវិតទំនើបឧបករណ៍បែបនេះមានតម្រូវការខ្លាំង។

ការបញ្ជាក់

RFID ប្រើស្លាកដែលភ្ជាប់ទៅនឹងវត្ថុដែលអាចកំណត់អត្តសញ្ញាណបាន។ នៅពេលបង្កើតកម្មវិធីអាន RFID ផ្ទាល់ខ្លួនរបស់អ្នក សូមចាំថាអ្នកបញ្ជូន-ទទួលវិទ្យុពីរផ្លូវ ហៅថា អ្នកសួរចម្លើយ ឬអ្នកអាន ផ្ញើសញ្ញាទៅស្លាក ហើយអានការឆ្លើយតបរបស់វា។ ស្លាក RFID អាចជាអកម្ម សកម្ម ឬអកម្ម។ ស្លាកសកម្មមានថ្មដែលភ្ជាប់មកជាមួយ ហើយបញ្ជូនសញ្ញាលេខសម្គាល់របស់វាជាទៀងទាត់។ ថ្មអកម្ម (BAP) មានថ្មតូចមួយនៅលើយន្តហោះ ហើយត្រូវបានធ្វើឱ្យសកម្មដោយវត្តមានរបស់អ្នកអាន RFID ។ ស្លាកអកម្មមានតម្លៃថោក និងតូចជាងព្រោះវាមិនមានថ្ម។ ជំនួសមកវិញ ស្លាកប្រើរលកវិទ្យុដែលបញ្ជូនដោយអ្នកអាន។ ទោះជាយ៉ាងណាក៏ដោយ សម្រាប់ស្លាកអកម្មដើម្បីដំណើរការ វាត្រូវតែបំភ្លឺនៅកម្រិតថាមពលប្រហែលមួយពាន់ដងខ្លាំងជាងដើម្បីបញ្ជូនសញ្ញា។ នេះប៉ះពាល់ដល់ការជ្រៀតជ្រែក និងវិទ្យុសកម្ម។

  • កម្មវិធីគ្រប់គ្រងមីក្រូ
  • ដូចដែលអ្នកបានដឹងហើយថាប្រព័ន្ធចូលដំណើរការជាច្រើនប្រើកាត RFID នៃស្តង់ដារ EM-Marin ដែលមានប្រេកង់ 125 KHz ។ intercom នៅផ្ទះរបស់ខ្ញុំគឺមិនមានករណីលើកលែងនោះទេ។ បញ្ហាមួយ - វាជាការប្រសើរណាស់ក្នុងការរៀនពីរបៀបចម្លងកាតបែបនេះ ពីព្រោះស្លាកតម្លៃសម្រាប់ការចម្លងវាមិនមែនជាការលើកទឹកចិត្តទេ។ ជាការពិតណាស់ មានគ្រោងការណ៍ម៉ាស៊ីនថតចម្លងមួយចំនួននៅលើអ៊ីនធឺណិត (ហើយជនជាតិចិនលក់ម៉ាស៊ីនថតចម្លងរបស់ពួកគេសម្រាប់កាក់ - ទោះយ៉ាងណាក៏ដោយពួកគេជារឿយៗដាក់ពាក្យសម្ងាត់របស់ពួកគេនៅលើឌីសនៅពេលចម្លង) ប៉ុន្តែហេតុអ្វីបានជាមិនបង្កើតម៉ាស៊ីនថតចម្លងដោយខ្លួនឯង? នោះហើយជាអ្វីដែលអត្ថបទខាងក្រោមនិយាយអំពី។

    វាមានតម្លៃក្នុងការចាប់ផ្តើមបង្កើតម៉ាស៊ីនថតចម្លងដោយស្វែងយល់ថាតើសញ្ញាបែបនេះអាចចម្លងទៅអ្វីខ្លះ? បន្ទាប់ពីអានវេទិកា អ្នកអាចដឹងថាចន្លោះទទេទូទៅបំផុតសម្រាប់ការចម្លងគឺ T5577, T5557, EM4305។

    ឥឡូវនេះយើងត្រូវការដ្យាក្រាម។ តោះយកផ្នែកអាណាឡូកនៃម៉ាស៊ីនថតចម្លងពី RECTO ហើយភ្ជាប់វាទៅ microcontroller atmega8 ។ តោះបន្ថែមកម្មវិធីបម្លែងកម្រិតសម្រាប់ភ្ជាប់ទៅច្រក COM ដោយផ្អែកលើ max232 (អ្នកដែលប្រាថ្នាអាចប្រើ ST232 ឬអ្វីផ្សេងទៀតដើម្បីភ្ជាប់តាមរយៈ USB ប៉ុន្តែខ្ញុំមានច្រក COM នៅលើកុំព្យូទ័ររបស់ខ្ញុំដូចដែល អាដាប់ទ័រ USB-COMដូច្នេះខ្ញុំមិនមានកិច្ចការបែបនេះទេ) ។

    អ្នកនឹងទទួលបានដ្យាក្រាមនេះ៖

    តើនាងដូចអ្វី? អ្នកតាមដាន emitter ពីរ សៀគ្វីលំយោល ឧបករណ៍រាវរក និងតម្រង RC ។ ដោយសារតែការពិតដែលថាតម្រង RC មានថេរពេលវេលាខុសៗគ្នាដោយការប្រៀបធៀបកម្រិតវ៉ុលរវាងដំណាក់កាលវាអាចធ្វើទៅបានដើម្បីញែកការផ្លាស់ប្តូរនៅក្នុងសញ្ញាស្លាក RFID ។ កិច្ចការនេះនឹងត្រូវបានដោះស្រាយដោយអ្នកប្រៀបធៀបដែលបានបង្កើតឡើងនៅក្នុង atmega8 ។ ជំនាន់នៃសញ្ញា 125 KHz នឹងត្រូវបានផ្តល់ដោយឧបករណ៍បញ្ជា PWM ដែលបង្កើតឡើងនៅក្នុង atmega8 ។

    ការរួមបញ្ចូលគ្នានៃស្លាក RFID និងអ្នកអានបង្កើតជា transformer ដែលស្លាកគឺជារបុំទីពីរ។ ព័ត៌មានត្រូវបានបញ្ជូនដោយស្លាកដោយការផ្លាស់ប្តូរបន្ទុកនៃរបុំទីពីរ។ ជាលទ្ធផលចរន្តនៅក្នុងឧបករណ៏អាន (របុំបឋម) ផ្លាស់ប្តូរ។ ផ្នែកអាណាឡូកខាងលើនៃសៀគ្វីគឺទទួលខុសត្រូវចំពោះការផ្តាច់ចរន្តចរន្តទាំងនេះ។ សៀគ្វី Oscillatoryចាំបាច់ត្រូវកំណត់រចនាសម្ព័ន្ធ វ៉ុលអតិបរមាចំណុចត្រួតពិនិត្យឧទហរណ៍ winding/winding the turns of a coil. ពិត ពួកគេនិយាយថា វាជាការប្រសើរដែលមានវ៉ុលតិចជាងអតិបរិមាបន្តិច - វាដំណើរការកាន់តែមានស្ថេរភាព។ ខ្ញុំមានប្រហែល 40 V នៅចំណុចសាកល្បងរបស់ខ្ញុំ។

    សញ្ញាដែលបានចម្លងប្រើការអ៊ិនកូដ Manchester ។ ដើម្បីឌិគ្រីប លេខកូដនេះ។វាគឺគ្រប់គ្រាន់ដើម្បីរំលងបីភាគបួននៃរយៈពេលរន្ធដោតប៊ីតសម្រាប់ការផ្លាស់ប្តូរណាមួយនៅក្នុងគែមសញ្ញា ហើយដោយផ្អែកលើការធ្លាក់ចុះនៃសញ្ញាបន្ទាប់វា ដើម្បីជួសជុលតម្លៃប៊ីតដែលនឹងឆ្លើយតបទៅនឹងតម្លៃសញ្ញាបន្ទាប់ពីការធ្លាក់ចុះ។ នៅពេលឌិកូដវាមានតម្លៃក្នុងការបញ្ជាក់បង្អួចដែលការធ្លាក់ចុះនៃសញ្ញាគួរតែកើតឡើង - មិនលើសពីពាក់កណ្តាលរយៈពេលនៃរន្ធដោតប៊ីត។

    វិធីសាស្ត្រឌិគ្រីប ការអ៊ិនកូដ Manchesterហើយខ្ញុំបានយកលេខកូដនេះពី Shads ។ ជាការពិតអ្នកអាចសរសេរដោយខ្លួនឯងបាន ប៉ុន្តែខ្ញុំប្រញាប់ប្រញាល់បើកម៉ាស៊ីនថតចម្លង - ខ្ញុំចង់ធ្វើឱ្យប្រាកដថាសៀគ្វីកំពុងដំណើរការ ហើយស្លាកនោះកំពុងត្រូវបានទទួលយក។ ដូច្នេះបំណែកនេះនៅតែមាននៅក្នុងលេខកូដចម្លង។ វាក៏បានប្រែក្លាយថាឧបករណ៍ប្រៀបធៀបរបស់ខ្ញុំត្រូវបានកំណត់រចនាសម្ព័ន្ធបញ្ច្រាសជាងអ្វីដែលកូដឌិកូដត្រូវការ។ ផ្លាស់ប្តូរវានៅក្នុងលេខកូដ។ ដូច្នេះ យើងទទួលបានលេខសូន្យ និងលេខមួយ។ តើខ្ញុំអាចទទួលបានលេខកូដកាតពីពួកគេដោយរបៀបណា?

    ហើយវាសាមញ្ញណាស់។ ចូរយើងសន្មតថាលេខកាតយោងទៅតាម nibbles មានទម្រង់ AB CD EF GH IJ. ផែនទីបង្ហាញនេះ៖

    1) ប្រាំបួនគ្រឿងនៅដើម;
    2) Nibble A;
    3) Nibble parity A (1 ប៊ីត);
    4) Nibble B;
    5) Nibble parity B (1 ប៊ីត);

    16) Nibble I;
    ១៧) Nibble parity I (១ ប៊ីត);
    18) Nibble J;
    19) Nibble parity J (1 ប៊ីត);
    20) Column parity nibble for nibbles A B C D E F G H I J;
    21) ប៊ីត 0 ។

    យើងអានទាំងអស់ 64 ប៊ីត ឌិគ្រីប និងទទួលបានលេខកូដកាត 40 ប៊ីត។ វាជាឡូជីខលដែលថាប្រសិនបើយើងចេញលេខកូដបែបនេះដោយខ្លួនឯងដោយបិទឧបករណ៏នៃកាតដែលភ្ជាប់ទៅនឹងអ្នកអាននោះយើងនឹងទទួលបានកម្មវិធីត្រាប់តាមកាត។ តែ​ឥឡូវ​យើង​មិន​ចាប់​អារម្មណ៍​គាត់​ទេ។

    យើងបានរៀនអានផែនទី ប៉ុន្តែតើយើងអាចផ្ទេរទិន្នន័យទៅផែនទីដោយរបៀបណា? ដើម្បីធ្វើដូចនេះអ្នកគ្រាន់តែត្រូវបើកឬបិទប្រេកង់ 125 KHz ដោយអនុលោមតាមពិធីការទំនាក់ទំនងជាមួយកាត។ ក្នុងអំឡុងពេល "ស្ងាត់" របស់អ្នកអាន កាតត្រូវបានបំពាក់ដោយថាមពលដែលបានរក្សាទុក។

    ចន្លោះទទេ T5557/T5577 គឺត្រូវគ្នាយ៉ាងពេញលេញជាមួយគ្នាទៅវិញទៅមកក្នុងលក្ខខណ្ឌនៃពិធីការថត ទោះបីជាយ៉ាងណាក៏ដោយ ពួកវាមានអប្បបរមាខុសគ្នាបន្តិច និង ដងអតិបរមាជីពចរ (ជាសំណាងល្អដងនៃ T5557 ត្រួតលើគ្នាជាមួយ T5577) ។ EM4305 មានពិធីការថតផ្សេងគ្នា។

    ដើម្បីកត់ត្រា T5557 ខ្ញុំបានប្រើលេខកូដ BolshoyK ។ តារាងខាងក្រោមបង្ហាញពីប៉ារ៉ាម៉ែត្រសញ្ញាសម្រាប់ fob គន្លឹះ T5557 ។

    ការថតចាប់ផ្តើមដោយសញ្ញា StartGape - អ្នកត្រូវបិទសញ្ញា 125 KHz សម្រាប់ប្រហែល 300 µs ។ នេះ​ជា​សញ្ញា​ប្រាប់​កាត​ដែល​ទិន្នន័យ​នឹង​ចាប់​ផ្ដើម​ផ្ទេរ​ទៅ​កាន់​វា​ឥឡូវ​នេះ។ បន្ទាប់អ្នកត្រូវផ្ទេរព័ត៌មានទៅទទេ។ ការអ៊ិនកូដទិន្នន័យដែលបានបញ្ជូនគឺ Manchester ដូចគ្នា។

    ចន្លោះ T5557/T5577 និង EM4305 មានមុខងារច្រើន និងអាច ប្រភេទផ្សេងគ្នាម៉ូឌុល គាំទ្រពាក្យសម្ងាត់ និងច្រើនទៀត។ ឌីសនីមួយៗនៅលើក្តារមានសំណុំនៃប្លុក 32 ប៊ីត។ គោលបំណងនៃប្លុកទាំងនេះគឺខុសគ្នា។ នៅក្នុងខ្លះលេខកូដគន្លឹះត្រូវបានចេញ (វាត្រូវការពីរប្លុក) ។ នៅក្នុងផ្សេងទៀត - ការកំណត់រចនាសម្ព័ន្ធ។ ទីបី ការកំណត់អត្តសញ្ញាណរបស់អ្នកផលិត។ យើងនឹងប្រើមុខងារមានកំណត់ ដូច្នេះអ្នកដែលចង់យល់ពីអត្ថន័យនៃប៊ីតទាំងអស់នេះ អាចមើលឯកសារសម្រាប់ចន្លោះទទេ (ខ្ញុំបានភ្ជាប់វាទៅបណ្ណសារ)។

    ប្លុកត្រូវបានប្រមូលជាពីរទំព័រ (0 និង 1) ។

    នៅក្នុងទំព័រសូន្យមានប្លុកកំណត់រចនាសម្ព័ន្ធដែលមានលិបិក្រម 0. នេះជាអ្វីដែលយើងនឹងកំណត់។ សម្រាប់ T5557/T5577 យើងនឹងមានបៃកំណត់រចនាសម្ព័ន្ធដូចខាងក្រោមៈ 0x00.0x14.0x80.0x40 ស្របតាមតារាងពីឯកសារ (ខ្ញុំបានសម្គាល់ជាពណ៌ក្រហមនូវរបៀបដែលបានជ្រើសរើសដោយប៊ីតមួយ)៖

    ដូច្នេះ យើងបានជ្រើសរើស៖ ប្រេកង់បញ្ជូនទិន្នន័យ RF/64 (125 KHz/64) ការអ៊ិនកូដប្រភេទ Manchester ចេញប្លុករហូតដល់ទីពីរ (ក្នុងប្លុកទី 1 និងទី 2 យើងនឹងមានលេខកូដដែលចេញដោយកាត)។ មុនពេលសរសេរ ត្រូវតែផ្ញើ opcode (2 opcode bits) និងមួយ latch bit (lockbit)។ Opcodes 10b និង 11b នាំមុខការសរសេរទិន្នន័យសម្រាប់ទំព័រ 0 និង 1 (ប៊ីតដ៏សំខាន់បំផុតបញ្ជាក់លេខទំព័រ ប៊ីតដែលសំខាន់បំផុតបញ្ជាក់លេខកូដសរសេរទំព័រ)។ យើងចេញ 10b សម្រាប់ opcode (ការងារទាំងអស់ត្រូវបានធ្វើដោយទំព័រសូន្យ) និង 0b សម្រាប់ latch bit ។ បន្ទាប់ពីផ្ទេរទិន្នន័យទាំងអស់នេះ ចាំបាច់ត្រូវផ្ទេរអាសយដ្ឋានបីប៊ីតនៃទំព័រដែលត្រូវសរសេរ។ ការផ្ទេរទិន្នន័យទាំងអស់សម្រាប់ T5557/T5577 ត្រូវបានអនុវត្តពីប៊ីតដ៏សំខាន់បំផុតទៅតិចបំផុត។

    តាមរយៈការកំណត់លេខកូដកាតនៅក្នុងប្លុក 1 និង 2 និងការកំណត់រចនាសម្ព័ន្ធនៅក្នុងប្លុក 0 អ្នកអាចទទួលបានស្លាក RFID ស្ទួន។ ដូចដែលអ្នកអាចឃើញអ្វីគ្រប់យ៉ាងគឺសាមញ្ញ។

    ប្រភេទទទេបន្ទាប់គឺ EM4305 ។ ដូច្នេះ ខ្ញុំ​ត្រូវ​ដោះស្រាយ​ជាមួយ​នឹង​ការ​ថត​សំឡេង​ទទេ​នេះ​ដោយ​ខ្លួន​ឯង។ វាក៏មានប្លុក 32 ប៊ីតផងដែរ ប៉ុន្តែគោលបំណងរបស់ពួកគេគឺខុសគ្នា។

    ការអ៊ិនកូដទិន្នន័យដែលបានបញ្ជូនទៅកាតគឺផ្អែកលើភាពខុសគ្នាក្នុងចន្លោះពេលមួយ។ ប្រសិនបើមានភាពខុសប្លែកគ្នាក្នុងចន្លោះពេល នោះវាគឺសូន្យ ហើយប្រសិនបើមិនមានទេ វាគឺមួយ។ ពាក្យកំណត់រចនាសម្ព័ន្ធត្រូវបានរក្សាទុកក្នុងបៃទី 4 ហើយសម្រាប់ខ្លួនខ្ញុំផ្ទាល់ខ្ញុំបានកំណត់វាដូចខាងក្រោម: 0x5F,0x80,0x01,0x00 (ការអ៊ិនកូដ Manchester, 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 និង parity P. (0101b សម្រាប់ការថត សូមមើលតារាងខាងក្រោម)។
    4. យើងបញ្ជូនអាសយដ្ឋានប្លុក (សូមមើលតារាង) លេខសូន្យពីរ និងភាពស្មើគ្នានៃអាសយដ្ឋាន។
    5. យើងបញ្ជូនទិន្នន័យប្លុក (32 ប៊ីត) ។

    ទម្រង់ពាក្យបញ្ជា


    លេខកូដបញ្ជា

    ទម្រង់អាសយដ្ឋានប្លុក

    វាកំណត់ការកំណត់រចនាសម្ព័ន្ធ EM4305 ទទេ និងលេខកូដរបស់វា។

    តាមពិតម៉ាស៊ីនថតចម្លងសាមញ្ញមិនត្រូវការអ្វីទៀតទេ។

    ខ្ញុំបានធ្វើកំណែជាច្រើននៃម៉ាស៊ីនថតចម្លងជាមួយនឹងការបង្ហាញផ្សេងៗគ្នា។ ឧទាហរណ៍នេះគឺជាម៉ាស៊ីនថតចម្លងដែលមានអេក្រង់ 1602៖

    ហើយនេះគឺជាវីដេអូនៃម៉ាស៊ីនថតចម្លងដែលដំណើរការលើអេក្រង់ LPH9157-02។

    គម្រោង​នេះ​ត្រូវ​បាន​ធ្វើ​ឡើង​តាម​សំណើ​របស់​មិត្តភ័ក្ដិ​ដើម្បី​ដំឡើង​នៅ​លើ​ទ្វារ​ចូល​បន្ទប់​ស្តុក​ទំនិញ។ ក្រោយ​មក​មាន​រឿង​មួយ​ចំនួន​ទៀត​ត្រូវ​បាន​ធ្វើ​ឡើង​តាម​ការ​ស្នើ​សុំ​របស់​មិត្តភ័ក្តិ​និង​អ្នក​ស្គាល់។ ការរចនាបានប្រែទៅជាសាមញ្ញនិងអាចទុកចិត្តបាន។ ការងារ ឧបករណ៍នេះ។ដូចនេះ៖ វាអនុញ្ញាតតែកាត RFID ដែលត្រូវបានរក្សាទុកពីមុននៅក្នុងអង្គចងចាំរបស់ឧបករណ៍។

    លក្ខណៈសំខាន់ៗរបស់ឧបករណ៍បញ្ជាចូលប្រើ៖

    កាត RFID ទ្រង់ទ្រាយ EMmarin 125kHz

    Microcontroller ATtiny13

    ចំនួនសន្លឹកបៀ / fobs គន្លឹះ - 10 ។
    ប៊ូតុង "OPEN" ជាធម្មតាត្រូវបានបើក និងការពារពីការជាប់។
    ចាក់សោទិន្នផលត្រួតពិនិត្យ, ចរន្តខ្ពស់។ ត្រង់ស៊ីស្ទ័របែបផែនវាល, របៀប​ប្រតិ​ប​ត្ដិ​ការ latch (បើក​ជា​បណ្ដោះអាសន្ន​) ។

    ថាមពល - 12 វ៉។
    ការប្រើប្រាស់នៅក្នុងរបៀបរង់ចាំគឺ 35 mA ។
    ចំនួនកាតចូលប្រើ / fobs - 10 កុំព្យូទ័រ។
    ប្រវែងទំនាក់ទំនងជាមួយប៊ូតុង "OPEN" គឺ 10 ម៉ែត្រ។
    ប្រភេទលទ្ធផលត្រួតពិនិត្យចាក់សោ - បង្ហូរបើកចំហ (ត្រង់ស៊ីស្ទ័រដែលមានឥទ្ធិពលលើវាល, ចរន្តរហូតដល់ 2A) ។

    ដ្យាក្រាមគំនូសតាងនៃឧបករណ៍បញ្ជាការរឹតបន្តឹងការចូលប្រើនៅលើកាត RFID 125KHz (Em-Marin) សម្រាប់ 10 សន្លឹក (នៅលើ microcontroller ATtiny13):

    ប្រសិនបើអ្នកត្រូវការគ្រប់គ្រងសោរអេឡិចត្រូម៉ាញ៉េទិច អ្នកត្រូវដំឡើងឧបករណ៍បញ្ជូនតលទ្ធផលជាមួយក្រុមទំនាក់ទំនងដែលត្រូវការ។

    រូបរាងរបស់ឧបករណ៍ផ្ទៀងផ្ទាត់ RFID ដែលបានជួបប្រជុំគ្នា៖

    ការកំណត់ Fuse bits នៅក្នុង PonyProg៖

    ប្រតិបត្តិការរបស់ឧបករណ៍ ទាញយកវីដេអូដែលថតដោយអ្នកនិពន្ធ។
    មិត្តអ្នកអានម្នាក់ក៏បានផ្សព្វផ្សាយវីដេអូអំពីឧបករណ៍ដែលបានដំឡើងនៅក្នុងសកម្មភាព៖

    ការណែនាំអំពីកម្មវិធី

    របៀបប្រតិបត្តិការ - នៅពេលដែល 12V ត្រូវបានផ្គត់ផ្គង់ទៅឧបករណ៍បញ្ជា LED ភ្លឹបភ្លែតៗ 1Hz ។
    របៀបសរសេរកម្មវិធី - LED បញ្ចេញពន្លឺ 2Hz ។
    នៅពេលអ្នកចុចប៊ូតុង "OPEN" ស៊េរីសំឡេងប៊ីបខ្លីៗនឹងកើតឡើង ខណៈពេលដែលសោកំពុងបើក។

    សញ្ញាសំឡេង

    1 សញ្ញាខ្លី - កាតឬ fob គន្លឹះត្រូវបានសរសេរទៅអង្គចងចាំរបស់ឧបករណ៍បញ្ជា។
    សំឡេងប៊ីបខ្លីចំនួន 2 - កាត ឬសោ fob ត្រូវបានរក្សាទុកនៅក្នុងអង្គចងចាំរបស់ឧបករណ៍បញ្ជារួចហើយ។
    5 សំឡេងប៊ីបខ្លី - ចេញពីរបៀបសរសេរកម្មវិធី។
    1 ប៊ីបយូរ- អង្គចងចាំកាតគ្រាប់ចុចត្រូវបានលុបចេញពីឧបករណ៍បញ្ជា។
    បន្ត សញ្ញាខ្លីៗ- អង្គចងចាំកាត/គ្រាប់ចុចពេញ អតិបរមា 10 កុំព្យូទ័រ។ (តម្រូវឱ្យមានការបិទថាមពលទៅឧបករណ៍បញ្ជា) ។

    ថត MASTER CARD និងចាក់សោពេលវេលាបើក

    1 - បិទថាមពលឧបករណ៍បញ្ជា។
    2 - ចុចប៊ូតុង "បើក"
    3 - ខណៈពេលកំពុងកាន់ប៊ូតុង សូមភ្ជាប់ថាមពលទៅឧបករណ៍បញ្ជា បន្ទាប់ពី 5 វិនាទី។ ឧបករណ៍បញ្ជា "BEEPS" LED នឹងភ្លឹបភ្លែតៗនៅប្រេកង់ 2 ​​Hz ។
    4 - លែងប៊ូតុង។
    5 - យកកាត ឬសោ fob ចូលទៅក្នុងកន្លែងអាន នោះសំឡេងតែមួយនឹងបន្លឺឡើង សញ្ញាសំឡេងកាតមេ ឬ fob សោត្រូវបានកត់ត្រា ហើយពេលវេលាបើកសោ 1 វិនាទីនឹងត្រូវបានកត់ត្រា។

    ៦- កាន់កាត ឬសោ fob នៅកន្លែងអាន ហើយរាប់សញ្ញាសំឡេង។ បរិមាណកំណត់ពេលវេលាដែលត្រូវការដើម្បីបើកសោ បង្កើន 1 វិនាទី ប៉ុន្តែមិនលើសពី 32 វិនាទី។
    7 - បិទថាមពលទៅឧបករណ៍បញ្ជាឬផ្អាករយៈពេល 30 វិនាទី។

    ការលុបអង្គចងចាំទាំងអស់នៃកាត fob គន្លឹះ

    1 - របៀបប្រតិបត្តិការ។
    2 - ចុចប៊ូតុង "OPEN" ហើយខណៈពេលដែលកាន់វា នាំយកកាត MASTER ឬ fob គន្លឹះទៅកាន់អ្នកអាន ហើយសង្កត់វា 5 វិនាទី សំឡេងប៊ីបដ៏វែងនឹងបន្លឺឡើង - អង្គចងចាំនៃសន្លឹកបៀ / fobs គ្រាប់ចុចត្រូវបានលុប។
    3 - លែងប៊ូតុងហើយយកកាតឬសោ fob ចេញ។