Power consumption of autonomous IoT devices

Evaluation of the power consumption of an autonomous IoT device

The popular Arduino Uno micro-controller  in combination with GSM/GPRS shields based on the SIM900 chip are quite popular as prototype platform for new developments or autonomous IoT systems. The main challenge to implement a true energy autonomous system is the considerable energy demand of this components if you use them out-of the-box. Data sheets and other supplier information give no or only limited information of the true power requirements.

An evaluation project from CADEMIS determined the energy requirements of a basic setup which might be a useful  indication for the design of related IoT systems.

System Setup:

In order to determine the energy consumption a simple system setup was used to determine the current at a 12 Volt battery.

Wiring Schema

A control program  implemented in the Arduino IDE  switches between four different states:

1: GSM board OFF, Onboard LED ON

2: GSM board OFF, Onboard LED OFF

3: GSM board ON, Onboard LED OFF

4: GSM board ON, Onboard LED ON

Between the states a delay of 10 seconds was implemented in order to get a steady reading on the Ampere-meter.


Arduino Source Code:

The source code for Arduino IDE 1.6.13 to switch between the four states mentioned above:

Source Code Power Consumption Evaluation

Measurement Results:

GSM Shield LED Current / mA Power / mW
OFF ON 54 mA 648 mW
OFF OFF 44 mA 528 mW
ON OFF 68 mA 816 mW
ON ON 80 mA 960 mW

Special remark on switching on the GSM Shield: When switching on the board (between state 2 and 3) the power consumption is between 70 mA and 220 mA for about 5 seconds. As mentioned in several posts in forums causes every switching operation a significant peak in current and power.


It is strongly recommended to switch off unused loads in order to reduce the power consumption by up almost 50% for a simple setup like this. This can double the operation-time between battery reloading or reduce the solar power requirements and costs.


  • Thanks to the girls and guys from Geeetech for publishing the basic information on how to control the SIM900 board:


Source Code: Evaluating Power consumption of Arduino Uno with Tinysine GSM/GPRS Shield

Arduino Source Code for Evaluating Power consumption of Arduino Uno with Tinysine GSM/GPRS Shield implemented with Arduino Ice 1.6.13:

[code language="cpp"]
* Evaluation of the power consumption off the TinySine GSM shield in combination with Arduino UNO
 sketch: _201612_TinySinePowerUpDown.ino
 created: 23.12.2016 Cademis

 Reserved Arduino Pins for TinySine GSM/GPRS shield
 D2, D3 for Rx, Tx
 D7 for Ring Indicator
 D8 power
 D9 reset

// Includes
#include "SIM900.h" // enable hardware features of SIM900 chip one TinySine Shield
#include <SoftwareSerial.h> //display system and debug output on PC
#include "inetGSM.h" // enable board as http client
//#include "sms.h" // enable SMS features of SIM900
//#include "call.h" // enable phone call features of SIM900

// Constants and Vars
const String versionStr = "AUT R1 001"; // firmware version
int LED_PIN = 13; // onboard LED

// TinySine GSM shield
const int gsmPowerPin = 8; //switch on/off power on D8
bool gsmON = false; // current power state of GSM shield

void setup()
 Serial.begin(9600); //Serial connection.
 Serial.println("Setup OK");

void loop ()
 Serial.println("Start Power up");
 Serial.println("Power up GSM");
 digitalWrite(LED_PIN, HIGH); 
 Serial.println("Power up GSM and LED ON");
 Serial.println("Start Power down");
 Serial.println("Power down completed - LED ON");
 digitalWrite(LED_PIN, LOW); 
 Serial.println("Power down - LED OFF");

// enable power supply for GSM board
bool powerUpGSM(int baudRate) {
 if (!gsmON)
 digitalWrite(gsmPowerPin, LOW);
 digitalWrite(gsmPowerPin, HIGH);
 digitalWrite(gsmPowerPin, LOW);
 if (gsm.begin(baudRate)) {
 gsmON = true;
 else {
 gsmON = false;
 return gsmON;
} // end powerUpGSM

// switch off GSM board
bool powerDownGSM() {
 while (gsmON) {
 digitalWrite(gsmPowerPin, LOW);
 digitalWrite(gsmPowerPin, HIGH);
 digitalWrite(gsmPowerPin, LOW);
 gsmON = false;
 return gsmON;
} // end powerDownGSM




Here you find the latest news on the CODESYS development system from 3S-Smart Software Solutions GmbH:

CODESYS for Rasbery PI

Now you can even run you PLC program on the popular Rasbery PI platform. Available from the CODESYS website you can download the required software for EUR 50. A limited free demo version works for two hours.


Have a look and enjoy the brave new PLC world. Looking forward to hear from your adventures and experiments with this new tool for (serious) Makers.


European Robotics Forum, 21 – 23 March 2016, Ljubljana

ERF 2016The next edition of the European Robotics Forum (ERF2016) will take place in Ljubljana, Slovenia, from the 21st to the 23rd of March 2016.

Invited are all engineers, researchers, managers and entrepreneurs active in the field of robotics.

Organized by  EUROBOTICS and sponsored by European Robotics players like Schunk, ABB and KUKA it will present the latest research and applications of the European robotics community.

Ljubljana Castle

Looking forward to see you Ljubljana!


Cademis Weather Monitor

CWM System OverviewCademis Weather Monitor is an environmental monitoring system which allows global access to sensor information from in and around your home.

Based on established communicaiton standards and with our Open Access policy it will enable everyone to build a solution step by step.

Follow these pages to get up and running  or let us know if you need a specific solution (special sensors, special data management, smart data analys, actuator interface) and we will try to help.