AN009 Firmware Examples

This application note has been split out into separate application notes.

Author: Rick

Publishing Examples, Sleeping Cellular Devices

There are three examples of periodically publishing data from an E Series, Electron, Boron, or B Series SoM that mostly sleeps.

Wake Publish Sleep Cellular

This example illustrates:

  • Checking that the battery has sufficient capacity to connect.
  • Sleep on multiple connection failure to preserve battery.
  • Hour sleep, uses hibernation (SLEEP_MODE_DEEP).
  • This example is best for long sleep times, 15 minutes or more.
  • Use SEMI_AUTOMATIC mode.
  • Stay awake for firmware updates (optional).
  • AN029 Wake, publish, then sleep for cellular devices provides an annotated code example for doing wake, publish, then sleep cycles with cellular devices.

Stop Sleep Cellular

This example illustrates:

  • Checking that the battery has sufficient capacity to connect.
  • Sleep on multiple connection failure to preserve battery.
  • 5 minute sleep, using stop mode sleep with cellular standby (SLEEP_NETWORK_STANDBY).
  • This example is best with short sleep times, under 15 minutes or if you want to be able to publish very quickly after waking up.
  • Customizable sending of device diagnostics.
  • Customizable software update behavior.
  • AN028 Stop mode sleep for cellular devices provides an annotated code example for using stop mode sleep with cellular devices.

EEPROM Samples

This is the most complicated example. It illustrates:

  • 5 minute sleep, using stop mode sleep with cellular standby (SLEEP_NETWORK_STANDBY).
  • This example is best with short sleep times, under 15 minutes or if you want to be able to publish very quickly after waking up.
  • Customizable sending of device diagnostics.
  • Customizable software update behavior.
  • Stores samples in EEPROM so they are preserved even if the connection fails.
  • Periodic sampling with minimal drift, even with connection failures.
  • AN030 Saving samples in EEPROM provides an annotated code example for using saving samples in EEPROM and publishing them when connected.