Tujuan Praktek :
a. Mengetahui fungsi dan rangkaian antarmuka GPRS Shield ke Arduino.
b. Membuat aplikasi antarmuka Arduino dan GPRS Shield untuk mengendalikan suatu perangkat
I/O melalui jaringan seluler.
Daftar Perangkat/Komponen :
No
Perangkat/Komponen
Jumlah
No
Perangkat/Komponen
Jumlah
Komputer/Laptop
LED
GPRS Shield
Protoboard
10
Kabel jumper
secukupnya
Kegiatan Praktek
3.1. GPRS Shield
GPRSshieldmerupakanboardekstensiuntukArduinoyang
memungkinkanpengendalianmelaluijaringandataseluler
GSM/GPRS.SalahsatuprodukshieldiniadalahGPRSshield
V2.0dariSeedstudioyangmenggunakanchipSIM900yang
berukurankecildanberdayarendahuntuklayananvoice,
SMS,data,danfax.
Fiturdasarnya:
KompatibeldenganstandardArduino
Portserialhardwaredansoftware
Quadband:850/900/1800/1900MHz
KontrolpenuhATcommand:StandardGSM07.07&
07.05danEnhancedSIMCOMATCommands
2in1headsetjack
SIMcardholderyangmudahdigunakan
Konsumsidayarendah:1.5mA(sleepmode)
Atas(chipSIM900danantena)
Bawah(soketSIMcard)
Sketch :
/*
Arduino will patch a serial link between the
computer and the GPRS Shield at 19200 bps 8-N-1
Computer is connected to Hardware UART, GPRS
Jikashieldsuksesbergabungkejaringanseluler,LED
hijauakanberkediptiap3detik.
c.Jalankanaplikasikoneksikeserialport,sepertiHyper
Terminal,PuTTY,CoolTerm,dsb.
Setkonfigurasi:19200,8N1
void loop()
{
if (GPRS.available()) /* if data is coming from
software serial port, data -> from gprs shield) */
{
while(GPRS.available()) /* reading data into
char array */
{
buffer[count++]=GPRS.read(); /* writing
data into array */
if(count == 64)break;
}
Serial.write(buffer,count); /* if no data
transmission ends, write buffer to hardware serial
port */
clearBufferArray(); /* call clearBufferArray
function to clear data from the array */
count = 0;
/* set counter of while loop to
zero */
}
if (Serial.available()) /* if data is available
d.CekkoneksikeshielddenganperintahAT<enter>,
yangberhasilakanmunculbalasanOK.
B.DialTelepon:
ATDxxxxxxxx<enter>;xxxxxxxx=nomor
teleponpenerima
void loop()
{
//after start up the program, you can using terminal to connect the serial of gprs shield,
//if you input 't' in the terminal, the program will execute SendTextMessage(), to send a sms
//if input 'd' in the terminal, it will execute DialVoiceCall(), etc.
if (Serial.available())
switch(Serial.read())
{
case 't':
SendTextMessage();
break;
case 'd':
DialVoiceCall();
break;
}
if (mySerial.available())
Serial.write(mySerial.read());
}
///SendTextMessage()
///this function is to send a sms message
void SendTextMessage()
{
mySerial.print("AT+CMGF=1\r");
//Because we want to send the SMS in text mode
delay(100);
mySerial.println("AT + CMGS = \"+62 ******\"");//send sms message
delay(100);
mySerial.println("How are you ?");//the content of the message
delay(100);
mySerial.println((char)26);//the ASCII code of the ctrl+z is 26
delay(100);
mySerial.println();
}
///DialVoiceCall
///this function is to dial a voice call
void DialVoiceCall()
{
mySerial.println("ATD + +62 ******** ;"); //dial the phone number
delay(100);
mySerial.println();
}
void ShowSerialData()
{
while(mySerial.available()!=0)
Serial.write(mySerial.read());
}
Sketch:
#include <SoftwareSerial.h>
SoftwareSerial cell(7,8);
void setup()
{
pinMode(7, INPUT);
cell.begin(9600);
delay(30000); /* give the GSM module time to
initialize network location */
}
void loop()
{
if (digitalRead(7) == HIGH)
{
callSomeone();
}
}
void callSomeone()
{
cell.println("ATD+ +62 xxxxxxxxxx;"); /* dial the
phone number xxxxxxxxxx */
delay(20000); // wait 20 seconds.
cell.println("ATH"); // end call
delay(60000); // wait 60 seconds for GSM module
}
Sketch:
#include <SerialGSM.h>
#include <SoftwareSerial.h>
SerialGSM cell(7,8);
void setup()
{
pinMode(7, INPUT);
delay(30000); // wait for the GSM module
cell.begin(9600);
}
void textSomeone()
{
cell.Verbose(true); // used for debugging
cell.Boot();
cell.FwdSMS2Serial();
cell.Rcpt("+xxxxxxxxxxx"); /* replace xxxxxxxxxxx with
the recipient's cell number */
cell.Message("This is the contents of a message");
cell.SendSMS();
}
void loop()
{
if (digitalRead(7) == HIGH)
{
textSomeone();
}
if (cell.ReceiveSMS())
{
Serial.println(cell.Message());
cell.DeleteAllSMS();
}
Sketch:
#include <SoftwareSerial.h>
SoftwareSerial cell(7,8);
char inchar;
void setup()
{
// set up digital output pins to control
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(10, LOW); /* default state for I/O pins
at power-up or reset, change as you wish. */
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
//Initialize the GSM module serial port for comm.
cell.begin(9600);
delay(30000);
cell.println("AT+CMGF=1");
delay(200);
cell.println("AT+CNMI=3,3,0,0");
delay(200);
}
void loop()
{
// If a character comes in from the cellular module...
if(cell.available() > 0)
{
inchar = cell.read();
if (inchar == '#') // the start of our command
{
delay(10);
inchar = cell.read();
if (inchar == 'a')
{
delay(10);
inchar = cell.read();
if (inchar == '0')
{
digitalWrite(10, LOW);
}
else if (inchar == '1')
{
digitalWrite(10, HIGH);
}
delay(10);
inchar = cell.read();
if (inchar == 'b')
{
inchar = cell.read();
if (inchar == '0')
{
digitalWrite(11, LOW);
}
else if (inchar == '1')
{
digitalWrite(11, HIGH);
}
delay(10);
inchar = cell.read();
if (inchar == 'c')
{
inchar = cell.read();
if (inchar == '0')
{
digitalWrite(12, LOW);
}
else if (inchar == '1')
{
digitalWrite(12, HIGH);
}
delay(10);
inchar = cell.read();
if (inchar == 'd')
{
delay(10);
inchar = cell.read();
if (inchar == '0')
{
digitalWrite(13, LOW);
}
else if (inchar == '1')
{
digitalWrite(13, HIGH);
}
delay(10);
}
}
cell.println("AT+CMGD=1,4");//delete all
}
}
DIY-P5 : Buatlah satu alat untuk mengendalikan perangkat I/O melalui jaringan seluler.
Tuliskan dan gambarkan deskripsi alat, gambar skematik, flow chart, dan sketch-nya.
awagyana@gmail.com