so want to send a message and recieve links with latitude and longitude attached to the google maps link
**my coonections **
SoftwareSerial gsm(8, 9);
SoftwareSerial gpsSerial(10, 11); // RX, TX
am using sim900A gsm and neo6gps
in serial monitor i see
Connecting...
Connecting...
but with code to only gsm works fine
my code
#include <SoftwareSerial.h>
#include <TinyGPS++.h>
SoftwareSerial gsm(8, 9);
SoftwareSerial gpsSerial(10, 11); // RX, TX
TinyGPSPlus gps;
String inputString;
void setup() {
Serial.begin(9600);
gsm.begin(9600);
gpsSerial.begin(9600);
while (!gsm.available()) {
gsm.println("AT");
delay(1000);
Serial.println("Connecting...");
}
Serial.println("Connected!");
gsm.println("AT+CMGF=1"); // Set SMS to Text Mode
delay(1000);
gsm.println("AT+CNMI=1,2,0,0,0"); // Procedure to handle newly arrived messages
delay(1000);
gsm.println("AT+CMGL=\"REC UNREAD\""); // Read Unread Messages
while (!gpsSerial.available()) {
gpsSerial.println("AT+CGNSPWR=1"); // Enable GPS
delay(1000);
}
}
void loop() {
char incomingByte; // Declare incomingByte variable
if (gsm.available()) {
delay(100);
// Serial Buffer
while (gsm.available()) {
incomingByte = gsm.read();
inputString += incomingByte;
}
delay(10);
Serial.println(inputString);
inputString.toUpperCase(); // Uppercase the Received Message
// Turn LED ON or OFF
if (inputString.indexOf("LOC") > -1) {
Serial.println("Success Location");
SendMessage("");
}
if (inputString.indexOf("STATUS") > -1) {
Serial.println("Success Status");
SendStatus("");
}
if (inputString.indexOf("ALL") > -1) {
Serial.println("Success ALL");
SendAll("");
}
delay(50);
// Delete Messages & Save Memory
if (inputString.indexOf("OK") == -1) {
gsm.println("AT+CMGDA=\"DEL ALL\"");
delay(1000);
}
inputString = "";
}
while (gpsSerial.available() > 0) {
if (gps.encode(gpsSerial.read())) {
if (gps.location.isValid()) {
float latitude = gps.location.lat();
float longitude = gps.location.lng();
updateGoogleMapsLink(latitude, longitude);
}
}
}
}
void SendMessage(String googleMapsLink) {
Serial.println ("Sending Message");
gsm.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
delay(1000);
Serial.println ("Set SMS Number");
gsm.println("AT+CMGS=\"+263781840930\"\r"); //Write Mobile number to send message
delay(1000);
Serial.println ("Set SMS Content");
gsm.println(googleMapsLink);
delay(100);
Serial.println ("Finish");
gsm.println((char)26);// ASCII code of CTRL+Z
delay(1000);
Serial.println ("Message has been sent ->LATS System");
}
void SendStatus(String googleMapsLink) {
Serial.println ("Sending Message");
gsm.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
delay(1000);
Serial.println ("Set SMS Number");
gsm.println("AT+CMGS=\"+263781840930\"\r"); //Write Mobile number to send message
delay(1000);
Serial.println ("Set SMS Content");
gsm.println("System started successfully");// Messsage content
gsm.println("Pivot active");
gsm.println("All Animals In Range");
delay(100);
Serial.println ("Finish");
gsm.println((char)26);// ASCII code of CTRL+Z
delay(1000);
Serial.println ("Message has been sent ->LATS System");
}
void SendAll(String googleMapsLink) {
Serial.println ("Sending Message");
gsm.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
delay(1000);
Serial.println ("Set SMS Number");
gsm.println("AT+CMGS=\"+263781840930\"\r"); //Write Mobile number to send message
delay(1000);
Serial.println ("Set SMS Content");
gsm.println("Pivot Location");
gsm.println(googleMapsLink);
gsm.println("Tag 12/17");
gsm.println(googleMapsLink);
delay(100);
Serial.println ("Finish");
gsm.println((char)26);// ASCII code of CTRL+Z
delay(1000);
Serial.println ("Message has been sent ->LATS System");
}
void updateGoogleMapsLink(float latitude, float longitude) {
String googleMapsLink = "https://maps.google.com/maps?q=" + String(latitude, 6) + "," + String(longitude, 6);
// Update the Google Maps link in your SMS messages
SendMessage(googleMapsLink);
SendStatus(googleMapsLink);
SendAll(googleMapsLink);
}