Skip to the work

Samir Bhattarai

Embedded software & firmware engineer · BS Computer Engineering · Dec 2026 · Hattiesburg, MS

I am a computer engineering student who works where software meets hardware: digital logic on FPGAs, firmware on the boards around it, and the benches that prove both. What holds my attention is the part of a system nobody sees from outside, whether that is a timing report, a scheduler running late by milliseconds, or a residual that only shows at full precision. Every claim below opens into a record with the measurement behind it, and 5 of the fixes are merged in other people’s repositories.

Away from the bench: soccer, music, a guitar I am slowly getting better at, and chess, which I picked back up this year.

Open to new grad roles

Positions


Aug 2023 – Dec 2026

BS Computer Engineering

University of Southern Mississippi · GPA 3.934 / 4.0 · Honors Scholar · Academic Excellence Award

Aug 2024 – present

University of Southern Mississippi

Undergraduate Research Assistant. Generated 800 authentication keys in 1.68 ms within 25 KB of memory overhead by implementing Chebyshev chaotic-map key streaming…

Oct 2025 – Aug 2026

Arroyodev, LLC

Software & IoT Intern. Cut projection calibration from 10 minutes to 2 while holding sub-3-pixel alignment, by automating homography estimation and…

Apr 2026 – present

NCS⁴ · Southern Miss

Web Developer. Took the National Center for Spectator Sports Safety and Security off edit-in-production releases by containerizing the WordPress…

Render of the CASE robot: a rounded upright body on two wheels, with a level-meter display on its face
KiCad layout of the robot’s board: the ESP32-WROOM-32 against its keep-out zone, the TB6612FNG and buck regulator across the middle, and the I2C, I2S and UART headers along the bottom edge3D render of the fabricated board: the ESP32-WROOM-32 module, electrolytic capacitors, the TB6612FNG driver, green screw terminals for both motors, and the labelled header rows

The machine behind the loop you can try below

CASE: Voice-Controlled Self-Balancing Robot. It balances, it listens for its name, and it answers, all on one dual-core microcontroller.

100 Hz
control loop
< 10 µs
loop jitter
167 KB
free heap

ESP32 · FreeRTOS · C/C++ · PID control · MPU6050 DMP · I²S audio · the full record →

Projects


100 Hz
Balance loop

CASE: Voice-Controlled, AI-Powered Self-Balancing Robot

Design and build a two-wheeled self-balancing robot that holds vertical equilibrium via real-time PID control on a dual-core ESP32, integrating on-device wake-word voice input with cloud-based conversational AI so the balance loop is never interrupted by audio processing.

ESP32 · FreeRTOS · C/C++ · PID control · MPU6050 DMP · I²S audio

20
Devices under test

Illumibot Test Rig: Hardware CI & Observability

Provisioning and runtime for the illumibot LAVA test rig: one repository owns the Ansible roles, inventory, and secrets that build it, the docker-compose LAVA stack that runs it, and the Mender OTA pipeline that upgrades 20 physical boards on every release.

Ansible · Docker Compose · LAVA · Mender OTA · Grafana · Loki · Hardware-in-the-loop CI

<1 s
Response latency · 10+ devices

Smart Home SCADA

Build a centralized home-automation platform on industrial SCADA principles rather than consumer smart-home tooling, so the house is supervised the way a plant is. Ignition 8.1 Perspective runs the HMI, every room is modeled as a User-Defined Type, and ESP32 nodes reach the historian over MQTT with Node-RED handling the transforms. That gives reliable real-time monitoring and control of 10+ IoT devices at sub-second response latency.

Ignition 8.1 · MQTT / Sparkplug B · Node-RED · ESP32 · SQLite historian

6
Cooperating agents

PassDTS: AI-Powered Defense Travel System

Build an intelligent travel-authorization platform for the U.S. Department of Defense that uses AI agents to validate requests, route approvals, and orchestrate multi-step approval chains in place of a slow, manual workflow.

React · FastAPI · PostgreSQL · Docker · Multi-agent AI

Fusion 360
Modeled, printed on an H2D

Enclosure CAD, Drawings & 3D Printing

Design, validate, and print the physical parts the projection product and its test bench depend on, from a room-scale fog wall down to the enclosures that make the electronics shippable.

Fusion 360 · Design for manufacture · Bambu Studio · 3D printing

The full index, with six smaller builds →

Research


Accepted · first author

Noise-based Privacy-Preserving Aggregation Scheme for Smart Grid AMI Networks with Hardware Acceleration

