Rancang Bangun Sistem Absensi yang Terintegrasi Dengan Website Melalui Teknologi General Packet Radio Service

LAMPIRAN A

Sintaks Program Sistem Absensi

#include "SIM900.h"
#include
#include "inetGSM.h"
#include
#include
#include
#include
#include
#include "RTClib.h"
#include "sms.h"
SMSGSM sms;

#if defined(ARDUINO_ARCH_SAMD) // for Zero, output on USB Serial console
#define Serial SerialUSB
#endif

#define RST_PIN A11

#define SS_PIN 53
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance
RTC_DS1307 rtc;
File myFile;
InetGSM inet;
class PubnubPublisher {
protected:
InetGSM inet;
char msg[50];

Universitas Sumatera Utara

int numdata;
char inSerial[50];
boolean started;
char publishKey[43];
char subscribeKey[43];
char channelName[20];
public:
PubnubPublisher(char* publishKey, char* subscribeKey, char* channelName)

{
started=false;
strcpy(this->publishKey, publishKey);
strcpy(this->subscribeKey, subscribeKey);
strcpy(this->channelName, channelName);
}
void setup() {
Serial.begin(9600);
Serial.println("Pubnub Publisher.");
if (gsm.begin(4800)){
Serial.println("\nstatus=READY");
started=true;
}
else Serial.println("\nstatus=IDLE");
if(started){
if (inet.attachGPRS("internet.wind", "", ""))
Serial.println("status=ATTACHED");
else Serial.println("status=ERROR");
delay(1000);
gsm.SimpleWriteln("AT+CIFSR");//Read IP address.

delay(5000);
gsm.WhileSimpleRead();//Read until serial buffer is empty.

Universitas Sumatera Utara

}
};
void publish(char* message) {
char publishUri[109+50+1];
sprintf(publishUri, "/publish/%s/%s/0/%s/0/%s", publishKey, subscribeKey,
channelName, message);
numdata=inet.httpGET("pubsub.pubnub.com", 80, publishUri, msg, 50);
Serial.println("\nNumber of data received:");

//Print the results.

Serial.println(numdata);
//Serial.println("\nData received:");
//Serial.println(msg);
};

};
PubnubPublisher* pubnubPublisher = new PubnubPublisher("pub-c-9f184179-43244315-9376-6a6cef5e95ff", "sub-c-4481b53c-0fab-11e6-996b-0619f8945a4f",
"absen");
const int chipSelectSD = 36; int cards, user_id,i;
int detect = 0, stat = 0;
boolean started=false;
char* nims[]={"120402001", "120402002", "120402003",
"120402004", "120402005","120402006","120402007","120402008",
"120402009","120402010","120402011","120402012","120402013",
"120402014","120402015","120402016","120402017","120402018",
"120402019","120402020","120402021","120402022","120402023",
"120402024","120402025"};
int smsStatus[] = {0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0,0, 0, 0, 0, 0,};

