RFID குறிச்சொற்களைப் படித்தல் மற்றும் எழுதுதல். Arduino க்கான RC522 தொகுதி

Arduino உடனான இணைப்பு:

முதலில் நீங்கள் MFRC522 க்கான RFID நூலகத்தை நிறுவ வேண்டும்.

RC522 RFID தொகுதியில் உள்ள தொடர்புகள் Arduino உடன் இணைக்கப்பட்டிருக்க வேண்டும். இணைப்புக்கு ஆண்-பெண் கம்பிகளைப் பயன்படுத்துவது வசதியானது.


RFID தொகுதி RC522க்கான தொடர்புகளின் விளக்கம்:

  • VCC - சக்தி. 3.3V தேவை;
  • RST - மீட்டமை. வரியை மீட்டமைக்கவும். எந்த சூழ்நிலையிலும் CraftDuino இல் உள்ள ரீசெட் பின்னுடன் இணைக்க வேண்டாம்! இந்த முள் PWM உடன் டிஜிட்டல் போர்ட்டுடன் இணைக்கிறது;
  • GND - தரை. பூமி
  • MISO - முதன்மை உள்ளீடு ஸ்லேவ் வெளியீடு - அடிமை முதல் மாஸ்டர் வரை தரவு, SPI;
  • மோசி - மாஸ்டர் அவுட்புட் ஸ்லேவ் இன்புட் - மாஸ்டரில் இருந்து ஸ்லேவ், எஸ்பிஐ வரை தரவு;
  • SCK - தொடர் கடிகாரம் - கடிகார சமிக்ஞை, SPI;
  • NSS - ஸ்லேவ் தேர்வு - அடிமை தேர்வு, SPI;
  • IRQ - குறுக்கீடு வரி;
MFRC522 Arduino Uno அர்டுயினோ மெகா Arduino Nano v3 அர்டுயினோ லியோனார்டோ/மைக்ரோ Arduino Pro மைக்ரோ
ஆர்எஸ்டி 9 5 D9 ரீசெட்/ஐசிஎஸ்பி-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
GND GND GND GND GND GND

RFID-RC522 தொகுதி இரண்டு குறிச்சொற்களுடன் வருகிறது, ஒன்று பிளாஸ்டிக் அட்டை வடிவத்திலும், இரண்டாவது கீ ஃபோப் வடிவத்திலும். தேவைப்பட்டால், அவற்றை தனித்தனியாக வாங்கலாம்.

எல்லாம் இணைக்கப்பட்ட பிறகு, தொகுதியில் உள்ள காட்டி ஒளிரும், இது RFID க்கு மின்சாரம் வழங்கப்படுவதைக் குறிக்கிறது. . நேரமாகிவிட்டது நாங்கள் நிறுவிய நூலகத்தில் உள்ள ஒரு சோதனை ஓவியத்தை இயக்கவும்.



குறிப்பிட்ட மாறிலிகளின் சரியான தன்மையை சரிபார்க்க வேண்டியது அவசியம்:

#SS_PIN 10ஐ வரையறுக்கவும் #RST_PIN 9ஐ வரையறுக்கவும் // இந்த மாறிலிகள் இதற்கு ஒத்திருக்கும்

இப்போது ஸ்கெட்சை Arduino இல் பதிவேற்றி அதை இயக்கவும் தொடர் துறைமுக கண்காணிப்பு.

நாங்கள் குறிச்சொல்லை வாசகரிடம் கொண்டு வருகிறோம், மேலும் தொகுதி இந்த குறிச்சொல்லிலிருந்து எல்லா தரவையும் படிக்கிறது, எடுத்துக்காட்டாக, குறிச்சொல் UID இன் தனிப்பட்ட அடையாளங்காட்டி.

RFID-RC522 செயல்பாட்டின் வீடியோ:

