کارت خوان آردوینو اترنت Rfid:
RFID به اترنت (Telnet)، خواننده Rfid خود را به اینترنت وصل کنید.


اقلام مورد نیاز:
آردوینو یونو Arduino UNO ماژول rfid rc522 ماژول شبکه enc28j60 Ethernet blue برد برد سایز متوسط breadboard سیم برد بردی 40 تایی دو سر نری سیم برد بردی 10 تایی نری به مادگی ماژول مبدل ac به 5v 700ma dc LED RGB an چهار پایه پک اقلام مورد نیاز:
درباره این پروژه کارت خوان آردوینو اترنت Rfid:


آیا تا به حال به این فکر کرده اید که یک برچسب RFID/سیستم امنیتی کارت یا سیستم مانیتورینگ در خانه و/یا محل کار خود اضافه کنید. خوب اگر اینجا هستید، شرط می بندم که قبلاً بررسی کرده اید که چقدر گران قیمت هستند از 200 تا 2000 دلار، خیلی درست است!؟ خوب ما تصمیم گرفتیم سیستمی بسازیم که کمتر از 100 دلار قیمت دارد و می تواند حتی بیشتر از دسترسی به یک درب انجام دهد، بنابراین این پروژه چیزی است که به آن رسیدیم. یک تگ خوان آردوینو rfid با قابلیت اینترنت. که با بیشتر از 20 دلار می تواند درها را باز کند.
در اینجا نمونه اولیه کارت خوان آردوینو اترنت Rfid قابل مشاهده است:


ممکن است فکر کنید ممکن است زمان زیادی طول بکشد. با این حال، این مورد فقط برای ما حدود 6 ساعت طول کشید (چون مشکل برق داشتم)، اما تنظیم آن مانند مثال بالا می تواند حدود 30 دقیقه طول بکشد. تمام کدها و تصاویر در زیر آمده است، بنابراین اگر در مراحل بعدی گیج شده اید، ادامه دهید و به تصاویر/کد پایین تر نگاه کنید.
در اینجا تمام مراحل وجود دارد:
قبل از شروع (لازم):
قبل از اینکه بتوانیم کارتها را اسکن کنیم و آنها را به سرور Telnet/TCP خود ارسال کنیم، به چند کتابخانه نیاز داریم UIPEthernet را از اینجا دریافت کنید.
MFRC522 را از اینجا دریافت کنید.
هر دوی این کتابخانه ها را در Program Files(x86)/Arduino/Libraries/ Restart arduino قرار دهید.
سخت افزار:
1. آردوینو نانو (شما همیشه می توانید کد خود را متناسب با دستگاه خود تغییر دهید)
2. MFRC522 با کارت های MAIFARE
3. سیم های جامپر (نر به نر) (نر به ماده)
4. ماژول/شیلد اترنت enc28j60
5. RGB LED
6. مبدل 3 ولت یا 5 ولت بیشتر از 700 میلی آمپر AC-DC
تنظیمات:
1. آردوینو را به برد برد (نانو یا میکرو) وصل کنید.
2. برای یافتن تنظیمات SPI (مقادیر زیر را تغییر دهید) برای پینآوت بردتان بهصورت آنلاین جستجو کنید.
3. پین آردوینو 10 (SS) را به ماژول اترنت ss یا CS وصل کنید.
4. پین 12 آردوینو (MISO) را به MISO rfid و SO اترنت وصل کنید.
5. پین 11 آردوینو (MOSI) را به rfid MOSI و اترنت SI وصل کنید.
6. پین 13 آردوینو (SCK) را به rfid SCK و اترنت SCK وصل کنید.
7. پایه 9 آردوینو را به پایه rfid RST وصل کنید.
8. پین 8 آردوینو را به rfid SSN وصل کنید.
9. پین آردوینو 5 را به led سبز، 4 را به آبی و 3 را به قرمز وصل کنید.
10. AC خود را به DC به + و – روی بردبرد خود وصل کنید.
11. آردوینو خود را به ac to dc متصل و VCC و GND را روی هر دوی rfid و اترنت به ac-dc وصل کنید (به یاد داشته باشید که این دستگاه ها فقط 3 ولت هستند!!!!! 5 ولت را تامین نمی کنند) اگر مشکل داشت از مقاومت ها برای رساندن ولتاژ به 3 ولت استفاده کنید.
13. پین VCC را روی LED به آردوینو 3 ولت یا ac-dc 3 ولت وصل کنید.
14. کابل اترنت را به ماژول وصل کنید و مطمئن شوید که در همان شبکه رایانه شما قرار دارد.
15. کابل USB را از کامپیوتر به آردوینو وصل کنید.
16. کامپیوتر را به همان شبکه وصل کنید.
کد را متناسب با نیاز خود تغییر دهید:
1. کد به خوبی توضیح داده شده است، بنابراین می توانید وارد شوید و بخش های خاصی را تغییر دهید، اما یک چیز برای اطمینان ماژول ehternet است.
2. آدرس Mac می تواند ثابت بماند (مگر اینکه قصد ساختن چندین مورد از این موارد را داشته باشید)
3. اگر از 192.168 استفاده می کنید. شبکه ip پایه شما می توانید IP را نگه دارید.
4. باز هم می توانید dns را نگه دارید، تنها زمان تغییر به 8.8.4.4 است.


