SIM900 Power On/Off Circuit
The choice of external transistor is up to you -- it's added here (as in, on the datasheet) in case you are driving this module with some other I/O voltage besides 3.3V.

(I've edited this portion of the answer now that we know more about the SIM900 power-level).


For a BJT (as they've drawn), you will still be fine as your goal is to supply current to the base of the transistor for it to turn-on; it's a current-based device. I've suggested a MOSFET based solution below as I think that may be easier to understand. You will be fine with a 3.3V output; across 4.7K as they've drawn, you can source ~700uA to the base of the transistor, which should be more than enough. You could drop to a 1K resistor here with ease.
In this case, I believe that 47K is simply there to bias the base of the transistor to an inactive state in the absence of an active signal from the MCU. This is protecting against a floating base that could spuriously enable your module.


If it makes it easier for you to understand, you could easily replace that transistor with a BSS138 small-signal MOSFET and think of things purely in the voltage domain. For example, if you have a 2.5V MCU signal, when you drive that high, you will turn on the MOSFET and pull PWRKEY_B to '0', turning on the module. Here is a BSS138 implmentation:







simulate this circuit &ndash; Schematic created using CircuitLab

Once 'MCU_SIM900_ENABLE' is at least 1.5V (from datasheet margin), M1 will turn on and bring PWRKEY_B low, turning on the module. If you implement this, you can swap your power enable signal from any I/O voltage from 1.8V up through 5V.

R1 simply limits the amount of current that can flow out of the MCU I/O pin -- it's not strictly necessary, but it's good practice. If I placed a screwdriver from the right-side of R1 to GND, a maximum of 33mA will flow which is still quite a bit, but within spec for newer MCUs. Making R1 1k would only allow 3.3mA to flow, which is safe for almost any MCU.

R2 serves the same purpose as the 47k resistor from the datasheet -- if your MCU is in reset or otherwise floating that I/O pin, it biases M1 off and prevents the module from turning on. A net cost of 330uA is required to turn on the module now -- a trivial amount.