Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Baca Kartu RFID Terjaring Jaringan dengan Arduino, ENC28J60, dan MFRC522

Komponen dan perlengkapan

Mifare MFRC522
Tipe pembaca RFID SPI apa pun sudah cukup
× 1
Baca Kartu RFID Terjaring Jaringan dengan Arduino, ENC28J60, dan MFRC522
Arduino UNO
Tipe Arduino apa pun sudah cukup
× 1
enc28j60
Anda harus memodifikasi kode untuk apa pun yang tidak menggunakan ENC28J60
× 1
Baca Kartu RFID Terjaring Jaringan dengan Arduino, ENC28J60, dan MFRC522
Kabel jumper (umum)
× 1
Baca Kartu RFID Terjaring Jaringan dengan Arduino, ENC28J60, dan MFRC522
Breadboard (umum)
× 1
Komputer
Komputer apa pun yang terhubung ke internet
× 1

Alat dan mesin yang diperlukan

Gunting
ATAU pelapis kabel

Aplikasi dan layanan online

Pycharm
Baca Kartu RFID Terjaring Jaringan dengan Arduino, ENC28J60, dan MFRC522
Arduino IDE

Tentang proyek ini

Baca Kartu RFID Terjaring Jaringan dengan Arduino, ENC28J60, dan MFRC522

Apakah Anda pernah memikirkan untuk menambahkan sistem keamanan atau pemantauan tag/kartu RFID di rumah dan/atau kantor Anda. Nah jika Anda sampai di sini, saya yakin Anda sudah mencari tahu betapa mahalnya sistem tersebut yang berkisar dari $200 hingga $2000, TERLALU MAHAL KANA!? Nah, seorang teman dan saya telah memutuskan untuk membuat sistem yang akan berkurang dari $100 dan dapat melakukan lebih dari sekadar membuka pintu, jadi inilah yang kami buat. Pembaca tag RFID Arduino yang terhubung internet. yang dengan $20 tambahan dapat membuka pintu. Sistem ini dirancang untuk melacak siswa di SMA kami dan kami berharap sekolah menyetujui.

Ini adalah prototipe:

Baca Kartu RFID Terjaring Jaringan dengan Arduino, ENC28J60, dan MFRC522

Anda mungkin berpikir ini akan memakan waktu lama, yatta yatta yatta. Namun hal ini hanya memakan waktu sekitar 6 jam (karena saya memiliki masalah daya), namun ini bisa memakan waktu sekitar 30 menit untuk diatur seperti contoh di atas. Semua kode dan gambar ada di bawah, jadi jika Anda bingung di langkah berikutnya, silakan lihat gambar/kode di bawah.

Berikut adalah semua langkahnya:

Sebelum Memulai (Diperlukan)

Sebelum kita dapat memulai memindai kartu dan mengirimkannya ke server Telnet/TCP kita, kita memerlukan beberapa library. Dapatkan UIPEthernet di sini https://github.com/ntruchsess/arduino_uip

dapatkan MFRC522 di sini https://github.com/miguelbalboa/rfid

Masukkan kedua library ini ke Program Files(x86)/Arduino/Libraries/ Restart arduino

Hardware

  1. Arduino Nano (Anda selalu dapat memodifikasi kode Anda agar sesuai dengan perangkat Anda)
  2. MFRC522 dengan kartu MAIFARE
  3. Kabel jumper (Male to Male) (Male to Female)
  4. modul/sheld ethernet enc28j60
  5. LED RGB
  6. Konverter AC-DC 3V atau 5V lebih dari 700 mA

