Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

lecteur de carte Arduino Ethernet Rfid

Composants et fournitures

Mifare MFRC522
Tout type de lecteur spi rfid convient
× 1
Arduino UNO
Tout arduino est bon
× 1
enc28j60
Vous devrez modifier le code pour tout ce qui n'utilise pas ENC28J60
× 1
Câbles de raccordement (générique)
× 1
Planche à pain (générique)
× 1
Ordinateur
Tout ordinateur connecté à Internet
× 1

Outils et machines nécessaires

Ciseaux
Ou des pinces à dénuder

Applications et services en ligne

Pycharm
Arduino IDE

À propos de ce projet


Avez-vous déjà pensé à ajouter un système de sécurité d'étiquettes/cartes RFID ou un système de surveillance dans votre maison et/ou votre bureau. Eh bien, si vous êtes arrivé ici, je parie que vous avez déjà regardé à quel point ils coûtent entre 200 $ et 2000 $, TROP JUSTE ! ? Eh bien, un ami et moi avons décidé de créer un système qui coûterait moins de 100 $ et pourrait faire bien plus que simplement accéder à une porte, c'est donc ce que nous avons proposé. Un lecteur d'étiquettes rfid arduino compatible Internet. que pour 20 $ de plus peut ouvrir des portes. Ce système a été conçu pour suivre les élèves de notre lycée et nous espérons que l'école l'approuve.

Voici le prototype :

Vous pensez peut-être que cela pourrait prendre beaucoup de temps, yatta yatta yatta. Pourtant, cette chose ne m'a pris que 6 heures environ (parce que j'avais des problèmes d'alimentation), mais cela pourrait vous prendre environ 30 minutes à configurer comme dans l'exemple ci-dessus. Tout le code et les images sont ci-dessous, donc si vous êtes confus dans les prochaines étapes, allez-y et regardez les images/code inférieurs.

Voici toutes les étapes :

Avant de commencer (nécessaire)

Avant de pouvoir commencer à numériser les cartes et à les envoyer à notre serveur Telnet/TCP, nous avons besoin de quelques bibliothèques. Obtenez UIPEthernet ici https://github.com/ntruchsess/arduino_uip

obtenir MFRC522 ici https://github.com/miguelbalboa/rfid

Mettez ces deux bibliothèques dans Program Files(x86)/Arduino/Libraries/Restart arduino

