As software engineers at the University of Waterloo, we engage in project-based learning methods. This often leads us to understanding and designing complex circuits. To avoid the tedium of analyzing the circuit and optimizing by reducing cost, we designed Circuit Buddy.

What it does

Circuit buddy analyzes and simplifies complex circuits. Simply take a picture of the circuit in question, upload it to Circuit Buddy, and recieve an optimized circuit.

How we built it

A copious amount of Red Bull, too much time, and our lord and saviour Jeffery Xiao.

All jokes aside, we utilized a python flask server to communicate with our HTML, CSS, and JavaScript front end. We used canvas powered by a Fabric JS client running on top of JQuery.

Our backend is particularly interesting, cleverly utilizing OpenCV to scan images and import real-life schematics into the web app. Furthermore, circuits are simplified server-side with a modified Quine-McCluskey KMap Reduction algorithm.

Challenges we ran into

Just about everything. 1200 lines of plain jQuery and JavaScript tends not to bode well for software reliability, but hey "move fast and break things" amirite? Furthermore, none of the team is particularly experienced with OpenCV, resulting in the loss of numerous hours solely to download the software.

Accomplishments that we're proud of

We're incredibly proud of the entire project, however, a few specific details stand above the rest. Implementing OpenCV to analyze a picture of a circuit was incredibly difficult, and we're proud that we were able to rise to the challenge. Additionally, our circuit reduction algorithm proved to be much more complicated than we originally expected. We're happy to say that we eventually solved the problem.

What we learned

Canvas is hard. OpenCV is hard. Circuits are weird. I don't know what I'm doing trying to be a software engineer. Honestly, just assume that this section contains some deep philosophical meaning.

What's next for Circuit Buddy

We haven't decided yet. We're all interested in the project, and we may decide to continue developing the project.

Share this project: