//POPESCU ARMAND GABRIEL PROIECT BOSS DE BOSS SA MOARA FRA #include #include #include #include #include #include //Modulul microSD #define SD_PIN 10 File __log; int rss = 0; //MODUL RFID #define RFID_SS_PIN 6 #define RFID_RST_PIN 7 MFRC522 rfid(RFID_SS_PIN, RFID_RST_PIN); // Instance of the class int accesUID[] = {99, 172, 255, 3}; //This is the stored UID MFRC522::MIFARE_Key key; //cheie boss ca nu citeste cardu o sa vezi mai jos #define SERVO_PIN 3 #define SERVO_CLOSE 255 #define SERVO_OPEN 0 Servo servo; LiquidCrystal_I2C lcd(0x27, 20, 4); //Si LCD nebunule cum fara afisaj? 4 Linii 20 caractere, nebunie la addr 0x27 bool lockState = false; int timeStamp = 0; void setup() { //SERVO SETUP servo.attach(SERVO_PIN); Serial.begin(9600); while (!Serial) { ; } //LCD SETUP lcd.begin(); lcd.backlight(); //SD if(!SD.begin()){ lcd.clear(); lcd.print("SD init FAILED"); } else { lcd.clear(); lcd.print("SD init SUCCES"); __log = SD.open("acces_0.txt", FILE_WRITE); if(__log) { __log.seek(0); rss = __log.write("TEST 01\n"); lcd.setCursor(0, 1); lcd.print("FILE init SUCCES"); } else { lcd.setCursor(0, 1); lcd.print("FILE init FAILED"); } } __log.seek(0); if(__log) { lcd.setCursor(0, 2); lcd.print(__log.name()); lcd.setCursor(0, 3); Serial.println(__log.size()); while(__log.available()) { Serial.write(__log.read()); } __log.close(); } SPI.end(); //RFID SETUP SPI.setClockDivider(SPI_CLOCK_DIV8); SPI.begin(); rfid.PCD_Init(); // Init MFRC522 rfid.PCD_DumpVersionToSerial(); //COMENTAT, OPTIONAL for (byte i = 0; i < 6; i++) { key.keyByte[i] = 0xFF; } Serial.print(F("Using key (for A and B):")); printDec(key.keyByte, MFRC522::MF_KEY_SIZE); Serial.println(); //PANA AICI } void loop() { if (millis() - timeStamp >= 1500) { if(rfid.PICC_IsNewCardPresent()) readRFID(); timeStamp = millis(); } if(Serial.available()) readBluetooth(); } void readBluetooth() { String bluetooth_recv = Serial.readStringUntil('\n'); if (bluetooth_recv == "open") { lockState = true; //Sa deschizi lacatul lcd.clear(); lcd.print("REMOTE COMMAND"); lcd.setCursor(0, 2); lcd.print("DOOR OPEN"); servo.write(SERVO_OPEN); } else if (bluetooth_recv == "close") { lockState = false; lcd.clear(); lcd.print("REMOTE COMMAND"); lcd.setCursor(0, 2); lcd.print("DOOR CLOSED"); servo.write(SERVO_CLOSE); } } void readRFID() { rfid.PICC_ReadCardSerial(); Serial.print(F("\nPICC type: ")); MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); Serial.println(rfid.PICC_GetTypeName(piccType)); // Check is the PICC of Classic MIFARE type if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) { Serial.println(F("Your tag is not of type MIFARE Classic.")); return; } Serial.println("Scanned PICC's UID:"); printDec(rfid.uid.uidByte, rfid.uid.size); checkAcces(rfid); // Halt PICC rfid.PICC_HaltA(); // Stop encryption on PCD rfid.PCD_StopCrypto1(); } void checkAcces(MFRC522 rfid){ int i = 0; boolean match = true; while(i