Matériel

  1. Arduino Nano (vous pouvez toujours modifier votre code pour l'adapter à votre appareil)
  2. MFRC522 avec cartes MAIFARE
  3. Câbles de raccordement (mâle à mâle) (mâle à femelle)
  4. module/blindage ethernet enc28j60
  5. LED RVB
  6. Convertisseur AC-DC 3 V OU 5 V supérieur à 700 mileampères

Configuration

  1. Fixer l'arduino à la planche à pain (si nano ou micro)
  2. Recherchez en ligne le brochage de votre carte pour trouver la configuration SPI (Modifiez les valeurs ci-dessous)
  3. Connectez la broche arduino 10 (SS) au module Ethernet ss ou CS
  4. Connectez la broche arduino 12 (MISO) à rfid MISO et ethernet SO
  5. Connectez la broche arduino 11 (MOSI) à rfid MOSI et ethernet SI
  6. Connectez la broche arduino 13 (SCK) à rfid SCK et ethernet SCK
  7. Connectez la broche arduino 9 à la broche rfid RST
  8. Connectez la broche 8 de l'arduino au SSN rfid
  9. Connectez la broche arduino 5 à la led verte, 4 à la bleue et 3 à la rouge
  10. Connectez votre AC à DC aux + et - sur votre maquette
  11. Mettre votre arduino à la terre du courant alternatif au courant continu
  12. Connectez VCC et GND sur rfid et ethernet à l'ac-dc (RAPPELEZ-VOUS QUE CES APPAREILS NE SONT QUE 3V !!!!! ne fournissez pas 5v) En cas de problème, utilisez des résistances pour amener la tension à 3v
  13. Câblez la broche VCC sur la LED vers l'arduino 3v ou ac-dc 3v
  14. Connectez le câble Ethernet au module et assurez-vous qu'il se trouve sur le même réseau que votre ordinateur
  15. Branchez le câble USB de l'ordinateur à l'arduino
  16. Connecter l'ordinateur au même réseau


Modifiez le code pour l'adapter à vos besoins

  1. Le code est assez bien commenté, vous pouvez donc simplement y entrer et modifier certaines parties, mais une chose est sûre, c'est le module ehternet
  2. L'adresse Mac peut rester la même (sauf si vous prévoyez d'en créer plusieurs)
  3. Si vous utilisez un 192.168. réseau IP de base, vous pouvez garder l'ip
  4. Encore une fois, vous pouvez conserver le DNS, le seul moment pour changer est la version 8.8.4.4
  1. exécutez ipconfig pour trouver votre passerelle, la valeur par défaut est 192.168.1.1 (si vous ne la connaissez pas) (le code est actuellement 192.168.1.5)
  2. exécutez l'invite de commande et tapez ipconfig pour connaître l'adresse IP de votre ordinateur
  1. faites défiler vers le bas pour trouver ENVOYER AU SERVEUR et saisissez l'adresse IP de votre ordinateur ou si votre port a transféré votre routeur vers votre adresse IP publique
  2. ASSUREZ-VOUS D'AVOIR PYTHON ET D'EXÉCUTER LE SERVEUR (Rappelez-vous que ce n'est qu'un exemple de code que nous avons utilisé pour notre présentation à l'école, donc le serveur python était déjà prédéfini et presque pas modifié, vous pouvez utiliser n'importe quel serveur Telnet/TCP)

Et l'autre code que vous devrez probablement modifier :


Exécuter le code

  1. Branchez l'alimentation AC-DC au mur
  2. Assurez-vous que votre arduino est actuellement connecté à l'ordinateur
  3. Assurez-vous que les deux appareils sont sur le même réseau
  4. Flashez votre code arduino modifié ou si celui que j'ai fonctionne pour vous, alors super (presque aucune chance que vous deviez le modifier)
  5. Démarrez votre script Python, C++ ou tout autre serveur Telnet/TCP sur votre réseau
  6. Redémarrez votre arduino pour plus de sécurité
  7. Attendez que le voyant devienne bleu et essayez de numériser une carte, si votre serveur a obtenu l'ID de la carte, alors vous êtes prêt à partir
  8. Rappelez-vous ce que les voyants signifient Le violet/rouge pâle signifie le démarrage
  9. Le rouge signifie toute erreur telle que la carte était à un angle étrange et/ou le serveur n'a pas répondu à temps
  10. Le vert signifie passer, donc le serveur a répondu d'un coup et vous pouvez lire votre prochaine carte
  11. Le bleu signifie l'attente/le chargement en attente d'une carte ou d'une réponse
  12. Si votre arduino commence à prendre du retard et met plus de 30 secondes à s'allumer en rouge, cela signifie que le module Ethernet arduino n'a pas pu se connecter du tout au serveur. Cela peut être dû à plusieurs facteurs, d'abord votre arduino n'a pas assez de puissance et le module ethernet arduino a du mal à envoyer un paquet ou que votre serveur informatique ne fonctionne pas ou que votre arduino et votre ordinateur ne sont pas sur le même réseau.
  13. Si votre arduino continue de prendre du retard, essayez ces astuces pour les corriger

  14. Désactiver le pare-feu Windows

  15. accéder aux paramètres avancés du pare-feu et autoriser le port 23 entrant/sortant
  16. transférez le port de votre routeur vers votre ordinateur avec le port 23
  17. Si vous êtes sans fil, connectez l'arduino directement au routeur et votre ordinateur au même
  18. Achetez un adaptateur secteur AC-DC plus robuste
  19. Sinon, vous avez peut-être mal saisi votre adresse IP ou votre adresse de connexion

  20. Soit cela, contactez-moi à [email protected] s'il y a des problèmes

  21. VOUS ÊTES BON POUR PARTIR !!!

