🏠

Project Milestones


Finalize Design & Components Apr 24 2025

β€’ Total time: 4 hours

Challenges:

  • Developing a functional and realistic plan that integrates the garage controller with sensor feedback and real-time status updates.
Design Sketch

Block diagram of our hardware.

PCB Design Complete May 2 2025

β€’ Total time: 10 hours

Challenges:

  • Learning KiCAD and figuring out optimal PCB layout.
  • Initial shield was mirrored, requiring reprinting.
  • Component footprints were incorrectly sized; had to switch from SMD to through-hole resistors.
  • Labels were missing for key components like the gas and temperature sensors; we had to refer to datasheets and troubleshoot placement through trial and error.
3D PCB Rendering

3D rendering of our PCB.

3D Printed Final Prototype May 14 2025

β€’ Total time: 4 hours

Challenges:

  • First print didn't fit correctly within the enclosure.
  • Forgot cutouts for reed switches.
  • Misalignment of holes for gas and temperature sensors required redesign.
CAD final enclosure

Final CAD design of the enclosure.

Learn MQTT Fundamentals May 26 2025

β€’ Read about publish/subscribe architecture and retained messages.

β€’ Understood how a broker/client model fits our garage sensor use case (ESP32 & Web UI).

MQTT Diagram

Client-server diagram of our project.

Sensor Testing & Integration May 30 2025

β€’ Verified reed switch connectivity on the ESP32

β€’ Verified MQ-9B Gas Sensor on ESP32

β€’ Verified STTS22H IΒ²C Temperature Sensor on ESP32 (test code below)

            
            #include < Wire.h >
            #include "STTS22HSensor.h"

            TwoWire        I2CBus = TwoWire(0);
            STTS22HSensor  Temp(&I2CBus);

            void setup() {
            Serial.begin(115200);
            delay(100);
            Serial.println("STTS22H Temperature Test");
            // GPIO37=SDA, GPIO38=SCL
            I2CBus.begin(37, 38, 400000);
            if (Temp.begin() != 0) {
                Serial.println("ERROR: STTS22H not found.");
                while (1) delay(1000);
            }
            Temp.Enable();
            Serial.println("STTS22H initialized!");
            }

            void loop() {
            float temperature;
            if (Temp.GetTemperature(&temperature) == 0) {
                Serial.printf("Temperature: %.2f Β°C\n", temperature);
            } else {
                Serial.println("Read error");
            }
            delay(1000);
            }
            
        

LAN Client/Server Setup & Transition to Domain May 30 2025

β€’ Total time: 10 hours

β€’ First got the Express/MQTT web client and ESP32 firmware communicating over our local network (e.g., http://192.168.x.x:3000) so any phone or computer on Wi-Fi could see real-time door/temperature/gas updates.
β€’ Then purchased β€œgaragecontroller.com” and a VPS from DigitalOcean

Challenges:

  • Diagnosing β€œrc = -2” connection errors on the ESP32 until correct LAN IP and MQTT credentials were used.
LAN Client/Server Setup

Demo simulation of our MQTT connection.

Using ESP32 to toggle garage door June 1 2025

β€’ Total time: 3 hours

Challenges:

  • Initially lacked a relay module to interface the ESP32 with the garage motor, which made direct switching difficult.
  • Had to pivot and use a transistor circuit instead to control the load, this required extra research and prototyping.
  • Needed to ensure the transistor could handle the required current and voltage without damaging the components.
  • Transistor started switching the lights on and off, so we just wired it directly to the ESP32
Garage Door Control

Final assembly of the garage controller.

Build & Style the Web Client Jun 1 2025

β€’ Total time: 10 hours

β€’ Created a responsive UI (HTML/CSS/JS) that:

  • Connects over WSS (wss://garagecontroller.com:9001).
  • Shows a connection status dot (red/green).
  • Displays: door status + toggle button, live temperature in Β°F, CO-level indicator dot (β€œSafe/Warning/Danger”).
  • Includes a collapsible event log of the last 10 actions.
Final Website

Final website design with all features.

Secure & Deploy to garagecontroller.com Jun 1 2025

β€’ Set up Express for the login page.

β€’ Verified end-to-end flow: ESP32 β†’ Mosquitto β†’ Web UI.

β€’ Username and Password: admin

Final Website

Push Notifications for Unsafe Levels Uncomplete

β€’ Implement push notifications for unsafe temperature and gas levels.

β€’ Ensured real-time updates for critical safety conditions.

Project Demo Day Jun 4 2025

β€’ Presented a live completely functional demo to the class.

β€’ Special thanks to the following people:

Professor Karcher, Juliana, Leo and Cannon

Group Photo

Group photo after the demo.