Before I get into the tests an update about the last week. I have a lot of footage and pictures from testing to go through still and make some videos and more logs because I was crunched for time to make the 3 prototypes to send in for the best product competition and didn't have time to edit the videos and write up the projects logs so expect a lot of stuff this weekend.
This set of tests analyzes the current consumption of the device with various beacon rates advertising only on channel 39. The test was conducted by running the device from a capacitor and calculating how much energy was drained from the capacitor by measuring the voltage change. This information was then converted to a average current consumption figure.
Above you can see a picture of the setup. I use the stopwatch on my phone to measure the time elapsed, a Fluke 87V to measure voltage, and a 1000uF cap as the power storage. The test is started by unplugging the USB power to the circuit. We can use all this information to calculate current consumption by the following formulas:
First we calculate power consumption by taking the difference of the energy in the capacitors divided by elapsed time.
Next we estimate the power drained by the meter at the low voltage point so our estimate is conservative.
We subtract the estimated meter power consumption to get the power consumed by the device under tests.
Finally we divide power by the midpoint voltage of the test to calculate average current consumption
Plugging in for everything we end up with for the 10.24 second interval case:
So for a advertising interval of 10.24 seconds we get an average current consumption of ~3uA.
Above are the plots for the current consumption. By inverting the advertising interval to get advertisements per second we get a graph that has a linear relationship. Running a linear regression on that we get:
So now we can estimate current consumption from the advertisement interval. The correlation coeffecent for this line is 0.999489068 so it is a very good fit.
In addition to testing current consumption I also did a bit of testing how hard it was to connect to the devices at each advertisement interval. Unfortunately it turns out to be nearly impossible to connect to a device at distance with an interval over 1 second. To maintain the low 10uA current consumption and improve range I am going to modify the firmware to beacon with a 320mS interval every 120 seconds for 10 seconds. This means to connect to the device you will have to wait up to 110 seconds for the packet burst. But once connected communication is continuous so its easier to find the device from that point on.
Another thing I will have to test is to see how multi-channel advertising works. It might send a packet on each of the 3 advertising channels each interval in which case that would triple the current consumption. If this is the case I will have to either decrease the interval to 1 second or only do the burst every 6 minutes to maintain the 10uA. The problem with the single channel advertisements is that when and Android device scans for BLE devices it seems to linger on each channel for several seconds rather than rapidly jumping which means it could miss the entire burst on a single channel. You can see this behavior in the image below.
The blue line is the signal from the r6 prototype. The red from r2. r2 is using a 320mS interval on all advertising channels while r6 is using a 320mS interval on only advertising channel 39. you can see the large 7 second gaps in reception where it stops scanning channel 39.
And finally a close up of the first revision 6 prototype fresh off the soldering iron.