N'oubliez pas qu'il n'y a pas de code pour le système de verrouillage de porte, car je n'en ai pas, cela signifie que vous devrez ajouter un code si vous souhaitez l'utiliser non seulement comme système de suivi, mais comme système de suivi de verrouillage de porte.


Veuillez lire ci-dessous :

Code

  • Le code Arduino
  • Exemple de code de serveur
Le code ArduinoC/C++
C'est le logiciel va sur l'arduino presque prêt à partir, donc ce que vous faites est simplement d'ajuster la passerelle, l'adresse IP, la passerelle, l'adresse mac et dns
/* * ------------ ---------------------- * MFRC522 Arduino * Lecteur/PCD Nano v3 * Broche de signal * -------------- -------------------- * RST/Reset RST D9 * SPI SS NSS D10 * SPI MOSI MOSI D11 * SPI MISO MISO D12 * SPI SCK SCK D13 */// LA PREMIÈRE BIBLIOTHÈQUE QUI DOIT ÊTRE INSTALLÉE EST UIP ETHERNET LA DEUXIÈME EST MFRC522 LES DEUX SONT SUR GITHUB#include #include  //Pour la sélection de la clé#include  //Le Bibliothèque de clés RFID #define RST_PIN 9 // Configurable, voir la disposition typique des broches ci-dessus - Ceci est pour l'Arduino Nano - Pour RFID #define SS_PIN 8 // NOUS UTILISONS 8 POUR RFID CAR LE MODULE ETHERNET UTILISE 10 octets =0 ; octet blockAddr =0 ; ////////Accès à certains secteurs/blocs de la carte, le bloc de fin est le dernier octet de bloc trailerBlock =1;int red =3;int blue =4; //Broches pour RVB LEDint green =5;Client Ethernet; //INSTANCE ETHERNETMFRC522 mfrc522(SS_PIN, RST_PIN); // Créer une instance MFRC522.MFRC522::MIFARE_Key key; //Définir le délai d'attente long signé par l'instance de clé ; //TIMEOUT DONC IL NE RESTE PAS LÀ POUR TOUJOURSvoid setup(){ //UI BEGIN pinMode(red, OUTPUT); pinMode (bleu, SORTIE); //Init the RGB LED pinMode (vert, OUTPUT); Réinitialiser(); // Commencer avec les leds éteintes Serial.begin(9600); //Démarrer la connexion à l'ordinateur avec un taux de 9600 bits par seconde //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 Adresse IP mdns(8,8,8,8) ; //DNS =8.8.8.8 IPAddress mgate (192,168,1,5); // PASSERELLE =192.168.1.5 IPAddress msubnet(255,255,255,0); //SOUS-RÉSEAU =255.255.255.0 Ethernet.begin(mac, mip, mdns, mgate , msubnet); //CONNEXION EN UTILISANT CI-DESSUS Serial.println("Connexion réussie"); // FIN D'ETHERNET for(int t =255; t> 0; t--) { analogWrite(red, t); ////Plus de show mais laissez au moins une seconde entre le SPI de l'ethernet et le délai RFID (10) ; } //INITIALE RFID mfrc522.PCD_Init(); // Init MFRC522 card for (byte i =0; i <6; i++) { // Préparer la clé (utilisée à la fois comme clé A et comme clé B) key.keyByte[i] =0xFF; // en utilisant FFFFFFFFFFFFh qui est la valeur par défaut à la livraison de la puce de l'usine } Serial.println(F("Scan a Card")); dump_byte_array(key.keyByte, MFRC522::MF_KEY_SIZE); //Obtenir le délai d'attente de la taille en octets de la clé =0 ; retard (2000); Reset();}//END RFID INITIALvoid loop() //Exécuter pour toujours{ // Rechercher de nouvelles cartes if ( ! mfrc522.PICC_IsNewCardPresent()) { digitalWrite(blue, LOW); retourner; } // Sélectionnez une des cartes if ( ! mfrc522.PICC_ReadCardSerial()) return; digitalWrite (bleu, ÉLEVÉ); //Afficher à l'utilisateur que la carte a été lue octet piccType =mfrc522.PICC_GetType(mfrc522.uid.sak); // Vérifier la compatibilité avec la carte Mifare si ( piccType !=MFRC522::PICC_TYPE_MIFARE_MINI &&piccType !=MFRC522::PICC_TYPE_MIFARE_1K &&piccType !=MFRC522::PICC_TYPE_MIFARE_4K) { Erreur(); retourner; } état de l'octet ; tampon d'octets[18] ; taille d'octet =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() a échoué :")); Serial.println(mfrc522.GetStatusCodeName(statut)); Erreur(); retourner; } // Lire les données du bloc status =mfrc522.MIFARE_Read(blockAddr, buffer, &size); if (status !=MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Read() a échoué :")); Serial.println(mfrc522.GetStatusCodeName(statut)); Erreur(); } // Arrêter PICC mfrc522.PICC_HaltA(); // Arrêter le cryptage sur PCD mfrc522.PCD_StopCrypto1(); // APRÈS LA LECTURE DE LA CARTE ENVOYER AU SERVEUR if (client.connect(IPAddress(192,168,1,100),23)) { timeout =millis()+1000; Serial.println("Client connecté"); const String ID =dump_byte_array(buffer, size); client.println(ID); Serial.println("envoyé :" + ID); retard(10) ; while(client.available()==0) { if (timeout - millis() <0) goto close ; } taille entière ; while((taille =client.available())> 0) { uint8_t* msg =(uint8_t*)malloc(taille); taille =client.read(msg,taille); Serial.write(msg,taille); if(size ==sizeof("g") - 1) { Pass(); } else { Erreur(); } gratuit(msg); }fermer :client.stop(); } else { Serial.println("Impossible de se connecter au serveur"); Erreur(); } //FIN DE L'ENVOI AU SERVEUR Reset(); //REDÉMARRER LA BOUCLE SANS LED ALLUMÉE}// TRANSFORMER LE TABLEAU TAMPON EN UNE SEULE CHAÎNE EN MAJUSCULES QUI ÉGAL À NOTRE ID DU SECTEUR ET DU BLOCKString dump_byte_array(byte *buffer, byte bufferSize) { String out =""; for (byte i =0; i  
Exemple de code serveurPython
Voici un exemple complet d'utilisation du serveur
import SocketServerclass MyTCPHandler(SocketServer.BaseRequestHandler):def handle(self):# self.request est le socket TCP connecté au client self.data =self.request.recv (1024).strip() print "{} a écrit :".format(self.client_address[0]) print self.data """ SQL STUFF HERE if(self.data ==SQL NAME ou quelque chose) { self.request .sendall("g")//envoyer bon //INSÉRER L'HEURE ET L'EMPLACEMENT DANS SQL ICI { else { self.request.sendall("bb")//envoyer mauvais //NE RIEN envoyer simplement à arduino de mauvaises données } "" " self.request.sendall("g")if __name__ =="__main__":HOST, PORT ="", 23 server =SocketServer.TCPServer((HOST, PORT), MyTCPHandler) server.serve_forever()
Code mis à jour sur GitHub
Ici, vous pouvez obtenir le code le plus mis à jourhttps://github.com/smerkousdavid/InternetRFIDTags

Schémas

Le circuit est simple donc je viens de faire une photo avec le cablage

Processus de fabrication

  1. Carte de voeux
  2. Carte de crédit
  3. Verrou RFID Arduino avec RC522 - Protocole MIFARE 13,56 Mhz
  4. Tutoriel sur le verrouillage RFID Arduino
  5. Système de présence utilisant Arduino et RFID avec Python
  6. Arduino Spybot
  7. FlickMote
  8. Téléviseur maison B-Gone
  9. Lecteur de disquettes Arduino Amiga (V1)