Project Type | Freelance |
Project Duration | 1 year |
Languages Used | C++, C#, C |
Not much related to games, but very much as technical, I developed a full-stack solution for a client on a freelance basis for their project: WISP-ORCA.
The device is a portable spectrometer, which measures a light spectrum from different angles, then performs processing on a server, and the result represents the reflectance of water.
Here is an overview of my contributions:
I designed multiple PCBs for ORCA, including the main board of ORCA which consists of several microcontrollers and sensors. Features include:
I've also designed a development board for the device, which can be used to program and debug it.
I developed two firmwares, one for the nRF52840 chip, and one for the STM32F7.
These were developed mainly in C++, with some low-level drivers in C.
Some highlights include:
The backend was developed in ASP.NET. I use PostgreSQL with a self-hosted TimescaleDB for efficient measurement storage.
I've also integrated various analytical modules such as Grafana and Loki. There is an elaborate configuration solution using JSON-Schema that I use to verify configuration files and also auto-generate forms on the frontend dashboard.
The frontend dashboard was developed using React and NextJS, and uses Ant Design for its UI framework.
I designed the inner routing and mechanics of our custom fiber-switch solution as well as multiple edits and additions to the design of the instrument's enclosure and other components. I also provide 3D printing and manufacturing of the instrument.
The app is what is used to communicate with the device. I started with C# and Xamarin, and over time migrated to .NET MAUI, which is the new cross-platform C# app framework, which unfortunately still uses XAML.
I've developed multiple tools to aid with testing and calibration in C++ using my own framework, Warlock Engine. The engine has a connection to the device over UART through the ST-Link V3's virtual com port, which is embedded on the device's development board.