Setup

  1. Pasang arduino ke breadboard (jika nano atau micro)
  2. Cari online pinout papan Anda untuk menemukan pengaturan SPI (Ubah nilai di bawah)
  3. Hubungkan pin arduino 10 (SS) ke ss atau CS modul ethernet
  4. Hubungkan pin arduino 12 (MISO) ke rfid MISO dan ethernet SO
  5. Hubungkan pin arduino 11 (MOSI) ke rfid MOSI dan ethernet SI
  6. Hubungkan pin arduino 13 (SCK) ke rfid SCK dan ethernet SCK
  7. Hubungkan pin arduino 9 ke pin RST rfid
  8. Hubungkan pin arduino 8 ke rfid SSN
  9. Hubungkan pin arduino 5 ke LED hijau, 4 ke biru dan 3 ke merah
  10. Hubungkan AC ke DC ke + dan - pada breadboard Anda
  11. Ground arduino Anda ke ac ke dc
  12. Hubungkan VCC dan GND pada rfid dan ethernet ke ac-dc (INGAT PERANGKAT INI HANYA 3V!!!!!! jangan menyuplai 5V) Jika masalah gunakan resistor untuk menurunkan tegangan ke 3v
  13. Wire pin VCC pada LED ke arduino 3v atau ac-dc 3v
  14. Hubungkan kabel ethernet ke modul dan pastikan itu berada di jaringan yang sama dengan komputer Anda
  15. Colok kabel USB dari komputer ke arduino
  16. Hubungkan komputer ke jaringan yang sama

Modifikasi kode agar sesuai dengan kebutuhan Anda

  1. Kode cukup baik dikomentari jadi Anda bisa langsung masuk dan memodifikasi bagian tertentu tapi satu hal yang pasti adalah modul ethernet
  2. Alamat MAC dapat tetap sama (Kecuali Anda berencana untuk membuat beberapa dari ini)
  3. Jika Anda menggunakan jaringan ip basis 192.168. Anda dapat menjaga ip
  4. Lagi Anda dapat menjaga dns, waktu yang harus diubah adalah ke 8.8.4.4
Baca Kartu RFID Terjaring Jaringan dengan Arduino, ENC28J60, dan MFRC522
  1. jalankan ipconfig untuk menemukan gateway Anda, defaultnya adalah 192.168.1.1 (jika Anda tidak mengetahuinya) (Kode saat ini adalah 192.168.1.5)
  2. jalankan command prompt dan ketik ipconfig untuk mencari tahu alamat IP komputer Anda
Baca Kartu RFID Terjaring Jaringan dengan Arduino, ENC28J60, dan MFRC522
  1. gulir ke bawah untuk menemukan SEND TO SERVER, dan masukkan IP komputer Anda atau jika Anda meneruskan port router Anda ke alamat IP publik Anda
  2. PASTIKAN ANDA MILIK PYTHON DAN MENJALANKAN SERVER (Ingat ini hanyalah contoh kode yang kami gunakan untuk presentasi kami ke sekolah, jadi server Python sudah dibuat sebelumnya dan hampir tidak dimodifikasi Anda dapat menggunakan server Telnet/TCP apa pun)

Dan kode lain yang mungkin perlu Anda modifikasi:

Baca Kartu RFID Terjaring Jaringan dengan Arduino, ENC28J60, dan MFRC522