void Name(int user) {
switch(user){
case 1:

Universitas Sumatera Utara


Serial.println(F("Antan Wisuga"));
myFile.println("\tAntan Wisuga");
smsStatus[0]=1;i=0; publikasi();break;
case 2:
Serial.println(F("Bambang Dian"));
myFile.println("\tBambang Dian");
smsStatus[1]=1;i=1; publikasi(); break;
case 3:
Serial.println(F("Coko Fahriansyah"));
myFile.println("\tCoko Fahriansyah");
smsStatus[2]=1;i=2; publikasi();break;
case 4:
Serial.println(F("Dodi Purmadani"));
myFile.println("\tDodi Purmadani");
smsStatus[3]=1;i=3; publikasi();break;
case 5:
Serial.println(F("Ezzy Silmi"));
myFile.println("\tEzzy Silmi");
smsStatus[4]=1;i=4;publikasi();break;
case 6:

Serial.println(F("Fadhlan Ariska"));
myFile.println("\tFadhlan Ariska");
smsStatus[5]=1;i=5; publikasi();break;
case 7:
Serial.println(F("Gading Aziddin"));
myFile.println("\tGading Aziddin");
smsStatus[6]=1;i=6;publikasi();break;
case 8:
Serial.println(F("Habib Zakaria"));
myFile.println("\tHabib Zakaria");

Universitas Sumatera Utara

smsStatus[7]=1;i=7; publikasi();break;
case 9:
Serial.println(F("Ifan Paklan"));
myFile.println("\tIfan Paklan");
smsStatus[8]=1;i=8; publikasi();break;
case 10:
Serial.println(F("Junaidy Siregar"));

myFile.println("\tJunaidy Siregar");
smsStatus[9]=1;i=9;publikasi();break;
case 11:
Serial.println(F("Kennedy Ginting"));
myFile.println("\tKennedy Ginting");
smsStatus[10]=1;i=10; publikasi();break;
case 12:
Serial.println(F("Lisa Umar"));
myFile.println("\tLisa Umar");
smsStatus[11]=1;i=11; publikasi();break;
case 13:
Serial.println(F("Mahatir Muhammad"));
myFile.println("\tMahatir Muhammad");
smsStatus[12]=1;i=12; publikasi();break;
case 14:
Serial.println(F("Nur Iqbal"));
myFile.println("\tNur Iqbal");
smsStatus[13]=1;i=13; publikasi();break;
case 15:
Serial.println(F("Oyen Ginting"));

myFile.println("\tOyen Ginting");
smsStatus[14]=1; i=14; publikasi();break;
case 16:

Universitas Sumatera Utara

Serial.println(F("Piliang Arif"));
myFile.println("\tPiliang Arif");
smsStatus[15]=1;i=15; publikasi();break;
case 17:
Serial.println(F("Quaresma"));
myFile.println("\tQuaresma");
smsStatus[16]=1;i=16; publikasi();break;
case 18:
Serial.println(F("Royansyah Ginting"));
myFile.println("\tRoyansyah Ginting");
smsStatus[17]=1;i=17; publikasi();break;
case 19:
Serial.println(F("Sudarmin Pasaribu"));
myFile.println("\tSudarmin Pasaribu");

smsStatus[18]=1;i=18; publikasi();break;
case 20:
Serial.println(F("Taufik Ginting"));
myFile.println("\tTaufik Ginting");
smsStatus[19]=1;i=19; publikasi();break;
case 21:
Serial.println(F("Umar Tarigan"));
myFile.println("\tUmar Tarigan");
smsStatus[20]=1;i=20; publikasi();break;
case 22:
Serial.println(F("Vania Sitepu"));
myFile.println("\tVania Sitepu");
smsStatus[21]=1;i=21; publikasi();break;
case 23:
Serial.println(F("Wahyu Nugraha"));
myFile.println("\tWahyu Nugraha");

Universitas Sumatera Utara

smsStatus[22]=1;i=22; publikasi();break;

case 24:
Serial.println(F("Xenia Peranginangin"));
myFile.println("\tXenia Peranginangin");
smsStatus[23]=1;i=23; publikasi();break;
case 25:
Serial.println(F("Yudha Al-Hakim"));
myFile.println("\tYudha Al-Hakim");
smsStatus[24]=1; i=24;publikasi();break;
}
}
void setup() {a
pubnubPublisher->setup();
SPI.begin();
Wire.begin();
rtc.begin();

// Init SPI bus
// Init I2C communication
// Init RTC Module


mfrc522.PCD_Init(); // Init MFRC522 RFID
Serial.begin(9600); //
if (! rtc.isrunning()) {
Serial.println(F("RTC NOT Run!"));
}
if (!SD.begin(chipSelectSD)) {
Serial.println(F("Card Failed!"));
return;
}
if (gsm.begin(4800)) {
Serial.println(F("\nstatus=READY"));
gsm.forceON();
started=true;
} else Serial.println(F("\nstatus=IDLE"));

Universitas Sumatera Utara

if(started) {
if (inet.attachGPRS("", "", ""))
Serial.println(F("status=ATTACHED"));
else Serial.println(F("status=ERROR"));
delay(1000);
gsm.SimpleWriteln("AT+CIFSR");/** Read IP address. */
delay(5000);
}
Serial.println(F("NON-ACTIVE !"));
};

