SIM800L GPRS module freezing Arduino

Go To Last Post
9 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hello,

 

I'm new to AVR Freaks forums and I'm sorry that my first post isn't something more constructive than a question.

 

Any help with this problem would be greatly appreciated.

 

I have two Arduino Mega boards sending weather information to my server. I noticed that in the low GPRS signal areas (60% and less) my Arduino will freeze when the SIM800L GPRS module turns on to send data (it turns on via n-channel mosfet).

 

I have solved this problem by making an external watchdog circuit so it restarts the whole thing if this happens but I don't see this as a solution. The one with 95% signal restarts once every 24 hours as it should, but the one with 45% signal restarts about 4-5 times a day.

 

So I was wondering if anyone else encountered this problem and if I could get some hints on solving this issue.

 

Thank you and best regards!

Last Edited: Thu. May 18, 2017 - 07:11 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1

Zell89 wrote:
my Arduino will freeze when the SIM800L GPRS module turns on to send data

Sounds like a power supply issue, please tells us more about how your project is powered, Pictures would help as well.

 

Jim

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Found this in the H/W manual for the 800L

 

 

Does your power supply design provide the needed power?

 

Jim

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I'm sorry but i forgot to take pictures :(

 

It's powered by a 2.4A cell phone charger since the SIM800L can peak at 2A for a few uS. There is a 6800 uF low ESR capacitor across Vin and GND of the SIM800 module.

 

I also think that this is a power problem. If I understand correctly: if the signal is weaker the device will draw significantly more current? Could this high current draw of the GPRS module freeze the Arduino board? Since the GPRS module remains on but Arduino freezes and doesn't turn it off.

Last Edited: Thu. May 18, 2017 - 07:28 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I would think that would do the trick, but a picture would be helpful.  What Arduino board are you using?  Uno? Pro-mini?  Self-made?

How do you handshake your comm's?  Are you using RTS/CTS or Xon/Xoff, or just waiting a fixed time when you send AT commands to the 800L?

 

Jim

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Zell89 wrote:
if the signal is weaker the device will draw significantly more current?

Correct.

GSM/GPRS incorporates power control - so the transmit power is turned up when the link is "poor".

 

Could this high current draw of the GPRS module freeze the Arduino board?

Quite possibly - it could cause a so-called "brownout".

 

If the power supply is poor, it could also cause the GSM module to misbehave - and, if your code is not well-designed to cope, it may lock up.

 

Are you properly handling all AT Command responses - or are you just waiting for arbitrary time delays?

 

Waiting for arbitrary time delays is just asking for a wreck in "marginal" situations ...

 

http://www.avrfreaks.net/comment...

 

http://www.avrfreaks.net/comment...

 

 

Last Edited: Thu. May 18, 2017 - 09:56 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

ki0bk wrote:
I would think that would do the trick, but a picture would be helpful.

Indeed.

 

Having the bulk capacitance is one thing; having it correctly wired - with good, solid, low-impedance connections - is another!

 

Both ground & supply need to be solid.

 

If there are multiple grounds & supplies, they all need to be solid!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1

awneil wrote:
Quite possibly - it could cause a so-called "brownout".

As well as problems from the higher supply current, there could also be EMI problems from the higher radiated power 

 

Again, pictures might throw some light here ...

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

ki0bk wrote:

I would think that would do the trick, but a picture would be helpful.  What Arduino board are you using?  Uno? Pro-mini?  Self-made?

How do you handshake your comm's?  Are you using RTS/CTS or Xon/Xoff, or just waiting a fixed time when you send AT commands to the 800L?

 

Jim

 

Sorry to say but I'm just waiting 3-5 seconds between sending AT commands. I wasn't aware of the handshake procedures. Will definitely check it out.

 

awneil wrote:

Quite possibly - it could cause a so-called "brownout".

 

If the power supply is poor, it could also cause the GSM module to misbehave - and, if your code is not well-designed to cope, it may lock up.

 

Are you properly handling all AT Command responses - or are you just waiting for arbitrary time delays?

 

Waiting for arbitrary time delays is just asking for a wreck in "marginal" situations ...

 

http://www.avrfreaks.net/comment...

 

http://www.avrfreaks.net/comment...

As I said I'm definitely asking for trouble.

To be honest I'm having big problems parsing GPRS module responses, it's a lack of experience and knowledge. I'm working on it big time and I hope to be able to handle it soon.

As for the brownout, that didn't cross my mind before. Right now i don't have a digital scope (only analog) but i will get one soon and then I'll be able to better see the voltage drops.

 

awneil wrote:

Indeed.

 

Having the bulk capacitance is one thing; having it correctly wired - with good, solid, low-impedance connections - is another!

 

Both ground & supply need to be solid.

 

If there are multiple grounds & supplies, they all need to be solid!

For the first two devices I actually made my own two layer board. It used copper isolation to make traces (24 mil) and the bottom layer was ground. Supply traces were 24 mil.

So when this problem showed up I thought that my design was bad and I switched to genuine Mega board (and that's how it's been working for the last few weeks).

 

Thank you guys very much for trying to help.

Last Edited: Fri. May 19, 2017 - 05:55 PM