Andrew Williams

Andrew Williams

Computer Engineer

I design and build embedded software systems that bridge hardware, data, and real-time applications.

LinkedInResume
C
C++
Python
Linux
Embedded Systems
Bare-Metal Firmware
Real-Time Systems
Microcontrollers
Hardware Interfaces
Git
KiCAD
TypeScript

Work Experience

Embedded Software Engineer

Beacon Industries

Aug 2025 - Jan 2026

    Phase I SBIR work focused on non-intrusive exposure of legacy avionics data to modern software applications under real-time constraints.

  • Led development of a C++/Python avionics data simulation and exposure framework for legacy bus data analysis.
  • Implemented MIL-STD-1553 and ARINC-429 protocol decoding, abstraction, and data routing for validation and analytics.
  • Designed a modular, hardware-agnostic simulation architecture for repeatable validation under timing and data-rate constraints.
  • Developed an offline-trained autoencoder workflow and deployed static model artifacts into a deterministic real-time pipeline.
  • Authored the final Phase I report submitted to NAVAIR, delivering the end-to-end system from concept through review.

Service Technician

College Computing Services

Feb 2021 - July 2025

    Supported computing infrastructure and internal tooling for engineering labs and academic departments, with a mix of software development and hands-on system support.

  • Developed and maintained a custom TypeScript-based inventory tracking application used to manage over 5,000 devices.
  • Improved the application interface and workflows, making inventory tracking more efficient and easier to use for staff.
  • Cloned and deployed SSD images to streamline software installation and setup across engineering lab machines.
  • Upgraded and maintained classroom computers and AV systems to support reliable day-to-day use by students and faculty.

Projects

Ultrasonic Distance Sensor + LCD

Slide 1

A real-time distance meter using an MSP430, ultrasonic sensor, and an I2C LCD.

C
Embedded Systems
Bare-Metal Firmware
Real-Time Systems
Microcontrollers
Interrupts
Timers

Challenge

Using hardware I accumulated through college, I wanted to build something that felt like real firmware. Something that could measure time precisely, respond in real-time, and follow sound engineering practices. This project enabled that goal through an ultrasonic sensor that encodes distance as the width of an echo pulse.

Solution

I configured a hardware timer on the MSP430 in capture mode to timestamp the rising and falling edges of the echo pulse, then computed the pulse width from those interrupt-driven timestamps. Those pulse widths were then converted to centimeters, with light filtering added to prevent readings from jumping or latching incorrectly at the edges of the detection range.

To visualize the computed distance, I implemented an LCD driver for an I2C backpack, including initialization and a small API for writing strings and values to keep the main loop readable. The system was structured around a simple pipeline: trigger → capture echo → compute distance → update LCD + LED outputs.

Impact

  • Produced a live distance readout on the LCD and a clear visual alert when an object enters the target range.
  • Demonstrated hands-on comfort with core embedded fundamentals: timers, interrupts, peripheral configuration, and hardware interfaces.
  • Resulted in a clean, explainable firmware architecture.

Avionics Data Simulation & Analysis

Slide 1
Slide 2
Slide 3
Slide 4

A real-time software framework for simulating and observing legacy avionics bus data without modifying certified flight systems.

C++
Python
Data Distribution Service
Embedded Systems
Real-Time Systems
Simulation & Test
Systems Architecture
Defense R&D

Challenge

Modern software systems increasingly rely on access to real-time data, but many avionics platforms expose data through proprietary legacy interfaces that can't be modified without impacting certification or flight-critical behavior. The challenge was to design a system that could observe and distribute avionics data in real time while remaining non-intrusive, deterministic, and fully compatible with existing certification constraints.

Solution

I designed and implemented a modular C++ and Python software architecture that generates, ingests, translates, and disseminates avionics bus data through a controlled, observational pipeline. The system emphasized non-intrusive data exposure that preserved certified system boundaries while enabling downstream analysis and application access.

I architected an offline machine learning workflow to characterize avionics data behavior, then deployed the resulting static model artifacts into the real-time pipeline to preserve deterministic execution. The processed data propagated to a secure dashboard endpoint that visualized data frames and highlighted ML-detected deviations in real time.

Impact

  • Delivered an end-to-end Phase I SBIR software system from concept through final government review.
  • Enabled secure, non-intrusive access to legacy avionics data for validation and analytics use cases.
  • Demonstrated deterministic, real-time behavior under representative operational constraints.
  • Established a scalable foundation for future prototype development and system expansion.
View SBIR topic solicitation

AI-Assisted Driving Simulator

Slide 1
Slide 2
Slide 3
Slide 4
Slide 5
Slide 6

A real-time driving simulation exploring human-in-the-loop feedback, system responsiveness, and interactive software design.

C#
Haptics
Real-Time Systems
Artificial Intelligence
Simulation
Human-in-the-Loop
Systems Integration
Software Architecture

Challenge

My team and I were tasked with designing a driving simulator capable of providing real-time feedback to a human operator while combining realistic vehicle control, simulation fidelity, and adaptive software behavior. The project needed to integrate physical input devices with a simulation environment while maintaining responsiveness and a coherent user experience.

Solution

We constructed a driving simulator using Unreal Engine that integrated steering wheel hardware, haptic feedback, and software-driven coaching. The system combined simulation logic with external AI-based services to generate contextual feedback for the driver, emphasizing timing, responsiveness, and usability rather than visual realism alone.

The simulator was designed as a modular system, separating simulation logic, input handling, and feedback mechanisms that allowed iterative development and testing.

Impact

  • Implemented real-time input handling and feedback loops between physical hardware and a simulation environment.
  • Designed interactive systems where timing and responsiveness directly affect user behavior.
  • Explored modular software design in a simulation context, reinforcing principles later applied to embedded and avionics systems.
  • Delivered a complete, standalone simulator suitable for demonstration, evaluation, education, and recreational use.

3×3 Mechanical Macropad

Slide 1
Slide 2
Slide 3
Slide 4
Slide 5
Slide 6

A custom hardware and firmware project exploring embedded input devices, PCB design, and low-level firmware configuration.

C
KiCad
QMK
Embedded Systems
Firmware Development
Hardware-Software Integration
PCB Design
Low-Level Programming

Challenge

I was inspired to strengthen my understanding of firmware, bare-metal programming, soldering, and PCB design through a hands-on project. This motivated me to design and build a compact macropad that balanced simplicity, reliability, and usability.

Solution

I designed a custom 3×3 macropad PCB using KiCad, integrating mechanical switches, diodes, and an Arduino microcontroller. I assembled and soldered the hardware, then developed and flashed custom QMK firmware in C to define keymaps, layers, and macro behavior.

The firmware configuration emphasized modularity and flexibility, allowing the device to be easily reprogrammed and adapted to different workflows without hardware changes.

Impact

  • Gained hands-on experience designing and assembling a custom PCB for an embedded input device.
  • Developed and modified low-level firmware to handle key scanning, debouncing, and macro behavior.
  • Reinforced understanding of the interaction between hardware constraints and firmware design.
  • Delivered a fully functional, programmable device used for daily workflow automation.

Let's Connect

"The question of whether computers can think is like asking whether submarines can swim." — Edsger Dijkstra