இன்று நான் MFRC522 சிப்பின் அடிப்படையில் RFID தொகுதி RC522 பற்றி பேசுவேன். மின்சாரம் 3.3V, கண்டறிதல் வரம்பு 6cm வரை. 13.56 மெகா ஹெர்ட்ஸ் அதிர்வெண் கொண்ட RFID குறிச்சொற்களைப் படிக்கவும் எழுதவும் வடிவமைக்கப்பட்டுள்ளது. இந்த வழக்கில் அதிர்வெண் மிகவும் முக்கியமானது, ஏனெனில் RFID குறிச்சொற்கள் மூன்று அதிர்வெண் வரம்புகளில் உள்ளன:


  • LF வரம்பு மதிப்பெண்கள் (125-134 kHz)

  • எச்எஃப் பேண்ட் குறிச்சொற்கள் (13.56 மெகா ஹெர்ட்ஸ்)

  • UHF பேண்ட் குறிச்சொற்கள் (860-960 MHz)

இந்த குறிப்பிட்ட தொகுதி HF பேண்ட் குறிச்சொற்களுடன், குறிப்பாக MIFARE நெறிமுறையுடன் செயல்படுகிறது.

தொகுதியுடன் பணிபுரிய, நீங்கள் Arduino IDE இல் உள்ள நிலையான RFID நூலகத்தைப் பயன்படுத்தலாம், இருப்பினும், இந்த தொகுதிக்கு குறிப்பாக எழுதப்பட்ட மற்றொரு நூலகம் உள்ளது - MFRC522 (1 MB). இரண்டு நூலகங்களும் மிகவும் வசதியானவை, ஆனால் MFRC522 கூடுதல் சிறப்பு செயல்பாடுகளைக் கொண்டுள்ளது, இது இறுதி நிரல் குறியீட்டை முடிந்தவரை குறைக்க உங்களை அனுமதிக்கிறது.

இணைப்பு

சிலர் சிக்கலை எதிர்கொள்வார்கள் - பெரும்பாலான பாடங்கள் மற்றும் வழிகாட்டிகளில் உள்ள பின்களின் பெயர் உங்கள் தொகுதியில் உள்ள பின்அவுட்டுடன் பொருந்தாமல் இருக்கலாம். ஓவியங்கள் SS பின்னைக் குறிக்கும், ஆனால் உங்கள் தொகுதியில் அது இல்லை என்றால், அது SDA எனக் குறிக்கப்படும். கீழே நான் மிகவும் பொதுவான பலகைகளுக்கான தொகுதி இணைப்பு அட்டவணையை வழங்குவேன்.

MFRC522 Arduino Uno அர்டுயினோ மெகா Arduino Nano v3

அர்டுயினோ லியோனார்டோ/மைக்ரோ

Arduino Pro மைக்ரோ
ஆர்எஸ்டி 9 5 D9 ரீசெட்/ஐசிஎஸ்பி-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
GND GND GND GND GND GND

எஸ்எஸ்(எஸ்டிஏ) மற்றும் ஆர்எஸ்டி கண்ட்ரோல் பின்கள் ஸ்கெட்ச்சில் குறிப்பிடப்பட்டுள்ளன, எனவே எனது உதாரணங்களில் நான் பயன்படுத்தும் பலகையில் இருந்து உங்கள் போர்டு வித்தியாசமாக இருந்தால், நான் UNO R3 ஐப் பயன்படுத்துகிறேன் என்றால், ஸ்கெட்சின் தொடக்கத்தில் உள்ள அட்டவணையில் உள்ள ஊசிகளைக் குறிப்பிடவும். :


#SS_PIN 10ஐ வரையறுக்கவும் #RST_PIN 9ஐ வரையறுக்கவும்

எடுத்துக்காட்டு எண். 1: அட்டை எண்ணைப் படித்தல்

RFID நூலகத்திலிருந்து ஒரு உதாரணத்தைப் பார்ப்போம் - cardRead. இது அட்டையிலிருந்து தரவைக் காட்டாது, ஆனால் அதன் எண் மட்டுமே, இது பொதுவாக பல பணிகளுக்கு போதுமானது.


SS_PIN 10ஐ வரையறுத்து #சேர்க்க #சேர்க்க // அட்டை எண்ணைப் பற்றிய தரவு 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()) ( // கார்டு எண்ணை முந்தைய கார்டின் எண்ணுடன் ஒப்பிடவும் * கார்டு புதியதாக இருந்தால், படிக்கவும் */ Serial.println(" "); Serial.println("Card found"); 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(" "); ) இல்லையெனில் ( /* இது ஏற்கனவே படித்த அட்டையாக இருந்தால், புள்ளியை அச்சிடவும் */ Serial.print("."); ) ) ) rfid.halt(); )

ஸ்கெட்ச் பதிவேற்றப்பட்டது, மாட்யூலில் உள்ள பவர் எல்இடி ஒளிரும், ஆனால் தொகுதி கார்டுக்கு பதிலளிக்கவில்லையா? வேலையின் "சரியான" எடுத்துக்காட்டுகளைத் தேடுவதற்கு பயப்படவோ அல்லது ஓடவோ தேவையில்லை. பெரும்பாலும், ஊசிகளில் ஒன்றில் எந்த தொடர்பும் இல்லை - போர்டில் உள்ள துளைகள் ஜம்பரின் தடிமன் விட சற்று பெரியவை, எனவே அவற்றை மறுசீரமைக்க முயற்சிப்பது மதிப்பு. போர்டில் எல்இடி எரியவில்லையா? 3.3V க்கு செல்லும் ஜம்பரை மாற்ற முயற்சிக்கவும், அது போர்டில் 3.3V உடன் இணைக்கப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும்; 5V சக்தியை வழங்குவது உங்கள் பலகையை எளிதில் அழிக்கக்கூடும்.

எல்லாம் உங்களுக்கு வேலை செய்கிறது என்று சொல்லலாம். பின்னர், RFID குறிச்சொற்களை தொகுதியுடன் படிக்கும்போது, ​​தொடர் போர்ட் மானிட்டரில் பின்வருவனவற்றைக் காண்போம்:


இங்கே நான் 3 வெவ்வேறு குறிச்சொற்களைப் படித்தேன், நீங்கள் பார்க்க முடியும் என, அவர் 3 ஐயும் வெற்றிகரமாகப் படித்தார்.

எடுத்துக்காட்டு #2: கார்டில் இருந்து தரவைப் படித்தல்

மிகவும் அதிநவீன விருப்பத்தை கருத்தில் கொள்வோம் - இது அட்டை எண்ணை மட்டுமல்ல, படிக்கும் எல்லா தரவையும் படிக்கும். இந்த முறை MFRC522 நூலகத்திலிருந்து ஒரு உதாரணத்தை எடுத்துக்கொள்வோம் - DumpInfo.


#அடங்கும் #சேர்க்க #ஆர்எஸ்டி_பின் 9 வரையறுத்து // #எஸ்எஸ்_பின் 10 வரையறுத்து //எம்எஃப்ஆர்சி522 எம்எஃப்ஆர்சி522(எஸ்எஸ்_பின், ஆர்எஸ்டி_பின்); // MFRC522 நிகழ்வு வெற்றிட அமைப்பை உருவாக்கு() ( Serial.begin(9600); // சீரியல் போர்ட் மானிட்டரைத் தொடங்கும் போது (! சீரியல்); // அது திறக்கும் வரை எதுவும் செய்ய வேண்டாம் (ATMEGA32U4 சிப்பில் Arduino க்கு) SPI.begin( ); ..." )); திரும்ப; (F("MFRC522 மென்பொருள் பதிப்பு: 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)) ( Serial.println(F("எச்சரிக்கை: தகவல் தொடர்பு தோல்வி, MFRC522 சரியாக இணைக்கப்பட்டுள்ளதா?" )) ;))

முந்தைய உதாரணம் பிழைகள் இல்லாமல் செயல்பட்டால், இதுவும் ஒரு பிரச்சனையாக இருக்கக்கூடாது. இருப்பினும், முந்தைய எடுத்துக்காட்டில் எந்த பிரச்சனையும் இல்லாமல் கார்டு எண்ணை வழங்கிய மெட்ரோ பாஸ், இதில் கண்டறிய முடியாத தரவு வகையாக மாறியது, மேலும் தொகுதியால் கார்டு எண்ணைத் தவிர வேறு எதையும் படிக்க முடியவில்லை.

