Master
Intermediate
Novice
Programming Languages
C
Python
C++
Dart
Rust
32-bit Microcontroller
NXP LPC4078
ESP8266/12E/32 WiFi Chip
ARM Cortex M4 STM32L4
TI CC1352R1 / CC1352P2
TI TM4C123G
Microprocessor
Raspberry Pi
Beaglebone Black
BG96
M18Q2F
Protocols
UART
SPI
I2C
CAN
CAN DBC
MQTT
HTTP/HTTPS
Websocket
TCP/IP
UDP
Technology
GPS
BLE
Lidar
OpenThread
Software
FreeRTOS
CMake
Unity (Unit Test)
CMock
Zephyr OS
TI-RTOS
OpenOCD
Git
Fake Function Framework
Flutter
Android
Embedded Linux
Tools
Logic Analyzer
STM32CubeIde
VSCode
Kiel uVision
IAR Embedded Workbench
Eclipse
PCAN
BUSMASTER
TuringSense
Firmware Engineer Intern • December, 2020 — Present
TuringSense is a pioneer is wearable sports technology and is revolutionizing training with innovative multi-sensor, high-speed full-body motion analysis.
- Part of the core wearable teaming to improve throughput and performance for the NRF52840 microcontrollers
Links
Blue River Technology
System Software Intern • May, 2020 — August, 2020
Blue River Technology is a smart agriculture based company that has developed See and Spray technology in collaboration with existing John Deere equipments
- Worked with the development team on the See and Spray Technology to design and implement algorithms and software for a real-time robotics system using C++17 and Python.
- Wrote and tested software on Nvidia based linux systems.
- Assisted in developing tools to enable system introspection and data processing for CAN J1939.
Links
C++17
Python
CAN
J1939
Nvidia
Linux
San Jose State University
Research Assistant • Oct, 2019 — May, 2020
Implemented a Real-Time Monitoring system for Firefighters in high-risk environments using various development boards
- Integrated the STM32L4 (B-L475E-IOT01A with onboard sensors), Carbon Monoxide sensor with Cellular Modem (BG96 and AT&T Module) and Google / AWS Cloud.
- Used the NRF Thingy 91 with Zephyr OS to recreate the above functionality.
Links
Carbon Monoxide Sensor
GPS
LTE
MBED OS
Zephyr OS
Spartan Hyperloop, San Jose State University
Control and Communications Lead • Sept, 2010 — Present
Spartan Hyperloop is a club at San Jose State University that builds pods to compete in the Hyperloop competition
- Transferred data from the NUCLEO-F746ZG over Ethernet UDP to the host computer using the TFTP Server.
- CAN Drivers were used to communicate within the system peripherals.
- Worked on the state design of the Spartan Hyperloop pod.
Links
Ethernet
UDP
CAN
MBED OS
STM32 HAL
Maroon Electric
Embedded Systems Developer • April, 2018 — July, 2019
A Home Automation startup aimed at making modular and cost effective smart switches
- Successfully achieved a multi-tiered architecture between the hardware, server and mobile application.
- ESP12E Smart Switch functionality and integration with Raspberry Pi local database.
- Local and cloud based Parse Server instances were successfully setup.
- Slave devices (ESP12E) were controlled via custom made Android applications (Native and Flutter).
Links
ESP12E
Bluetooth
PlatformIO
Flutter
Android
HTTP/HTTPS
Websocket
Earth Energy EV
Embedded Systems Intern • Dec, 2017 — March, 2018
An Electric Bike startup aimed at making a sturdy and cost effective solution for Indian Markets
- Implemented a real-time data logging system to get data from the BLDC Motor and Motor Controller.
- Implemented driver based indexes to modify the system and battery consumption parameters as per customer’s driving style.
- Worked on the auxiliary system on the Electric Bike to make it a real-time responsive system.
- Integrated the bike with GPS, Bluetooth using Arduino and Raspberry Pi as controllers.
Links
GPS
Bluetooth
2G/3G/LTE
Arduino
Raspberry Pi Nano
Python
FTP
Master's Project • August 2020 — Present
To create a peer to peer mesh based network using Google’s OpenThread framework to monitor large crowds, as well as to collect and forward data to healthcare personnel for further analysis and diagnosis.
- Architectured the OpenThread CLI project for Texas Instruments CC1352R1 and CC1352P2 chips using CMake with the ARM GCC toolchain, OpenOCD debugging and unit-testing frameworks.
- Interfaced the SGP30, SPEC CO sensors with the onboard sensors on the B-L475E-IOT01A STM32 board using the MBED OS.
- Configured the STM32 board as an I2C Slave device for the CC1352R1 board while simultaneously sending data over TCP to a local server for data storage.
Additional Links
TI-RTOS
OpenOCD
SGP30
Spec CO
MAX30101 (Heartrate)
B-L475-IOT01A
MBED OS
Unit-Test and Mock
Individual Project • March, 2020 — Present
To create an enterprise-level firmware stack from scratch using the GCC ARM toolchain
- Linker scripts were written and customized for C and C++ language support and the newlib library. Specific compiler and linker flags were used to optimize for the code size and speed.
- ARM CMSIS and FreeRTOS software stacks were used with the project and integrated with buildsystems like CMake and Meson to compile, flash and debug the target board using ST-Link Programmer, OpenOCD and GDB.
- Platform agnostic interfaces and hardware bring-up for the STM32L4 and LPC4078 microcontrollers.
Additional Links
STM32
GPIO
UART
ARM
OpenOCD
FreeRTOS
CMake
C++17
CMPE243 Team Project • Feb, 2020 — May, 2020
To develop an autonomous RC Car which can navigate from the source destination to its selected destination using Sensors, Actuators and GPS.
- Each controller was designed as a self-contained module that handled specific tasks.
- Message passing between each node (SJTwo Board) was done over CAN (Controller Area Network) and messages were auto-generated using the CAN DBC format.
- Primarily worked on the Geological Controller and interfaced the GPS, Bluetooth and Compass hardware.
- Worked on the Haversine algorithm, Waypoints algorithm and the Driver Controller logic.
Additional Links
UART
I2C
CAN
GPS
Compass
Bluetooth
NXP
Generate PUF using NAND Flash
CMPE240 Team Project • Sept, 2019 — Dec, 2019
Generate a Hardware based PUF/Secure Key by simulating Read and Write Disturb on a SLC NAND Flash.
- NAND Flash K9F1G08U0E was bit banged using the B-L475E-IOT01A board.
- Program Disturb was successfully recreated on the SLC Flash and the PUF was generated after running the Program Disturb for 10000 cycles.
- IEEE based research paper was written and submitted for the CMPE 240 course.
Additional Links
STM32
NAND Flash
PUF
MBED OS
CMPE244 Team Project • Oct, 2019 — Dec, 2019
Create a MP3 Player with an LED Matrix and OLED Screen for output. A Music based game was to be created and playable on the LED Matrix.
- OLED Drivers using the u8g2 library was written and tested on the in-house SJTwo Board (NXP 4078).
- APDS-9960 Gesture Sensor and Accelerometer Sensor (MMA8452Q) drivers were written to create the music based game
- Mobile application was created using Flutter and Bluetooth was used to send Accelerometer and Joystick sensor data to the SJTwo Board.
Additional Links
OLED
NXP
I2C
Flutter
Bluetooth
Individual Developer • Dec, 2018 — Jun, 2019
Build an IoT based Plant Watering system that can be controlled remotely as well as perform watering tasks automatically
- Successfully built and integrated the frontend (Mobile App), backend (Parse Server) and Slave devices (NodeMCU – ESP12E)
- Backend systems were configured with ACLs to handle multiple clients using the same device as well as to add multiple slave devices under the same client.
- Client (Mobile App) and Slave device had the ability to send and receive updates in real-time using the Parse Server Websocket integration.
- Slave devices had RTC integrated to store alarm information and water the plant at a particular time during the day.
Additional Links
ESP12E
RTC
Flutter
ACL
HTTP/HTTPS
Websocket