Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Lector de tarjetas Arduino Ethernet Rfid

Componentes y suministros

Mifare MFRC522
Cualquier tipo de lector spi rfid está bien
× 1
Arduino UNO
Cualquier arduino está bien
× 1
enc28j60
Tendrá que modificar el código para cualquier cosa que no use ENC28J60
× 1
Cables de puente (genéricos)
× 1
Breadboard (genérico)
× 1
Computadora
Cualquier computadora que se conecte a Internet
× 1

Herramientas y máquinas necesarias

Tijeras
O pelacables

Aplicaciones y servicios en línea

Pycharm
Arduino IDE

Acerca de este proyecto


¿Alguna vez pensó en agregar un sistema de seguridad de tarjetas / etiquetas RFID o un sistema de monitoreo en su hogar u oficina? Bueno, si llegaste aquí, apuesto a que ya buscaste lo increíblemente caros que van desde $ 200 a $ 2000, ¡¿DEMASIADO CORRECTO ?! Bueno, un amigo y yo hemos decidido hacer un sistema que costaría menos de $ 100 y podría hacer incluso más que solo acceder a una puerta, así que esto es lo que se nos ocurrió. Un lector de etiquetas rfid arduino habilitado para Internet. que por $ 20 más pueden abrir puertas. Este sistema fue diseñado para rastrear a los estudiantes en nuestra escuela secundaria y esperamos que la escuela lo apruebe.

Aquí está el prototipo:

Podrías estar pensando que podría llevar mucho tiempo, yatta yatta yatta. Sin embargo, esto solo me tomó alrededor de 6 horas (porque tenía problemas de energía), pero esto podría llevarle unos 30 minutos configurarlo como en el ejemplo anterior. Todo el código y las imágenes están a continuación, por lo que si está confundido en los siguientes pasos, siga adelante y mire las imágenes / código de la parte inferior.

Estos son todos los pasos:

Antes de comenzar (necesario)

Antes de que podamos comenzar a escanear tarjetas y enviarlas a nuestro servidor Telnet / TCP, necesitamos algunas bibliotecas. Obtenga UIPEthernet aquí https://github.com/ntruchsess/arduino_uip

obtenga MFRC522 aquí https://github.com/miguelbalboa/rfid

Coloque ambas bibliotecas en Archivos de programa (x86) / Arduino / Libraries / Restart arduino

Hardware

  1. Arduino Nano (siempre puede modificar su código para que se ajuste a su dispositivo)
  2. MFRC522 con tarjetas MAIFARE
  3. Cables de puente (macho a macho) (macho a hembra)
  4. módulo ethernet enc28j60 / sheild
  5. LED RGB
  6. Convertidor CA-CC de 3 V o 5 V superior a 700 millas amperios

