iot-dashboard
:::warning [UNTESTED] — v0.5 paper-correct
Builds clean on native_sim/native/64. Real-silicon bring-up + an MQTT broker round-trip land later.
:::
A live temperature / humidity / pressure dashboard with sparkline + MQTT/TLS publish — sensor → local screen + cloud telemetry, all on one E1M-AEN module.
Source: examples/connectivity/iot-dashboard/.
Components
- BME280 — T / RH / P environment sensor via
<alp/chips/bme280.h>. - ST7789 TFT — 240×320 panel rendering the dashboard.
- mbedtls — the TLS implementation behind the MQTT publish.
- LVGL — composes the T/H/P dashboard with sparkline + status strip.
- OPTIGA Trust M — declared as the planned TLS trust-anchor / handshake offload.
The app uses the portable <alp/iot.h> alp_wifi_connect path so the same source builds against AEN (Wi-Fi via the on-module CC3501E bridge) or V2N (on-module Murata) — only som.sku changes.
:::note TLS runs the software path today
The OPTIGA Trust M driver is probe-only, so TLS goes through mbedTLS in software. The hardware TLS backends remain status: planned — the optiga_trust_m entry in chips: reserves the trust anchor, it does not offload the handshake yet.
:::
Display bring-up
The dashboard opens its panel via alp_display_open() and binds LVGL with alp_gui_lvgl_attach() after the sensor and Wi-Fi/MQTT bring-up, with CONFIG_LV_Z_AUTO_INIT=n in prj.conf. See lvgl-widgets-demo for the reference sequence.
board.yaml
libraries:
- name: lvgl
cores: [m55_hp]
- name: mbedtls
cores: [m55_hp]
som:
sku: E1M-AEN801
preset: e1m-evk
pins:
- { e1m: E1M_I2C0, macro: EVK_I2C_BUS_SENSORS, doc: "Shared sensor + IO-expander + INA236 bus" }
- { e1m: E1M_SPI1, macro: EVK_SPI_BUS_ARDUINO, doc: "Arduino UNO header SPI" }
cores:
a32_cluster:
os: "off"
m55_hp:
app: ./src
iot:
wifi: true
mqtt: true
tls: true
peripherals:
- i2c # BME280.
- spi # Display.
- gpio # Display ancillaries + CC3501E control GPIOs.
chips:
- bme280 # Environment sensor.
- optiga_trust_m # Planned TLS trust-anchor / handshake offload.
- st7789 # 240x320 TFT.
diagnostics:
log_level: info
Wi-Fi connectivity comes through the <alp/iot.h> alp_wifi_* surface; on AEN the generator resolves on_module.wifi_ble: cc3501e and emits the CC3501E bridge backend.