Close
0%
0%

BlindBot

A sunlight-revealing window buddy

Public Chat
Similar projects worth following
134 views
The BlindBot is an Arduino-powered robot that opens and closes blinds on a timer. It can be customized through the Arduino Cloud app.

ReadMe.adoc

README for the BlindBot. Contains complete setup & assembly instructions, along with a copy of the BOM and the file structure of BlindBot_Thing.zip

adoc - 4.22 kB - 03/18/2025 at 09:18

Download

BlindBot_Wiring_v3.png

Wiring diagram for the BlindBot. Note that the motor driver in the diagram may not match exactly the one in the BOM, but the connections are the same.

Portable Network Graphics (PNG) - 375.65 kB - 03/18/2025 at 09:17

Preview

BlindBot_Thing.zip

Arduino Cloud files for the BlindBot. Contains code, a copy of the README, a copy of the wiring diagram, and an example Arduino Cloud Dashboard.

Zip Archive - 389.77 kB - 03/18/2025 at 09:16

Download

BlindBot_3D_Files.zip

3D files for the BlindBot, in 3D printable format (STL) and Onshape-editable format (Parasolid, .x_t). Contains the Mounting Plate, the Gear, and the blinds Knob Extender.

Zip Archive - 4.84 MB - 03/18/2025 at 09:06

Download

  • 1 × Arduino UNO R4 WiFi
  • 1 × Nema 17 Motor
  • 1 × DM542 Microstep Driver
  • 1 × 24V AC/DC Adapter
  • 1 × Limit switch

View all 8 components

  • Project Reflection: Future Improvements

    Lark2 days ago 0 comments

    As we have completed this project, I just wanted to note some of the changes I would make if I were to do this project again. While this was a super fun project, and I'm very proud of how it turned out, as a software engineer, this was my first time making a physical object as part of a very small team, so there are definitely areas for improvement.

    Read more »

  • Instructions and Files uploaded

    Lark2 days ago 0 comments

    As we've reached the end of our project, complete instructions and files have been uploaded! The files contain the 3D models, in both 3D printable and editable formats, along with the updated wiring diagram and code for use with Arduino Cloud. Instructions are included in the files, and copied onto the Hackaday page with photos for convenience.

    BOM has also been updated (but it's contained everything of note for a while now). We also added a pic of the complete robot in a few places. Project Logs are mostly complete too (although there will be at least one more)!

  • Late Update: Scheduling via Arduino Cloud

    Lark2 days ago 0 comments

    On Mar 8, we were able to successfully connect the bot to the Arduino Cloud service to run the motor on a schedule!

    We initially were going to use Adafruit, but in debugging issues with that, I stumbled upon Arduino Cloud, which is much more user friendly--it's made especially for Arduino, handles all WiFi connecting and time tracking, and generally has more features than Adafruit for the dashboard. They also have an app, so it's super convenient.

    The full details are in the instructions page, but we were able to use the CloudSchedule feature to set times for the bot to open and close the blinds. For testing, we had this running about once a minute, but it is very easy to change the times and can be set to run once a day.

    Here's what our dashboard looks like:

  • Late Update: Fully Assembled

    Lark3 days ago 0 comments

    Most components were affixed with command strips. The limit switch was hot-glued in place, and the motor is zip-tied. Wires were also zip-tied to the board for convenience. We also took some time decorating with washi tape and paint pens, for fun :)

  • Housing Design Underway

    Lark03/04/2025 at 02:12 0 comments

    The mounting system for the main components (gear, stepper motor, limit switch) has been designed for 3d printing. The current plan is to use zipties to fix the motor, and hot glue to fix the limit switch. The plate will be attached to the wall with command velcro strips.

    The motor driver, Arduino, and possibly the breadboard all still need to be mounted. 

  • Wiring Diagram

    Lark03/04/2025 at 01:58 0 comments

    Wiring Diagram so far! It looks like the enable pin allows us to cut power to the driver, so we won't need a relay. Note that the driver we're using is actually the DM542--this is just what was available in Fritzing. Additionally, since the only reason we have a breadboard is to ground everything, we may look at alternative ways to connect those wires.

  • Motor and Limit Switch Working

    Lark02/19/2025 at 06:13 0 comments

    The basics of the motor and limit switch have been achieved! Currently, the motor spins until the limit switch is pressed once, and then stops forever:

    in the gif below, the motor makes 1 full rotation, waits for 1 second, and repeats until the limit switch is pressed.

    It can even tell us how many steps it took, which in the future can help us calibrate to the length of the blinds string.

    This uses a NEMA 17 motor and a DM542 motor controller, which unfortunately is massive. We initially had a smaller one, but it shorted during testing :( 

  • Weeks late: Basic Housing for Gear

    Lark02/19/2025 at 06:05 0 comments

    This is a couple of weeks late, but the basic housing around the gear intended to keep the blinds cord from escaping the gear has been prototyped!

    Shown: pulling the blinds in either direction without the cord jamming or otherwise coming free.

    This will need to be mounted for a full-scale test, but so far it is promising :)

  • Gear Prototyping Begins

    Lark01/25/2025 at 03:48 0 comments

    This week we began modeling and 3D printing the gear that will pull the cord to open/close the blinds. 

    The first iteration, in green, was based on a thingiverse project; however, the beads on the Caltech blinds are much smaller and the holes were too shallow to have any chance of applying actual force to the cable. 

    The second iteration, in light blue, made the holes deeper to account for this, but not enough tolerance was added, so the beads wouldn't go very far in and would get stuck if they did. The chamfers added to the slots to ensure the string didn't get caught on corners also were too small to 3D print correctly, rendering them useless.

    The third (and current) iteration, in dark blue, added more tolerance to the holes and widened the slot for the string. It also has larger chamfers on the corners. This works great so far!

View all 9 project logs

  • 1
    Step 1: Installation

    NOTE: The following instructions are slightly different than the ones in the README (but mostly the same)! This includes photos, and instructions specific to operating at Caltech.

    1. Create an Arduino Cloud account. For more info on Arduino Cloud, read https://docs.arduino.cc/arduino-cloud/guides/overview/

    2. Configure your Arduino in the Devices tab.

    3. Create a Thing with the following Cloud Variables and configurations:

    • closingSchedule    => 
      • Schedule (CloudSchedule)
      • Read & Write
      • On change
    • openingSchedule    => 
      • Schedule (CloudSchedule)
      • Read & Write
      • On change
    • timeRead    => 
      • Time (CloudTime)
      • Read only,
      • On change

    4. Associate the device you set up in step 3 to the Thing.

    5. Configure your network credentials. If you are trying to get this working at Caltech, see https://www.imss.caltech.edu/services/wired-wireless-remote-access/wireless-network/register-my-device. We weren't able to get this to actually connect, but maybe you'll have better luck :(

    6. Set your timezone in the Metadata tab.

    7. In the sketch tab, generate a sketch associated with the thing, and copy the contents of BlindBot_Thing_mar08a.ino into it.

    8. Create a Dashboard. Add the following components and linked variables, with reasonable names:

    • Scheduler
      • openingSchedule
    • Scheduler
      • closingSchedule
    • Time Picker
      • timeRead

    Example (which also uses notes for easier interpretation):

    9. On the opening scheduler,
          a. Set the start date to the previous day
          b. Set the start time to the time you want the blinds to start opening.
          c. Set the duration to however long it takes to open the blinds. This can
             be much longer than you need, so give it a decent amount of buffer.
          d. Set this to repeat every day.
          e. You may set an end date if you want.

    10. Repeat step 8, with whatever time you want to blinds to close. The duration of this needs to be the length of time to open AND close the blinds. Again, give it more time than you think it needs.

    11. (Optional) download the Arduino Cloud app on your phone so you can adjust
        the alarm times from your phone.

  • 2
    Step 2: Assemble the robot

    1. 3D print the files on Hackaday and assemble as pictured (below), except for the motor and gear. Assemble the circuit following the diagram. Decorate, if you want.

     2. Place command strips (I recommend the heavy-duty velcro strips) on the back of the mounting plate.

    3. With a friend, place the gear on the blinds where you want it. Slide the blinds and the gear into the slot on the mounting plate, and use the command strips to affix the mounting plate to the wall. Refer to the picture above for reference, but make sure there is no slack in the cable. Connect the bot to power for both the Arduino UNO via USB C cable, and the motor controller via the 24V adapter.

    4. Slide the motor into place and ziptie to the plate. Add the knob extender (which hits the limit switch to stop the blinds once it hits the top) to the blinds, if needed.

  • 3
    Step 3: Load the code

    Upload the code contained in the Arduino Cloud sketch on to your board.

View all 3 instructions

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates