Muzeul Baia
In productionPeople counters feed a live zone map; the audio guide works offline.
Live room occupancy, no one identified
Room occupancy refresh, no one identified


We develop IoT and embedded software as one chain, designed by one team: the firmware, the radio link, the cloud and the phone app. It runs live in a museum and, as a prototype, on our own rally hardware.

Most IoT failures sit between layers, which is why all five are designed together.
People counters feed a live zone map; the audio guide works offline.
Live room occupancy, no one identified
Room occupancy refresh, no one identified


Distance from the wheels, drift corrected by GNSS.
Distance from the wheels, corrected by GNSS
Timing error on a 3.2 km test stage
The board is routed and passes its design checks but is not fabricated yet, and the app talks to a simulated hub.

Vehicle battery telemetry, from firmware through an iPhone to the cloud.
A proof of concept for engineering use. No client name, no screens.
One team writes all of it: the device firmware in C, the ingest and the database, the dashboard and the phone app. The Regularity Rally System spans firmware, a custom board and an iPhone app; Muzeul Baia spans people counters, cloud ingest, a staff map and an audio guide app.
Prototype boards are designed as code: the rally carrier board is a SKIDL netlist laid out in KiCad, with SPICE simulations of the power input. Volume manufacturing and radio or safety certification belong to a later stage and involve a manufacturer and an accredited test lab.
ESP32-S3 on ESP-IDF and FreeRTOS, Arduino-class Bluetooth boards for early prototypes, u-blox GNSS receivers, ST inertial sensors and TI Hall-effect sensors. Links so far: Bluetooth LE GATT on NimBLE and CoreBluetooth, and HTTP push from PoE sensors.
A prototype proves the sensing and the protocol. Production adds a fabricated and tested board, an enclosure, certification and a way to update devices in the field. The rally hub shows where a prototype stands: routed board, firmware passing host tests in CI, bring-up not started.
Devices and apps are built to work without a connection. The rally hub logs to an SD card and backfills the phone after a dropout; the museum audio guide keeps its content on the phone, so a visit works with no signal.
Readings land in a cloud database, and only known devices can send them. The museum's counters are anonymous by design: they count passages between rooms and never identify a person.
A few lines on the sensor and who reads the data are enough to start.