I have created two files and they both works. When I apply the one with GSM RTC, and SD moudle doesn't work, while when I try the one without GSM they both work fine. Here is the code with GSM and I will post the one without gsm in the next reply. I removed the function because the comment is more than 9000 char.
With GSM
#include <GSM.h>
#define PINNUMBER ""
GSM gsmAccess;
GSM_SMS sms;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#include <MFRC522.h> // for the RFID
#include <SPI.h> // for the RFID and SD card module
#include <SD.h> // for the SD card
#include <RTClib.h> // for the RTC
// define pins for RFID
#define CS_RFID 53
#define RST_RFID 5
// define select pin for SD card module
#define CS_SD 4
// Create a file to store the data
File myFile;
// Instance of the class for RFID
MFRC522 rfid(CS_RFID, RST_RFID);
// Variable to hold the tag's UID
String Student;
// Instance of the class for RTC
RTC_DS1307 rtc;
// Define check in time
const int checkInHour = 01;
const int checkInMinute = 00;
//Variable to hold user check in
int userCheckInHour;
int userCheckInMinute;
// Pins for LEDs and buzzer
const int redLED = 8;
const int greenLED = 6;
const int buzzer = 23;
void setup() {
lcd.init(); // initialize the lcd
lcd.backlight();
// Set LEDs and buzzer as outputs
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(buzzer, OUTPUT);
// Init Serial port
Serial.begin(9600);
while(!Serial); // for Leonardo/Micro/Zero
Serial.println("SMS Messages Sender");
// connection state
boolean notConnected = true;
// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while (notConnected) {
if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
notConnected = false;
} else {
Serial.println("Not connected");
lcd.print("GSM not Connected");
delay(1000);
}
}
Serial.println("GSM initialized");
lcd.print("GSM Ready");
delay(1000);
lcd.clear();
// Init SPI bus
SPI.begin();
// Init MFRC522
rfid.PCD_Init();
// Setup for the SD card
Serial.print("Initializing SD card...");
lcd.print("Initializing ");
lcd.setCursor(0, 1);
lcd.print("SD card...");
delay(3000);
lcd.clear();
if(!SD.begin(CS_SD)) {
Serial.println("initialization failed!");
lcd.print("Initializing ");
lcd.setCursor(0, 1);
lcd.print("failed!");
return;
}
Serial.println("initialization done.");
Serial.println("SMS Messages Sender");
delay(200);
lcd.print("Please Swipe ID ");
// Setup for the RTC
if(!rtc.begin()) {
Serial.println("Couldn't find RTC");
lcd.clear();
lcd.print("Couldn't find RTC");
while(1);
}
else {
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(DATE), F(TIME)));
}
if(!rtc.isrunning()) {
Serial.println("RTC is NOT running!");
lcd.clear();
lcd.print("RTC Not Running!");
}
}
void loop() {
//look for new cards
MFRC522::MIFARE_Key key;
for (byte i = 0; i < 6; i++) {
key.keyByte = 0xFF;
- }*
- // Look for new cards*
- if ( ! rfid.PICC_IsNewCardPresent()) {*
- return;*
- }*
- // Select one of the cards*
- if ( ! rfid.PICC_ReadCardSerial()) {*
- return;*
- }*
- readRFID();*
delay(10);
}
void readRFID() {
lcd.clear();
Serial.print("Card UID:");
- for (byte i = 0; i < rfid.uid.size; i++) {*
_ // Serial.print(mfrc522.uid.uidByte < 0x10 ? " 0" : " ");_
_ // Serial.print(mfrc522.uid.uidByte*, DEC);
}
Serial.println();
// Dump PICC type*
* byte piccType = rfid.PICC_GetType(rfid.uid.sak);*
* // Serial.print("PICC type: ");_
//Serial.println(mfrc522.PICC_GetTypeName(piccType));
if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI*
* && piccType != MFRC522::PICC_TYPE_MIFARE_1K*
* && piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
_ //Serial.println("This sample only works with MIFARE Classic cards.");
return;
}
// defining Cards here*
* // student1 59 98 E3 2A*
* if( (rfid.uid.uidByte[0] == 0x59) && (rfid.uid.uidByte[1] == 0x98) && (rfid.uid.uidByte[2] == 0xE3) && (rfid.uid.uidByte[3] == 0x2A) ) // student1 card*
* {
tone(buzzer, 2000);
delay(200);
noTone(buzzer);
delay(200);
lcd.clear();
lcd.print("Attended");
delay(1000);
lcd.clear();
lcd.print("Welcome Ahmed");
Serial.println("Ahmed");
delay(1000);
Student= "Ahmed";
// for gsm
sms.beginSMS("+966568123988");
sms.print("Ahmed Attended");
sms.endSMS();
logCard();
verifyCheckIn();
delay(1000);
lcd.clear();
lcd.print("Message sent");
delay(2000);*_
* lcd.clear();*
* lcd.print("Swipe Your ID");*
* return;*
* }*
* // student29 A2 14 A4*
* if( (rfid.uid.uidByte[0] == 0x29) && (rfid.uid.uidByte[1] == 0xA2) && (rfid.uid.uidByte[2] == 0x14) && (rfid.uid.uidByte[3] == 0xA4) ) // student2 card*
* {*
* tone(buzzer, 2000);*
*delay(200); *
noTone(buzzer);
* lcd.clear();*
* lcd.print("Attended");*
* delay(1000);*
* lcd.clear();*
* lcd.print("Welcome Khaled");*
* Serial.println("Khaled");*
* delay(1000);*
* Student= "Khaled";*
* // for gsm *
* sms.beginSMS("+966568123988");*
sms.print("Ahmed Attended");
sms.endSMS();
* logCard();*
* verifyCheckIn();*
* delay(1000);*
* lcd.clear();*
* lcd.print("Message sent");*
* delay(2000);*
* lcd.clear();*
* lcd.print("Swipe Your ID");*
* return;*
* }*
* if( (rfid.uid.uidByte[0] == 0xE9) && (rfid.uid.uidByte[1] == 0x56) && (rfid.uid.uidByte[2] == 0x57) && (rfid.uid.uidByte[3] == 0xA2) ) // student1 card*
* {*
* tone(buzzer, 2000);*
*delay(200); *
noTone(buzzer);
* lcd.clear();*
* lcd.print("Attended");*
* delay(1000);*
* lcd.clear();*
* lcd.print("Welcome Omar");*
* Serial.println("Omar");*
* delay(1000);*
* Student= "Omar";*
* // for gsm *
* sms.beginSMS("+966568123988");*
sms.print("Ahmed Attended");
sms.endSMS();
* logCard();*
* verifyCheckIn();*
* delay(1000);*
* lcd.clear();*
* lcd.print("Message sent");*
* delay(2000);*
* lcd.clear();*
* lcd.print("Swipe Your ID");*
* return;*
* }*
* if( (rfid.uid.uidByte[0] == 0x69) && (rfid.uid.uidByte[1] == 0x5A) && (rfid.uid.uidByte[2] == 0x04) && (rfid.uid.uidByte[3] == 0xA4) ) // student1 card*
* {*
* tone(buzzer, 2000);*
*delay(200); *
noTone(buzzer);
* lcd.clear();*
* lcd.print("Attended");*
* delay(1000);*
* lcd.clear();*
* lcd.print("Welcome Fahad");*
* Serial.println("Fahad");*
* delay(1000);*
* Student= "Fahad";*
* // for gsm *
* sms.beginSMS("+966568123988");*
sms.print("Ahmed Attended");
sms.endSMS();
* logCard();*
* verifyCheckIn();*
* delay(1000);*
* lcd.clear();*
* lcd.print("Message sent");*
* delay(2000);*
* lcd.clear();*
* lcd.print("Swipe Your ID");*
* return;*
* }*
* if( (rfid.uid.uidByte[0] == 0xD9) && (rfid.uid.uidByte[1] == 0x30) && (rfid.uid.uidByte[2] == 0x04) && (rfid.uid.uidByte[3] == 0xA4) ) // student1 card*
* {*
* tone(buzzer, 2000);*
*delay(200); *
noTone(buzzer);
* lcd.clear();*
* lcd.print("Attended");*
* delay(1000);*
* lcd.clear();*
* lcd.print("Welcome Saleh");*
* Serial.println("Saleh");*
* delay(1000);*
* Student= "Saleh";*
* // for gsm *
* sms.beginSMS("+966568123988");*
sms.print("Ahmed Attended");
sms.endSMS();
* logCard();*
* verifyCheckIn();*
* delay(1000);*
* lcd.clear();*
* lcd.print("Message sent");*
* delay(2000);*
* lcd.clear();*
* lcd.print("Swipe Your ID");*
* return;*
* }*
* else *
* Serial.println("unregistered user");*
tone(buzzer, 2000);
*delay(200); *
noTone(buzzer);
lcd.print("Wrong class");
delay(2000);
lcd.clear();
lcd.print("Swipe your ID");
// Sound the buzzer when a card is read
delay(200);
}