0

I have a GSM shield for my arduino and am wondering the most efficient way to receive and send data to the cloud.

The specific project I am looking to accomplish is starting my car from a web browser (or custom built ionic mobile app) that will send data to my GSM shielded arduino and the arduino then "press the button" of an already installed remote car starter (which is all probably in the car's trunk).

What is more power efficient, sending and receiving a SMS (text message) or sending and receiving data via GPRS?

What is best when considering strategies like sleep, or deep sleep cycles?

  • I'd use Bluetooth instead. – Gerben May 25 '16 at 18:46
  • @Gerben: Thanks Gerben, but the range of Bluetooth is too small for the project's needs. The GSM shield will enable me to start my car from any where in the world, where as bluetooth would limit me to to a range of 10 to 100 meters depending on the Class (1,2, or 3). – aero May 25 '16 at 18:52
  • 1
    My gut response is SMS, just because it's a simpler protocol. Not a scientific answer... – Malachi May 25 '16 at 19:19
1

Looking at it logically SMS is probably the most power efficient method.

The thinking is this:

With SMS:

  • The shield sits there connected to the mobile network doing nothing much
  • An SMS is sent by you which travels through the mobile network
  • The SMS is sent from the mobile network to your GSM shield which then wakes up and does things with it
  • The shield sits there connected to the mobile network doing nothing much

With GPRS:

  • The shield queries an on-line service to see if a request is available
  • The shield queries an on-line service to see if a request is available
  • The shield queries an on-line service to see if a request is available
  • The shield queries an on-line service to see if a request is available
  • The shield queries an on-line service to see if a request is available
  • The shield queries an on-line service to see if a request is available
  • The shield queries an on-line service and sees a request is available
  • The shield downloads the request
  • The shield acts on the request
  • The shield goes back to querying the on-line service
  • The shield queries an on-line service to see if a request is available
  • The shield queries an on-line service to see if a request is available
  • The shield queries an on-line service to see if a request is available
  • ... etc ad nausium ...

As you can see with SMS the onus is on the mobile network to send the data to the shield, whereas with GPRS the onus is on the shield to keep querying an on-line service to see if there is any requests to handle. There is no way of you sending data to the shield directly (indeed, most GPRS services include at least one layer of NAT gatewaying). So your shield has to be active all the time and constantly looking at something online - not only power hungry, but potentially financially expensive too.

  • There is no way of you sending data to the shield directly. I'm not sure if this is entirely correct. Though you have to occasionally connect to the server to let it know what your IP is, and to keep the port open. And that is where things get messy, as none of the phone networks provide any data on these things. – Gerben May 26 '16 at 13:27
  • If you are behind NAT, and chances you are (I am right now, on 4G) there is absolutely no way to get in from the outside. – Majenko May 26 '16 at 13:44
  • @Majenko: Thanks for you response Majenko. Are you saying that protocols like MQTT (over TCP which simply keep an open connection without polling) won't work with GPRS? Are you suggesting that, through a GPRS connection, you can't "Push" messages to the arduino, but can only "Pull" messages? I would be curious as how iOS and Android do "Push" notifications, as is definitely seems like a real "Push", not a "Pull". – aero May 26 '16 at 17:19
  • For those kind of connections you need a proper network connection. Whether or not you can do it with a GPRS shield is questionable and will depend on what the shield is capable. In general I don't think it is something that they do provide. Regardless, maintaining open connection whether you are using it or not will still be expensive on power. – Majenko May 26 '16 at 17:23
  • 1
    Yes but generally they are mainly listening. SMS is much lower bandwidth than the likes of 3G and uses less power to maintain a connection. It is also more reliable with poor signal levels. – Majenko May 26 '16 at 17:33
1

You could theoretically use a SIP Server in the middle to keep the session alive over GPRS or higher. And there are techniques you can use to make it as power efficient as can be, depending on your application (which is a rather simple one I assume with little data throughput).

However, as @Majenko stated above, it may not be as power efficient as SMS.

That said, there may be other considerations, such as cost of sending/receiving SMS messages that may matter as you weigh the totality of requirements for your application.

I haven't worked personally on a Particle board (particle.io) but they do have a MCU/3G board that provides a certain amount of free (as in no $) bandwidth per month that might be a reasonable solution to consider for your application.

Please keep us posted. I'm considering something similar myself.

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.