void loop() {
DateTime now = rtc.now();
if(stat==1)
{
EEPROM.write(300, 30);
baca();
user_id = EEPROM.read(300);
if(user_id==26) {
myFile = SD.open("test.txt", FILE_WRITE);
if (myFile) {
myFile.print(now.hour(), DEC); myFile.print(':');
myFile.print(now.minute(), DEC); myFile.print(':');
myFile.print(now.second(), DEC);
myFile.println("\tNon-Active");
Serial.println(F("Non-ACTIVE !"));
myFile.close();
}
else{

Universitas Sumatera Utara

Serial.print(F("Error File"));// if the file didn't open, print an error:
}
CekSMS(); stat = 0;
}
if(user_id!=30){
cetakID();
}
}
else{
EEPROM.write(300, 30);
baca();
user_id = EEPROM.read(300);
if(user_id==26){
if (stat==0){
myFile = SD.open("test.txt", FILE_WRITE);
if (myFile){
myFile.print(now.hour(), DEC);myFile.print(':');
myFile.print(now.minute(), DEC);myFile.print(':');
myFile.print(now.second(), DEC);
myFile.println("\tActive");
myFile.close();
Serial.println(F("ACTIVE !"));
Serial.println(F("Tag Your Card"));
}
else{
Serial.print(F("Error File"));// if the file didn't open, print an error:
}
stat=1;
}
}

Universitas Sumatera Utara

}
delay(500);
};
void cetakID(){
DateTime now = rtc.now();
if(user_id==0){
Serial.println(F("Unknown UID"));
}
else{
myFile = SD.open("test.txt", FILE_WRITE);
if (myFile)
{
myFile.print(now.hour(), DEC);myFile.print(':');
myFile.print(now.minute(), DEC);myFile.print(':');
myFile.print(now.second(), DEC);
Serial.println(F("Thank You"));
Name(user_id);
myFile.close();
}
else {
Serial.print(F("Error File")); // if the file didn't open, print an error:
}
delay(500);
}
}
void baca(){
if ( ! mfrc522.PICC_IsNewCardPresent()) {return;}
if ( ! mfrc522.PICC_ReadCardSerial()) {return;}
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}

Universitas Sumatera Utara

void CekSMS(){
char pesan[100];
for (int i = 0; i < 25; i++){
if (smsStatus[i]==0){
sprintf(pesan, "Anak anda dengan nim %s, hari ini tidak hadir", nims[i]);
if (sms.SendSMS("+628979213454", pesan))
Serial.println("\nSMS sent OK");
delay(2000);
}
}
}
void publikasi(){
char message[30];
sprintf(message, "{\"text\":\"%d hadir\"}", nims[i]);
pubnubPublisher->publish(message);
delay(5000);
}

Universitas Sumatera Utara

LAMPIRAN B
Tabel Hasil Pengujian 30 byte
Echo
Reply

Time Out 1 detik

Time Out 5 detik

Time Out 10 detik

Delay

TTL

Delay

TTL

Delay

TTL

1

600

255

16

55

15

55

2

600

255

10

55

9

55

3

600

255

8

55

7

55

4

7

55

8

55

8

55

5

7

55

8

55

7

55

6

7

55

8

55

7

55

7

8

55

8

55

8

55

8

8

55

8

55

7

55

9

7

55

8

55

7

55

10

8

55

8

55

8

55

Tabel Hasil Pengujian 150 byte
Echo
Reply

Time Out 1 detik

Time Out 5 detik

Time Out 10 detik

Delay

TTL

Delay

TTL

Delay

TTL

1

600

255

15

55

15

255

2

600

255

15

55

10

255

3

600

255

8

55

8

255

4

8

55

8

55

8

55

5

8

55

8

55

8

55

6

8

55

8

55

8

55

7

8

55

8

55

8

55

8

8

55

8

55

8

55

9

8

55

8

55

8

55

10

8

55

8

55

8

55

Universitas Sumatera Utara

Tabel Hasil Pengujian 300 byte
Echo Reply

Timeout 1 detik

Timeout 5 detik

Timeout 10 detik

Delay

TTL

Delay

TTL

Delay

TTL

1

600

255

15

55

15

55

2

600

255

14

55

14

55

3

600

255

9

55

9

55

4

9

55

9

55

9

55

5

9

