Skip to content

Instantly share code, notes, and snippets.

@Sisoog
Created January 20, 2020 08:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Sisoog/4824924b4a3acae91ed33cba45f92ff5 to your computer and use it in GitHub Desktop.
Save Sisoog/4824924b4a3acae91ed33cba45f92ff5 to your computer and use it in GitHub Desktop.
#include <SoftwareSerial.h>
#define DEBUG true
SoftwareSerial mySerial(10,11 );// RX, TX
String data[5];
String state,timegps,latitude,longitude;
String Operator,Balance;
String Phone = "0912xxxxxxx";
String sendData (String command , const int timeout ,boolean debug)
{
String response = "";
mySerial.println(command);
long int time = millis();
int i = 0;
while ( (time+timeout ) > millis())
{
while (mySerial.available())
{
char c = mySerial.read();
response +=c;
}
}
if (debug)
{
Serial.print(response);
}
return response;
}
String word_filter(String str,String start,String end)
{
int Word1 = str.indexOf(start);
int Word2 = str.lastIndexOf(end);
return str.substring(Word1 , Word2);
}
String GetOperator()
{
delay(50);
mySerial.println("AT+COPS?");
mySerial.setTimeout(100) ;
String input = mySerial.readString();
mySerial.setTimeout(10) ;
input = word_filter(input,"\"","\"");
input.trim();
delay(10);
if(input=="43235")
{
return "Irancell";
}
else
{
return "Not Recognized";
}
}
void Operator_Setting(String Operator)
{
String oprator = GetOperator();
if(oprator == "Irancell"){
mySerial.println("AT+CUSD=1,\"*555*4*3*2#\"");
}
delay(3000);
mySerial.println("AT+CUSD=2");
}
void GSM_Initilaize()
{
boolean gsm_Init = 1;
while (gsm_Init > 0) {
mySerial.println("AT");
while (mySerial.available()) {
if (mySerial.find("OK") > 0)
gsm_Init = 0;
}
delay(100);
}
boolean Ready = 1;
while (Ready > 0) {
mySerial.println("AT+CPIN?");
while (mySerial.available()) {
if (mySerial.find("+CPIN: READY") > 0)
Ready = 0;
}
delay(1000);
}
mySerial.write("AT+CMGF=1\r\n");
delay(1000);
}
String GetBalance(String _Operator)
{
if(_Operator=="Irancell")
{
mySerial.println("AT+CUSD=1,\"*141*1#\"");
mySerial.setTimeout(6000);
String Balance_Read = mySerial.readString();
delay(100);
String firsword = "Credit";
String lastword = "WOW";
int Word1 = Balance_Read.indexOf(firsword) + firsword.length() ;
int Word2 = Balance_Read.lastIndexOf(lastword);
if(Word1 ==-1 or Word2==-1)
{
return "0" ;
}
else
{
Balance_Read = Balance_Read.substring(Word1 , Word2);
}
delay(100);
Balance_Read.replace("Rial", "");
Balance_Read.replace(".", "");
Balance_Read.replace("IRR", "");
Balance_Read.trim();
return Balance_Read;
}
}
int Send_Message(String phone , String text)
{
mySerial.print("AT+CMGF=1");
delay(1000);
mySerial.print("AT+CMGS=");
mySerial.print("\"") ;
mySerial.print(phone);
mySerial.print("\"") ;
mySerial.print("\r\n");
delay(100);
mySerial.print(text);
delay(100);
mySerial.print(char(26));
delay(100);
return 1;
}
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
mySerial.println("AT&F");
delay(100);
mySerial.println("AT+CMGF=1");
mySerial.setTimeout(100);
sendData("AT+CGNSPWR=1",1000,DEBUG);
delay(50);
while(1)
{
Operator= GetOperator();
if(Operator=="Not Recognized")
{
Serial.println(Operator);
}// end if operator
else
{
Serial.println(Operator);
Operator_Setting(Operator);
GSM_Initilaize();
Balance=GetBalance(GetOperator());
// Send_Message(Phone, Balance);
Send_Message(Phone, "Welcome to SIM808");
Serial.println(Balance);
return;
}
}// end while
} // end of Main
void loop()
{
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment