Hardware & Software — Deep Expertise Across the Full Stack

From bare-metal C on 8-bit AVRs to Rust cloud services, from LoRa mesh networks to AI wildlife detection — OGLAS builds across every layer of the embedded and server stack. Here’s the breadth and depth behind that.

OGLAS isn’t a single-product company — it’s a full-stack engineering practice that designs, builds, and deploys across every layer of the embedded and server world. From 8-bit microcontrollers drawing microamps in a paddock to Rust cloud services running AI inference, we own the entire pipeline.

This page is a tour of the depth behind that claim.

Languages

We write production code in whatever the job demands:

  • Rust — our cloud monorepo (seven products: Cloud, Local, Solar, Factory, Park, Debug, Marine), camera sidecar services, and increasingly new performance-critical work
  • Python — AI/ML pipelines (PyTorch, SpeciesNet), camera capture and detection, data analysis, FastAPI services
  • C — the OGLAS v2 binary codec (zero-malloc, no floats, integer-only wire format), Zephyr RTOS modules, display drivers
  • C++ — the bulk of our PlatformIO firmware fleet across dozens of board targets, Arduino and ESP-IDF frameworks
  • JavaScript — web dashboards (11ty/Eleventy), protocol twins, data visualisation (Chart.js)
  • SQL — schema design, migrations, and query optimisation across SQLite and NATS JetStream

Frameworks & Operating Systems

We work across the major embedded and server frameworks — and choose the right one for each tier:

  • Zephyr RTOS — our newest firmware tier, a west T2 workspace with devicetree overlays, Kconfig fragments, and native_sim testing via Twister. Sensor, Repeater, and Hub tiers all running Zephyr with over-the-air byte-identical compatibility to the legacy fleet
  • FreeRTOS — the real-time kernel under ESP-IDF and Arduino ESP32, configured for our hub and display targets
  • ESP-IDF v5.5 — native (non-Arduino) builds for our display fleet, using the ESP32-S3 LCD peripheral for RGB panels up to 1024×600
  • Arduino + PlatformIO — our mature firmware fleet with dozens of board environments and a shared codebase
  • Adafruit nRF52 BSP — low-power nRF52840 nodes with deep sleep down to 4 µA
  • Docker — containerised cloud services, camera pipelines, and MQTT infrastructure
  • nginx — reverse proxy, auth gateway, and TLS termination

Microcontrollers & Boards

We’ve shipped production firmware across four CPU architectures and over 25 distinct board targets:

ARM Cortex-M4 — nRF52840

Ultra-low-power sensor nodes and BLE + LoRa devices:

  • RAK4631 WisBlock — primary sensor platform (nRF52840 + SX1262, modular WisBlock base)
  • Seeed XIAO nRF52840 + Wio-SX1262 — compact companion radios and sensor nodes
  • LilyGo T-Echo-Lite — GPS tracker with ePaper display
  • SenseCAP T1000-E — multi-GNSS tracker (GPS + GLONASS + Galileo + BeiDou, LR1110 radio)
  • SenseCAP Solar P1-Pro — solar-powered repeater with integrated GPS

Xtensa Dual-Core — ESP32 & ESP32-S3

Hubs, displays, WiFi + LoRa gateways, and trackers:

  • LilyGo T3-S3 — hubs, repeaters, trackers, gateways, display panels
  • LilyGo T-Deck — LoRa + WiFi display terminal
  • Heltec WiFi LoRa 32 (V2, V3) — hubs, gateways, Victron solar monitoring
  • Heltec Tracker V2 — GPS vehicle tracker with LoRa + WiFi + UC6580 GNSS
  • Waveshare ESP32-S3-Touch-LCD-7B — 1024×600 RGB touch display
  • Elecrow CrowPanel Advance 7" — 800×480 RGB display
  • Waveshare RLCD 4.2" — reflective mono LCD (always-on, sunlight-readable)
  • Waveshare Knob-Touch-LCD-1.8" — round QSPI display
  • M5Tough — industrial panel (ILI9342 + AXP192 power management)
  • M5Stack Dial — round colour display (GC9A01)
  • AI-Thinker ESP32-CAM — WiFi camera nodes with OV2640

RISC-V — ESP32-C3 & ESP32-C6

BLE beacons and 802.15.4 Thread-capable nodes:

  • Seeed XIAO ESP32-C3 — BLE + WiFi beacon and MQTT sensor
  • Seeed XIAO ESP32-C6 — BLE + WiFi + 802.15.4 (Thread-ready)
  • LilyGo T-Lora C6 — LoRa + 802.15.4 node

AVR 8-bit — ATmega328P

Legacy ultra-low-power sensor nodes:

  • Talk2 Whisper Node — LoRa sensor with RFM95
  • LowPowerLab Moteino — LoRa sensor with RFM95

Sensors

We integrate an enormous range of sensors — environmental, industrial, and specialised:

Temperature & Humidity

DS18B20 (1-Wire), TMP36 (analog), SHTC3 (I2C), BME280, BME680, SI7021, on-chip NTC thermistors

Pressure & Barometric

BMP180, BMP280, LPS22HB (RAK1902), BME280

Distance & Level

JSN-SR04T (waterproof ultrasonic, UART), RAK12007 (CS100), DYP-A02 family (A0221AU, A02YYUW — auto-stream UART)

Light

BH1750 (I2C lux), on-chip analog lux (T1000-E)

Motion, Tilt & Accelerometer

LIS3DH (RAK1904, 3-axis), QMA6100P (motion-interrupt wake for ultra-low-power), PIR (Panasonic EKMC, AM312, LD2420-OT)

Soil & Agriculture

RAK12035 capacitive soil moisture probe via RAK12023 I2C converter

Energy & Power

PZEM-004T v3 (Modbus-RTU CT clamp metering), Victron Energy MPPT (BLE encrypted telemetry decode)

Contact & Safety

Reed switches, DRV5032 hall sensors, float switches, leak probes, door/gate contacts

Pulse Counting

Hall flow meters (YF-B7), tipping-bucket rain gauges, reed anemometers (ISR pulse counters)

GPS / GNSS

RAK12501 (Quectel L76K), RAK12500 (u-blox ZOE-M8Q), UC6580, AG3335 (Airoha, multi-GNSS), L76K — all via TinyGPSPlus

Displays

We drive displays from tiny 0.96" OLEDs to 7" capacitive-touch RGB panels:

