SIM808 GSM+GPS module sleep and power usage? - arduino

I'm using a SIM808 GSM+GPS module on a LoNet breakout board: http://www.seeedstudio.com/wiki/LoNet_-_GSM/GPRS/GPS_Breakout with an Adafruit Trinket Pro 3V, and everything works.
I've taken care to build in power save modes in my application. I can enable the SIM808 slow clock, so it can sleep with DTR=1, which I call "light sleep" mode. Also there is a "deep sleep" mode, where I set AT+CFUN=0 to further decrease functionality of the SIM808, and power usage. (During deep sleep the RF circuits are off, so no SMS reception..)
I've measured power consumption by measuring the voltage across a 1 ohm resistor in series with the battery.
During normal GSM operation 19-20 mA is used; with slow clock enabled also 19-20 mA, in deep sleep 18-19 mA.
Switching on GPS makes the board use 43-44 mA. I see no difference while acquiring the GPS fix, or when a fix is reached. The wiki page (above) says that continuous tracking takes 24 mA, but apparently that is on top of the 20 mA when just the GSM is used. Indeed 20+24 is 44 mA, the value I measure.
I'm quite disappointed that the sleep conditions don't seem to save any power!
Should I do things like remove the green power LED? The design drawing shows a 470 ohm R in series, so that could save ca 8 mA?
The board does have a battery charging circuit; could that be responsible for the 20 mA base current? When I power down the SIM808 only ca 0.02 mA is used, so I wonder if there is an external circuit responsible for the 20 mA base current. The SIM808 Hardware Docs spec a power consumption of around 1 mA only! - I wish!

I had the same problem like you but on another board.
As you can see at the top of the board below the right one of the two SMA connectors it says: "Active GPS Antenna". And thats the solution to the problem.
When I disconnected the GPS antenna the current dropped to ~670µA without LEDs and when slowclock (AT+CSCLK=1) was enabled, AT+CFUN=0 and DTR pin was high (eg. 3.3V).
So if you want to really make your SIM808 module low power you have to switch the active GPS antenna off with a PMOS.
This image shows the active GPS antenna circuit of my SIM808 Module.
EDIT:
Damn I don't know how to delete or edit a comment... And I can't post more than 2 links, please go to the next links by yourself:
This wiki page (wiki.seeedstudio.com/wiki/LoNet_-_GSM/GPRS/GPS_Breakout) of the LoNet states that: "GPS Antenna: this is an uFL GPS antenna connector. You can connect either passive or active GPS antenna to it. Active GPS antenna runs at 2.8V voltage."
And the schematic (wiki.seeedstudio.com/images/3/37/LoNet_808_Schematic.pdf) shows in the top right corner, that the GPS connector is prepared for an active antenna (the inductor in series with the current limiting resistor).
So if you don't have an active antenna you maybe can just cut the trace between the inductor and the GPS connector.
I don't know what will happen when you are using a passive antenna, you have to try it yourself.
Good luck!

Related

Max TX power Classic bluetooth for ESP32

I have been using esp32 for some projects.
Now i want to include classic bluetooth with a serial profile for one of our old projects.
In theory ESP32 is class 1,2,3 Bluetooth and in theory it supports 100meters.
I have been trying to raise the TX power for bluetooth playing with function esp_bredr_tx_power_set.
I have been able to raise it a bit passing params:
esp_bredr_tx_power_set(ESP_PWR_LVL_P9,ESP_PWR_LVL_P9);
But it is not enough. I have another bluetooth class 1 device with serial profile with more power (one from bluegiga).
Power consumption is not a problem in this project but distance is critical.
Is it possible to raise the power of classic bluetooth more on ESP32?
To check that power is assigned right, i used the get fuction
esp_power_level_t min,max;
esp_ble_tx_power_set(ESP_BLE_PWR_TYPE_ADV,ESP_PWR_LVL_P9 );
esp_bredr_tx_power_set(ESP_PWR_LVL_P9,ESP_PWR_LVL_P9 );
delay(1000);
esp_bredr_tx_power_get(&min,&max);
Serial.printf("min %d max %d",min,max);
The pause is used to be sure that power is changed (if you do it without delay, you see the old value). Probably 1s is too much, but this is just a test.
Thanks.
The highest TX output for an ESP32 is +9dbm, which falls in-between BT class 1 (+12dbm) and class 2 (+4dbm). So you have what it seems already set your TX power output to the maximum. It's not clear if you are using an PCB antenna or an external antenna, the latter will of course increase the range.
For the different BT power classes see this link
See Espressive document (scroll down to section with ESP_PWR_LVL_P9)

What temperature to set a cooling system for a arudunio?