இதன் விளைவாக, அட்டையிலிருந்து தரவைப் படித்த பிறகு, அதன் வகை, அடையாளங்காட்டி மற்றும் 16 நினைவக பிரிவுகளிலிருந்து தரவைப் பெறுகிறோம். MIFARE 1K நிலையான அட்டைகள் 16 பிரிவுகளைக் கொண்டுள்ளது, ஒவ்வொரு துறையும் 4 தொகுதிகளைக் கொண்டுள்ளது, மேலும் ஒவ்வொரு தொகுதியிலும் 16 பைட்டுகள் தரவு உள்ளது.


எடுத்துக்காட்டு எண். 3: கார்டில் புதிய அடையாளங்காட்டியை எழுதுதல்

இந்த எடுத்துக்காட்டில், அட்டை அடையாளங்காட்டியை (UID) மாற்றுவதைப் பார்ப்போம். எல்லா கார்டுகளும் ஐடியை மாற்றுவதை ஆதரிக்காது என்பதை அறிவது முக்கியம். அட்டை மீண்டும் எழுதக்கூடியதாக இருக்கலாம், ஆனால் தரவு மீண்டும் எழுதக்கூடியது என்று மட்டுமே அர்த்தம். துரதிர்ஷ்டவசமாக, என் கைகளில் இருந்த கார்டுகள் UID மீண்டும் எழுதுவதை ஆதரிக்கவில்லை, ஆனால் ஸ்கெட்ச் குறியீட்டை இங்கே வழங்குகிறேன்.


#உள்ளடக்க #சேர்க்க /* இங்கே ஒரு புதிய UID அமைக்கவும் */ #NEW_UID (0xDE, 0xAD, 0xBE, 0xEF) # SS_PIN 10 ஐ வரையறுக்கவும் # 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: ஒரு அட்டையில் தரவை எழுதுதல்

கடைசியாக நாங்கள் இவ்வளவு காலமாகப் பெறுவது இங்கே - கார்டில் தரவைப் பதிவுசெய்தல். தொகுதியுடன் பணிபுரியும் "இனிமையான" பகுதி, ஏற்கனவே உள்ள அட்டையின் நகலை உருவாக்கும் திறன், எதையாவது சேர்க்க அல்லது மாற்றுவது, இது வெறுமனே படிப்பதை விட மிகவும் சுவாரஸ்யமானது.

வரைபடத்தில் உள்ள தரவுத் தொகுதிகளில் ஒன்றை மாற்றுவோம்:


#அடங்கும் #சேர்க்க #ஆர்எஸ்டி_பின் 9 வரையறுத்தல் #எஸ்எஸ்_பின் 10 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::MIFARE_Key விசை; void setup() ( Serial.begin(9600); while (!Serial); SPI.begin(); mfrc522.PCD_Init(); // விசையைத் தயாரிக்கவும் // ( பைட் 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 செயல்படுத்துகிறது. எல்இடி மற்றும் ரிலேவைக் கட்டுப்படுத்த Arduino UNO மற்றும் RFID ரீடரை (EM-18) பயன்படுத்தி எளிய, DIY RFID அணுகல் கட்டுப்பாட்டு சாதனத்தை எவ்வாறு உருவாக்குவது என்பதை இந்தக் கட்டுரை விவாதிக்கிறது. மின்சுற்று மற்றும் Arduino ஸ்கெட்ச் (மூலக் குறியீடு) கீழே கொடுக்கப்பட்டுள்ளன.

இயக்கப்படும் போது, ​​வாசகர் ஒரு ரேடியோ அலைவரிசை சமிக்ஞையை அனுப்புகிறார். ஒரு RFID குறிச்சொல் ரீடருக்கு அருகில் வைக்கப்படும் போது, ​​அது குறிச்சொல்லின் உள்ளே இருக்கும் ஆண்டெனா மூலம் ரேடியோ அலைவரிசை சமிக்ஞையைப் பெறுகிறது. பெறப்பட்ட RF சமிக்ஞை மின் ஆற்றலாக மாற்றப்படும், இது டேக்கில் இருந்து தரவுகளை மீண்டும் RFID ரீடருக்கு அனுப்ப போதுமானது. கூடுதலாக, ரீடர் டேக் ஐடியை தொடர் தரவு போர்ட் வழியாக வெளிப்புற சாதனத்திற்கு அனுப்புவார். பரந்த அளவிலான வாசகர் மாதிரிகள் தற்போது கிடைக்கின்றன. மிகவும் பொதுவான மற்றும் பயன்படுத்த வசதியானது EM-18 தொகுதி. இந்த தொகுதி RFID செயலற்ற குறிச்சொற்களைப் படித்து, குறிச்சொல் ஐடியை Arduino மைக்ரோகண்ட்ரோலருக்கு அனுப்புகிறது.

படித்தல்RFID அடையாளங்காட்டி குறிச்சொற்கள்

தொடங்குவதற்கு, எளிய குறியீட்டைப் பதிவிறக்கவும் rfid1.ino IDE ஐப் பயன்படுத்தி Arduino Uno இல்.

இப்போது கீழே காட்டப்பட்டுள்ளபடி சுற்றுகளை இணைக்கவும்.

Arduino IDE இல் சீரியல் மானிட்டரைத் திறந்து, RFID குறிச்சொல்லை RFID ரீடரின் மையத்திற்கு மிக அருகில் பிடித்து, காட்டப்படும் டேக் ஐடியைக் கவனியுங்கள். இந்த தனிப்பட்ட அடையாளங்காட்டி அடுத்த ஓவியத்தில் தேவைப்படும்! (எங்கள் குறிச்சொல்லில் ஐடி 51005F46642C உள்ளது)

நுழைவு கட்டுப்பாடு

இந்த கட்டத்தில், தனித்துவ அடையாளங்காட்டியை (பயன்படுத்தப்படும் குறிச்சொல்) படிக்க வேண்டிய குறிச்சொல்லின் அடையாளங்காட்டியுடன் ஒப்பிட்டுப் பார்க்க கணினி கட்டமைக்கப்பட்டுள்ளது.

ஏற்கனவே உள்ள இணைப்பை பிரித்து புதிய ஓவியத்தை பதிவேற்றவும் rfid2.ino Arduino மைக்ரோகண்ட்ரோலருக்கு

மேலே உள்ள படத்தில் காட்டப்பட்டுள்ளபடி வன்பொருள் கூறுகளை (சில மாற்றங்களுடன்) மீண்டும் இணைக்கவும். இங்கே, Arduino மைக்ரோகண்ட்ரோலரின் பின் D12 நிலையான 5mm LED ஐ இயக்கப் பயன்படுகிறது. கட்டுப்பாட்டு டிரான்சிஸ்டர் மூலம் மின்காந்த ரிலேவைக் கட்டுப்படுத்த பின் D13 பயன்படுத்தப்படுகிறது. குறி பொருந்தும் ஒவ்வொரு முறையும், pin D13 இல் 5 வினாடிகளுக்கு உயர் கட்டுப்பாட்டு சமிக்ஞை தோன்றும். கதவு நிறுத்தம் போன்ற வெளிப்புற சுமைகளை கட்டுப்படுத்த ரிலே பயன்படுத்தப்படலாம். லேபிள் மதிப்புகள் பொருந்தவில்லை என்றால், பின் D13 இல் குறைந்த சமிக்ஞை நிலை இருக்கும், ஆனால் LED அலாரத்தைத் தூண்டுவதற்கு முள் D12 இல் உயர் நிலை தோன்றும்.

வணக்கம். இன்றைய திருப்பம் RFID தொகுதி.

RFID குறிச்சொற்களில் சேமிக்கப்பட்ட தரவைப் படிக்கவும் எழுதவும் இந்த தொகுதி பயன்படுத்தப்படுகிறது. இந்த தொழில்நுட்பத்தைப் பற்றி நீங்கள் மேலும் படிக்கலாம், எடுத்துக்காட்டாக, விக்கிபீடியாவில். நாங்கள் இங்கே பயிற்சி செய்கிறோம், எனவே தொடங்குவோம்.