Display Controller Type Size
SSD1306 OLED I2C Mono OLED 128×64
ST7735S TFT SPI Colour TFT 80×160
ST7789 TFT SPI Colour TFT 320×240
ILI9342 TFT Colour TFT 320×240
ILI9488 TFT SPI Colour TFT 480×320 (3.5")
GC9A01 Round colour 240×240
ST77916 QSPI Round colour 360×360
ST7306 SPI Reflective mono LCD 400×300
RGB 800×480 ESP32-S3 LCD RGB panel 800×480
RGB 1024×600 ESP32-S3 LCD IPS RGB565 1024×600
GxEPD2 ePaper SPI E-ink 122×T61

Touch controllers: GT911, CST816D, FT6336. GUI toolkits: LVGL (v8 and v9), Adafruit GFX, LovyanGFX, Arduino_GFX.

Networking & Radio

This is where OGLAS really stands apart. We don’t just use radios — we design protocols, build mesh networks, and decode manufacturer-proprietary BLE:

Wireless Protocols

  • LoRa (sub-GHz, AU 915–917 MHz) — point-to-point with AES-CTR encrypted binary frames, our primary long-range transport
  • LoRa-Basic — our fleet protocol: raw LoRa, encrypted, ~99% of deployed nodes
  • MeshCore — encrypted mesh routing with store-and-forward repeaters
  • LoRaWAN — feasibility assessed and documented
  • BLE 5.0 — advertising beacons, observer mode, config + OTA DFU, manufacturer-specific decoding
  • BTHome v2 — open BLE sensor protocol (WS90 weather station decode)
  • Victron BLE — AES-CTR decryption of proprietary Victron MPPT solar charger telemetry
  • WiFi (802.11 b/g/n) — hub uplinks, web UIs, cloud push, OTA updates
  • 802.15.4 — Thread-capable nodes on ESP32-C6
  • HaLow (802.11ah) — long-range WiFi for remote site backhaul

Radio ICs

SX1262, SX1276, SX127x, LR1110, RFM95 — Semtech and HopeRF LoRa transceivers across every band and form factor

Wired & Serial

UART (GPS, Modbus-RTU, companion links), I2C (sensors, OLED, touch), SPI (radio, SD, displays), 1-Wire (DS18B20), USB CDC (console, DFU)

Network & Application

  • MQTT 3.1.1 — sensor ingest with QoS 1, TLS/mTLS capable, via NATS JetStream
  • HTTP/HTTPS — REST APIs, web dashboards, cloud push, mbedTLS on ESP32
  • RTSP — camera live streaming with H.264 fragmented MP4 via MediaSource
  • ONVIF WS-Discovery — IP camera auto-discovery
  • DNS-SD / mDNS — hub and device discovery (_oglas._tcp)
  • SSE — Server-Sent Events for real-time AI chat and camera event feeds
  • OTA — WiFi firmware updates (ESP32), BLE DFU (nRF52)

Low Power & Battery Expertise

We’re experts at making devices run for years on battery:

  • nRF52840 WFE deep sleep — ~4 µA floor with GPIO wake, radio sleep, switched sensor rail
  • Duty-cycled wake/publish/sleep — sensor nodes that wake, measure, transmit, and sleep in milliseconds
  • Switched 3V3_S rail — power-down all peripherals during sleep
  • QSPI flash deep-power-down — 0xB9 command for external storage
  • GPS duty divider — configurable fix intervals for battery savings
  • V_BCKP retention — GPS warm/hot starts across power cuts
  • Beacon mode — fire-and-forget, no ACK camping for maximum battery life
  • Motion-adaptive cadence — accelerometer interrupt wakes only on movement (T1000-E)
  • Solar harvesting — SenseCAP Solar nodes with integrated panel

GPS & Tracking

Deep GPS expertise across multiple module families and use cases:

  • Vehicle trip logging — persistent back-walk retransmission for complete trip replay
  • Real-time position tracking — breadcrumb trails with LoRa position reports
  • Solar panel tracking — GPS + SD logging for mobile asset monitoring
  • Multi-GNSS — GPS + GLONASS + Galileo + BeiDou on T1000-E
  • GPS fix optimisation — timeout management, catch mode for warm starts, configurable fix intervals
  • TinyGPSPlus — NMEA parsing across all module types

Server & Cloud Infrastructure

Our server stack is as deep as our firmware:

OGLASCloud — Rust Monorepo

Seven products sharing a common architecture:

  • Cloud — multi-tenant cloud store, push-ingestion API, dashboards
  • Local — single-site software hub with serial/MQTT/hub-pull ingest
  • Solar — multi-site power and solar monitoring
  • Factory — plant overview with OEE, andon, uptime tracking
  • Park — satellite maps, trail cameras, photo review for parks and reserves
  • Debug — field debug and discovery tool for LoRa bandwidth monitoring
  • Marine (WII5) — wave-buoy deployments and capture spectra

Shared Crates

oglas-core (data model), oglas-ui (dashboard canvas), oglas-wire (wire protocol), oglas-agent (AI/LLM integration), oglas-overlays (GeoJSON maps)

Data Infrastructure

  • NATS JetStream — durable, replayable, immutable message log with MQTT gateway
  • SQLite — local-first storage with migrations, full-text search, and geospatial queries
  • 11ty (Eleventy) — static site generator for all web frontends
  • Chart.js — data visualisation and dashboards
  • Sh3dAuth — external magic-link authentication service

Data Ingest Paths

LoRa sensors → Hub → Cloud push · BLE sensors → Hub observer → Cloud · WiFi MQTT → NATS → Rust consumer → Cloud · Camera → Python service → Cloud ingest · Local hub → Cloud push

AI & Machine Learning

We integrate AI directly into the monitoring pipeline — not as a bolt-on, but as a first-class sensor:

  • SpeciesNet (Google CameraTrapAI) — MegaDetector for animal/person/vehicle detection + EfficientNetV2-M species classification
  • Australian geofencing — species filtering tuned for Australian wildlife
  • Predator alerting — fox (Vulpes vulpes) and feral cat (Felis catus) detection with confidence scores
  • Scene analysis — brightness measurement, monochrome detection (IR vs white light discrimination)
  • Software motion detection — frame-difference algorithm for cameras without native motion API
  • Motion burst — rapid multi-frame capture on motion events for higher classification confidence
  • LLM integration — AI agent with SSE-streaming chat interface for natural-language data queries

Camera Support

Six camera driver families with unified processing:

  • Dahua — HTTP Digest auth, motion events, dual-light control (IR/white/auto), SMD management
  • HTTP snapshot — generic IP camera polling
  • RTSP — ffmpeg-based streaming with live restreaming (H.264 fMP4 + MJPEG fallback)
  • ESP32-CAM — custom firmware for WiFi camera nodes
  • FTP folder-watch — legacy camera integration
  • USB webcam — V4L2 capture
  • ONVIF WS-Discovery + mDNS + TCP fingerprint for automatic network camera scanning
  • Multi-camera concurrent processing with shared AI model and shared SQLite store

Security

  • AES-CTR encryption on all LoRa frames
  • ed25519 cryptographic signatures (MeshCore)
  • MQTT TLS/mTLS for cloud-direct connections
  • Token-based ingest authentication
  • NVS credential storage — WiFi, MQTT, LoRa keys persisted securely
  • BLE DFU — encrypted over-the-air firmware updates

Device Roles

Our firmware fleet covers every role in a monitoring system:

Role Description
Sensor node Periodic reading + LoRa beacon (battery, solar, or mains)
Companion radio BLE + LoRa receiver, UART pipe to hub
Hub Ingest, storage, web UI, cloud push
Repeater Store-and-forward LoRa gap-filler + BLE observer
Gateway Rules-driven fleet listener + scarce uplink
Display panel Glanceable dashboard (7" touch to 1.8" knob)
Tracker GPS vehicle/person tracker with trip logging
Bell Annunciator/buzzer for audible alerts
Gate Gate detect + remote open
Power plug Relay timer + mains metering
Camera node Snapshot server for OGLASCamera

The OGLAS Protocol

At the heart of everything is the OGLAS v2 binary protocol — a transport-agnostic codec that knows nothing of LoRa or TCP:

  • Forward-compatible field IDs with width-in-id scheme
  • Integer-only wire format (no floats, no malloc)
  • Single source of truth (oglas_fields.def) generates C and JavaScript bindings
  • Verbs: sensor, beacon, ack, cmd, cmdresp, alert, node, have, pull, relay
  • Byte-identical over-the-air compatibility between Arduino, Zephyr, and Rust implementations

This breadth isn’t theoretical — it’s deployed, in production, on real sites across Australia. If you’ve got a monitoring problem that spans hardware, radio, server, and AI, we’ve probably already built something adjacent to it.

Talk to us about your project →