4th Intl. Conf. on AI, Blockchain and IoT · Accepted 2026

Meters are paired so their added noise cancels exactly at the aggregator: the utility reads a true sum while no individual reading is recoverable from the stream. The noise layer is written in RTL and runs on a Nexys A7-100T at 100 MHz as a pipelined multiply-accumulate datapath mapped onto the FPGA’s DSP slices, which is the structure a filter or a correlator is built from.

25 MSamples/s
Throughput
9.70%
LUT utilization
200 mW
Total power

CRA UR2PhD · presented

Authentication and Payment for Dynamic Wireless EV Charging

University of Southern Mississippi · Summer 2026

A framework for charging a vehicle while it is still moving. Every expensive operation moves off the real-time path into offline registration, so authentication finishes inside the milliseconds an electric vehicle spends over a charging pad at highway speed. Per-session pseudonyms keep the route private, and settlement is decentralized so no single provider holds the account. Written under the CRA UR2PhD program, where the proposal was presented and the program certification completed.

In progress · undergraduate research

Chaotic-Map Key Streaming for eVTOL Authentication

University of Southern Mississippi · 2024 – present

An FPGA authentication scheme for eVTOL drones built on Chebyshev chaotic maps and SHA in VHDL-2019. Keys are generated from a shared seed on demand rather than stored, so a fleet’s key material never sits on the aircraft.

1.68 ms
800 key generations
25 KB
Memory overhead
10 ms
Auth latency

Try the loop: drag the gains, watch the chassis


THE CHASSIS · 5° SHOVE · LEAN DRAWN ×3

ANGLE · 3 s AT 100 Hz

27
how hard it answers a lean
10
how it trims a standing imbalance
1.2
how much it damps the answer

peak 4.9° · settled in 0.13 s · resting 0.12° off upright

A small-angle model of the plant with a standing imbalance and a noisy angle, stepped at the robot’s own 100 Hz. The numbers are this simulation’s and the rate is the robot’s; the button loads the three gains its firmware actually runs. Drag Ki to zero and it recovers but stays leaning; drop Kd and it overshoots nearly twice as far; wind Kd up and the command chatters on sensor noise.

Merged into other people’s repositories


Merged15.7k stars

ArduPilot/ardupilot

AP_Param: terminate test_find_by_name var_info table

Apple clang aborted the test before a single assertion ran.

#34006
Merged218 stars

gazebosim/sdformat

Return identity directly when resolving a frame against itself

A frame resolved against itself came back with a residual near 2⁻⁵⁶, enough to tilt a joint axis on macOS arm64.

#1693
Merged1.5k stars

Same bug, one repository downstream

gazebosim/gz-sim

Revert the arm64 skip in ModelCommandAPI_TEST

gz model reported a joint axis of [0 1.26714e-17 1] on macOS arm64, with two expectations switched off behind an #ifndef __aarch64__ rather than explained.

#3874
Merged4.4k stars

maurodesouza/profile-readme-generator

Reset the right panel when the active section is cleared

Deleting a selected section crashed the editor.

#214
Merged71 stars

faust-machines/fusion360-mcp-server

Fix create_parameter to use UserParameters.add() directly

create_parameter raised AttributeError on every call.

#5
Open8.1k stars

meshtastic/firmware

Drop blank and line-noise text messages in TEXTMSG serial mode

#11380
Open7.9k stars

isaac-sim/IsaacLab

Fix raycast_mesh distance and face-id shapes for leading dimensions

#7034

One of them, in full

Two checks were switched off on Apple silicon, with an issue number and no cause

gz model reported a joint axis of [0 1.26714e-17 1] on macOS arm64, with two expectations switched off behind an #ifndef __aarch64__ rather than explained.

// gz-sim ModelCommandAPI_TEST
#ifndef __aarch64__
EXPECT_EQ(axis, expected);
#endif

Left and right arrow keys to step · every fix with its root cause →

Run a release across twenty boards in four racks


BENCH IDLE Twenty devices under test, four colour-coded racks. The rig rebuilds from the repository rather than from memory: twelve Ansible playbooks stand it up from bare metal.

An illustration of the release path, not live status. The counts are the bench’s; the run is drawn here. The rig in full →

Writing


7 min

167 KB of free heap decided the architecture

The ESP32 held the loop at 100 Hz with under 10 µs of measured jitter and could not hold a conversation. What the heap budget decided, what stays on the microcontroller, and why.

2 written, each out of work already on this site.