Asmi Gujral Portfolio

Hi! I'm an undergraduate mechatronics engineering student skilled in embedded
systems, data science, as well as web development.

I also love to learn about space sciences and ongoing advancements in
space technologies.

Follow along with my portfolio, as I highlight some of my work in firmware
development and space systems!

Projects At A Glance

Below are some of my most recent projects in embedded systems. Click on "Learn More" for a more detailed description on each of them.

Electric Bike Motor Controller

C, Nucleo STM32, DRV8301, BLDC motor, SimpleFOC

Wireless GPIO Control Network

C++, ESP32, AWS API Gateway WebSockets, TypeScript, React.js, PlatformIO

Remote Control & Monitoring System

C++, ESP32-CAM, Telegram Bot API, PIR Sensor, DHT11 Sensor

Asynchronous Data Streamer

C, Nucleo STM32, FreeRTOS, SPI, UART, ADC, DHT11 Sensor, Potentiometer

WSST - Motor Controller & Data Acquisition Subsystem

C, Arduino, Gearmotor, L298N Motor Driver, MPU6050 Accelerometer, SD Module

UW Orbital - Weather Balloon Payload

C, Arduino, ArduCAM, SD Module

Electric Bike Motor Controller

This project is an electric bike motor controller, that was implemented using Nucleo STM32, Arduino C++, and SimpleFOC. The purpose was to drive a BLDC motor system using the DRV8301 motor driver.

It incorporates various communication protocols like SPI, to detect and rectify over-current and over-thermal errors on the motor driver.

It was created as part of the Electrium design team, for the Spring 2023 Electric bike project.

To view the code for this project, along with its functional software block diagrams, please visit the GitHub Repo below.

Wireless GPIO Control Network - In Progress

For this project, I used the ESP32, AWS API Gateway WebSockets, React.js, and Typescript to develop an ESP32 WebSocket client in C/C++ using PlatformIO.

I am currently working on integrating the websocket client with AWS API Gateway WebSockets and AWS Lambda in order to enable real-time GPIO pin control using the cloud services, and React.js to create a control panel for browser-based control.

I am also implementing error handling mechanisms in the AWS Lambda functions to ensure reliability and fault tolerance.

To view the code for this project, along with its functional diagrams, please visit the GitHub Repo below.

Remote Control & Monitoring System

For this project, I configured the ESP32-CAM with a PIR and a DHT11 Humidity and Temperature sensor, in sending HTTP requests to the Telegram API.

I also facilitated interrupt handling within the code, in order to detect any motion events with the PIR sensor and send pictures upon detection.

The DHT11 sensor was used to collect and transmit data, when a request for doing so is sent to the Telegram bot, with the project using Wi-Fi connectivity with the ESP32 for remote access and control.

To view the code for this project, along with its functional software and wiring diagrams, please visit the GitHub Repo below.

Asynchronous Data Streamer

This asynchronous data streamer enables real-time data acquisition using the C, STM32, FreeRTOS, the DHT11 sensor, a potentiometer, an SD module, as well as various communication protocols like SPI, UART and ADC.

More specifically, the FreeRTOS kernel has been used to configure concurrency and varying task priority within tasks that poll each sensor for data.

Additionally, protocols including ADC channels, GPIO interrupts, and UART serial and SPI communication were used in order to facilitate data transmission to an SD card.

To view the code for this project, along with its functional software and wiring diagrams, please visit the GitHub Repo below.

Motor Controller & Data Acquisition Subsystem - WSST

This project uses the L298N motor driver, a 24V gear motor, the MPU6050 accelerometer, an SD Module as well as an Arduino, to track and save acceleration and gyroscopic data while driving the motor.

This project is a subsystem that was created as part of the CANRGX7 submission on behalf of the Waterloo Space Soldering Team.

It uses protocols like I2C (accelerometer), SPI (SD module), and PWM (drives the motor) to run. Its planned use is to be mounted inside a centrifuge that will test soldering quality in microgravity, as part of the CANRGX7 competition in collaboration with the CSA (more details in the Experience section, under WSST).

