AlphaWave Automatic Window Opener

Check out the web-app here

Table of Contents:

1. Overview

2. Motivations

3. Initial Designs

4. Completed Design and Implementation

5. Conclusions and Lessons Learned

1. Overview

In this post, I'm going to share and reflect on the project I spent several months working on. I'll go over the motivations, stages of design, and results to my final year engineering capstone project: the wireless window opener.

My responsibilities in the project was the design and development of the software, the design of the enclosure, and integration with the firmware.

My team was sponsored to create a device that:

  • Opens windows
  • Can be controlled remotely
  • Is wireless
  • Is solar powered

We achieved success in creating the device and the accompanying software. The results are shown below.

websiterotatingdevice diagram
device on windowenclosurehovering

2. Motivations

top-down-viewOur sponsor was looking for an automated solution to open or close windows.

I was thrilled to work on this project as it presented a great opportunity to keep developing my skills in web development, firmware, and 3D design.

Our capstone solution aimed to satisfy the gap in the market for a device with the following features:

Existing SolutionsOur solution
Not solar poweredSolar powered
Only for push-style windowsWorks on crank-style windows
Has to be wiredWorks wirelessly
Operated by remote onlyOperated by remote and app
Remote operates max 1 windowApp operates many windows

3. Design

I made initial design renderings in blender, though they were slightly different from the final physical result:

blender_render

The website was planned to be done (and ended up being done) "serverlessly" using AWS:

aws_diagram

Tech stack:

Frontend:

I planned to use Vue.js to create a progressive web app which would work across all devices. The styling would be done using TailwindCSS.

Backend:

The backend for this project was "serverless" by building it on AWS. This project gave me lots of experience build on AWS's most popular tools such as Lambda, API Gateway, and DynamoDB. To get started, I found the serverless framework valuable to get up and running quickly.

AWS's IoT Core was valuable in providing secure communication to and from our device's microprocessor, which was an ESP32. I explored using AWS Cognito as authentication for our App, but decided I would simply authorize using Google's OAuth authentication API for google accounts.

4. Completed Design and Implementation

4.1 Progressive Web App Design and Implementation

As planned, I created a cross-platform app created in Vue.js to control the window opener remotely and allow for smart features like temperature monitoring and scheduling.

The Webapp has the following features:

  1. Cross-platform: the app can be downloaded on Android, iOS, or simply used in a browser on any device.

    crossplatform
  2. Secure with google authentication: by using a google account, the user's credentials are stored securely by google. This protects the device from being controlled by unauthorized users.

    authentication
  3. Can control multiple devices from a single app: by adding the devices through a unique code, a user can control multiple devices from a single page. They can rename the devices for easier identification of which device they are controlling.

    adding devices
  4. Shows real-time data about the devices state and sensors: The device measures temperature and always reports whether it's open or closed, which can be seen in the dashboard.

    seeing dashboard
  5. The device can be scheduled to open or close at any time using a time selector.

    seeing dashboard

4.2 Enclosure Design and Implementation

The enclosure was designed by me in fusion360.

The enclosure had to satisfy the following objectives:

ObjectiveSolution
Easy to access internalsSliding front cover
Securely fastened to windowScrew holes on sides of enclosure
Needs to hold solar panelSolar panel spot angled towards window
Motor needs to be securedDesigned with motor attachment spot in place
Cheap to produce3D Printed

enclosure v1
The first version of the enclosure. Designed quickly to **test 3D printing** capabilities and get a rough idea of what we'd need.
enclosure v2

Version 2. The first version showed me the tolerances I had left for the sliding door were not enough. Fixing that and a few similar issues gave me more experience performing rapid iteration on my design.

enclosure v3

The final version (version 3). By this point in the project, our team had made final decisions on the parts we were using, allowing me to make precise measurements on the dimensions for the final enclosure.

I incorporated feedback from our sponsor in this version to make the screw holes on the sides into a longer slot so that it would work on different sized windowsills.

Although these changes were the largest from the original version, I was able to finish this version in minimal time due to the knowledge I had gained through making the earlier versions.


5. Conclusions and Lessons Learned

I found this project to be immensely successful and rewarding. Our team was able to deliver a useful IoT device that integrates with a full-stack application.

I had a great time working on this project as I learned a lot of valuable skills. From frontend design with modern JavaScript frameworks to integrating it with AWS and making it all work with the device itself, I was able to use this project to apply what I've learned in software, firmware, and design courses I have taken during my degree.

Working together with others in a team had a lot of advantages in this project -- by having others coordinate meetings and work on hardware design, I was able to focus on the application and the enclosure without worrying about other parts of the project.

Working with a team was difficult at times due to challenges in coordinating everyone's work and ensuring communication happened often. Communication between teammates and our sponsors was difficult specifically because this project was worked on mainly online due to COVID restrictions at the university.