Tiếng Việt
LatestAI & data3D printing & CNCEmbedded & IoTSoftwareAbout VHITEK MakerContactComment policy

CAPS won the 2nd runner-up at Qualcomm Hack The Challenge 2026: AI camera counts parking spaces running on the device

by Ngụy Minh Đức|
CAPS won the 2nd runner-up at Qualcomm Hack The Challenge 2026: AI camera counts parking spaces running on the device

Qualcomm Future Makers — Hack The Challenge 2026 is an innovation program for students, with a prompt centered around a single constraint: the AI model must run directly on the device. The Grand Finale — Hack Day will take place on August 16, 2026, at the University of Science, VNU-HCM, organized by Qualcomm in collaboration with innoex. The CAPS team, Little Sun, ranked in the Top 12 finals and received the second runner-up prize, valued at 10,000,000 VND.

Ba thành viên nhóm Mặt Trời Nhỏ cầm bảng giải Á quân 2 trước phông Qualcomm Future Makers
The Little Sun team received the second runner-up award at Hack The Challenge 2026.

This article documents the technical details: the measured figures on the device, the selected parameters, and the reasons for choosing them. The source code is public, with the link at the end of the article.

The prompt requires the model to run on-site, and that constraint determines everything that follows.

Running on the device means that the frame is processed directly on the board mounted on the ceiling, rather than being sent back to a server located elsewhere. The parking lot benefits from this approach in three ways: the images remain within the lot, the system can still count when the connection is unstable, and operating costs are limited to electricity expenses.

In return, the entire computational budget is confined to a single embedded board. All other design choices for CAPS stem from that constraint.

CAPS places a camera on the ceiling instead of a sensor for each parking space.

The typical approach in parking lots is to attach an ultrasonic or magnetic field sensor to each space and then run wires back to the controller. The number of sensors increases with the number of spaces, and so does the number of failures.

CAPS hangs a camera from the ceiling and designates each parking spot as a polygonal area in the frame. In the competition version, two cameras monitor six spots across two floors: camera 01 (MaixCam) monitors A1–A3, while camera 02 (ESP32-CAM) monitors B-1–B3. Each device is equipped with an additional light, illuminating red down onto the occupied space.

Mô hình bãi xe hai tầng với thiết bị gắn trần chiếu đèn đỏ xuống ô có xe
The two-tier model is built for the finals: the red light indicates an occupied space.

616 ms per inference is the figure that determines the camera budget.

Measured on Arduino UNO Q — QRB2210, aarch64, 2 GB RAM — the vehicle recognition model takes a median of 616 ms for each inference at a resolution of 640×640. This is the measurement on the actual device, running onnxruntime on the CPU.

From that figure, the rest can be inferred. The default capture cycle of 3 seconds can accommodate about three cameras and still remains under load. For six cameras, the cycle must stretch to 5 seconds if the board is to remain unchanged.

This is how a measured figure becomes a deployment limit: installers know in advance that they are trading off between the number of cameras and update latency, rather than realizing it when the parking lot has been fully set up.

Four out of five frames must agree for a parking space to change status.

A pedestrian walking by, a shadow cast, a blurry frame due to shaking — each one is enough for a misclassification. Reading each frame and reporting immediately would yield a continuously flashing status board.

CAPS implements a voting filter: a parking space only changes status when 4 out of 5 consecutive frames agree on the same outcome. The cost of this is latency, which can be calculated: with a cycle of 3 seconds, a newly parked vehicle shows up on the board after about 12–15 seconds.

"Undefined" is the third state and it is distinct from "vacant".

The voting filter creates a situation where the two-state system processes incorrectly: a parking space that the system has not seen enough frames to conclude. Calling it "vacant" would guide drivers to a spot that may actually be occupied.

CAPS reports three distinct states — vacant, occupied, and undefined — and directly annotates the explanation on the admin screen: Unknown is not free: the system has not yet seen enough frames to decide.

Danh sách sáu chỗ đỗ của CAPS với cột camera, trạng thái và thời điểm đổi trạng thái
Six parking spaces are overseen by two cameras, along with the timestamp of the last status change.

