user60923: I am successfully communicating with my SIM800L from my UNOR3 aside form some errors. But the biggest problem is with the serial monitor.
Responses from the SIM800L are somewhat obfuscated in that some characters are randomly wrong. See a snippet below:
Initializing...

OK

+C⸮T'⸮⸮b⸮j


OK

88l4110068165694746f

O⸮

+CQEG:Y⸮⸮H⸮⸮*⸮⸮C⸮
ERROR
⸮> H⸮⸮*⸮⸮
F⸮ROR
H⸮⸮
ERRO
H⸮⸮*⸮⸮


My code is also below.
#include <SoftwareSerial.h>

//Create software serial object to communicate with SIM800L
SoftwareSerial mySerial(11,10); //SIM800L Tx & Rx is connected to Arduino #3 & #2

void setup()
{

  pinMode(2, INPUT);
  pinMode(3, OUTPUT);
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(115200);

  //Begin serial communication with Arduino and SIM800L
  mySerial.begin(115200);

  Serial.println("Initializing...");
  delay(1000);

  mySerial.println("AT"); //Once the handshake test is successful, it will back to OK
  updateSerial();
  mySerial.println("AT+CSQ"); //Signal quality test, value range is 0-31 , 31 is the best
  updateSerial();
  mySerial.println("AT+CCID"); //Read SIM information to confirm whether the SIM is plugged
  updateSerial();
  mySerial.println("AT+CREG?"); //Check whether it has registered in the network
  updateSerial();
  mySerial.println("AT+CMGF=1"); // Configuring TEXT mode
  updateSerial();
  mySerial.println("AT+CNMI=1,2,0,0,0"); // Decides how newly arrived SMS messages should be handled
  updateSerial();
  mySerial.println("AT+CMGS=\"+447518103652\"");//change ZZ with country code and xxxxxxxxxxx with phone number to sms
  updateSerial();
  mySerial.print("System on!"); //text content
  updateSerial();
  mySerial.write(26);

  delay(1000);
}


int milli = millis();
void loop()
{
  if (digitalRead(2) == HIGH) {
    digitalWrite(3, HIGH);
  mySerial.println("AT+CMGS=\"+447518103652\"");//change ZZ with country code and xxxxxxxxxxx with phone number to sms
  updateSerial();
  mySerial.print("Button Pressed!"); //text content
  updateSerial();
  mySerial.write(26);
  } else {
    digitalWrite(3, LOW);
  }

  if (milli <= millis() - 500) {
    updateSerial();
    milli = millis();
  }
}

void updateSerial()
{
  //delay(300);
  while (Serial.available()) 
  {
    mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(mySerial.available()) 
  {
    Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
  }
}

The SIM800L runs off a separate power supply with a decoupling cap of 100n and the grounds are commoned.

user10285: Here is a good documentation: https://lastminuteengineers.com/sim800l-gsm-module-arduino-tutorial/ -- 
Did you add a voltage divider to the RX pin? 
If Arduino drive 5 Volt to the module's pin, the module might be destroyed. 
The module has an automatic baud rate detection, so 115200 baud should be OK. 
Do you configured your terminal with 115200 baud for the serial communication?   
While sending, the Software Serial switches off all interrupts to make the micro clock more accurate. That might distort a timer interrupt for the hardware serial (but I don't really know, whether it needs one). 
You changed the pins 2 and 3 for software serial (as from the example) to SoftwareSerial mySerial(11,10); Did you add the connections to the right pins. (RX?? <--> TX??)? 
And last but not least. The axample uses 9600 baud for both serial interfaces. Perhaps your decision 115200 is too high. 

60923: <p>I am successfully communicating with my SIM800L from my UNOR3 aside form some errors. But the biggest problem is with the serial monitor.</p>

<p>Responses from the SIM800L are somewhat obfuscated in that some characters are randomly wrong. See a snippet below:</p>

<pre><code>Initializing...

OK

+C⸮T'⸮⸮b⸮j


OK

88l4110068165694746f

O⸮

+CQEG:Y⸮⸮H⸮⸮*⸮⸮C⸮
ERROR
⸮&gt; H⸮⸮*⸮⸮
F⸮ROR
H⸮⸮
ERRO
H⸮⸮*⸮⸮

</code></pre>

<p>My code is also below.</p>

<pre><code>#include &lt;SoftwareSerial.h&gt;

//Create software serial object to communicate with SIM800L
SoftwareSerial mySerial(11,10); //SIM800L Tx &amp; Rx is connected to Arduino #3 &amp; #2

void setup()
{

  pinMode(2, INPUT);
  pinMode(3, OUTPUT);
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(115200);

  //Begin serial communication with Arduino and SIM800L
  mySerial.begin(115200);

  Serial.println("Initializing...");
  delay(1000);

  mySerial.println("AT"); //Once the handshake test is successful, it will back to OK
  updateSerial();
  mySerial.println("AT+CSQ"); //Signal quality test, value range is 0-31 , 31 is the best
  updateSerial();
  mySerial.println("AT+CCID"); //Read SIM information to confirm whether the SIM is plugged
  updateSerial();
  mySerial.println("AT+CREG?"); //Check whether it has registered in the network
  updateSerial();
  mySerial.println("AT+CMGF=1"); // Configuring TEXT mode
  updateSerial();
  mySerial.println("AT+CNMI=1,2,0,0,0"); // Decides how newly arrived SMS messages should be handled
  updateSerial();
  mySerial.println("AT+CMGS=\"+447518103652\"");//change ZZ with country code and xxxxxxxxxxx with phone number to sms
  updateSerial();
  mySerial.print("System on!"); //text content
  updateSerial();
  mySerial.write(26);

  delay(1000);
}


int milli = millis();
void loop()
{
  if (digitalRead(2) == HIGH) {
    digitalWrite(3, HIGH);
  mySerial.println("AT+CMGS=\"+447518103652\"");//change ZZ with country code and xxxxxxxxxxx with phone number to sms
  updateSerial();
  mySerial.print("Button Pressed!"); //text content
  updateSerial();
  mySerial.write(26);
  } else {
    digitalWrite(3, LOW);
  }

  if (milli &lt;= millis() - 500) {
    updateSerial();
    milli = millis();
  }
}

void updateSerial()
{
  //delay(300);
  while (Serial.available()) 
  {
    mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(mySerial.available()) 
  {
    Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
  }
}
</code></pre>

<p>The SIM800L runs off a separate power supply with a decoupling cap of 100n and the grounds are commoned.</p>
 10285: <p>Here is a good documentation: <a href="https://lastminuteengineers.com/sim800l-gsm-module-arduino-tutorial/" rel="nofollow noreferrer">https://lastminuteengineers.com/sim800l-gsm-module-arduino-tutorial/</a> -- </p>

<p>Did you add a voltage divider to the RX pin? 
If Arduino drive 5 Volt to the module's pin, the module might be destroyed. </p>

<p>The module has an automatic baud rate detection, so 115200 baud should be OK. 
Do you configured your terminal with 115200 baud for the serial communication?   </p>

<p>While sending, the Software Serial switches off all interrupts to make the micro clock more accurate. That might distort a timer interrupt for the hardware serial (but I don't really know, whether it needs one). </p>

<p>You changed the pins 2 and 3 for software serial (as from the example) to <code>SoftwareSerial mySerial(11,10);</code> Did you add the connections to the right pins. (RX?? &lt;--> TX??)? </p>

<p>And last but not least. The axample uses 9600 baud for both serial interfaces. Perhaps your decision 115200 is too high. </p>
