#include #define rxPin 2 #define txPin 3 SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin); String SmsStorePos = String(""); String msg = String(""); String snTmp = String(""); String snFull = String(""); int SmsContentFlag = 0; int ledPin = 5; int powerPin = 6; void setup() { mySerial.begin(19200); mySerial.print("\r"); delay(1000); Serial.begin(19200); Serial.println("Started!"); pinMode( ledPin, OUTPUT ); digitalWrite( ledPin, HIGH ); pinMode( powerPin, OUTPUT); // digitalWrite(powerPin, LOW); // delay(3000); // digitalWrite(powerPin, HIGH); // delay(5000); // digitalWrite ( ledPin, HIGH); // delay(1000); // digitalWrite( ledPin, LOW); mySerial.print("AT+CMGF=1\r"); delay(1000); } void loop() { char SerialInByte; if(Serial.available()) { mySerial.print((unsigned char)Serial.read()); } else if(mySerial.available()) { char SerialInByte; SerialInByte = (unsigned char)mySerial.read(); Serial.print( SerialInByte ); if( SerialInByte == 13 ){ ProcessGprsMsg(); } if( SerialInByte == 10 ){ } else { msg += String(SerialInByte); } } } void ProcessSms( String sms ){ sms.toLowerCase(); Serial.print( "ProcessSms for [" ); Serial.print( sms ); Serial.println( "]" ); if( sms.indexOf("on") >= 0 ){ digitalWrite( ledPin, LOW ); Serial.println( "LED IS ON" ); delay (5000); digitalWrite( ledPin, HIGH ); Serial.println( "LED IS OFF" ); return; } if( sms.indexOf("off") >= 0 ){ digitalWrite( ledPin, HIGH ); Serial.println( "LED IS OFF" ); return; } else { mySerial.print("AT+CMGF=1\r"); delay(1000); mySerial.print("AT+CMGS=\""); mySerial.print(snFull); mySerial.print("\"\r"); delay(1000); mySerial.print("Intruksi SMS tidak valid : "); mySerial.print(sms); mySerial.print("\r"); delay(1000); mySerial.write(0x1A); return; } } void GprsTextModeSMS(){ mySerial.println( "AT+CMGF=1" ); } void GprsReadSmsStore( String SmsStorePos ){ mySerial.print( "AT+CMGR=" ); mySerial.println( SmsStorePos ); } void ClearGprsMsg(){ msg = ""; } void ProcessGprsMsg() { Serial.println(""); Serial.print( "Pesan GPRS: [" ); Serial.print( msg ); Serial.println( "]" ); if( msg.indexOf( "Call Ready" ) >= 0 ){ Serial.println( "*** Sistem siap menerima instruksi ***" ); GprsTextModeSMS(); } if( msg.indexOf( "+CMTI" ) >= 0 ){ Serial.println( "*** Ada SMS Masuk ***" ); int iPos = msg.indexOf( "," ); SmsStorePos = msg.substring( iPos+1 ); Serial.print( "SMS terekam di possisi: " ); Serial.println( SmsStorePos ); GprsReadSmsStore( SmsStorePos ); } if( msg.indexOf( "+CMGR:" ) >= 0 ){ int snPos = msg.indexOf("+1"); Serial.print("SMS Dari: "); snTmp = msg.substring(snPos+1); snFull = ""; for (int i = 0; i < 11; i++){ snFull += snTmp[i]; } Serial.println(snFull); SmsContentFlag = 1; ClearGprsMsg(); return; } if( SmsContentFlag == 1 ){ Serial.println( msg ); Serial.println( "ISI SMS :" ); ProcessSms( msg ); delSMS(); } ClearGprsMsg(); SmsContentFlag = 0; } void delSMS() { mySerial.print("AT+CMGD="); mySerial.println(SmsStorePos); Serial.println( "Menghapus SMS" ); }