என்னிடம் RFID-RC522 தொகுதி உள்ளது. இது வெவ்வேறு வடிவமைப்புகளின் இரண்டு விசைகளுடன் முழுமையாக வருகிறது - ஒரு அட்டை மற்றும் ஒரு முக்கிய ஃபோப். வேலையில் நேரடி வேறுபாடு இல்லை. தொகுதி வேலை செய்ய ஒரு நூலகம் உள்ளது; அதை கட்டுரையின் முடிவில் உள்ள இணைப்பிலிருந்து பதிவிறக்கம் செய்யலாம்.

நான் இந்தத் திட்டத்தைத் தயாரிக்கும் போது, ​​RFID தொகுதியைப் பற்றிய பல கட்டுரைகளைப் படித்தேன், அங்கு வழங்கப்பட்ட தரவுகளின் அடிப்படையில் (முக்கியமாக http://robocraft.ru/blog/3004.html) நான் ஒரு ஓவியத்தை எழுதினேன்.

விசை சென்சாருக்கு அருகில் இல்லை என்றாலும், ரிலே தொடர்புகள் திறந்திருக்கும். ரிசீவருக்கு தேவையான விசையை நாம் கொண்டு வரும்போது, ​​ரிலே தொடர்பு குழு இயக்கப்பட்டு, சாவி அகற்றப்படும் வரை இயக்கத்தில் இருக்கும். எனது ரிசீவர் ஒட்டு பலகை மூலம் குறிச்சொற்களைக் கேட்கிறது - இது ஒரு ரகசிய சுவிட்ச் என்னைச் செய்ய அனுமதிக்கிறது.

நீங்கள் ரீடரை மறைவாக ஏற்றினால் (உதாரணமாக, டேப்லெப்பின் கீழ்), கணினி அல்லது லைட்டிங் ஆன் செய்வதிலிருந்து எளிதாகத் தடுக்கலாம்.

சட்டசபை செயல்முறை பின்வரும் படிகளைக் கொண்டுள்ளது:

  1. முன்மொழியப்பட்ட வரைபடத்தின்படி சாதனத்தை இணைக்கவும்.
  2. செயலி பலகைக்கு ஒரு ஓவியத்தை எழுதவும் (கட்டுரையின் முடிவில் இணைப்பு).
  3. கணினியுடன் சட்டசபையை இணைத்து, தொடர் போர்ட் மானிட்டரை இயக்கவும்.
  4. சாவியை வாசகரிடம் கொண்டு வாருங்கள்.
  5. சீரியல் போர்ட் மானிட்டருக்கு வந்த முக்கிய குறியீட்டை கணக்கில் எடுத்துக்கொண்டு ஸ்கெட்சின் 20 வது வரியைத் திருத்தவும்.
  6. திருத்தப்பட்ட ஓவியத்தை பலகையில் எழுதவும்.
  7. அவ்வளவுதான் - எங்களிடம் பியர்-டு-பியர் அணுகல் கட்டுப்பாட்டு அமைப்பு தயாராக உள்ளது.

இந்தப் பாடத்தில் எலக்ட்ரானிக் கீ (டேக்) மூலம் பூட்டைத் திறக்கும் எளிய அமைப்பை எவ்வாறு உருவாக்குவது என்பதைக் கற்றுக்கொள்வோம்.

எதிர்காலத்தில், நீங்கள் செயல்பாட்டை மேம்படுத்தலாம் மற்றும் விரிவாக்கலாம். எடுத்துக்காட்டாக, "புதிய விசைகளைச் சேர்த்தல் மற்றும் நினைவகத்திலிருந்து அகற்றுதல்" செயல்பாட்டைச் சேர்க்கவும். அடிப்படை வழக்கில், ஒரு தனிப்பட்ட விசை அடையாளங்காட்டி நிரல் குறியீட்டில் முன்பே அமைக்கப்பட்ட ஒரு எளிய உதாரணத்தைக் கருத்தில் கொள்வோம்.

இந்த டுடோரியலில் நமக்குத் தேவைப்படும்:

திட்டத்தை செயல்படுத்த, நாம் நூலகங்களை நிறுவ வேண்டும்:

2) இப்போது நீங்கள் ஒரு Buzzer ஐ இணைக்க வேண்டும், இது விசை வேலை செய்து பூட்டு திறந்தால் ஒரு சிக்னலையும், பூட்டை மூடும்போது இரண்டாவது சமிக்ஞையையும் ஒலிக்கும்.

