Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Here we'll attempt to document the current consumption, which is by far the most important aspect of low-power IoT design. As you might know, cellular is usually very power-hungry and can draw much more than desired, but in this case we're using the low-power LTE CAT-M and NB-IoT standards which are optimized for IoT, so the numbers look a lot more impressive than 2G, 3G, or traditional 4G LTE.
In this tutorial we'll be testing a Botletics SIM7000A shield operating in the United States on the AT&T LTE CAT-M1 network. NB-IoT theoretically draws even less power so these numbers should be a good benchmark for your reference.
NOTE: As of 6/7/2018 I have also tested the SIM7000G shield and ended up with the same results as the SIM7000A (expected).
For current measurements we'll be using an official EEVBlog uCurrent GOLD precision multimeter in conjunction with a Sigilent SDS1052DL+ oscilloscope to measure current consumption as a function of time in various operating modes. AT commands were sent directly to the shield via USB and the shield was powered by a 3.7V/1200mAH LiPo battery (fully-charged). The output RMS voltage of the uCurrent was then measured by the oscilloscope to get the current in a 1mV/1mA ratio. NOTE: No Arduino or other microcontroller was used in an attempt to isolate and document the shield itself without other external factors (like 5V rail current, etc).
The following numbers are the current consumption levels that are listed by datasheets for the various components on the board:
The numbers below are from the hardware design document:
- Powered off: 7uA
- Power Saver Mode (PSM) mode: 9uA
- Sleep mode: 1mA
- Idling on LTE mode: 11mA
- GNSS active: 30mA
- LTE data (on LTE band B12): 167mA @ 23dbm, 109mA @ 10dbm
Since in our setup the 5V rail isn't even connected, the temperature doesn't affect our measurements at all, but for reference here are the the values from the MCP9808 datasheet:
- Operating: 200uA
- Shutdown: 0.1uA
During this test I'm leaving both the green PWR LED and blue NET LED enabled. You can disable the network status LED with the command AT+CNETLIGHT=0 but it normally pulses for a very short time when connected to a network. You can also customize the three different modes of operation of the LED (not connected to network, connected to network, and PPP communication) using the AT+SLEDS command. In the measurements below the NET LED is turned off so that there won't be intermittent pulses in the current from the NET LED.
Below are the measured values while connected to the AT&T LTE CAT-M1 network (LTE band 12). Please note that USB was connected for most of the test (except for testing when it was disconnected), so the current consumption values measured below include the USB current.
- USB connected + SIM7000 powered off (AT+CPOWD=1): 7.44uA (note: plugging/unplugging USB makes no difference on current when the modem is off)
- USB + SIM7000 powering on (pulsing PWRKEY low): Went to about 112mA for around 12s, then stabilized at 32mA (value below)
- USB + connected to AT&T LTE CAT-M1 network: 32mA (+CFUN: 1 and +CGATT: 1)
- No USB (disconnected) + connected to network: went from 32mA down to 12mA
- USB + connected to network + GPS enabled (AT+CGNSPWR=1): went from 32mA to 64mA
- USB + connected to network + data disabled (AT+CGATT=0): no effect (stayed at 32mA)
- USB + Minimum functionality mode (AT+CFUN=0): not connected to network but made no difference in current consumption. (I was shocked, maybe firmware issue)
- USB + Disable RF (AT+CFUN=4): again, made no difference at all!
- USB + Opening data connection (AT+SAPBR=1,1): went to ~116mA for about 17s then back down to 32mA
- USB + Sending data to dweet.io (HTTP GET request to "dweet.io/dweet/for/865235030022467?temp=611.31&batt=3600"): went to 116mA for about 12s then back down to 32mA (NOTE: it only starts drawing this current when running "AT+HTTPACTION")
- USB + Sending SMS text ("hello-world"): 116mA for about 10s
In this mode the module is still registered to the network and can receive text messages but significantly reduces power consumption. The module can enter sleep mode by the following steps:
- Run AT+CSCLK=1 (it won't sleep if set to 0)
- Disconnect USB (won't sleep with USB connected)
After disconnecting the USB connection the module should now draw about 1.5mA with the NET LED disabled (via AT+CNETLIGHT=0). There is no need to restart the module for this to take effect. However, the current consumption spikes to about 12mA every few seconds in this mode (see the e-DRX mode below, this frequency can be set).
In idle or sleep mode you can set the use of the extended DRX mode to set the cycle length of the network signaling and negotiation to reduce power consumption. (You can read more about it in section 5.3.5 in the Hardware Design document). Simply use the AT+CEDRXS command to set the cycle length (in seconds) to one of the following values (options 0-15):
- #0 - 5.12
- #1 - 10.24
- #2 - 20.48
- #3 - 40.96
- #4 - 61.44
- #5 - 81.92
- #6 - 102.40
- #7 - 122.88
- #8 - 143.36
- #9 - 163.84
- #10 - 327.68
- #11 - 655.36
- #12 - 1310.72
- #13 - 2621.44
- #14 - 5242.88
- #15 - 10485.76
For example, if we are in sleep mode and want a cycle length of 40.96s on LTE CAT-M, we can use the command AT+CEDRXS=1,4,"0011" (where 0011 is option #3 in binary) and the current should drop to about 1.5mA then spike 40.96 seconds later. If we send a text message to the modem it won't receive it until that spike, then the current consumption shoots up to about 89mA for about 10s before dropping back. To disable the e-DRX feature send the command AT+CEDRXS=0.
Power Saving Mode (PSM)
This mode allegedly draws only 9uA while remaining registered to the network and able to receive text messages as well, but this has yet to be successfully tested. The following procedure is supposedly what makes it enter PSM mode:
- Run AT+CPSMS=1 to enable PSM
- Restart module
The following list of current consumption values of the shield are inferred from the measurements above. Please note that your application may vary. All in all, the advertised current consumption in low power modes (off and minimum functionality, etc.) are accurate. However, AT+CFUN=0 and AT+CFUN=4 commands don't seem to affect current consumption, and the power saving mode (PSM) doesn't seem to work.
- SIM7000 module powered off: entire shield draws < 8uA on 3.7V LiPo battery
- Sleep mode draws about 1.5mA (including the green PWR LED, so probably ~1mA without it) and stays connected to the network
- The e-DRX settings can configure the cycle time of the network negotiation and save energy but also will delay things like incoming text messages depending on what the cycle time is set to
- Connected to LTE CAT-M1 network, idle: ~12mA
- GPS adds ~32mA
- Connecting USB adds ~20mA
- Data transmission over LTE CAT-M1 is ~96mA for ~12s
- Sending SMS draws ~96mA for ~10s
- Receiving SMS draws ~89mA for ~10s
- PSM sounds like a wonderful feature but has yet to work