Skocz do zawartości

JEREDEK

Użytkownicy
  • Zawartość

    11
  • Rejestracja

  • Ostatnio

Wszystko napisane przez JEREDEK

  1. @Treker Tak, funkcje blk() i blke() odpowiadają za mruganie. @Elvis Tak! O to właśnie chodziło! Dzięki wielkie! Teraz projekt jest nareszcie zakończony! IMG_1414.rar Dziękuję wam wszystkim za pomoc, w końcu projekt udał się lepiej niż się spodziewałem
  2. Witam, Zainspirował mnie pomysł ze strony: https://create.arduino.cc/projecthub/kksjunior/windows-pc-lock-unlock-using-rfid-5021a6?ref=tag&ref_id=rfid&offset=0 aczkolwiek zmieniłbym parę rzeczy. Części do projektu: -Arduino Pro Micro -Moduł RFID RC522 -Dioda LED zielona -Dioda LED czerwona -2 Rezystory 220Ohm -Rezystor 67Ohm -Rezystor 270Ohm -Buzzer (opcjonalne) -Przełącznik na 3 piny (opcjonalne) Najpierw zaprojektowałem sam układ, który wygląda o tak: Gdy wszystko było gotowe zabrałem się do podłączania do breadboard'a testującego, ponieważ zawsze dobrze jest sprawdzić obwód zanim się go przylutuje na stałe. Chciałem jednak wziąć ten projekt o krok dalej, i zaprojektowałem płytkę PCB, i zamówiłem ją na https://jlcpcb.com : Pojawił się jednak mały problem, ponieważ mam tylko arduino nano i uno, ale potrzeba mikroprocesora atmega32u4, który można znaleźć tylko w arduino MEGA i pro Micro. Wybrałem Pro Micro, ponieważ chcę, aby ten obwód był jak najmniejszy. Po podłączeniu wszystkiego, działało to bez problemu. Dla zainteresowanych, oto kod: pc.rar Teraz tylko czekam, aż moja PCB przyjedzie.
  3. Nadal nie mogę znaleźć błędu, kompiluje się dobrze . Adminie nasz, @Treker jakieś pomysły?
  4. A, tak przepraszam.gdy przyłożę kartę to dioda powinna mignąć krótko lub długo (zależy czy dobra karta) a arduino wysyła tylko hasło, odblokowując komputer.
  5. Okay, zamówiłem płytkę z JLCPCB, poczekałem miesiąc, i przyszła. Muszę powiedzieć, że jestem BARDZO zadowolony z roboty którą odwalili. Są idealnej jakości, przyszłali ich dziesięć, a zapłaciłem tylko 20 zł! (bez dostawy 6 zł!!) Płytka działa bez zarzutu, oprócz migającej diody i buzzera. To usterka w kodzie, ale nie mogę jej znaleźć. Pomożecie? #include <SPI.h> #include <MFRC522.h> #include "Keyboard.h" #define RST_PIN 9 // Configurable #define SS_PIN 10 // Configurable uint8_t successRead; // Variable integer to keep if we have Successful Read from Reader byte storedCard[4]; // Stores an ID read from EEPROM byte readCard[4]; // Stores scanned ID read from RFID Module int x = 1; String readid; MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance void setup() { Serial.begin(9600); // Initialize serial communications with the PC // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4) SPI.begin();// Init SPI bus Keyboard.begin(); pinMode(2, OUTPUT); mfrc522.PCD_Init(); // Init MFRC522 mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD - MFRC522 Card Reader details Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks...")); } 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() { successRead = getID(); if (successRead == 1) { temp(mfrc522.uid.uidByte, mfrc522.uid.size); if (readid == "6a6b1f7") { if (x == 1) { Keyboard.press(KEY_ESC); delay(100); Keyboard.releaseAll(); delay(500); Keyboard.print("8659"); Serial.print(readid); blk; x = 2; return; } if (x == 2){ Keyboard.press(KEY_LEFT_GUI); Keyboard.press('l'); delay(100); Keyboard.releaseAll(); x = 1; return; } } successRead = 0; } else { blke; } } ///////////////////////////////////////// Get PICC's UID /////////////////////////////////// uint8_t getID() { // Getting ready for Reading PICCs if ( ! mfrc522.PICC_IsNewCardPresent()) { //If a new PICC placed to RFID reader continue return 0; } if ( ! mfrc522.PICC_ReadCardSerial()) { //Since a PICC placed get Serial and continue return 0; } // There are Mifare PICCs which have 4 byte or 7 byte UID care if you use 7 byte PICC // I think we should assume every PICC as they have 4 byte UID // Until we support 7 byte PICCs //Serial.println(F("Scanned PICC's UID:")); for ( uint8_t i = 0; i < 4; i++) { // readCard[i] = mfrc522.uid.uidByte[i]; Serial.print(readCard[i], HEX); } Serial.println(""); mfrc522.PICC_HaltA(); // Stop reading return 1; } uint8_t blk() { digitalWrite(2, HIGH); delay(200); digitalWrite(2, LOW); } uint8_t blke() { digitalWrite(2, HIGH); delay(1000); digitalWrite(2, LOW); }
  6. Okay, miałem problem, ponieważ okazało się, że powódem dla którego moje Arduino wysyłało 4V, było poluzowanie portu MicroUSB, które odpadło. Po zamówienie nowych, wysyłało one 4.78 V, więc podjechałem do Poznania, i kupiłem regulator 3.3V (LM2950 33 716), po podłączeniu wszystkiego na BreadBoardzie działało, więc zaprojektowałem nową płykę i ja zamówiłem. Za miesiąc powinna przyjść (Bo z chin). W starym kodzie był glitch gdzie jak się zablokowało komputer, to od razu wpisywał hasło, ale Windows nie zdążył się jeszcze zalogować. Oto nowy kod: #include <SPI.h> #include <MFRC522.h> #include "Keyboard.h" #define RST_PIN 9 // Configurable #define SS_PIN 10 // Configurable uint8_t successRead; // Variable integer to keep if we have Successful Read from Reader byte storedCard[4]; // Stores an ID read from EEPROM byte readCard[4]; // Stores scanned ID read from RFID Module int x = 1; String readid; MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance void setup() { Serial.begin(9600); // Initialize serial communications with the PC // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4) SPI.begin();// Init SPI bus Keyboard.begin(); mfrc522.PCD_Init(); // Init MFRC522 mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD - MFRC522 Card Reader details Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks...")); } 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() { successRead = getID(); if (successRead == 1) { temp(mfrc522.uid.uidByte, mfrc522.uid.size); if (readid == "6a6b1f7") { if (x == 1) { Keyboard.press(KEY_ESC); delay(100); Keyboard.releaseAll(); delay(500); Keyboard.print("8659"); Serial.print(readid); blk; x = 2; return; } if (x == 2){ Keyboard.press(KEY_LEFT_GUI); Keyboard.press('l'); delay(100); Keyboard.releaseAll(); x = 1; return; } } successRead = 0; } else { blke; } } ///////////////////////////////////////// Get PICC's UID /////////////////////////////////// uint8_t getID() { // Getting ready for Reading PICCs if ( ! mfrc522.PICC_IsNewCardPresent()) { //If a new PICC placed to RFID reader continue return 0; } if ( ! mfrc522.PICC_ReadCardSerial()) { //Since a PICC placed get Serial and continue return 0; } // There are Mifare PICCs which have 4 byte or 7 byte UID care if you use 7 byte PICC // I think we should assume every PICC as they have 4 byte UID // Until we support 7 byte PICCs //Serial.println(F("Scanned PICC's UID:")); for ( uint8_t i = 0; i < 4; i++) { // readCard[i] = mfrc522.uid.uidByte[i]; Serial.print(readCard[i], HEX); } Serial.println(""); mfrc522.PICC_HaltA(); // Stop reading return 1; } uint8_t blk() { digitalWrite(6, HIGH); delay(200); digitalWrite(6, LOW); } uint8_t blke() { digitalWrite(6, HIGH); delay(1000); digitalWrite(6, LOW); }
  7. Mój amperomierz nie wiem czemu odmawia posłuszeństwa, ale mój zasilacz przy napięciu 3.3V rejestruje przepływ prądu o wartości 0.01A bez karty i 0.02A kiedy przyłożę kartę do odczytania. UPDATE: Nie znam się na miernikach, ale chyba płynie tam 0.7 mikro Ampera. Datasheet potwierdza:
  8. Natrafiłem na problem z Arduino Pro micro. Na moim breadboardzie użyłem dzielnika napięcia z rezystorem 68R i 156R, ale gdy zmierzyłem, leciało napięcie 2.9V zamiast 3.3V, Oto rozwiązanie: Użyłem wzoru Vo = Vin*(R2/R1+R2) = 5*(156/68+156) = 3.4 Natomiast po zmierzeniu napięcia wejściowego, nie było to 5V ale 4V. Mam problem z moją płytką, więc użyłem innego wzoru Vo = Vin*(R2/R1+R2) = 4*(330/68/330) = 3,3 Natomiast chciałem też oddać parę płytek znajomym, więc postanowiłem zamiast dzielnika napięcia zastosować regulator 3.3V: Holtek Semicon HT7533-1 , w pakiecie TO-92. Zmieniłem też lekko kod, oto on: #include <SPI.h> #include <MFRC522.h> #include "Keyboard.h" #define RST_PIN 9 // Configurable, see typical pin layout above #define SS_PIN 10 // Configurable, see typical pin layout above uint8_t successRead; // Variable integer to keep if we have Successful Read from Reader byte storedCard[4]; // Stores an ID read from EEPROM byte readCard[4]; // Stores scanned ID read from RFID Module int x = 1; String readid; MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance void setup() { Serial.begin(9600); // Initialize serial communications with the PC // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4) SPI.begin();// Init SPI bus Keyboard.begin(); mfrc522.PCD_Init(); // Init MFRC522 mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD - MFRC522 Card Reader details Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks...")); } 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() { successRead = getID(); if (successRead == 1) { temp(mfrc522.uid.uidByte, mfrc522.uid.size); if (readid == "6a6b1f7") // Card ID here { if (x == 1) { Keyboard.press(KEY_ESC); delay(100); Keyboard.releaseAll(); delay(500); Keyboard.print("1234"); // Your Password Here Serial.print(readid); x = 2; } if (x == 2){ Keyboard.press(KEY_LEFT_GUI); Keyboard.press('l'); delay(100); Keyboard.releaseAll(); x = 1 } } successRead = 0; } } ///////////////////////////////////////// Get PICC's UID /////////////////////////////////// uint8_t getID() { // Getting ready for Reading PICCs if ( ! mfrc522.PICC_IsNewCardPresent()) { //If a new PICC placed to RFID reader continue return 0; } if ( ! mfrc522.PICC_ReadCardSerial()) { //Since a PICC placed get Serial and continue return 0; } // There are Mifare PICCs which have 4 byte or 7 byte UID care if you use 7 byte PICC // I think we should assume every PICC as they have 4 byte UID // Until we support 7 byte PICCs //Serial.println(F("Scanned PICC's UID:")); for ( uint8_t i = 0; i < 4; i++) { // readCard[i] = mfrc522.uid.uidByte[i]; Serial.print(readCard[i], HEX); } Serial.println(""); mfrc522.PICC_HaltA(); // Stop reading return 1; } Martwię się o temperaturę, więc chciałbym się was spytać: Czy mogę zastosować takie rozwiązanie?
×