Menjalankan kode

  1. Colok AC-DC power ke dinding
  2. Pastikan arduino Anda saat ini terhubung ke komputer
  3. Pastikan kedua perangkat berada di jaringan yang sama
  4. Flash kode arduino yang telah dimodifikasi atau jika yang saya miliki bekerja untuk Anda maka bagus (Hampir tidak ada kemungkinan Anda akan perlu memodifikasinya)
  5. Mulai skrip Python, C++ Anda atau server Telnet/TCP apa pun di jaringan Anda
  6. Restart arduino Anda untuk jaga-jaga
  7. Tunggu sampai lampu menjadi biru dan coba memindai kartu, jika server Anda mendapatkan ID kartu maka Anda siap
  8. Ingat lampu berarti apa Ungu/merah pudar berarti booting up
  9. Merah berarti ada kesalahan seperti kartu berada di sudut yang aneh dan/atau server tidak merespons tepat waktu
  10. Hijau berarti lulus jadi server merespons dengan go dan Anda dapat membaca kartu berikutnya
  11. Biru berarti menunggu/memuat menunggu kartu atau respons
  12. Jika arduino Anda mulai lag dan memakan waktu lebih dari 30 detik untuk menunjukkan lampu merah berarti modul ethernet arduino tidak dapat terhubung ke server sama sekali. Ini bisa disebabkan oleh beberapa hal pertama arduino Anda tidak memiliki daya yang cukup dan modul ethernet arduino kesulitan mengirim paket atau bahwa server komputer Anda tidak berjalan atau bahwa arduino dan komputer Anda tidak berada di jaringan yang sama.
  13. Jika arduino Anda terus lag maka coba trik ini untuk memperbaikinya
  14. Matikan firewall windows
  15. masuk ke pengaturan firewall lanjutan dan izinkan port inbound/outbound 23
  16. port forward router Anda ke komputer Anda dengan port 23
  17. Jika Anda nirkabel hubungkan arduino langsung ke router dan komputer Anda ke yang sama
  18. Beli adaptor AC-DC yang lebih tahan lama
  19. Else maybe you input your ip address or connecting address wrong
  20. Entah itu hubungi saya di smerkousdavid@gmail.com jika ada masalah
  21. ANDA SUDAH SIAP!!!
Baca Kartu RFID Terjaring Jaringan dengan Arduino, ENC28J60, dan MFRC522

Ingat tidak ada kode untuk sistem kunci pintu, karena saya tidak memilikinya, ini berarti Anda akan perlu menambahkan beberapa kode jika Anda ingin menggunakan ini tidak hanya sebagai sistem pelacakan tetapi sebagai sistem pelacakan kunci pintu.

Silakan baca di bawah:

Kode

Kode ArduinoC/C++
/* * ---------------------------------- * 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 
Contoh kode serverPython

Berikut adalah contoh lengkap cara menggunakan server

import SocketServer class MyTCPHandler(SocketServer.BaseRequestHandler): def handle(self): # self.request is the TCP socket connected to the client self.data = self.request.recv(1024).strip() print "{} wrote:".format(self.client_address[0]) print self.data """ SQL STUFF HERE if(self.data == SQL NAME or something) { self.request.sendall("g")//send good //INSERT TIME AND LOCATION INTO SQL HERE { else { self.request.sendall("bb")//send bad //DO NOTHING just send to arduino bad data } """ self.request.sendall("g") if __name__ == "__main__": HOST, PORT = "", 23 server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler) server.serve_forever() 
Kode terbaru di GitHub

Di sini Anda dapat mendapatkan kode terbaruhttps://github.com/smerkousdavid/InternetRFIDTags

Skematik

Rangkaiannya sederhana jadi saya hanya membuat foto dengan pemasangan kabelBaca Kartu RFID Terjaring Jaringan dengan Arduino, ENC28J60, dan MFRC522

Proses manufaktur

  1. Industri Kartu Ucapan: Sejarah, Produksi, dan Tren Masa Depan
  2. Kartu Kredit: Sejarah, Desain, Manufaktur, dan Tren Masa Depan
  3. Buat Kunci Pintu RFID Arduino Aman dengan RC522 (MIFARE 13.56 MHz)
  4. Buat Kunci RFID Arduino yang Aman – Panduan Langkah demi Langkah
  5. Sistem Absensi RFID berbasis Arduino yang Andalkan dengan Python
  6. Membuat Spybot Arduino yang Dikontrol melalui Bluetooth
  7. FlickMote: Remote IR Kendali Gestur untuk Rumah Cerdas
  8. DIY Arduino TV B-Gone: Remote Universal untuk Semua TV
  9. Bangun Jam Master LED Kustom dengan Alarm – Terlihat dari Jarak 12 Meter
  10. Pembaca Floppy Disk Amiga Berbasis Arduino: Pemulihan Data Open-Source Hemat Biaya