I tried to build an Internet-enabled controller for my oven so that I can start cooking chicken wings even when I'm at work. The design worked out but the installation process lead to a fatal failure. More details can be found here.
Selected work
A log of things I've built across software, mechatronics, and mechanical design — some shipped, some paused, all instructive.
I tried to build an Internet-enabled controller for my oven so that I can start cooking chicken wings even when I'm at work. The design worked out but the installation process lead to a fatal failure. More details can be found here.
Locked Door Detection System is an Internet of Things project that I developed to monitor the locking status of my apartment door. It is part of a DIY home security system. Details can be found here.
Imagine a refrigerator that does not consume electricity, but utilizes only solar energy. No, the solar energy is not converted into electricity by a solar panel, it directly involves in the refrigeration system and drives the cooling cycle. With no electricity in the system, the refrigerator is designed to be low-cost, environment-friendly, and maintenance-free. This refrigerator can be a life-saver, as clinics in African rural areas and earthquake-stricken places can use it to store temperature-sensitive vaccines even when there is no electricity supply.
The project was initiated in September 2015. I invited Zihao Zhang and Yirong Zhang into the team, both of whom were Mechanical Engineering students at UIUC. We did background research in various refrigeration technologies in late 2015, and brainstormed several possible solutions in the stage of concept design. Nowadays we are searching for suitable chemical substances that would be used in the product, and preparing experiments to compare their thermal properties.
After comparing absorption and adsorption refrigeration, we decided to choose the latter one as the cooling mechanism. More details will be released once we finish building the first prototype.
Feel free to contact me if you are interested in any aspect of this project.
TrussMe.io is a web-based statics solver for truss system. I started to work on this web app in my senior year, and finished the main part of it in late 2015. TrussMe.io allows users to input information about a 2-D truss system and it will solve for forces on each beam in the system.
The idea of creating such a website came from one homework assignment in my Mechanical Design class at UIUC. In that assignment, we were given the schematics of an excavator arm with more than 20 beams connected to each other and gravity of a weight applied at the end of the arm. The target was to calculate the force applied on each joint, and to achieve that, we must calculate the force on each beam. Solving this problem by hand is extremely time-consuming and tedious, and the final result may be incorrect if any one of these 20 plus forces was miscalculated. Some of my classmates spent few days on this question because they were keeping getting bad result, while I was looking for software and web app that could help. Software often give solutions that are too complex in this case—I do not need finite element analysis to solver statics problem after all. On the other hand, most online tools do not offer quantitative solutions but rather show forces in different colors to compare their magnitude, but what I needed was the exact magnitude of the forces. So I decided to write some code. The initial program was written in Matlab, and the method was to use matrix to solve multiple force balance equations on joints. That program gave me the correct answer to the homework, and when I showed the work to my professor Stephen Downing, I told him that I can transfer this Matlab program to an online tool. The transfer work turned out to be more complicated than just "transfering", and for the following semester, I spent hundreds of hours of my spare time on it. In the end of 2015, I finally finished the main part of the web app, and published it on my personal website. Domain name TrussMe.io was bought later to make this web app looks more professional.
I tried to design this app to be sleek, elegant and ituitive. English is rarely used (except for the slogan "TrussMe, I'm an engineer"), so that even people who do not understand English can use it. Bootstrap is used as the framework of the website, with few Bootstrap plugins that enhance user experience. Math.js is the JavaScript library that allows me to handle matrix calculation. Flot, a JavaScript plotting tool with jQuery, is used to make the plot.
A Matlab program that uses Evolutionary Design Optimization (EDO) method to optimize four-bar straight line mechanism.
Four-bar straight line mechanism is a simple four-bar structure that is capable of transforming rotary movement to psudo-linear movement. It is useful in the applications that require transformation of rotary-linear movement with limited space. Although for a long time, Hoeckens linkage is considered to be the best four-bar straight line mechanism design, no mathematical proof is given. Evolutionary Design Optimization is a method that allows computer to automatically generate and optimize designs that satisfy the requirements set by users. Since four-bar structure design is too hard to be done with mathematical tool, I decided to try to use EDO to come up with a better four-bar straight line mechanism design. I started to program in Matlab from December 2014, and showed my work to Professor Bruce Flachsbart at UIUC the following semester. He was interested in the project and willing to give me guidance along the course of the project. In May 2015, the project was done and the result offered a better four-bar straight line mechanism design than Hoeckens linkage. I was also luckily invited to be a guest lecturer in Professor Flachsbart's class, and gave a lecture to my peer students about this project.
The program at first generated 10000 four-bar linkages with random lengths. Grashof condition was applied to filter out linkages so that the cranks in the remaining linkages can complete a full rotation. All the linkages were then classified into 12 "breeds" based on the relatioship between links. Mating, reproduction and mutation occured as in typical evolutionary algorithm. In the end of the day, the "best" linkage in each breed was found, and therefore 12 candidates entered the final competition, aka "clash of clans". In the end of the project, a better four-bar straight line linkage was found (shown above), and its fitness score is 21% higher than that of Hoeckens linkage.
The calculation of fitness score, in other words, the definition of how good a linkage is, is critical to the final result. In this project, the fitness score is defined as the length of the straight line portion devided by the sum of the lengths of the linkage. It is defined in such way so that the best linkage generates the longest straight line with least material consumed. The calculation of fitness score can vary for different needs and therefore produce different results, but this project intends to prove a way to optimize engineering design.
More than 600 lines in Matlab were written by me and more than 100 CPU hours were spent on the project. One downside of EDO is that it requires massive amount of computing power to finish the calculation.
More technical details are involved in the project. You may search relevant articles and videos online with keywords "evolutionary design optimization" or "evolutionary algorithm" to have a better understanding of the method. You are also welcome to contact me if you want to know more details about the project.
Firefly Project was a website that recorded flight ticket prices over time. It has since been discontinued, as travel sites like KAYAK now offer similar services.
Nearly 820,000 international students were enrolled at U.S. colleges and universities in the 2012-13 year. Most know they'll leave campus a day or two after their final exams and return just before the next semester — but the question is: when is the best time to buy the ticket?
To answer it, I built a service that automatically recorded the lowest price of a designated flight and plotted it over time. Flot handled the plotting, and the Google QPX Express Airfare API fetched price information daily at around 12:00 CST.
Simunomics is a massive online economics game. It has a built-in mini game called ABC, which rewards users money in Simunomics once they win the mini game. This JS script helps users win the mini game automatically, and efficiently raise up in-game income. The script is hosted here. It requires Greasemonkey (in Firefox) or Tampermonkey (in Chrome) to run.