Software Projects
IoTA: Smart Home Assisting Mobile App
A full mobile application that serves as an interface for an Intenet Of Things network implemeted in a smart house. It supports remote control of IoT devices as well as customizable automations via modes. IoTA lets the owner turn on devices, livestream from security cams, tweek volume of speakers, speed of fans, temperature of ACs, schedule multidevice operation and scan for newly added devices.
Using: Flutter, Dart, Figma, PHP
See MoreBeatopia: Dual Purpose Musical Productivity Tool
An ambience tuner that allows users to create immersive mixes by blending built-in beats with calming nature sounds. Recommendations in the Discover page are generated using a trained supervised learning ML model to match users' moods and preferences based on their listening habits. The main dashboard includes a drag-and-drop Kanban board, where users can create tasks with customizable labels.
Using: React, Bootstrap, Python Flask
PyMix: Python Music Player and Sound Mixer
A Python music player and mixer using an object-oriented approach. Audio manipulation is handled via PyDub and playback via SimpleAudio. Threading allows simultaneous user commands and playback, supporting play, pause, skip, and rewind functions. Mixes are organized in a queue-based array with shuffle and loop options, providing dynamic playlist control. Mixes are generated via an overlay option.
Using: Python PyDub, SimpleAudio
Windows PowerShell Directory Analysis Tool
A directory storage analysis tool inspired by WinDirStat but that visualizes directory information using bar graphs and Sankey diagrams, enabling intuitive insights into storage usage. Features include directory analysis, file filtering, and progress logging, with visualization achieved through HTML and JS hosted via a Python server. Featuring modular scripting, parameterized functions and efficient path manipulation.
Using: PowerShell, JavaScript, Python
Leafcards: Flashcard based Learning Website
Website targeted for students to learn on the go using flashcards. The ecosystem uses an object-oriented approach of creating labeled flashcard decks called Leafsets, each containing key-value pairs called Leafcards. The website supports making ones Leafsets public and thus visible to other users to save them and practice while also being able to search public Leafsets.
Using: CSS, JavaScript, Flask, MySQL
See MoreLow-Level Matrix Multiplier Routine using Assembly
A m-by-n Matrix Multiplying subroutine implemented from scratch to be executed on the Motorolla 68000. It takes as a parameter two matrices, each defined in a two-byte addressable memory using row-order, and that return the output matrix stored in memory in row-order. It applies the general matrix multiplication formula consisting of nested loops and summations on a per-element basis using pointers.
Using: Motorola 68000 Assembly, EASy68k
Web Scraper: BBC News Headlines Extraction Tool
This Java-based web scraper connects to the BBC News RSS Feed and scans the website, extracts this data as an XML script entity, then runs the Java code that writes the extracted headlines back into a seperate output text file that it creates in the same directory. Once run, the script automatically updates the content in the file with the refreshed current live news headlines, which can be used for further analysis.
Using: Java, XML
Hardware Projects
Smart Underground Recycling Bunker System
A driver-friendly undergound bunker design that is accessible from the car. Users select the type of trash using buttons on a panel. Garbage is directed underground until reaching a valve connected to a servo motor controlled by an Arduino to direct it to the correct bunker. IR Sensors were designed to detect if a bunker is full. Logic circuitry is implemented to implement direct access, emergency mode to notify workers.
Using: Arduino, Tinkercad
Light Intensity Displaying Embedded System
A periodic interrupt-driven embedded system implemented on the MC9S12DT256 microcontroller featuring password-based access, LED shifting controlled by a potentiometer, photoresistor-based LED activation, real-time hex display of phototransistor readings on an LCD, and system shutdown via a push button. This project integrates hardware peripherals and efficient task switching using interrupts.
Using: Assembly, MC9S12DT256
Inverted Pendulum Balancing on a Cart
Modeled and controlled an unstable system using the Lagrangian method to derive equations of motion. Linearized the system around its upright equilibrium and implemented state-space representation. Developed a Simulink simulation with PID controllers, both built-in and customized, visualizing responses to various inputs. Applied manual and auto-tuning for an optimal swing-up control performance.
Using: Matlab, Simulink
Intelligent LED Network for Mountaineous Roads
Motion-sensored LED network controls road lighting by using data from a nighttime sensor and two IR sensors to activate LEDs only when necessary. 555 timer circuits ensures the lights stay on for 90 seconds after a vehicle is detected. It's powered by energy harvested from speed bumps, where mechanical energy is converted into electricity, all regulated by a BQ24650 chip, and stored in lithium batteries.
Using: Altera Quartus, Circuit-diagram
See MoreElectronic Dual Sensor Alarm for Motion and Fire
Two sensors inputted to an OR gate made out of MOSFET transistors using HEF4007 IC chip. The first one is for heat, done using a thermistor and a comparator configuration using UA741 OpAmp; the other one is similar but for motion with an LDR instead. Once either sensor is triggered, the gate output voltage would turn on a buzzer, and its amplified current turns on a DC motor whose speed is tuned by a potentiometer.
Using: PSpice, Circuit-diagram
See MoreChip-based Automatic Car Transmission System
Done using Logic IC chips with brake and gas pedals inputted through pushbuttons and PRND modes encoded after switches. A finite state machine governs the main states and the transitions: park, reverse, neutral and drive with 4 gears. The RPM is handled by a counter designed from scratch and displayed into seven segment displays. LED indicators are used to complement the driver dashboard to show modes and gears.
Using: Altera Quartus, Virtual Breadboard
Cache Memory Design for a Minimized Miss Rate
An investigation of the impact of cache design elements, including block size, mapping techniques, and replacement policies, on the miss rate. Main memory was configured to 256 KB with a 256-byte block size, utilizing the Ear benchmark, which simulates sound file conversion into cochleograms. Memory trace files for read/write operations were loaded during analysis, revealing performance insights.
Using: SMPCache Simulator