- ipconfig را اجرا کنید تا دروازه خود را پیدا کنید، پیش فرض 192.168.1.1 است (اگر آن را نمی دانید) (کد در حال حاضر 192.168.1.5 است.)
- خط فرمان را اجرا کنید و ipconfig را تایپ کنید تا آدرس IP رایانه خود را بفهمید.


- به پایین بروید تا SEND TO SERVER را پیدا کنید و ip رایانه خود را وارد کنید یا اینکه پورت router شما را به آدرس IP عمومی شما ارسال کرده است.
- مطمئن شوید که پایتون دارید و سرور را اجرا می کنید (به یاد داشته باشید که این فقط یک کد نمونه است که ما برای ارائه خود به مدرسه استفاده کردیم، بنابراین سرور پایتون قبلاً ساخته شده است و تقریباً اصلاح نشده است، می توانید از هر سرور Telnet/TCP استفاده کنید)
و کد دیگری که احتمالاً باید تغییر دهید:


در حال اجرای کد:
1. برق AC-DC را وصل کنید.
2. مطمئن شوید که آردوینو شما در حال حاضر به کامپیوتر متصل است.
3. مطمئن شوید که هر دو دستگاه در یک شبکه هستند.
4. کد آردوینو اصلاح شده خود را فلش کنید یا اگر کدی که من دارم برای شما کار می کند عالی است (تقریباً شانسی برای تغییر آن وجود ندارد.)
5. پایتون خود را ، اسکریپت C++ یا هر سرور Telnet/TCP خود را در شبکه خود راه اندازی کنید.
6. برای ایمن شدن آردوینو خود را مجددا راه اندازی یا Restart کنید.
7. صبر کنید تا چراغ آبی شود و کارت را اسکن کنید، اگر سرور شما شناسه کارت را دریافت کرده است، آماده کار هستید.
8. به یاد داشته باشید که چراغ ها چه معنایی دارند بنفش/قرمز محو شده به معنای بالا آمدن است.
9. قرمز به این معنی است که هر خطایی مانند کارت در زاویه مرموزی قرار داشت و/یا سرور به موقع پاسخ نداد.
10. سبز به معنای عبور کردن است تا سرور با یک حرکت پاسخ دهد و شما بتوانید کارت بعدی خود را بخوانید.
11. آبی به معنای انتظار/بارگیری در انتظار کارت یا پاسخ است.
12. اگر آردوینو شما شروع به عقب افتادن کند و بیش از 30 ثانیه طول بکشد تا چراغ قرمز نشان داده شود به این معنی است که ماژول اترنت آردوینو به هیچ وجه نمی تواند به سرور متصل شود. این ممکن است به دلیل چندین چیز باشد که اولاً آردوینو شما توان کافی ندارد و ماژول اترنت آردوینو برای ارسال بسته مشکل دارد یا اینکه سرور رایانه شما در حال اجرا نیست یا اینکه آردوینو و رایانه شما در یک شبکه نیستند.
13. اگر آردوینو شما مدام عقب می ماند، این ترفندها را امتحان کنید تا آنها را برطرف کنید.
14. firewall ویندوز را خاموش کنید.
15. به تنظیمات پیشرفته firewall بروید و پورت ورودی/خروجی 23 را مجاز کنید.
16. با پورت 23 router خود را به رایانه خود منتقل کنید.
17. اگر بی سیم هستید، آردوینو را مستقیماً به router و رایانه خود را به همان router وصل کنید.
18. یک آداپتور برق AC-DC سنگین تر بخرید.
19. در غیر این صورت ممکن است آدرس IP یا آدرس اتصال خود را اشتباه وارد کرده باشید.
21. تو خوب هستی پس شروع کن!!!