The board retains timestamps for each status change, allowing any reporting error to be traced back to the frame that generated it.

The parking space is specified by drawing a polygon over the camera frame.

Every parking lot has its own geometry, so the positions of spaces must be redeclared each time it is set up. CAPS brings this process to the browser: installers open the camera frame, draw a polygon for each space, assign a space code, and save. Changes take effect immediately, and the recognition process continues to run.

Ba vùng đa giác vẽ chồng lên khung hình camera số hai trong trình quản trị CAPS
Each parking space is a hand-drawn polygon on the frame; saved changes apply immediately.

This method of specification accommodates diagonal spaces and spaces partially obstructed by columns — something that a rectangular box aligned to axes would mistakenly cut off.

Drivers look up parking spaces using their license plate, on a separate screen.

The admin screen is for parking operators. The driver needs something entirely different: where there are still free spaces, and where their vehicle will park later. CAPS completely separates that interface — opening it brings up a search box Find your car, enter the license plate for a search, and below are the available spaces in each level.

Màn hình tra cứu của CAPS với ô nhập biển số và số chỗ trống theo từng tầng
The screen is located in the lot: search for cars by license plate, along with the number of available spaces on each floor.

The interface is available in two languages, Vietnamese and English, and the mobile version retains that same layout vertically. A level that is full shows the number 0 in red along with the line "This level is out of free spaces", instead of requiring the reader to deduce from a number.

Bản điện thoại của màn hình tra cứu CAPS hiển thị bằng tiếng Việt
The mobile version, in Vietnamese: a full level displays the number 0 in red along with an explanation.

The device shell is self-built by the team, separating the ceiling mount from the body carrying the camera.

Bản vẽ 3D vỏ thiết bị CAPS gồm đế bắt trần và thân xoay mang camera
The mount is fixed to the ceiling; the body rotates around a ball joint to adjust the camera direction after installation.

The mount is fixed to the ceiling, and the body rotates around a ball joint. The installer screws it in once and then adjusts the camera's view, instead of taking it off and reattaching until the view is clear.

The hardware and software running CAPS

Layer

Component

Processing

Arduino UNO Q — QRB2210, aarch64, 2 GB RAM, 32 GB flash

Main Camera

MaixCam, GC4653 sensor, serves JPEG images over HTTP

Secondary Camera

ESP32-CAM, OV3660 or OV2640 sensor

Indicator Light

WS2812B LED Ring

Recognition

YOLO exported to ONNX, runs onnxruntime on CPU

Service

FastAPI, SQLAlchemy, SQLite

Interface

React, Ant Design, TypeScript, Vite

Deployment

Docker Compose, systemd

Thiết bị CAPS trưng bày tại gian của nhóm ở vòng chung kết
The build for the finale of Hack The Challenge 2026.

Source code is public under the MIT license

CAPS-DASH is on GitHub under the MIT license: github.com/nguyminhdc78-del/CAPS-DASH. The code repository includes the recognition service, admin interface, and deployment documentation using Docker Compose.

Results of the competition will be announced in the organizers' post.

Bằng chứng nhận Qualcomm Future Makers trao cho đội Mặt Trời Nhỏ với sản phẩm CAPS
The certificate recognizing CAPS in the Top 12 finals is signed by the Vice President of Engineering at Qualcomm.

See CAPS in action

The video recording the team's competition entry shows the complete lifecycle of a parking event: a vehicle enters the space, the ceiling light changes color, and the status board updates after the voting filter finalizes.

Other images from the finals

Lễ trao giải trên sân khấu, màn hình sau lưng hiện tên Mặt Trời Nhỏ - CAPS
The award ceremony for the Grand Finale — Hack Day, August 16, 2026.
Nhóm Mặt Trời Nhỏ bên gian trưng bày với mô hình bãi xe hai tầng
The team’s exhibition: the two-tier model, a model car with a license plate, and a live control panel.
Sảnh sự kiện Hack The Challenge 2026 tại Trường Đại học Khoa học Tự nhiên
A corner of the event hall.

The figures in the article are measured on the build from August 2026. Different boards, resolutions, or models will yield different results — re-measure before moving to a new configuration.