பின்வரும் வரிசையில் பஸரை இணைக்கிறோம்:

அர்டுயினோ பஸர்
5V வி.சி.சி
GND GND
முள் 5 IO

3) ஒரு சர்வோ டிரைவ் திறக்கும் பொறிமுறையாக பயன்படுத்தப்படும். உங்களுக்குத் தேவையான அளவு மற்றும் சர்வோ டிரைவ் உருவாக்கும் சக்தியைப் பொறுத்து எந்த சர்வோ டிரைவையும் தேர்ந்தெடுக்கலாம். சர்வோவில் 3 தொடர்புகள் உள்ளன:

கீழே உள்ள படத்தில் அனைத்து தொகுதிகளையும் எவ்வாறு இணைத்தோம் என்பதை நீங்கள் இன்னும் தெளிவாகக் காணலாம்:

இப்போது, ​​எல்லாம் இணைக்கப்பட்டிருந்தால், நீங்கள் நிரலாக்கத்திற்கு செல்லலாம்.

ஓவியம்:

#சேர்க்கிறது #சேர்க்கிறது #சேர்க்கிறது // "RFID" நூலகம். #SS_PIN 10ஐ வரையறுக்கவும் #RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN)ஐ வரையறுக்கவும்; கையொப்பமிடப்படாத நீண்ட uidDec, uidDecTemp; // டேக் எண்ணை தசம வடிவில் சர்வோ சர்வோவில் சேமிக்க; void setup() ( Serial.begin(9600); Serial.println("அட்டைக்காக காத்திருக்கிறது..."); SPI.begin(); // SPI துவக்கம் / Init SPI பஸ். mfrc522.PCD_Init(); // துவக்கம் MFRC522 / Init MFRC522 கார்டு. servo.attach(6); servo.write(0); // சர்வோவை மூடிய நிலைக்கு அமைக்கவும் ) void loop() ( // என்றால் (! mfrc522.PICC_IsNewCardPresent() புதிய லேபிளைத் தேடவும் ) (திரும்பவும்; ) // (! mfrc522.PICC_ReadCardSerial()) (திருப்பி;< 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); // устанавливаем серву в закрытое сосотояние }

ஓவியத்தை இன்னும் விரிவாகப் பார்ப்போம்:

கார்டின் (டேக்) யுஐடியைக் கண்டறிய, இந்த ஓவியத்தை அர்டுயினோவில் எழுதி, மேலே குறிப்பிட்டுள்ள சர்க்யூட்டை அசெம்பிள் செய்து, கன்சோலை (சீரியல் போர்ட் கண்காணிப்பு) திறக்க வேண்டும். நீங்கள் RFID குறிச்சொல்லைத் தொடும்போது, ​​கன்சோல் ஒரு எண்ணைக் காண்பிக்கும்

இதன் விளைவாக வரும் UID பின்வரும் வரியில் உள்ளிடப்பட வேண்டும்:

(uidDec == 3763966293) // குறிச்சொல்லின் Uid ஐ ஒப்பிட்டுப் பார்த்தால், அது கொடுக்கப்பட்ட ஒன்றுக்கு சமமாக இருந்தால், சர்வோ டிரைவ் வால்வைத் திறக்கும்.

ஒவ்வொரு அட்டைக்கும் ஒரு தனிப்பட்ட அடையாளங்காட்டி உள்ளது மற்றும் மீண்டும் மீண்டும் செய்யப்படுவதில்லை. எனவே, நிரலில் நீங்கள் அமைத்த அடையாளங்காட்டியின் அட்டையை நீங்கள் வழங்கும்போது, ​​கணினி ஒரு சர்வோ டிரைவைப் பயன்படுத்தி அணுகலைத் திறக்கும்.

காணொளி: