2

I tried Google, I tried a bunch of forums and I searched here. This question needs a final answer:

Which GSM-shield is most efficient for GPRS communication?

Since Arduino is the amateurs best friend for home automation and IoT, an "efficient" shield has a very low power consumption.

I am currently developing a system that collects some data from different sensors at a place far, far away, with limited access to power (e.g. it has a very small solar panel and a battery). It is also in pocket-size which makes a car battery a bad option.

Anyway, this specific device reads these sensors every 20 minutes, and if there's a deviation since the previous reading it starts the GSM module to send the new data to my API.

SMS and call features are of absolutely no interest at all.

Since these GSM-power-absorbing-current-eating-devils really like power I must think outside the box and compare different alternatives. So besides the primary question in this post, is there any way you can limit the power consumed, for example by limit the connection speed or anything like that? I'm using a M590 module at the moment, and that beast can eat around 2A if it's hungry.

Thanks in advance :)

1

Three main things come to mind here...

Overall hardware power consumption: if you can make the arduino sleep for those 19ish minutes and are willing to do some of the things below/linked. Adding a RTC module using the alarms to trigger a GPIO to wake the arduino might be something depending on your hardware options as well.

Software / clock speed / timing: having the perfect code will make all the difference here as well. if your test code takes say 30 seconds to wake up, read the sensors, arrange the data, wake up gprs and transmit then fall asleep again. that might be pretty good. But say for example FONA shields have a 7second wake up.. This time can be used to sample sensors and arrange the data. Then transmit straight away when it wakes up.. could save a few seconds. also switch it off asap before any other code n so on.

GPS/GPRS Reception: If you can establish a connection quickly, you will be able to put it all back to sleep quicker and draw less power. Also possibly pre-select your providers baud rate to stop it trying and waiting.

As for point 1 above,

If you are powering it via the DC jack, then it is simply using a regulator (at least on the arduino side) that is not efficient (7805)...

So one suggestion is to get a 5v switching power supply and power it via the header pins or cut/splice a usb cable. this could gain you about 20% give or take.

Finding power hacks and running mini arduino's and alternatives can get you down even lower on power consumption.

I'm not going to give references from these listings, there just a quick few results. but basically from memory and glance its a case of removing resistors/regulators/redirecting/modifying/all that stuff and then also some software hacks along with changing the clock rate as well.

https://playground.arduino.cc/Learning/ArduinoSleepCode

http://www.home-automation-community.com/arduino-low-power-how-to-run-atmega328p-for-a-year-on-coin-cell-battery/

https://learn.sparkfun.com/tutorials/reducing-arduino-power-consumption

https://github.com/petervojtek/diy/wiki/Arduino-with-Very-Low-Power-Consumption

https://www.hackster.io/techduino/reducing-arduino-power-consumption-9bcaf1

Atmega328 with minimal circuit schematics Atmega328 with minimal circuit schematics

  • 1
    I didn't know this thread was still alive. This was a very good and thorough answer. I actually made a lot of tweaks since I wrote it, and switching power supply is one of them. Thanks for a great answer, and I hope someone else will also find it useful. Cheers! – swaglord mcmuffin' Jan 24 '18 at 7:31
1

GSM, by its very nature, is power hungry. Even the most "efficient" one will blow your power budget many times over. Since everything on GSM goes down the same digital transmission channel there would be no real difference between one with call and SMS and one without. It's all just data at the end of the day.

That said, the most efficient GSM module is one that consumes absolutely now power. And that is, at least for most of the time, perfectly possible. By making the Arduino control the power supply to the GSM modem it can be literally turned off until an update is needed to be sent. Worst case that is on for maybe a minute (give it time to register on the network and what have you) and then off for 19 minutes. That's only on for 5% of the time - less if there isn't a change since the last time, of course.

  • So with that information in mind, the shield of choice is nothing that actually needs deeper consideration? The key is therefore to shut it down when it's not in use - which I already do. I did have some hope that there's tweaks I just hadn't heard of yet :) – swaglord mcmuffin' Apr 5 '16 at 9:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.