Operating System

The foundation of our firmware is the community driven open-source operating system RIOT. Oposed to bare-metal firmware, RIOT provides many out-of-the-box components that simplify developing platform-agnostic programs. Threading and IPC-primitives enable building multi-threaded applications. And an extensive list of OS modules and third-party library packages provides a wide feature-set for typical IoT applications.

Modules

The ECO-Box firmware consists of several modules that perform all the essential tasks of sensor measurements, data transmission, and power management. MCU peripherals, sensors, and network devices are accessed via platform agnostic interfaces.

Power Management

The integrated power management considers multiple aspects regarding assessment, prediction, and attribution.

image

It makes use of the self-measurement introduced on the hardware page to derive application-level insight of the power consumption. For that it combines physical measurements with metrics of the OS scheduler to attribute power consumption to different software components. Additionally, time series of charging and discharging rates are used for future energy availability predictions that allow fast adaptation to changing environmental conditions during runtime.

Sensing

As described on the hardware page, the default configuration of the ECO-Box employs sensors for temperature, humidity, atmospheric pressure, and particulate matter concentrations. For this the sensor drivers bmx280 and sps30 (or sds011) are needed.

The standard NMEA output of the GPS is parsed using the minmea package. GPS data is used for location as well as time synchronization of the RTC. The RTC will keep track of time even with disabled GPS to allow for lowest possible power consumption while still allowing precisely timed wake ups.

Communication

Network access is implemented using the GNRC LoRaWAN Network Stack of RIOT. All data is transmitted in binary encoded CBOR format using the TinyCBOR package. We use the community driven Things Network that provides collaborative network infrastructure around the world to get the data from the ECO-Box to our own backend server.