Sim900a modem cannot init

The UNO has one physical serial port, which is connected to pins 0 and 1, and also to the USB connector via a TTL to serial chip.
This is the port that you are using to upload code, and to view your debug messages in your computers serial monitor.
You cant use this same hardware port for talking to a device like your SIM900 board, as the data meant for the serial debug monitor would get mixed-up with the commands being sent to the SIM900 - a bit like tow phone conversations taking place on the same line at the same time.

So, the solution is to create a simulated serial port using software, and use that for communication with your SIM900. This can use any two pins, provided they aren’t the two pins that are connected to the hardware serial port (0 and 1).

In addition, you have to give your software serial port a name that you can use to refer to in in your code. In this case you are using SerialAT, but, you are defining this twice:

The first of these commands is intended to be used with a Mega, Leonardo or Micro board, which have multiple hardware serial ports. As you are using an UNO you should comment-out this first #define statement.

Also, you have to tell your UNO to talk to the SIM900 at the same speed that the SIM900 wants to talk to the UNO (image a phone conversation again, where two people,ke are talking across each other at different speeds).
You do this with this line of code:

The problem is that the SoftwareSerial library has to simulate this serial port using processor time, and if you try to use a baud rate that is too fast, the slow processor and limited memory of the UNO can’t keep up. This means that it’s not recommended to use baud rates faster than 9600 for the software serial port.
Of course, as I said earlier, the SIM900 and the UNO have to be talking to each other at the same speed, so you’ll need to tell the SIM900 to use the baud rate of 9600 as well.
You’ll need to google how to do this, via an AT command.

Now you know why we don’t use Arduino UNOs!

Pete.