With our current working design, I also Implemented bidirectional USART communication with the STM32 for motor control, to interface with a GUI developed using tkinter and pyserial. This helps us to control the motor speed, and whether it's on or off using the GUI, to prevent having to rebuild and reflash the code and having to hard code a PWM value.

To view the code for this project, along with its architecture diagram, please visit the GitHub Repo below.

Weather Balloon Payload - UW Orbital

This project uses the ArduCAM OV5640, an SD Module as well as an Arduino, to take a picture and save it to the SD module.

This project is a subsystem that was created as part of the Weather Balloon Project during my time at UW Orbital (a cube satellite design team).

It uses protocols like I2C (ArduCAM), and SPI (SD module). Its planned use was to be mounted under the surface of the weather balloon, that was to be launched into the lower Earth atmosphere to take pictures while ascending of our home, the planet below (more details in the Experience section, under UW Orbital).

Experience

Below is some of my experience, both professional and extracurricular!

Software Systems Analyst Intern

OpenText

Jan 2024 - Apr 2024

  • Implemented intuitive solutions using AppWorks low-code platform for software functional design, emphasizing UI and moderate complexity calculations
  • Led end-to-end software development and conducted quality assurance, including advanced troubleshooting and Python API script development for optimised system data communication
  • Applied advanced SQL and VBA techniques for in-depth system analysis, and executed seamless data transitions between systems, improving overall data management efficiency using PowerShell
  • Conducted regression testing for various software platforms within the UAT cycle in ALM (Application Lifecycle Management)

Embedded Systems R&D Designer

Waterloo Space Soldering Team

Jan 2024 - Present

  • Designed the firmware architecture for the team’s centrifuge project, scoping out the required firmware and hardware systems to efficiently integrate with on-board subsystems
  • Administered the centrifuge’s data acquisition and motor controller subsystem in C++, enabling SPI, I2C, and PWM protocols to interface with components including a gearmotor, L298N motor driver, accelerometer, and an SD module with an Arduino
  • Implemented bidirectional USART communication with STM32 for motor control, to interface with a GUI developed using tkinter and pyserial for enhanced speed adjustment flexibility
  • Facilitated requirements gathering for the centrifuge, which is a soldering experiment selected for the Canadian Reduced Gravity Experiment 2024 to be tested aboard the National Research Council’s Falcon 20 parabolic aircraft in collaboration with the Canadian Space Agency (CSA)

Associate Platform Engineering, Co-Op

Gore Mutual Insurance Company

May 2023 - Aug 2023

  • Implemented and maintained database components through Intune and leveraged Azure services for optimised user performance and security, having resolved 50+ request tickets and resulting in a more streamlined asset management process
  • Developed Python-based PowerShell scripts to automate routine tasks, resulting in a significant reduction of manual effort, and an increased operational efficiency by 40%

Payload Systems Developer

University of Waterloo Orbital Design Team

Sep 2022 - Sep 2023

  • Designed the Cube Satellite’s secondary payload architecture, scoping out the required firmware and hardware systems to efficiently integrate with on-board subsystem
  • Developed firmware with RTOS for the satellite’s primary and secondary payload manager in C, using task handlers and command IDs to capture pictures with the on-board cameras
  • Facilitated systems design for a weather balloon project, in order to program an Arduino to autonomously take pictures in timed intervals through a SPI bus interface with an ArduCAM device, as well as an SD card module
  • Administered various embedded communication protocols and synthesized the PC104 header stack for the team’s Cube Satellite in order to integrate on-board subsystems

Front End Development Lead

Students for the Exploration and Development of Space (SEDS), Canada

May 2023 - Present

  • Developed interactive webpages from site requests using HTML, CSS and JavaScript with WordPress and Elementor, critically leveraging UI/UX principles for optimal usability, and increasing site traffic by 57%
  • Introduced Jira as a team-wide ticketing management system, streamlining workflows, and enhancing the efficiency of site request implementation

Get in Touch

Feel free to reach out to me!