به یاد داشته باشید که هیچ کدی برای سیستم قفل درب وجود ندارد، زیرا من آن را ندارم، این بدان معناست که اگر می خواهید از این نه تنها به عنوان یک سیستم ردیابی بلکه به عنوان یک سیستم ردیابی قفل درب استفاده کنید، باید کدی را اضافه کنید.
لطفا پایین را بخوانید:
من مسئولیتی در قبال دستگاه های آسیب دیده ندارم، در صورت عدم کنترل صحیح دستگاه شما آسیب می بیند. مطمئن شوید که مراقب خود باشید.
کد:
/* * ---------------------------------- * MFRC522 Arduino * Reader/PCD Nano v3 * Signal Pin Pin * ---------------------------------- * RST/Reset RST D9 * SPI SS NSS D10 * SPI MOSI MOSI D11 * SPI MISO MISO D12 * SPI SCK SCK D13 */ // THE FIRST LIBRARY THAT NEEDS TO BE INSTALLED IS UIP ETHERNET SECOND IS MFRC522 BOTH ARE ON GITHUB #include <UIPEthernet.h> #include <SPI.h> //For the selection of the key #include <MFRC522.h> //The RFID key library #define RST_PIN 9 // Configurable, see typical pin layout above - This is for the Arduino Nano - For RFID #define SS_PIN 8 //WE ARE USING 8 FOR RFID BECAUSE THE ETHERNET MODULE USES 10 byte sector = 0; byte blockAddr = 0; ////////Access certain sector/blocks in the card, trailer block is the last block byte trailerBlock = 1; int red = 3; int blue = 4; //Pins for RGB LED int green = 5; EthernetClient client; //ETHERNET INSTANCE MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. MFRC522::MIFARE_Key key; //Set key instance signed long timeout; //TIMEOUT SO IT DOESN'T SIT THERE FOREVER void setup() { //UI BEGIN pinMode(red, OUTPUT); pinMode(blue, OUTPUT); //Init the RGB LED pinMode(green, OUTPUT); Reset(); //Start with leds off Serial.begin(9600); //Start computer connection with a rate of 9600 bits per second //UI END //ETHERNET MODULE INITIAL SPI.begin(); // Init SPI bus uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05}; //MAC = 000102030405 IPAddress mip(192,168,1,160); //IP = 192.168.1.160 IPAddress mdns(8,8,8,8); //DNS = 8.8.8.8 IPAddress mgate(192,168,1,5); //GATEWAY = 192.168.1.5 IPAddress msubnet(255,255,255,0); //SUBNET = 255.255.255.0 Ethernet.begin(mac, mip, mdns, mgate , msubnet); //CONNECT USING ABOVE Serial.println("Succesful connection"); // END OF ETHERNET for(int t = 255; t > 0; t--) { analogWrite(red, t); ////More of show but let at least a second between the SPI of the ethernet and RFID delay(10); } //RFID INITIAL mfrc522.PCD_Init(); // Init MFRC522 card for (byte i = 0; i < 6; i++) { // Prepare the key (used both as key A and as key B) key.keyByte[i] = 0xFF; // using FFFFFFFFFFFFh which is the default at chip delivery from the factory } Serial.println(F("Scan a Card")); dump_byte_array(key.keyByte, MFRC522::MF_KEY_SIZE); //Get key byte size timeout = 0; delay(2000); Reset(); } //END RFID INITIAL void loop() //Run forever { // Look for new cards if ( ! mfrc522.PICC_IsNewCardPresent()) { digitalWrite(blue, LOW); return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) return; digitalWrite(blue, HIGH); //Show user that card has been read byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); // Check for compatibility with Mifare card if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) { Error(); return; } byte status; byte buffer[18]; byte size = sizeof(buffer); 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)); Error(); return; } // Read data from the block status = mfrc522.MIFARE_Read(blockAddr, buffer, &size); if (status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Read() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); Error(); } // Halt PICC mfrc522.PICC_HaltA(); // Stop encryption on PCD mfrc522.PCD_StopCrypto1(); // AFTER DONE READING CARD SEND TO SERVER if (client.connect(IPAddress(192,168,1,100),23)) { timeout = millis()+1000; Serial.println("Client connected"); const String ID = dump_byte_array(buffer, size); client.println(ID); Serial.println("sent :" + ID); delay(10); while(client.available()==0) { if (timeout - millis() < 0) goto close; } int size; while((size = client.available()) > 0) { uint8_t* msg = (uint8_t*)malloc(size); size = client.read(msg,size); Serial.write(msg,size); if(size == sizeof("g") - 1) { Pass(); } else { Error(); } free(msg); } close: client.stop(); } else { Serial.println("Couldn't connect to Server"); Error(); } //END OF SENDING TO SERVER Reset(); //RESTART LOOP WITH NO LEDS ON } // TURN THE BUFFER ARRAY INTO A SINGLE STRING THAT IS UPPERCASE WHICH EQUALS OUR ID OF THE SECTOR AND BLOCK String dump_byte_array(byte *buffer, byte bufferSize) { String out = ""; for (byte i = 0; i < bufferSize; i++) { //Serial.print(buffer[i] < 0x10 ? " 0" : " "); //Serial.print(buffer[i], HEX); out += String(buffer[i] < 0x10 ? " 0" : " ") + String(buffer[i], HEX); } out.toUpperCase(); out.replace(" ", ""); return out; } //END DUMP_BYTE_ARRAY //BELOW ARE THE LED METHODS void Error() { digitalWrite(red, LOW); delay(700); digitalWrite(red, HIGH); } void Pass() { digitalWrite(green, LOW); delay(700); digitalWrite(green, HIGH); } void Reset() { digitalWrite(red, HIGH); digitalWrite(blue, HIGH); digitalWrite(green, HIGH); } //END OF FILE
کد آردوینو C/C++:
این نرمافزاری است که روی آردوینو تقریباً آماده کار است، بنابراین کاری که انجام میدهید فقط تنظیم دروازه، IP، دروازه، مک آدرس و dns است.
کد به روز شده در GitHub: در اینجا می توانید به روزترین کد را دریافت کنید.
شماتیک ها:
نمودار سیم کشی ساده
مدار ساده است، بنابراین من فقط با سیم کشی عکس گرفتم.


منبع این مطالب:
https://create.arduino.cc/