
WELCOME TO BORIS YIP EPORTFOLIO
About
My name is Boris Yip
Hi, I’m Boris Yip, a graduating Electrical Engineering student at UBC Okanagan with a passion for environmental innovation. Throughout my academic journey, I’ve focused on blending embedded systems, data processing, and automation to build solutions that address real-world challenges. My capstone project—a camera-based water monitoring system for early cyanobacteria detection—deepened my interest in applying technology to public health and environmental protection. I thrive on designing systems that integrate hardware and software, and I’m motivated by projects that create meaningful, tangible impact. Looking ahead, I aim to pursue work that advances sustainable technologies and scalable monitoring solutions.

Capstone Project - Camera-Based Identification for Water Quality Monitoring

Cyanobacteria, often responsible for Harmful Algal Blooms (HABs), can release dangerous toxins that threaten ecosystems, public health, and local industries. Existing detection methods—like satellites, community photos, and lab testing—are either too slow, expensive, or inconsistent. To help address this, our team designed a low-cost, automated, land-based system to collect and image water samples, supporting early detection and response.

The Journey
Our process was highly iterative and followed the standard engineering design process—from problem identification to testing and refinement. In Term 1, we began with the Ask and Research phases, exploring ideas such as drone monitoring and floating robotic platforms. After consulting domain experts and evaluating constraints, we moved to the Imagine and Plan phases, ultimately pivoting to a more practical solution: a fixed imaging station by the water's edge. We prioritized modularity, affordability, and deployability.
During Term 2, we entered the Create, Test, and Improve stages. The final prototype integrated an Arduino-controlled pumping system, a brightfield digital microscope, and a Raspberry Pi running a multithreaded image capture and upload pipeline. When faced with seasonal limitations—specifically, the dormancy of cyanobacteria—we used crushed leaf samples to validate the system. Our microscope still captured clear images at 400x magnification, confirming that our imaging and data flow worked as intended. We also engineered a flushing system to reduce biofouling and tested each subsystem independently before integrating the full design.
Our Solution?
We built a compact prototype that automates water intake, captures microscopic images, and uploads them to the cloud. This system works in a four-stage cycle: 1) intake, 2) imaging using a Raspberry Pi and digital microscope, 3) cloud upload, and 4) internal flushing. It includes a custom water-holder to stabilize samples during imaging and uses multithreaded data handling to avoid interruptions.
Our process involved iterating through cost, clarity, and environmental constraints. We tested individual modules (pumps, relays, sensors) before full system integration. Raspberry Pi and Arduino were chosen for their affordability and flexibility, with threading used in Python to maintain efficiency. Due to seasonal conditions, we validated the imaging pipeline using leaf samples.


IN SHORT... (Non-Engineering View)
We built a wooden box that collects lake water, takes microscopic photos of it, and sends them to the cloud. If anything dangerous is spotted, people will know before it becomes a problem.

Technical Overview - Engineering View

The Connections Explained!
The system uses three isolated power rails: 12V (main pump, solenoid valve, inverter), 9V (flushing pump), and 5V (Arduino, relays, Raspberry Pi), each fed by separate batteries to manage load and reduce interference.
The 12V main pump draws lake water, while the solenoid valve holds it in place during imaging. An inverter supplies AC to the microscope, which connects to the Raspberry Pi via USB.
The 9V line powers a disinfectant pump for automatic post-sample flushing to prevent biofouling.
The Arduino controls relays (orange lines) to toggle devices and uses a water flow sensor for intake feedback. GPIO communication (purple lines) enables synchronization with the Raspberry Pi.
The Pi captures images via a 2500x USB microscope, stores data locally, and uploads to the cloud using multithreaded Python to avoid blocking image capture.
The system is modular and logically segmented into five functions: pumping, disinfecting, imaging, control, and communication.
The Data Management Explained!

Data Management Flow
The image capture and upload process runs on two threads:
-
Thread A handles camera activation, image processing, and SD card storage. If uploading takes too long, the image path is queued.
-
Thread B monitors that queue. If an upload fails, the thread retries until success. Once the queue is empty, it terminates.
This structure prevents delays in sampling by ensuring cloud upload doesn’t block image acquisition or signal response to the Arduino.

Results and Discussion
Sample Results
Due to seasonal weather conditions, cyanobacteria levels were dormant for most of the project duration. To simulate realistic samples and validate the imaging pipeline, we used crushed leaves placed in our custom-built water holder. Despite this substitution, we were able to obtain meaningful images at 400x magnification, confirming the effectiveness of our imaging system and the clarity achievable with our microscope setup.

Results Summary
The system met its goals of automated sampling, imaging, and storage with low power use, capturing clear plant-like cell images. However, at high magnification, many images captured empty water fields. To reduce useless images from high magnification, future work will add automatic filtering. The system is ethical, non-invasive, and meets client needs for efficient, low-maintenance monitoring.

In short... PROJECT WAS A SUCCESS!
In short, our project was able to successfully demonstrate a functional prototype that automates water sampling, captures high-resolution microscopic images, and uploads data to the cloud—all within a modular, low-cost system. Despite seasonal constraints limiting access to cyanobacteria, we validated our imaging and data management pipeline using substitute samples, confirming the core concept and proving the system’s potential for real-world environmental monitoring.
Reflection from Capstone Project
Through this capstone project, I learned that the design process is rarely linear—it’s iterative, adaptive, and shaped by real-world constraints. Initially, my team envisioned a complex aquatic robotics network, but we quickly realized that ambition without clarity leads to weak problem definition. This realization pushed us to reframe our focus, ultimately leading to a practical, impactful solution: an automated system for water sampling and cyanobacteria detection. That shift taught me the importance of scoping, stakeholder alignment, and making design choices grounded in feasibility.
From this experience, I believe the most important attributes of an engineer are adaptability, critical thinking, and communication. Engineering isn't just about building systems—it’s about responding to evolving conditions, collaborating across disciplines, and making informed trade-offs. During this project, I had to navigate limitations in time, resources, and environmental conditions while ensuring our system still delivered meaningful results.
This project gave me a deeper appreciation of the role of a professional engineer. We are not just technicians—we have a responsibility to protect the public, prioritize safety, and design with sustainability in mind. Creating a system for environmental monitoring reminded me that engineering solutions often serve people we never meet, and that our decisions carry long-term consequences.
Looking back on my time in the School of Engineering, I’ve realized one of my key strengths is systems thinking—bringing together hardware, software, and data to solve real-world problems. I’m also resourceful and unafraid to pivot when necessary. However, I recognize that I need to grow in long-term testing and robustness evaluation. Moving forward, I plan to engage with open-source communities and contribute to field-tested hardware projects to improve my skills in those areas. This project has made me more confident in my ability to contribute meaningfully as an engineer—and more aware of the responsibility that comes with it.