NodeMCU-32s Garage Controller
Find a file
2022-10-18 10:04:52 -04:00
Enclosure update image and add v2 of case 2022-02-22 08:57:44 -05:00
home-assistant add home asssistant garage door automations.yaml 2022-02-25 08:43:09 -05:00
images update schematic image 2022-02-22 12:52:15 -05:00
include Merge branch 'main' of github.com:badgumby/nodemcu32s_garage_controller 2022-02-18 13:51:32 -05:00
src Added autoreset after multiple wifi reconnect failures 2022-07-22 09:15:22 -04:00
.gitignore initial push 2022-02-18 13:40:40 -05:00
platformio.ini add WebSerial to device for remote debugging 2022-02-25 13:29:55 -05:00
README.md update configuration yaml info to new format requirements for MQTT devices 2022-10-18 10:04:52 -04:00

NodeMCU-32s Garage Controller

This project is still a WIP, so the code is yet to be optimized. The goal is to turn my two regular garage doors into "smart" garage doors. This controller will be the base platform using a NodeMCU-32s (or similarly cloned SoC).

Materials

These are the items you may need to purchase to build this project.

Devices/Sensors

Misc Materials

Schematic

schematic.png

Here is the schematic (created using Fritzing). Please note, the schematic does not have any resistors for the LEDs. This is because the LEDs I am using are pre-wired, and already have the correct resistors added for this voltage/amperage. Just don't forget to add some to your LEDs if you are not using pre-wired LEDs.

Enclosure

case_design_v2.png

In this project, you will find the STL files for the top and bottom of the case, as well as, the Fusion 360 model file. These can be used to 3D print the enclosure, or can be modified to fit your own project. It was designed around the 7cm x 9cm PCB linked in the Misc Materials section above.

3D Print Settings


I have a Creality Ender 3 v2 with an upgraded Micro Swiss all-metal hotend, and these are the settings I used to print the enclosure (and most other things) in the Cura slicing software.

  • Quality
    • Layer Height: 0.16 mm
    • Initial Layer Height: 0.2 mm
    • Line Width: 0.4 mm
    • Initial Layer Line Width: 100%
  • Walls
    • Wall Thickness: 1.2 mm
      • Wall Line Count 3
    • Optimize Wall Printing Order: YES
    • Fill Gaps Between Walls: Everywhere
    • Horizontal Expansion: 0 mm
  • Top/Bottom
    • Top/Bottom Thickness: 0.84 mm
    • Monotronic Top/Bottom Order: NO
    • Enable Ironing: NO
  • Infill
    • Infill Density: 15%
      • Infill Line Distance 8.0 mm
    • Infill Pattern: Cubic
  • Material (PLA)
    • Printing Temperature: 200° C
    • Build Plate Temperature: 60° C
  • Speed
    • Print Speed: 50 mm/s
      • Infill Speed: 50 mm/s
      • Wall Speed: 25 mm/s
    • Travel Speed: 150 mm/s
    • Initial Layer Speed: 20 mm/s
  • Travel
    • Enable Retraction: YES
    • Retract Layer Change: NO
    • Retraction Distance: 5 mm
    • Retraction Speed: 45 mm/s
    • Avoid Printed Parts When Traveling: YES
    • Avoid Supports When Traveling: YES
    • Travel Avoid Distance: 0.625 mm
    • Z Hop When Retracted: NO
  • Cooling
    • Enable Print Cooling: YES
    • Fan Speed 100%
    • Regular/Maximum Fan Speed Threshold: 10s
    • Life Head: NO
  • Support
    • Generate Support: NO
  • Build Plate Adhesion
    • Build Plate Adhesion Type: None

Home Assistant Configuration

To use this controller with Home Assistant you will need to configure an MQTT Broker. Here is a guide on configuring the integrated MQTT Broker.

Once you have configured an MQTT Broker for use in Home Assistant, you will need to add the content below to your configuration.yaml, then restart Home Assistant.

mqtt:
  cover:
    - command_topic: "gumby_garage/door_1_toggle"
      name: "Garage Door 1"
      payload_close: "close"
      payload_open: "open"
      device_class: garage
      position_topic: "gumby_garage/door_1_pos"
      unique_id: "garage_door_1"
    - command_topic: "gumby_garage/door_2_toggle"
      name: "Garage Door 2"
      payload_close: "close"
      payload_open: "open"
      device_class: garage
      position_topic: "gumby_garage/door_2_pos"
      unique_id: "garage_door_2"

Home Assistant should now be subscribed to the above topics, and will update the cover.garage_door_1 and cover.garage_door_2 objects with their statuses.

These can now be used with the automations provided in the automations.yaml file.