Create Your First Project
Start adding your projects to your portfolio. Click on "Manage Projects" to get started
Smart Spout
Project type
Full Stack Internet of Things
Date
September 2022 - April 2023
Location
San Luis Obispo
At Cal Poly, Computer Engineering students take a sequence of Capstone classes their senior year, which involves splitting up into teams and working on an assigned project. Our group, dubbed the "Smart Spout" team, was tasked with building an smart home irrigation system. The inspiration behind this project came from two major facts. One, the irrigation industry is a multi-billion dollar industry, yet there is a lack of smart home irrigation systems on the market. And two, several technologies, one of them being thread networking, were recently released, so this project would allow students to explore a new technologies.
As project lead, I was tasked with responsibilities that extended past just the engineering side of the project such as dividing up the work, communicating with our project sponsor, and planning out the project sprints.
In terms of the engineering part of the project, the team accomplished three major things: creating an internet of things embedded system that was thread compatible, constructing a robust backend leveraging services provided by AWS, and writing an aesthetic, easy to use mobile application to control their network of irrigation controllers.
To accomplish the first part, we first had to do extensive research on the process of implementing thread networking into an embedded system. Luckily for us, Google had released an open source version of thread called OpenThread, which we were able to implement into an embedded system of Nordic Semiconductor microcontrollers, with a raspberry pi acting as the border router between the thread network and the internet. The raspberry pi board would send and receive messages from the boards on the network and the AWS IoT platform to allow users to control the boards from their phone.
To set up the backend infrastructure, the team took advantage of several different services from AWS such as AWS IoT, Cognito, Lambda, DynamoDB, and AppSync. Several different DynamoDB instances were created to store information about users and their irrigation controllers, and lambda functions were set to trigger on certain events and act as a data pipeline. AWS IoT was used to communicate to the embedded system, and AppSync was implemented so the mobile application can send and receive data from the backend. This section of work was my primary focus during the project.
Lastly was the mobile application, which was designed in Figma and written in swift. A lot of effort was put into it to give the application a modern feel and to make the user experience incredibly intuitive. With the mobile application, users can register new devices, control irrigation states, and set schedules.