How I built the embedded C++ middleware for NA@MO, an optical nanoscope by SENAI CIMATEC and UFMG featured on the cover of Nature.

NA@MO (Brazilian Nanoscope) was the biggest and most challenging project of my career. Developed through a partnership between SENAI CIMATEC and UFMG (Federal University of Minas Gerais), the project created an optical nanoscope capable of analyzing nanoscale structures using visible light. It’s a Brazilian technology, patented in Brazil and abroad, and the highest-resolution optical nanoscope in the Southern Hemisphere.
In February 2021, the project was on the cover of Nature, one of the most prestigious scientific journals in the world, with never-before-seen images of twisted bilayer graphene captured with the instrument. These images helped researchers understand how the atomic structure of this material behaves, which is related to its superconducting properties.
How it works
Conventional optical microscopes are limited by the diffraction of light and can’t resolve structures much smaller than the wavelength of light. The nanoscope overcomes this limit with a nanoantenna that concentrates light at the nanometer scale, combined with Raman spectroscopy. To make this possible, the hardware must position samples and components with nanometric precision, and that’s where the embedded software comes in.
My role
I was responsible for the C++ middleware and firmware that controlled the nanoscope’s hardware, running on embedded Linux on a Toradex (ARM) board, with cross-compilation.
Architecture
Challenges
The build produced a binary of around 400 MB and took about 2 hours, so it was compiled on SENAI CIMATEC’s supercomputer. Coordinating nanometer-precision devices without blocking the application required careful handling of concurrency, states and errors.
What I learned
This project taught me how to design embedded software for scientific instruments, where reliability and predictability matter as much as performance. It also showed me the value of a clean, layered architecture when many devices and teams need to work together.
Learn more
Please sign in to leave a comment.
No comments yet. Be the first to comment!