Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

GPRS coding using LPC2148

Status
Not open for further replies.

pappu_sam

Member level 1
Joined
Dec 31, 2009
Messages
39
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Location
HYDERABAD
Activity points
1,559
Hi all,

Iam using SIM300 gsm module to connect GPRS,
I got GPRS connectivity from hyperterminal using AT Commands,

Iam trying write code to interface those AT commands of GPRS using LPC2148 microcontroller

Code:
int main(void)
{

	PINSEL0 = 0x00050005;
	
	lcd_init();
	lcd_write_control(0x01);	
	goto_cursor(0x00);
	lcd_print("  GSM-GPRS-GPS  ");
	goto_cursor(0x40);
	lcd_print("  SYSTEM");
	delay(100);
	lcd_write_control(0x01);
	Init_UART1();
	Init_UART0();
	
	
	//gsm_init();
	GSM_GPRS_INIT();
	
//	while(1)
//	{
//		gsm_fun();
//	}
}	
////////////////////
unsigned char * append(unsigned char* s, char c)
{
        int len = strlen(s);
        s[len] = c;
        s[len+1] = '\0';
		
		return s;
}
////////////////////////
void GSM_GPRS_INIT()
{
	unsigned char check;
	unsigned char *AppendedString,*AppendedString2,*AppendedString3;
	unsigned char ch;
	unsigned  char x=0;
	unsigned char str0[50];

	lcd_write_control(0x01);		   
	goto_cursor(0x00);
	lcd_print("GSM Initializing");
	delay(100000000);
	delay(100000000);

	UART0_SendStr("Initializing");
//	while(!(U1LSR&0X01));
//	ch=U1RBR;
//	UART0_SendByte(ch);
//	while(ch!='y' || ch!='Y')
//	{
//		str0[x++]=ch;
//		while(!(U1LSR&0X01));
//		ch=U1RBR;
//		UART0_SendByte(ch);
//	}
	lcd_write_control(0x01);		   
	goto_cursor(0x00);
	lcd_print("call ready");
	delay(1000000);

	do
	{
		check=SendATCommand(GPRS[0]);	  //AT  <<OK
	}while(check==0);
	lcd_write_control(0x01);		   
	goto_cursor(0x00);
	lcd_print("AT+OK");
	delay(1000000);
	
	do{
		check = SendCGDCONTCommand();		 //AT+CGDCONT=1,"IP","airtelgprs.com"   <<OK
	}while(check==0);
	lcd_write_control(0x01);		   
	goto_cursor(0x00);
	lcd_print("at+cgdcont=..+OK");
	delay(1000000);
	
	do
	{
		check=SendCSTTCommand();       // <<OK
	}while(check==0);
	lcd_write_control(0x01);		   
	goto_cursor(0x00);
	lcd_print("AT+CSTT=1+OK");
	delay(1000000);
	
//	//at+ciicr
	do
	{
		check=SendCIICRCommand();			   //delay <<OK
	}while(check==0);
	lcd_write_control(0x01);		   
	goto_cursor(0x00);
	lcd_print("AT+CIICR");
	delay(1000000);
//	
//	//at+cifsr
//	do
//	{
//		check=SendCommandCIFSR(GPRS[7]);	   //some IP address like 106.112.23.4
//	}while(check==0);
//	lcd_write_control(0x01);		   
//	goto_cursor(0x00);
//	lcd_print("AT+CIFSR");
//	delay(10000);
//	
//	//at+cdnsorip=0
//	do
//	{
//		check=SendCommand(GPRS[9]);			   // <<OK
//	}while(check==0);
//	lcd_write_control(0x01);		   
//	goto_cursor(0x00);
//	lcd_print("AT+CDNSORIP=0");
//	delay(10000);
//
//	//at+cipstart="TCP","61.12.108.35","8080"
//   	AppendedString3 = append(GPRS[10],'"');
//	strcat(AppendedString3,GPRS[11]);
//	AppendedString3 = append(AppendedString3 ,'"');
//	AppendedString3 = append(AppendedString3,',');
//	AppendedString3 = append(AppendedString3 ,'"');
//	strcat(AppendedString3,GPRS[12]);
//	AppendedString3 = append(AppendedString3 ,'"');
//	AppendedString3 = append(AppendedString3 ,',');
//	AppendedString3 = append(AppendedString3 ,'"');
//	strcat(AppendedString3 ,GPRS[13]);
//	AppendedString3 = append(AppendedString3 ,'"');
//	//GPRS[10]+'"'+GPRS[11]+'"'+','+'"'+GPRS[12]+'"'+','+'"'+GPRS[13]+'"'
//	do
//	{																			 
//		check=SendCommandCIPSTART(AppendedString3);		 //<< OK   CONNECT OK
//	}while(check==0);
//	lcd_write_control(0x01);		   
//	goto_cursor(0x00);
//	lcd_print("AT+CIPSTART");
//	delay(10000);
//
//	//at+cipsend=50
//	do
//	{
//		check=SendCommandCIPSEND(GPRS[14]);
//	}while(check==0);							   // prompt > and pass the strings end with Ctrl+Z
//	lcd_write_control(0x01);		   
//	goto_cursor(0x00);
//	lcd_print("AT+CIPSEND");
//	delay(10000);
//
//
//	SEND_UART1("YoYo");
	
}


