Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Bus_Navigation GPS_HelloWorld TextLCD mbed
Fork of GPS_HelloWorld by
Revision 1:ba73ffc5805f, committed 2014-10-31
- Comitter:
- josmy
- Date:
- Fri Oct 31 05:27:23 2014 +0000
- Parent:
- 0:6b7345059afe
- Commit message:
- It consists of 3 serial ports, one for GPS, second for GSM and third for viewing what is going on. GPS latitude, longitude, north-south, east-westis extracted and send as an SMS to the number saved in the program and displayed on LCD.
Changed in this revision
--- a/GPS.lib Tue Jun 08 14:12:30 2010 +0000 +++ b/GPS.lib Fri Oct 31 05:27:23 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/simon/code/GPS/#15611c7938a3 +http://developer.mbed.org/users/josmy/code/Bus_Navigation/#5c5177f8c0d8
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GPS_HelloWorld.lib Fri Oct 31 05:27:23 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/simon/code/GPS_HelloWorld/#6b7345059afe
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Fri Oct 31 05:27:23 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/simon/code/TextLCD/#308d188a2d3a
--- a/main.cpp Tue Jun 08 14:12:30 2010 +0000
+++ b/main.cpp Fri Oct 31 05:27:23 2014 +0000
@@ -1,15 +1,200 @@
#include "mbed.h"
#include "GPS.h"
+#include "string.h"
+#include "TextLCD.h"
-Serial pc(USBTX, USBRX);
-GPS gps(p9, p10);
+
+TextLCD lcd(PB_3, PB_5, PB_4, PA_8, PC_7, PB_6); // rs, e, d4-d7
+
+//Serial pc(USBTX, USBRX);
+Serial pc(SERIAL_TX, SERIAL_RX);
+GPS gps(PA_9, PA_10);
+DigitalOut myled(LED1);
+Serial GSM(PB_10, PB_11);
+DigitalIn Mybutton(PC_13);
+char Mybuf[100];
+char buff[100];
+
+
+
+//global variables
+char comm[100];
+//char num[15]="+919920355869";
+char num[15]="+919820300951";
+int time1;
+int msg[100];
+int numb[20];
+int log1[20];
+int dm;
+
+
+int read_GSM()
+{
+ int i=0;
+
+ while(1)
+ {
+ comm[i]=GSM.getc();
+ if(comm[i]==10 && comm[i-1]==13 && comm[i-2]==75 && comm[i-3]==79)
+ {
+ return i;
+ }
+ pc.putc(comm[i]);
+ i++;
+ }
+}
+
+void send_sms(char* text)
+{
+
+// GSM.printf("AT+CMGS=\"+919820300951\"\r\n");
+ GSM.printf("AT+CMGS=\"+919920355869\"\r\n");
+
+// GSM.printf("AT+CMGS=\"%s\"\r\n",num);
+ wait(1);
+
+ GSM.printf("Latitude:%f,%c,Longitude:%f,%c\r\n", gps.latitude,gps.ns, gps.longitude, gps.ew);
+
+ wait(1);
+
+ GSM.putc(0x1A);
+ wait(1);
+// dm=read_GSM();
+ sprintf(buff,"Lat:%f %c",gps.latitude,gps.ns);
+ lcd.locate(0,0);
+ lcd.printf(buff);
+ sprintf(buff,"Log:%f %c",gps.longitude, gps.ew);
+ lcd.locate(0,1);
+ lcd.printf(buff);
+
+ pc.printf("SMS Send");
+}
+
+void GPS_init(){
+ GSM.printf("AT+CGPSPWR=1\r");
+ dm=read_GSM();
+ pc.printf("GPS Power ON\n");
+ GSM.printf("AT+CGPSRST=1\r");
+ dm=read_GSM();
+ pc.printf("GPS Cold Reset\n");
+ GSM.printf("AT+CGPSIPR=9600\r");
+ dm=read_GSM();
+ pc.printf("GPS baud rate set\n");
+}
+void GSM_init()
+{
+ // check if GSM is fine
+ GSM.printf("AT\r");
+ dm=read_GSM();
+ //pc.printf("%s",comm);
+ //if(strcmp("OK",comm)==0)
+ pc.printf("GSM Working fine\n");
+ wait(1);
+
+ //no echo
+ GSM.printf("ATE0\r");
+ dm=read_GSM();
+ pc.printf("Echo Switched off\n");
+ wait(1);
+
+ //network reg
+ GSM.printf("AT+CREG?\r");
+ dm=read_GSM();
+ pc.printf("Network Registered\n");
+ wait(1);
+ //Service provider
+ pc.printf("\n Network Provider\n");
+ GSM.printf("AT+CGMI\r");
+ dm=read_GSM();
+ wait(1);
+ }
+
+void sms_init()
+{
+ GSM.printf("AT+CMGF=1\r");
+ dm=read_GSM();
+ pc.printf("GSM SMS set to Text Mode\n");
+ wait(0.5);
+ //delete all previous messages
+ GSM.printf("AT+CMGDA=\"DEL ALL\"\r");
+ //pc.printf("AT+CMGDA=\"DEL ALL\"\r");
+
+ read_GSM();
+ pc.printf("All previous messages cleared");
+}
+
+void retrieve_sms()
+{
+ GSM.printf("AT+CMGR=1\r");
+ int i=0;
+ while(1)
+ {
+ comm[i]=GSM.getc();
+ if(comm[i]==10 && comm[i-1]==13 && comm[i-2]==75 && comm[i-3]==79)
+ break;
+ i++;
+ }
+ int len=i;
+ int j=0;
+ // Get message
+ for(i=len-8;i>0;i--)
+ if(comm[i]==13 && comm[i+1]==10)
+ break;
+ pc.printf("Message retrieved is: ");
+ lcd.locate(0,0);
+ int k=0;
+ for(j=i+2;j<=len-8;j++)
+ {
+ msg[k]=comm[j];
+ pc.putc(msg[k]);
+ lcd.putc(msg[k]);
+ k++;
+ }
+ //sprintf(buff,"%d",msg);
+ //lcd.printf(buff);
+
+
+ //get Sender number
+ pc.printf("\n Message received from: ");
+ k=0;
+ for(i=24;i<=36;i++)
+ {
+ num[k]=comm[i];
+ pc.putc(num[k]);
+ k++;
+ }
+ GSM.printf("AT+CMGDA=\"DEL ALL\"\r");
+/*
+
+ // Get Time
+ pc.printf("\n Message received at: ");
+ for(j=47;j<=54;j++)
+ {
+ log1[k]=comm[j];
+ pc.putc(log1[k]);
+ k++;
+ }
+*/
+}
int main() {
+ GPS_init();
+ GSM_init();
+ sms_init();
+
while(1) {
- if(gps.sample()) {
- pc.printf("I'm at %f, %f\n", gps.longitude, gps.latitude);
+ retrieve_sms();
+
+ myled=!myled;
+ if(gps.sample()){
+ pc.printf("\nLatitude: %f, %c, Longitude: %f, %c\n", gps.latitude,gps.ns, gps.longitude, gps.ew);
+ if(Mybutton == 0){
+ sprintf(Mybuf,"Latitude:%f, %c, Longitude:%f, %c\r\n", gps.latitude,gps.ns, gps.longitude, gps.ew);
+ send_sms(Mybuf);
+ }
+
} else {
- pc.printf("Oh Dear! No lock :(\n");
+ pc.printf("No lock!\n");
}
}
}
--- a/mbed.bld Tue Jun 08 14:12:30 2010 +0000 +++ b/mbed.bld Fri Oct 31 05:27:23 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/029aa53d7323 +http://mbed.org/users/mbed_official/code/mbed/builds/552587b429a1 \ No newline at end of file
