Deprecated: Return type of Requests_Cookie_Jar::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/share/wordpress-www.bakke.online/wp-includes/Requests/Cookie/Jar.php on line 63

Deprecated: Return type of Requests_Cookie_Jar::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/share/wordpress-www.bakke.online/wp-includes/Requests/Cookie/Jar.php on line 73

Deprecated: Return type of Requests_Cookie_Jar::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/share/wordpress-www.bakke.online/wp-includes/Requests/Cookie/Jar.php on line 89

Deprecated: Return type of Requests_Cookie_Jar::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/share/wordpress-www.bakke.online/wp-includes/Requests/Cookie/Jar.php on line 102

Deprecated: Return type of Requests_Cookie_Jar::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/share/wordpress-www.bakke.online/wp-includes/Requests/Cookie/Jar.php on line 111

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/share/wordpress-www.bakke.online/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 40

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/share/wordpress-www.bakke.online/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 51

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/share/wordpress-www.bakke.online/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 68

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/share/wordpress-www.bakke.online/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 82

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/share/wordpress-www.bakke.online/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 91
The Notwork – OppoverBakke

Solar powered ESP8266

Recently, I added solar power to one of my ESP8266 weather stations.

With the right hardware, this was actually remarkably easy to do.  To make things nice and easy, I ordered an Adafruit USB/DC/Solar Li-Ion/Li-Poly charger.  (Top-right in the photo)  These boards can take DC input from USB, a 2.1mm power jack or from wires soldered directly onto the board.  It will then both charge a Li-poly battery and power a load.  Whatever power is left over from powering the load will be used to charge the battery, and if the load draws more than what the solar panel can provide, the rest will be drawn from the battery.

Continue reading “Solar powered ESP8266”

ESP8266 WiFi power reduction – Avoiding network scan

Last month I wrote a series of posts about reducing the power consumption of the ESP8266, showing how I got the power consumption of a weather station down to 54 μAh per 5 minute reporting cycle.

At the end of that, I thought further improvements would be mainly tweaks and fine tuning, but Tobias wrote a comment explaining that it would be possible to avoid the initial network scan happening as part of the WiFi network association.  I’m happy to say that it is possible, and it works quite well indeed.

Continue reading “ESP8266 WiFi power reduction – Avoiding network scan”

Self-updating OTA firmware for ESP8266

As part of my recent projects, I have started including OTA firmware updates for my ESP8266 devices.  (Also known as FOTA)

Doing so is actually remarkably easy, thanks to the very good support for this exposed by the Arduino board support package.  The hardest thing actually becomes getting the web server side set up, rather than the changes required on the device itself.

Continue reading “Self-updating OTA firmware for ESP8266”

Further reducing power consumption on ESP8266

By carefully rearranging the operations my weather station does each time it wakes up, I have reduced the power consumption even further.

As it wakes up, it needs to make a series of measurements:

  • Read the current battery voltage
  • Read the current temperature from a DHT22
  • Read the current humidity from a DHT22
  • Read the current temperature from a BMP180
  • Read the current air pressure from a BMP180

The battery voltage is read through a resistor voltage divider feeding into the analog input of the ESP8266.  This reading is very sensitive, and a massive power drain from the WiFi function will bring down the measured voltage.  This can be mitigated by using capacitors to buffer the analog readings, but if I have a choice I’d still prefer to have the WiFi function off when reading this.

The rest of the readings, however, are digital and not that sensitive to overall system power drain, and that gives us an opportunity to do things in parallel.

Continue reading “Further reducing power consumption on ESP8266”

Reducing WiFi power consumption on ESP8266, part 3

Welcome to part 3 of this series on reducing WiFi power consumption on ESP8266 chips.

Earlier, I have established the baseline power consumption and shown how to reduce this a bit by disabling the radio when it is not needed.

This time, I’ll take it a step further by showing how to make sure the radio is needed for a shorter period of time.

Continue reading “Reducing WiFi power consumption on ESP8266, part 3”