//////////////////////////
//unsigned char SendCIICRCommand - > at+ciicr   delay    <<OK
//////////////////////////////////
unsigned char SendCIICRCommand()
{
	unsigned char ch;
	unsigned  char x=0;
	unsigned char str0[50];
	unsigned char str1[50];
	delay(200);
	UART0_SendStr("CIICR");
	//UART1_SendStr("AT+CIICR");
	delay(200);
	SEND_CHAR('A');
	SEND_CHAR('T');
	SEND_CHAR('+');
	SEND_CHAR('C');
	SEND_CHAR('I');
	SEND_CHAR('I');
	SEND_CHAR('C');
	SEND_CHAR('R');
	//delay(100);
	delay(100);
	delay(400);
	//delay(500000000);
	
//	delay(100);
//	delay(400);
//	delay(100);
//	delay(400);
// 	x=0;
//	while(!(U1LSR&0X01));
//		ch=U1RBR;
	do{
		//UART0_SendStr("Before Waiting");
		while(!(U1LSR&0X01));
		ch=U1LSR;
		str1[x++]=ch;
		UART0_SendByte(ch);
		//UART0_SendStr(str1);
		//UART0_SendStr("After Waiting");
	}while((ch!='R'));
	
	UART0_SendStr(str1);

	delay(400);
	SEND_CHAR('\r');
	SEND_CHAR('\n');
//	SEND_CHAR(0X0D);
//	SEND_CHAR(0X0A);
	delay(400);


 	x=0;
	do{
		while(!(U1LSR&0X01));
		ch=U1RBR;
		str1[x++]=ch;
		//UART0_SendByte('-');
	
	}while(ch!='K');
	UART0_SendStr(str1);
	if((ch!='K'))
	{
		return(0);
	}
	return(1);
}


//////////////////////////
//unsigned char SendCSTTCommand - > at+cstt="airtelgprs.com","",""   <<OK
//////////////////////////////////
unsigned char SendCSTTCommand()
{
	unsigned char ch;
	unsigned  char x=0;
	unsigned char str0[50];
	unsigned char str1[50];
	delay(200);
	//UART0_SendStr(p);
	//UART1_SendStr(p);
	SEND_CHAR('A');
	SEND_CHAR('T');
	SEND_CHAR('+');
	SEND_CHAR('C');
	SEND_CHAR('S');
	SEND_CHAR('T');
	SEND_CHAR('T');
	SEND_CHAR('=');
	SEND_CHAR('"');
	SEND_CHAR('a');
	SEND_CHAR('i');
	SEND_CHAR('r');
	SEND_CHAR('t');
	SEND_CHAR('e');
	SEND_CHAR('l');
	SEND_CHAR('g');
	SEND_CHAR('p');
	SEND_CHAR('r');
	SEND_CHAR('s');
	SEND_CHAR('.');
	SEND_CHAR('c');
	SEND_CHAR('o');
	SEND_CHAR('m');
	SEND_CHAR('"');
	SEND_CHAR(',');
	SEND_CHAR('"');
	SEND_CHAR('"');
	SEND_CHAR(',');
	SEND_CHAR('"');
	SEND_CHAR('"');
	SEND_CHAR('\r');
	SEND_CHAR('\n');
	//SEND_CHAR(0X0D);
	//SEND_CHAR(0X0A);
	delay(100);
	delay(400);

 	x=0;
	
	do{
		while(!(U1LSR&0X01));
		ch=U1RBR;
		str1[x++]=ch;
	}while((ch!='K'));
	
	UART0_SendStr(str1);

	if((ch!='K'))
	{
		return(0);
	}
	return(1);
}


