Resetting SIM900 modules

Hi All,

I am working with a iComSat V1.0 Shield with a SIM900 module on it and have a major problem working out how to control it's power and reset from within software.

When the stack is initially powered up the Shield goes into a standby mode and requires you to press the power button on the shield to fully power up.

Secondly, when the Arduino is reset, the Shield is not, again it has its own reset button.

Has anyone found a way to override these buttons in software or, if need be, hardware?
As the Arduino is running at 5V and the SIM900 at 3.3V I am reluctant to try and override the buttons with I/O pins directly.

The application calls for the product to be inside a locked box so having to push buttons renders the shield useless in this application.

Not familiar with the shield, do you have a link?

It's this one, although I'm not sure which vendor it came from, It was delivered with the rest of the kit to be used.

SIM900 GSM/GPRS shield for Arduino - IComSat v1.0
http://iteadstudio.com/store/index.php?main_page=product_info&products_id=413

Edit: I am using it with the MEGA and driving it with Serial2, rather than soft serial, and have additional spare pins and a soldering iron if anyone considers a Hardware patch is necessary and feasible.

When the stack is initially powered up the Shield goes into a standby mode and requires you to press the power button on the shield to fully power up.

maybe you can use a free digital pin to connect to this button to do it programmatically. Keep pin LOW for 200 millis or so ?

checking the schematics ...

As I interpret the schema you can connect a digital LOW to the RESET and PWR of the SIM shield to signal it. You have to look where to connect..

As I interpret the schema you can connect a digital LOW to the RESET and PWR of the SIM shield to signal it.

That was my initial thought too, but then I realised that the 5V logic level on the Arduino Pins would probably blow the 3.3V input pins of the SIM900. I have never worked with devices at different Voltage levels before so thought I should ask for help rather than risk letting the smoke out :slight_smile:

To be sure, use a transistor as a switch controlled by an Arduino out.

bit like this - http://www.azega.com/controlling-a-stepper-motor-with-an-arduino-part-2/ -

Be aware that polarity flips.. - see picture just below the middle -

Thanks, I was rather hoping I could do it with a voltage divider rather than transistors, but I guess if the job is worth doing I may as well do it properly. It still rules out this board for production units though.
Is there a 3.3V version of the Arduino?
But then I will have problems interfacing to other devices i suppose :slight_smile:

I'm not sure why you want to reset the SIM900 when the Arduino resets but.... what you can do is include the AT command to power the shield down in your Setup function and then turn the power on using a digital pin through a transistor.

Sparkfun sell a non-expensive "Logic Level Converter" to "connect a 3.3V device to a 5V system".

Hi under http://www.open-electronics.org/arduino-gsm-shield/
you can find the schematics how connect the SIM900 with Arduino
and here
Google Code Archive - Long-term storage for Google Code Project Hosting.
find the library

OpenElectronics:
Hi under Arduino GSM shield - Open Electronics - Open Electronics
you can find the schematics how connect the SIM900 with Arduino
and here
Google Code Archive - Long-term storage for Google Code Project Hosting.
find the library

Just curious, if one uses the arduino mini pro (3.3v) is the built-in controlled power supply. This should without modification be appropriate for the simcom900 chip (3v-4.8v), though it is on the low side is that okay? Also simcom seems to want 2A at peak (I presume for voice), but for web pages or sms, would the vcc from the arduino mini pro be sufficient?

When the stack is initially powered up the Shield goes into a standby mode and requires you to press the power button on the shield to fully power up.

Have a check in the library hosted at Iteadstudio.com (http://iteadstudio.com/store/images/produce/Shield/IComSat/GSM_Shield2.zip). In this library there is a function named TurnOn(long baud_rate) which can be used to power on the module. Basically, the code for turning on the module (inside the TurnOn function) looks like this:

#define GSM_ON 8

digitalWrite(GSM_ON, HIGH);
delay(1200);
digitalWrite(GSM_ON, LOW);
delay(5000);

But there is some error checking and setting up as well in this function which is nice, so the code above is just to switch the shield on.

/ruy

Hello all,

Did anyone have this problem:

GSM no response
Registration 0

Is there something else you have to do to get it to work?

Ecave

The logic level is 2.8V on the SIM900. Don't simply connect without checking the SIM900 datasheet.

So if I'm using the Debug port I need to use a voltage divider on the RX Port of the gsm module?

I can receive messages in Hyperterminal but I get no response to the commands I send.

The Shield should already step down the voltages right?

ecave:
Hello all,

Did anyone have this problem:

GSM no response
Registration 0

Is there something else you have to do to get it to work?

Ecave

Yes, I keep getting this problem. Did you ever figure out how to resolve these issues?

If so, can you show me how you fixed it?

Havn't fixed it yet. Even by using the usb to serial 232 cable and a MX232N chip and using a voltage divider to decrease the input RX port of the SIM900 module its not responding to any of my AT commands. There's some additional underlying problem than it jsut being brought down to 2.8V. Unless I burnt the module already. But its doing the same thing as it did when I first bought it so its something im not doing right.

caroper:
Hi All,

I am working with a iComSat V1.0 Shield with a SIM900 module on it and have a major problem working out how to control it's power and reset from within software.

When the stack is initially powered up the Shield goes into a standby mode and requires you to press the power button on the shield to fully power up.

Secondly, when the Arduino is reset, the Shield is not, again it has its own reset button.

Has anyone found a way to override these buttons in software or, if need be, hardware?
As the Arduino is running at 5V and the SIM900 at 3.3V I am reluctant to try and override the buttons with I/O pins directly.

The application calls for the product to be inside a locked box so having to push buttons renders the shield useless in this application.

I could not get my shield working with the Arduino UNO. Are you able to provide any sample code as I keep getting "no response" and "SMS ERROR" when trying to send an SMS or do practically anything with it.

It powers on, I hold the PWR button so then the STATUS LED displays. NET flashes every now and then but like I said I just keep getting "no response" every single time. I'm running serial and gsm at 9600 baud rate if that helps.

How do you have the jumpers set?

fulvio:
I could not get my shield working with the Arduino UNO. Are you able to provide any sample code as I keep getting "no response" and "SMS ERROR" when trying to send an SMS or do practically anything with it.

It powers on, I hold the PWR button so then the STATUS LED displays. NET flashes every now and then but like I said I just keep getting "no response" every single time. I'm running serial and gsm at 9600 baud rate if that helps.

I'm not sure whether this is relevant to your problem. But, you might want to look at this thread: http://www.seeedstudio.com/forum/viewtopic.php?f=4&t=2203

I know you are using the IteadStudio version, but I think they are pretty similar and had that silly power switch thing (at least the 1st version of Seeedstudio's).