Configuración

  1. Conecte arduino a la placa de pruebas (si es nano o micro)
  2. Busque en línea el pinout de su placa para encontrar la configuración de SPI (cambie los valores a continuación)
  3. Conecte arduino pin 10 (SS) al módulo ethernet ss o CS
  4. Conecte arduino pin 12 (MISO) a rfid MISO y ethernet SO
  5. Conecte arduino pin 11 (MOSI) a rfid MOSI y ethernet SI
  6. Conecte arduino pin 13 (SCK) a rfid SCK y ethernet SCK
  7. Conecte el pin 9 de arduino al pin rfid RST
  8. Conecte el pin 8 de arduino a rfid SSN
  9. Conecte el pin 5 de arduino al led verde, el 4 al azul y el 3 al rojo
  10. Conecte su CA a CC al + y - en su tablero
  11. Conecte a tierra su arduino de CA a CC
  12. Conecte VCC y GND tanto en rfid como en ethernet al ac-dc (¡RECUERDE ESTOS DISPOSITIVOS SON SOLO 3v!
  13. Conecte el pin VCC en el LED al arduino 3v o ac-dc 3v
  14. Conecte el cable ethernet al módulo y asegúrese de que esté en la misma red que su computadora
  15. Conecte el cable USB de la computadora al arduino
  16. Conectar la computadora a la misma red


Modifique el código para adaptarlo a sus necesidades

  1. El código está bastante bien comentado, por lo que puede ingresar y modificar ciertas partes, pero una cosa es segura es el módulo ehternet
  2. La dirección Mac puede permanecer igual (a menos que planee crear varias de estas)
  3. Si está utilizando un 192.168. red ip base puede mantener la ip
  4. Una vez más, puede mantener el dns, el único momento para cambiar es 8.8.4.4
  1. ejecute ipconfig para encontrar su puerta de enlace, el valor predeterminado es 192.168.1.1 (si no lo conoce) (el código actualmente es 192.168.1.5)
  2. ejecute el símbolo del sistema y escriba ipconfig para averiguar la dirección IP de su computadora
  1. desplácese hacia abajo para encontrar SEND TO SERVER, e ingrese la ip de su computadora o si su puerto reenvió su enrutador a su dirección IP pública
  2. ASEGÚRESE DE QUE TIENE PYTHON Y EJECUTE EL SERVIDOR (recuerde que es solo un código de ejemplo que usamos para nuestra presentación a la escuela, por lo que el servidor Python ya estaba prefabricado y casi no se modificó, puede usar cualquier servidor Telnet / TCP)

Y el otro código probablemente necesitará modificar:


Ejecutando el código

  1. Enchufe la alimentación CA-CC a la pared
  2. Asegúrese de que su arduino esté actualmente conectado a la computadora
  3. Asegúrese de que ambos dispositivos estén en la misma red
  4. Actualice su código arduino modificado o si el que tengo funciona para usted, entonces genial (casi no hay posibilidad de que tenga que modificarlo)
  5. Inicie su script Python, C ++ o cualquier servidor Telnet / TCP en su red
  6. Reinicie su arduino para estar seguro
  7. Espere hasta que la luz se vuelva azul e intente escanear una tarjeta, si su servidor obtuvo el ID de la tarjeta, entonces está listo para comenzar
  8. Recuerde lo que significan las luces. Morado / rojo desvanecido significa arrancar
  9. El rojo significa cualquier error, como que la tarjeta estaba en un ángulo extraño y / o el servidor no respondió a tiempo
  10. Verde significa pase para que el servidor responda con un intento y pueda leer su próxima tarjeta
  11. Azul significa esperar / cargar esperando una tarjeta o respuesta
  12. Si su arduino comienza a retrasarse y tarda más de 30 segundos en mostrar una luz roja, significa que el módulo ethernet arduino no se pudo conectar al servidor en absoluto. Esto podría deberse a varias cosas, primero su arduino no tiene suficiente energía y el módulo ethernet arduino está luchando para enviar un paquete o porque el servidor de su computadora no se está ejecutando o porque su arduino y su computadora no están en la misma red.
  13. Si su arduino sigue rezagado, pruebe estos trucos para solucionarlo

  14. Apague el firewall de Windows

  15. ingrese a la configuración avanzada del firewall y permita el puerto entrante / saliente 23
  16. el puerto reenvía su enrutador a su computadora con el puerto 23
  17. Si es inalámbrico, conecte el arduino directamente al enrutador y su computadora al mismo
  18. Compre un adaptador de corriente AC-DC más resistente
  19. De lo contrario, tal vez ingrese su dirección IP o la dirección de conexión incorrecta

  20. O contácteme en [email protected] si hay algún problema

  21. ¡¡¡ESTÁS BIEN PARA IR !!!

Recuerde que no hay ningún código para el sistema de bloqueo de la puerta, porque no tengo uno, esto significa que tendrá que agregar algún código si desea utilizar esto no solo como un sistema de seguimiento, sino como un sistema de seguimiento de bloqueo de la puerta.


Lea a continuación:

Código

  • El código Arduino
  • Ejemplo de código de servidor
El código Arduino C / C ++
Este es el software que va en el arduino casi listo para funcionar, así que lo que debe hacer es ajustar la puerta de enlace, la ip, la puerta de enlace, la dirección mac y dns
 / * * ------------ ---------------------- * MFRC522 Arduino * Lector / PCD Nano v3 * Pin de señal Pin * -------------- -------------------- * RST / Restablecer RST D9 * SPI SS NSS D10 * SPI MOSI MOSI D11 * SPI MISO MISO D12 * SPI SCK SCK D13 * /// LA PRIMERA BIBLIOTECA QUE NECESITA INSTALARSE ES UIP ETHERNET, EL SEGUNDO ES MFRC522 AMBOS ESTÁN EN GITHUB # include  #include  // Para la selección de la clave # incluya  // La Biblioteca de claves RFID # define RST_PIN 9 // Configurable, vea el diseño de pines típico arriba - Esto es para el Arduino Nano - Para RFID # define SS_PIN 8 // ESTAMOS UTILIZANDO 8 PARA RFID PORQUE EL MÓDULO ETHERNET UTILIZA sector de 10 bytes =0; byte blockAddr =0; //////// Accede a ciertos sectores / bloques en la tarjeta, el bloque de remolque es el último byte del bloque trailerBlock =1; int red =3; int blue =4; // Pines para LED RGB en verde =5; Cliente EthernetClient; // ETHERNET INSTANCEMFRC522 mfrc522 (SS_PIN, RST_PIN); // Crear instancia MFRC522.MFRC522 ::MIFARE_Key key; // Establecer el tiempo de espera largo de la instancia de clave firmada; // TIEMPO DE ESPERA PARA QUE NO SE SIENTA ALLÍ PARA SIEMPREvoid setup () {// UI BEGIN pinMode (rojo, SALIDA); pinMode (azul, SALIDA); // Iniciar el pinMode LED RGB (verde, SALIDA); Reiniciar(); // Empezar con leds apagados Serial.begin (9600); // Iniciar la conexión de la computadora con una velocidad de 9600 bits por segundo // FIN DE LA IU // INICIAL DEL MODULO ETHERNET SPI.begin (); // Iniciar bus SPI 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); // SUBRED =255.255.255.0 Ethernet.begin (mac, mip, mdns, mgate, msubnet); // CONECTAR USANDO ARRIBA Serial.println ("Conexión exitosa"); // FIN DE ETHERNET para (int t =255; t> 0; t--) {analogWrite (rojo, t); //// Más de show pero deje al menos un segundo entre el SPI de ethernet y el retardo RFID (10); } // RFID INICIAL mfrc522.PCD_Init (); // Inicializar tarjeta MFRC522 para (byte i =0; i <6; i ++) {// Preparar la clave (utilizada como clave A y como clave B) key.keyByte [i] =0xFF; // usando FFFFFFFFFFFFh que es el predeterminado en la entrega del chip de fábrica} Serial.println (F ("Escanear una tarjeta")); dump_byte_array (key.keyByte, MFRC522 ::MF_KEY_SIZE); // Obtener el tamaño del byte de la clave timeout =0; retraso (2000); Reset ();} // FIN RFID INICIALvoid loop () // Ejecutar para siempre {// Buscar nuevas tarjetas if (! Mfrc522.PICC_IsNewCardPresent ()) {digitalWrite (azul, LOW); regreso; } // Seleccione una de las tarjetas if (! Mfrc522.PICC_ReadCardSerial ()) return; digitalWrite (azul, ALTO); // Mostrar al usuario que la tarjeta ha sido leída byte piccType =mfrc522.PICC_GetType (mfrc522.uid.sak); // Compruebe la compatibilidad con la tarjeta Mifare si (piccType! =MFRC522 ::PICC_TYPE_MIFARE_MINI &&piccType! =MFRC522 ::PICC_TYPE_MIFARE_1K &&piccType! =MFRC522 ::PICC_TYPE_MIFARE_4K) {Error (); regreso; } estado de bytes; búfer de bytes [18]; tamaño de byte =tamaño de (búfer); 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 () falló:")); Serial.println (mfrc522.GetStatusCodeName (estado)); Error(); regreso; } // Leer datos del bloque status =mfrc522.MIFARE_Read (blockAddr, buffer, &size); if (status! =MFRC522 ::STATUS_OK) {Serial.print (F ("MIFARE_Read () falló:")); Serial.println (mfrc522.GetStatusCodeName (estado)); Error(); } // Detener PICC mfrc522.PICC_HaltA (); // Detener el cifrado en PCD mfrc522.PCD_StopCrypto1 (); // DESPUÉS DE LEER LA TARJETA ENVIAR AL SERVIDOR if (client.connect (IPAddress (192,168,1,100), 23)) {timeout =millis () + 1000; Serial.println ("Cliente conectado"); const String ID =dump_byte_array (búfer, tamaño); client.println (ID); Serial.println ("enviado:" + ID); retraso (10); while (client.available () ==0) {if (timeout - millis () <0) goto close; } int tamaño; while ((tamaño =cliente disponible ())> 0) {uint8_t * msg =(uint8_t *) malloc (tamaño); tamaño =cliente.read (msg, tamaño); Serial.write (mensaje, tamaño); if (tamaño ==tamaño de ("g") - 1) {Pasar (); } else {Error (); } gratis (msg); } cerrar:cliente.stop (); } else {Serial.println ("No se pudo conectar al servidor"); Error(); } // FIN DE ENVIAR AL SERVIDOR Reset (); // REINICIE EL BUCLE SIN LEDS ENCENDIDOS} // CONVIERTE LA ARRAY DE BÚFER EN UNA SOLA CADENA EN MAYÚSCULAS QUE ES IGUAL A NUESTRO ID DEL SECTOR Y BLOCKString dump_byte_array (byte * buffer, byte bufferSize) {String out =""; for (byte i =0; i  
Código de servidor de ejemplo Python
Aquí hay un ejemplo completo de cómo usar el servidor
 import SocketServerclass MyTCPHandler (SocketServer.BaseRequestHandler):def handle (self):# self.request es el socket TCP conectado al cliente self.data =self.request.recv (1024) .strip () imprimir "{} escribió:". Formato (self.client_address [0]) imprimir self.data "" "COSAS SQL AQUÍ si (self.data ==NOMBRE SQL o algo) {self.request .sendall ("g") // enviar bien // INSERTAR LA HORA Y LA UBICACIÓN EN SQL AQUÍ {else {self.request.sendall ("bb") // enviar mal // NO HACER NADA simplemente enviar a arduino datos incorrectos} "" "self.request.sendall (" g ") if __name__ ==" __main__ ":HOST, PORT =" ", 23 server =SocketServer.TCPServer ((HOST, PORT), MyTCPHandler) server.serve_forever () 
Código actualizado en GitHub
Aquí puede obtener el código más actualizado https://github.com/smerkousdavid/InternetRFIDTags

Esquemas

El circuito es simple, así que acabo de hacer una foto con el cableado.

Proceso de manufactura

  1. Tarjeta de felicitación
  2. Tarjeta de crédito
  3. Arduino RFID Lock con RC522 - Protocolo MIFARE 13.56 Mhz
  4. Tutorial de bloqueo RFID de Arduino
  5. Sistema de asistencia que usa Arduino y RFID con Python
  6. Arduino Spybot
  7. FlickMote
  8. Televisión casera B-Gone
  9. Reloj maestro
  10. Encuéntrame
  11. Lector de disquetes Arduino Amiga (V1)