I'm building a cosplay prop for a friend that uses an arudunio Uno. The UNO will be kept inside a black PVC box with little ventilation and taken to comic cons. So it's going to get hot at times. I've never really built gaming PCs or anything with batteries and I'm not sure what temperatures are ideal to run at so my guesses are just based on a google search.
My question is:
If I place a temperature sensor next to the UNO and program it to start a fan at a given temperature, What temperature would be a good choice?
I was thinking 35 degrees with an alarm going off at 70 degrees telling him to turn it off.
Also, there will be two other batteries one 3.7V Li ion phone battery that powers the chips and a small audio amp with a 18-volt (May change) drill battery powering a DC motor. Both in different locations.
For this, I was thinking I would set a larger fan to start at 30 degrees with an alarm at 55.
FYI this will be programmed on a separate ATTINY chip.
I would recommend keeping it below 125C maximum (that is the ATmega 328p's maximum temperature rating). However, I have never seen an UNO get that hot. If you are concerned though, aim for as cool as possible with a maximum temperature of about 80C

Using an Arduino as EMG sensor

When I search online for EMG sensors, I often see these sensors are just made of a few transistors, resistors and sometimes diodes. Also I once read on a site that EMG sensors are some kind of modified voltmeters. But while I managed to make a voltmeter from an Arduino, I haven't been able to make an EMG sensor from an Arduino.
Does someone know whether it is possible to make an EMG sensor from an Arduino and how they did achieve this?
I think the biggest problem here is that of dynamic range. EMG signals are AC voltages typically in the low mV range and would need a gain of 100 or so to get them up to +/-2.5V, then a simple offset circuit to convert that to 0-5V for the Arduino analog inputs. However, that's not the whole story, since the small EMG signals can ride up and down on large low-frequency background voltages. Your AC amplifier would need a high-pass filter to remove those, or they could drive it off-scale which would prevent the EMG from getting through. If you reduce the gain to keep things in range, the EMG will be a rather small part of the 10-bit ADC range on the Arduino.
So the thing to ask is what is the point of using the Arduino in the first place? If you are going to connect it to a computer in order to look at the EMG signals, then why not just skip the Arduino and use the computer's sound card? The Mic input probably has enough gain already, and you get at least 16-bit resolution to handle any large non-EMG background that wasn't filtered out.
IMPORTANT! EMG measurements require direct electrical connection to the body. For safety, you should make certain that your recording equipment is electrically isolated. If you use only a standalone Arduino, you should power it from batteries. If you use a computer, it should be a laptop running on batteries, with no other connections to ground.
I often see these sensors are just made of a few transistors,
resistors and sometimes diodes.
That's true for pretty much all electronics devices...
Does someone know whether it is possible to make an EMG sensor from an
Arduino and how they did achieve this?
You cannot build an EMG sensor from an Arduino. But you read sensor values with an Arduino either through serial interfaces or by measuring voltages.
With a bare Arduino you can neither measure negative voltages nor can you amplify small signals. (we're in the µV range here...)
Just buy something ready or learn more on electronics

5 volts to breadboard not working

I am trying to verify I have power and verify positive and negative wires from cyberpower plug. I can't get this led to light up. I am going to attach two pictures one of the breadboard setup and one of the power module. The power module has a sliding switch that I have set to 5 volts. The resistor is 680 ohm the power unit is up to 1300 mA.
The long leg of the led is plugged in next to the resistor. I have switched the black and red from positive to negative on the board.
I know this is probably a dumb question but we all have to start somewhere.
Thanks
Mark
Some breadboards have gaps in the middle of the power rails that need to be jumpered. Use a DMM to verify that this is the case on yours.
Well one multi - meter later I discovered that the 5 on the slider of the power supply must have been .5 because when set to 4.5 higher up the scale the multimeter shows 5 volts and everything works. I now have a esp8266 running from a nodemcu .9 devboard running an mqtt client working off the breadboard power subscribing and publishing. which was todays goal.
Thanks everyone.

Power problems stacked Arduino shields

I have a weird problem. I am currently building a BB-8. Therefore, I am using an Arduino Uno. On top, I have stacked an Adafruit Motor Shield v2.3 and, again, on top of this, I have stacked the Sparkfun USB Host Shield. The Arduino is powered by a 9V-Block battery, the motors are powered separately by two 18650 Li-Ion batteries. To control the two Pololu motors, which have a stall current of 1.6 amps each, I use a Xbox 360 wireless controller, where the receiver is connected to the USB Host Shield.
Now to my problem. Every seems to work fine, until i cover everything with a styrofoam hemisphere. Yes, you've read right. If that happens, the controller signals is lost and does not connect again, unless I restart the Arduino. I have uploaded a small video on youtube, where you can see the problem.
I guess, this is a power problem, since this issue does not occur, when I connect the Xbox receiver to my Mac. Has anyone an idea, how to solve this problem?
I already tried another power source. And the USB host shield should give enough power, since the specs are saying, that 500 mA is no problem, and hit is exactly the USB 2.0 spec. The combination of the shield shouldn't be a problem, too. I carefully chose this shields, because the motor shield is just using the pins A4 and A5, the USB host shield is using some of the digital pins, so I think there is no interference.
Thank you for your help.
EDIT
I have tested it a bit more now and i think i can reduce the probable reasons. First, i tried some other power supplies, from AA batteries on the VIN pin to external power adaptors. Next, i tried other xbox receivers and controllers. I also tried a playstation 3 controller with a Bluetooth dongle. Nothing solved the problem. I also covered the Arduino with other things than styrofoam, like a garbage can, cardboard and some metal box. This worked, so the problem was only with styrofoam. Now i haven't covered the Arduino, but i slowly got closer. About 20 cm from the Arduino, it stopped working. My clue: static electricity. Do you think this can be a problem? And if yes, how can i solve this?
Try use single battery + separate voltage regulators for every load. Otherwise if one of the batteries discharges while other are ok, it can take all power of the system, something like short-circuit. Also you can receive a trouble if do error in ground connections.
Select good battery, which can provide enough power. If cant find a battery which can supply enough current think about using low current batteries in series to achieve extra voltage. Then reduce voltage using dc-dc step down converter.
For example if you have a battery of 24V which provides 1A (power p1 = 24*1). It can provide 5A if reduce the voltage to 5V using dc-dc. (power p2 = 5*5). Because p1*h=p2, where [h=0.8 - efficiency].
So, I solved the problem. As is mentioned in my question, the problem was static electricity. I primed the styrofoam sphere with some special primer to make the styrofoam a little more stable and so on. That's it. Luckily I didn't touch the Arduino with the sphere. I think it would have damaged the Arduino.

Resources