A parking sensor that spots free spaces on its own, in 15 milliseconds
A low-cost device that processes the image on board and decides whether each space is free or occupied, with accuracy well above ultrasonic sensors. The network carries the state of the spaces and, where needed, one frame per second for basic video surveillance.

- ≤ 15 ms
- to decide on the device whether a space is free
- 2 cameras
- handled by a single microcontroller
- 1 frame/s
- only where basic video surveillance is needed
The context
An indoor car park needed to know in real time which spaces are free, with signalling LEDs above each bay and data available to the management system. Ultrasonic sensors cover one space each; a camera sees several, but that usually means streaming video to a server for analysis.
Constraints
- Low-cost hardware with limited computing resources.
- A fast, reliable decision, better than an ultrasonic sensor’s.
- Little bandwidth: the network should carry the state of the spaces, not a continuous video stream.
- Connectivity wherever possible: some sites can be cabled, others cannot.
- Many nodes on the same site, installed and maintained remotely only.
Technical choices, and why
The decision on the device. Each sensor processes its own image and decides in 15 milliseconds or less whether each space is free or occupied. The server receives the result; it doesn’t have to analyse video.
Crop before classifying. Instead of analysing the whole image, the firmware crops every space in view, filters it and scales it down to 32×32 pixels. A tiny two-class neural network (free / occupied) is then enough, and it runs on the microcontroller in real time.
Two cameras per node, one microcontroller. With two cameras a single device covers twice the spaces and halves the installation points. In the first version the cameras were linked over UART to an ESP32-S3. In the current revision a single ESP32-P4 drives both cameras directly over MIPI CSI, with more computing headroom for processing.
A chip dedicated to the radio. The network runs over Ethernet where a cable can be run. Where it cannot, a secondary chip provides Wi-Fi, and the same chip offers Bluetooth for a range of ranging applications. The main microcontroller stays free for vision.
One frame per second, only where needed. Where the client wants a wider picture of what is happening, the node also sends one image per second for basic video surveillance. It is an option: space detection does not depend on the network.
A fleet that configures itself. Each node’s configuration (spaces, position, network) is generated automatically and written to non-volatile memory; nodes announce themselves on the network via mDNS. Firmware updates arrive via dual-partition OTA: if the new version fails to start, the node rolls back.
A dataset-driven test bench. Every new model version is checked against a set of reference images before being rolled out to the fleet.
The result
Decisions on the device within 15 ms, with accuracy well above traditional ultrasonic systems, and sensors managed entirely remotely.
What we bring to your projects
AI running on the microcontroller, image processing with limited resources, hardware with multiple connectivity options, firmware for device fleets and secure remote updates.