//////////////////////////
//unsigned char SendCGDCONTCommand - > AT+CGDCONT=1,"IP","airtelgprs.com"   <<OK
//////////////////////////////////
unsigned char SendCGDCONTCommand()
{
	unsigned char ch;
	unsigned  char x=0;
	unsigned char str0[50];
	unsigned char str1[50];
	delay(200);
	//UART0_SendStr(p);
	//UART1_SendStr(p);
	SEND_CHAR('A');
	SEND_CHAR('T');
	SEND_CHAR('+');
	SEND_CHAR('C');
	SEND_CHAR('G');
	SEND_CHAR('D');
	SEND_CHAR('C');
	SEND_CHAR('O');
	SEND_CHAR('N');
	SEND_CHAR('T');
	SEND_CHAR('=');
	SEND_CHAR('1');
	SEND_CHAR(',');
	SEND_CHAR('"');
	SEND_CHAR('I');
	SEND_CHAR('P');
	SEND_CHAR('"');
	SEND_CHAR(',');
	SEND_CHAR('"');
	SEND_CHAR('a');
	SEND_CHAR('i');
	SEND_CHAR('r');
	SEND_CHAR('t');
	SEND_CHAR('e');
	SEND_CHAR('l');
	SEND_CHAR('g');
	SEND_CHAR('p');
	SEND_CHAR('r');
	SEND_CHAR('s');
	SEND_CHAR('.');
	SEND_CHAR('c');
	SEND_CHAR('o');
	SEND_CHAR('m');
	SEND_CHAR('"');
	SEND_CHAR(0X0D);
	SEND_CHAR(0X0A);
	delay(100);
	delay(400);

 	x=0;
	
	do{
		while(!(U1LSR&0X01));
		ch=U1RBR;
		str1[x++]=ch;
	}while((ch!='K'));
	
	UART0_SendStr(str1);

	if((ch!='K'))
	{
		return(0);
	}
	return(1);
}

//////////////////////////
//unsigned char SendCGATTCommand
//////////////////////////////////
unsigned char SendCGATTCommand(unsigned char *p)
{
	unsigned char ch;
	unsigned  char x=0;
	unsigned char str0[50];
	unsigned char str1[50];
	delay(200);
	UART0_SendStr(p);
	SEND_CHAR('A');
	SEND_CHAR('T');
	SEND_CHAR('+');
	SEND_CHAR('C');
	SEND_CHAR('G');
	SEND_CHAR('A');
	SEND_CHAR('T');
	SEND_CHAR('T');
	SEND_CHAR('=');
	SEND_CHAR('1');
	delay(100);

	do{
		while(!(U1LSR&0X01));
		ch=U1RBR;
		str0[x++]=ch;
		//UART0_SendByte(ch);
		
	}while(ch!='1');
	UART0_SendStr(str0);

	//delay(400);
	//delay(400);
	SEND_CHAR(0X0D);
	SEND_CHAR(0X0A);
	delay(400);
	delay(400);
	delay(400);	
 	x=0;
	
	do{
		while(!(U1LSR&0X01));
		ch=U1RBR;
		str1[x++]=ch;
		UART0_SendByte(ch);
		//UART0_SendStr(str1);
	
	}while((ch!='K') || (ch!='R'));
	
	UART0_SendStr(str1);

	if((ch!='K') || (ch!='R'))
	{
		return(0);
	}
	return(1);
}

//////////////////////////
//unsigned char SendATCommand
//////////////////////////////////
unsigned char SendATCommand(unsigned char *p)
{
	unsigned char ch;
	unsigned  char x=0;
	unsigned char str0[50];
	unsigned char str1[50];
	delay(200);
	UART0_SendStr(p);
	UART1_SendStr(p);
	delay(100);

	do{
		while(!(U1LSR&0X01));
		ch=U1RBR;
		str0[x++]=ch;
		
	}while(ch!='T');
	UART0_SendStr(str0);

	delay(400);
	SEND_CHAR('\r');
	SEND_CHAR('\n');
	//SEND_CHAR(0X0D);
	//SEND_CHAR(0X0A);
	delay(400);


 	x=0;
	do{
		while(!(U1LSR&0X01));
		ch=U1RBR;
		str1[x++]=ch;
		//UART0_SendByte('-');
	
	}while(ch!='K');
	UART0_SendStr(str1);

	if(ch!='K')
	{
		return(0);
	}
	return(1);
}

am able to receive OK upto AT+CSTT, but when I send AT+CIICR after that am not able to get response

please help me regarding this....
 
Last edited:

Hi Ganesh,

I just googled everything and wrote a code and solved the above problem now.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top