Good day Everyone,
I have a project where each event is time-stamped, and the timestamp is added to an SMS and sent for recording. I have been able to retrieve the time from the SIM800L Modem, and when I do the following:
int time = sim800l.print("AT+CCLK?\r"); Serial.println(time);
Then the time prints in the format it was retrieved and displays in the serial monitor correctly. However when I try and cast/parse, then all that is being retrieved is the single digit 9. Basically, the goal is to get this "20/11/02,05:58:59+08", or a subset of it into String which would allow me to add it to the SMS.
My full code below:
#include <SoftwareSerial.h>
SoftwareSerial sim800l(2, 3); // RX,TX for Arduino and for the module it's TXD RXD, they should be inverted
#define button1 7 //Button pin, on the other pin it's wired with GND
bool button_State; //Button state
String String1 = "Waypoint 1:";
String String2 = "YYMMDD";
void setup()
{
pinMode(button1, INPUT_PULLUP); //The button is always on HIGH level, when pressed it goes LOW
sim800l.begin(9600); //Module baude rate, this is on max, it depends on the version
Serial.begin(9600);
delay(1000);
}
void loop()
{
button_State = digitalRead(button1); //We are constantly reading the button State
if (button_State == LOW) { //And if it's pressed
Serial.println("Button pressed"); //Shows this message on the serial monitor
delay(200); //Small delay to avoid detecting the button press many times
SendSMS(); //And this function is called
}
if (sim800l.available()){ //Displays on the serial monitor if there's a communication from the module
Serial.write(sim800l.read());
}
}
void SendSMS()
{
Serial.println("Sending SMS..."); //Show this message on serial monitor
int time = sim800l.print("AT+CCLK?\r");
Serial.println(time);
String tym = String(time); // <- This just rint a 9 to the serial monitor
sim800l.print("AT+CMGF=1\r"); //Set the module to SMS mode
delay(100);
sim800l.print("AT+CMGS=\"+xxxxxxxxxxx\"\r"); //Your phone number don't forget to include your country code, example +212123456789"
delay(500);
sim800l.print(String1 + String2 + Tym); //This is the text to send to the phone number, don't make it too long or you have to modify the SoftwareSerial buffer
delay(500);
sim800l.print((char)26);// (required according to the datasheet)
delay(500);
sim800l.println();
Serial.println("Text Sent.");
delay(500);
}
Please note that I have searched extensively and tried many code samples, I am just really stuck.
Thank you in advance, and your help is much appreciated