55

9

55

9

55

6

9

55

9

55

9

55

7

9

55

9

55

9

55

8

9

55

9

55

9

55

9

9

55

9

55

9

55

10

9

55

9

55

9

55

Tabel Hasil Pengujian 450 byte
Echo Reply

Time Out 1 detik

Time Out 5 detik

Time Out 10 detik

Delay

TTL

Delay

TTL

Delay

TTL

1

600

255

16

55

16

55

2

600

255

14

55

14

55

3

600

255

9

55

9

55

4

600

255

9

55

9

55

5

600

255

9

55

9

55

6

600

255

9

55

9

55

Universitas Sumatera Utara

7

9

55

9

55

9

55

8

600

255

9

55

9

55

9

9

55

9

55

9

55

10

9

55

9

55

9

55

Tabel Hasil Pengujian 600 byte
Echo
Reply

Time Out 1 detik

Time Out 5 detik

Time Out 10 detik

Delay

TTL

Delay

TTL

Delay

TTL

1

600

255

18

55

17

55

2

600

255

15

55

16

55

3

600

255

15

55

15

55

4

600

255

15

55

15

55

5

600

255

15

55

15

55

6

600

255

15

55

15

55

7

600

255

15

55

15

55

8

600

255

15

55

15

55

9

600

255

15

55

15

55

10

600

255

15

55

15

55

Tabel Hasil Pengujian 750 byte
Echo
Reply

Timeout 1 detik

Timeout 5 detik

Timeout 10 detik

Delay

TTL

Delay

TTL

Delay

TTL

1

600

255

18

55

18

55

2

600

255

15

55

15

55

Universitas Sumatera Utara

3

600

255

15

55

15

55

4

600

255

15

55

15

55

5

600

255

15

55

15

55

6

600

255

15

55

15

55

7

600

255

15

55

15

55

8

600

255

15

55

15

55

9

600

255

15

55

15

55

10

600

255

15

55

15

55

Universitas Sumatera Utara

LAMPIRAN C
Gambar Pengujian 30 byte dengan Timeout 1 detik

Gambar Pengujian 30 byte dengan Timeout 5 detik

Universitas Sumatera Utara

Gambar Pengujian 30 byte dengan Timeout 10 detik

Universitas Sumatera Utara

Gambar Pengujian 150 byte dengan Timeout 1 detik

Universitas Sumatera Utara

Gambar Pengujian 150 byte dengan Timeout 5 detik

Universitas Sumatera Utara

Gambar Pengujian 150 byte dengan Timeout 10 detik

Universitas Sumatera Utara

Gambar Pengujian 300 byte dengan Timeout 1 detik

Universitas Sumatera Utara

Gambar Pengujian 300 byte dengan Timeout 5 detik

Universitas Sumatera Utara

Gambar Pengujian 300 byte dengan Timeout 10 detik

Universitas Sumatera Utara

Gambar Pengujian 450 byte dengan Timeout 1 detik

Universitas Sumatera Utara

Gambar Pengujian 450 byte dengan Timeout 5 detik

Universitas Sumatera Utara

Gambar Pengujian 450 byte dengan Timeout 10 detik

Universitas Sumatera Utara

Gambar Pengujian 600 byte dengan Timeout 1 detik

Universitas Sumatera Utara

Gambar Pengujian 600 byte dengan Timeout 5 detik

Universitas Sumatera Utara

Gambar Pengujian 600 byte dengan Timeout 10 detik

Universitas Sumatera Utara

Gambar Pengujian 750 byte dengan Timeout 1 detik

Universitas Sumatera Utara

Gambar Pengujian 750 byte dengan Timeout 5 detik

Universitas Sumatera Utara

Gambar Pengujian 750 byte dengan Timeout 10 detik

Universitas Sumatera Utara

Universitas Sumatera Utara

LAMPIRAN D
Gambar Penerimaan Data di Website

Universitas Sumatera Utara

Universitas Sumatera Utara

Universitas Sumatera Utara

Universitas Sumatera Utara

LAMPIRAN E
Penentuan Nilai BER

Universitas Sumatera Utara

Penentuan Kuat Sinyal

Penentuan timeout

Universitas Sumatera Utara