Consisted of a multiple component system, integrating multiple microcontrollers.
Base Dock and a set of 2-Dumbbells
Dumbbells had a mechanical system to choose from 5 to 60 LBS weights.
Conceptually designed like a pair of airpods with their base and a smartphone, everything interconnected by BLE, (or physical UART while the dumbbells were docked).
Wwe were part of the product lifetime from the beginning and collaborated with our client on how to improve it and where to focus our efforts.
We got to maximize BLE Throughput of the system when things got cluttered with features and requirements and peripherals.
As a multiple moving part system the debugging processes were intricate. Sometimes requiring us to massage some inner connections;
like short-circuiting the LEDs on a faulty board in order to use that output pin as a UART, which we were missing
C++ and FreeRTOS: Using C++ for firmware development and FreeRTOS for real-time operating system tasks is a solid approach. This allows for structured and efficient code development, especially for applications that will start as MVP and features get added on the fly.
Active-Object Design for the FW Arch: when using an RTOS, employing an active-object-based design pattern can help in managing the concurrency and interactions within your software application, making it easier to develop and maintain.
The set of dumbbells recorded hand movements and, after a lot of compilation issues, they ran a Tensorflow-Lite NeuralNet.
Gesture recognition processing on windowed batches of 9-axis IMU data.
Nordic nRF52832/nRF52840 and ESP32 WROVER MCUs.
We also vibrated an LRA motor for user feedback.
Smartphone received whatever the software team wanted to receive in real time, through the Base Dock; yes, only one BLE device links to the phone.
I happened to graduate from engineering university during this project and, in Uruguay, friends typically get to clean-shave you for achieving that.
For this project I found great satisfaction in crafting a detailed mind-map tracing from all hardware components to the most lower-level firmware elements.
Guaranteeing an accurate and effective data-gathering stream received on the smartphone was imperative (iOS and Android, Windows/Mac too, with Python's BLEak).
Another significant aspect of my role in this particular project involved the training of new hires who joined the project, as an onboarding process.
That's been one of the most impactful experiences in my career, as it has allowed me to learn a great deal on team mentorship and team building through the process of teaching others.
I got to know myself and I got to understand how the soft skills of our leads/mentors make or break the workplace, the morale of the team and the outcome of the project.
I now can think back with joy on this project's results, and, more importantly, on the relationships I cultivated with my teammates.
I joined this team when they were doing the bringup of their third version hardware.
Coming with experience on OTA DFUs with a couple of previous projects I was responsible for this feature on the collar.
My input also included code migration to a newer platform.
New app always implies ramping up to speed with an existing platform and code-base.
New hardware always comes with new problems.
C++ and mbedOS: Getting into new unfamiliar territory was part of my experience when joining this team. I had to quickly ramp-up with a new RTOS and a new set of toolchains.
Code Suggestions: I think it was important to send constructive feedback of the existing code-base. It is a big part of building trust between technical clients and our input as engineers.
The collar included GPS, LoRa and Bluetooth communications.
My tasks included having the drivers ported, tested and functioning on the newer FW and HW platform.
Adding BLE OTA DFU as a feature.
Using GitHub Actions as CI/CD tasks to build system, generate binaries as artifacts and uploading those sync'ing the DB.
In this project, I discovered that leveraging past experiences enabled me to deliver more sophisticated solutions. I extensively utilized my knowledge of BLE communications, hardware interactions, and debugging embedded applications with various tools.
Near Chamonix, French Alps, 2023
It is always a challenge to join a team with an existing code-base and trying to adapt to a different architecture. I was very happy that ultimately my opinions and constructive feedback were always received.
On both these projects I was part of an uruguayan startup named Focus. They used to let me play guitar inside the office. You could tell they were cool teammates.
The project consists of a display monitor eavesdropping, or side-channel attack implementation, in the open-source GNU Radio environment using an SDR hardware device and C++ software modules.
< Check out videos regarding this project, including one explained by the infamous Linus Tech Tips, which he mentioned us and he showcased our code!
^ Still image on the spied monitor.
Resulting spy attack >
We implemented a screen resolution inference GNU Radio module for the SDR attacker system. It was key to apply the fft algorithm in order to make the compute plausible.
We implemented a channel estimation and equalization technique as a GNU Radio module for eliminating the carrier frequency error between our SDR reception system and the spied display clock sources.
We improved the sampling error correction GNU Radio module so that less performance is required to run the DSP algorithm. In depth, we swapped the existing time-domain approach for a frequency-domain calculation of the auto-correlation of the spied signal using the Discrete Fourier Transform of the VGA or HDMI stream.
This project was a challenging out-of-the-box and hacky experience as a whole.
It also brought us out of our comfort zone in two main aspects, on the social day-to-day team management side of things; handling the frustrations and competences of three very different engineering students, and on the technical parts; having us get used to RF circuits, signals, C++ and wireless channels, and the noise that follows those, which were all topics out of our areas of expertise.
Coming from a very analog hardware and imperative programming oriented electronics engineering career, it was a lot to take in and took a lot of massage to make things happen.
Chamonix, French Alps, 2023
The dependance on a lot of stochastic processes was extremely frustrating for the team because results were often hidden behind a lot of noise. This teaches one patience and a kind of keep-going attitude, based on trusting instinct rather than evidence. Communication was key in order to keep the ducks in a row and not lose our way inside the noise.
At the end, we were utmost happy with the technical results, we even uncovered some unexpected hidden secrets on the eavesdropping of monitors that were accordingly very valued by our mentor and tutor, Federico.
I personally like to distinguish how the team got together to emphasize the strengths of each individual. Every problem was indeed an opportunity in disguise.
The project consists of integrating an United States (USA) team as a Firmware Engineer.
The team is in charge of the pre-silicon and post-silicon delivery of assembly and C firmware for an embedded MCU inside a GPU, managing power states of the hardware, as well as its hardware-based SR-IOV virtualization.
Development focused on highly performant code implementations.
Reactiveness of the MCU code is very fast.
Debugging includes pre-silicon emulation tools and traces.
Time scales for events that we commit to are pinpointed to the microsecond, or tenths or hundreds of ns.
Logic analyzer debugging tools.
Hardware emulation tools.
As state-of-the-art techniques.
Clock gating, power gating, voltage and frequency scaling techniques. Digital voltage regulation. The hardware is just top notch.
Graphics pipeline understanding, - the different system states.
In this project I fulfilled one of my dreams as a little kid. I got to understand the magic behind our gaming experiences, how the screen shows us a virtual world, how the data moves from CPU to GPU and out the HDMI or VGA cable to our monitors, at blazing speed.
Luckily, my dissertation project in 2021 introduced me to monitors and wired transmissions of video, but this time I got to see the inner parts of the GPU which was always a curious, magic, black-box to me.
Near Bariloche, Los Andes, 2023
Thankfully, being part of this team implied that I was required to grasp an overview understanding of graphics drivers, graphics APIs, shader programming.
This finally got me to fill in the gaps that my inner child was missing to understand the magical process behind playing games in GBA or PC.
It was a pleasure and a great opportunity for me to get lost in computer graphics topics for the past 2 years.