#
AcceRFID
Dernière modification : 2017/11/28 12:45
Accueil
/
Changements récents
Éditer (
Aide
) /
Historique
!Cactus Micro Rev2 + module RC522 (lecteur RFID) !!Un contrôle d'accès au PC pour 15€ j'ai acheté en 2016 chez AprilBrother (pour 11$ + frais de port) une carte compatible arduino nommée Cactus Micro Rev2. Fin 2017, en cherchant une solution pour bloquer/débloquer le PC familial à l'aide d'une carte rfid ou jeton/token, je suis tombé sur un projet très simple à mettre en oeuvre. [Windows PC Lock/Unlock Using RFID|https://create.arduino.cc/projecthub/kksjunior/windows-pc-lock-unlock-using-rfid-5021a6] © CC BY-NC-SA !!!Le projet nécessite : - un lecteur RFID-RC522 (coûtant ~ 5€) [http://teciel.free.fr/images/module-mifare-rfid-rc522.jpg] - un microcontrôleur compatible Arduino permettant l'émulation clavier (Arduino Leonardo, clones et cartes avec microcontrôleur ATMEGA32U4) [http://teciel.free.fr/images/cactus-micro-rev2-compatible-arduino-avec-esp8266-2.jpg] J'ai donc choisi le Cactus Micro Rev2, celui-ci intègrant : - un module ESP8266 WIFI (ESP-03) - un microcontrôleur ATMEGA32U4 3.3V/8MHz - un connecteur micro-USB - 4 x 10-bit ADC pins - 12 x E/S numériques (dont 5 PWM capable) - Connexions série Rx/Tx !!!Le script {{ #include <Keyboard.h> #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 5 #define KEY_RETURN 0xB0 //The hex value for the return key is 0xB0. MFRC522 mfrc522 ( SS_PIN, RST_PIN ) ; char Enter = KEY_RETURN; //Return key is declared as Enter. String readid; String card1="48b45a10"; //Change this value to the UID of your card. void setup( ) { Serial.begin(9600); Keyboard.begin(); SPI.begin(); mfrc522.PCD_Init(); } void temp(byte *buffer, byte bufferSize)//function to store card uid as a string datatype. { readid=""; for(byte i = 0;i<bufferSize; i++) { readid=readid+String(buffer[i], HEX); } } void loop( ) { if(!mfrc522.PICC_IsNewCardPresent()) { return; } if(!mfrc522.PICC_ReadCardSerial()) { return; } mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); // Display card details in serial Monitor. temp(mfrc522.uid.uidByte, mfrc522.uid.size); if(readid==card1) { Keyboard.press(KEY_LEFT_GUI); //Press the left windows key. Keyboard.press('l'); //Press the "l" key. Keyboard.releaseAll(); //Release all keys. delay (100); Keyboard.press(Enter); //Press the Enter key. Keyboard.release(Enter); //Release the Enter key. delay(100); Keyboard.print("PASSWORD"); // Change this value to your Windows PIN/Password. Keyboard.releaseAll(); delay(100); Keyboard.press(Enter); Keyboard.releaseAll(); } else { return; } } }} Le même en + propre : {{#include <Keyboard.h> #include <SPI.h> #include <MFRC522.h> #define KEY_RETURN 0xB0 MFRC522 mfrc522(2, 10); //(SSpin,RSTpin) char Enter = KEY_RETURN; String readid; String card1 = "CARDID"; void setup( ) { Serial.begin(9600); Keyboard.begin(); SPI.begin(); mfrc522.PCD_Init(); } void temp(byte *buffer, byte bufferSize) { readid = ""; for (byte i = 0; i < bufferSize; i++) { readid = readid + String(buffer[i], HEX); } } void loop( ) { if (!mfrc522.PICC_IsNewCardPresent()) { return; } if (!mfrc522.PICC_ReadCardSerial()) { return; } mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); temp(mfrc522.uid.uidByte, mfrc522.uid.size); if (readid == card1) { Keyboard.press(KEY_LEFT_GUI); Keyboard.press('l'); Keyboard.releaseAll(); delay (100); Keyboard.print("PASSWORD"); Keyboard.releaseAll(); delay(100); Keyboard.press(Enter); Keyboard.releaseAll(); } else { return; } delay(5000); }}} [http://teciel.free.fr/images/cactus-pinouts-txt.jpg] !!!Connexion du module RFID-RC522 le module RFID-RC522 possède 8 broches d'E/S [http://teciel.free.fr/images/RC522-RFID-Module-pineout.jpg] Il faut donc faire correspondre les broches du RC522 et celles de la carte Cactus r2 {{[RC522] [Cacus r2] SDA |----| D2 - SDA SCK |----| D15 - SCKL MOSI |----| D16 - MOSI MISO |----| D14 - MISO IRQ non utilisé GND |----| GND RST |----| RST VCC |----| VCC}} Ajoutons ensuite un sonar qui détecte l'absence afin de locker la session {{ #include <NewPing.h> #define TRIGGER_PIN 9 #define ECHO_PIN 10 #define MAX_DISTANCE 200 NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance. void setup() { Serial.begin(9600); // Open serial monitor at 115200 baud to see ping results. } void loop() { delay(30); unsigned int pingTime = sonar.ping(); Serial.print("Ping: "); Serial.print(pingTime / US_ROUNDTRIP_CM); Serial.println(" cm"); }}}
Mot de passe :
Wiki utilisant
WiKiss 0.3
2024/04/30 01:42 -- 3.16.212.99
Éditer (
Aide
) /
Historique