Sunlight Alarm

From ESE205 Wiki
Jump to navigation Jump to search

Window Shade Alarm Log
Presentation 1



Our goal is to create an apparatus that opens your window shades automatically in the morning, providing a more pleasant way to wake up than a loud alarm. Our apparatus will use a stepper motor to open the shades paired with an Arduino and Dual Step Motor Shield. We plan to implement a second stepper motor in order to change the orientation of the slats. The stimuli to open the shades will be based on time as inputted by the user using a keypad attached to the Arduino and possibly based the sunlight levels outside. A Raspberry Pi will fetch the current weather and time and send it to the Arduino to be displayed on LCDs, informing the user of the time and weather.

Team Members

  • Sam Chai
  • Cole Fitzsimmons
  • Arnob Dam
  • Andrew O'Sullivan (TA)


  • Build frame and shade
  • Program Raspberry Pi to send time and weather to Arduino
    • Use NTP and Wunderground API
    • Program Arduino to accept time and weather from Raspberry Pi
  • Program Arduino to accept input from user
  • Program Arduino to control motors
  • 3D print pieces to attach blind to shade
  • Attach motors to frame/shade
    • up/down pull-string


  • Learn how to use SolidWorks
    • We will use SolidWords to 3D print gears, clamps and other physical parts for the opening/closing function of our device
  • Learn how to program Raspberry Pi
    • We are using Raspberry Pi instead of Arduino because we will need Raspberry Pi's capability to access the internet. Through the internet, we will have access to and display both time and weather
  • Running Python whenever the Raspberry Pi reboots
  • Store local city data while Arduino is incapable of storing all of them
  • Debouncing all of the buttons seperately
  • Generating enough torque to raise gears
  • Silencing gears

Gantt Chart

Gantt chart as of 10.12.17 (work in progress)

link to ganttt chart


Total: $

Design and Solutions


Overall Setup
Our Sunlight Alarm consisted of a system of a Raspberry Pi, an Arduino, 2 stepper motors, a 3D printed gear system, an LED display, and an LCD display. The Raspberry Pi fetched the current time and weather data from the internet and sent it to the Arduino. The Arduino then displayed the weather and time on the displays. Using two buttons connected to the Arduino, the user can select a time at which the shade will open. When that time is reached, the Arduino begins to open the shade by running two stepper motors which drive the gear and spool system.

Arduino and Raspberry Pi

Stepper Motors
As described above, when the time set by the user matches the current time, the Arduino sketch is programmed to call on the method that runs the code for the Dual Step Motor Driver Shield, which controlled both stepper motors. Using the Dual Step Motor Driver Shield, it is necessary for two digital pins to be connected between the shield and the Arduino per stepper motor, a Direction pin and a Stepper pin, as well as 5V power and ground. Since we used 2 stepper motors, we needed 4 pins. The shield is designed to use 2 and 3 as one pair, and 6 and 7 as the other. One problem we faced was not generating enough torque to continue opening the shade as it reached the top of the frame. Through some research and experimentation, we found that we could change the torque generated by the stepper motor by changing the code for the motors. By increasing the delay in the method that that runs the motors, we increased torque, but reduced angular velocity. We experimented to find the perfect delay that generated enough torque but maintained a good speed. Another way that we solved this problem was by increasing the voltage to the motors. The data sheet provided us with he information that our stepper motors provide peak torque at 12V, but we were only proving 9V. We ordered a 12V power supply and it helped tremendously. Our final solution to this issue was to turn our larger spool gear with two stepper motors rather than one. By running two stepper motors at a decreased speed with 12V, we were able to open the shade automatically with ease.

Wiring the stepper motors was also a minor challenge.

Gear System


As well as gears, we had to 3D model and print holder for the two stepper motors. This included taking very precise measurements of the stepper motors so that our holder would be a snug fit. We modeled the holder with screw holes to both attach the motor to the holder and the holder to the frame. Step file


The frame was built to resemble a window frame. The shade was attached to the inside and top of the frame as a normal shade would. The frame was built from 2x4s, wood screws, and metal brackets. The dimensions of the inside of the window were 30" x 60". We took 3 8ft 2x4s and cut them into 5 pieces: 2 measuring 3', 2 measuring 6'2", and 2 measuring 1'.


New Skills

  • Using Raspberry Pi
  • 3D modeling
  • Learning more about Arduino
  • Learning more about using power tools and building things


We successfully built a a device that:

  • displayed the current time, weather conditions, and temperature in a location selected by the user using the buttons on the LCD display
  • opened the shade automatically at a specific time selected by the user using the buttons on the breadboard
  • changed the color of the LCD display based on the temperature
  • automatically unwound the spool to make resetting the device easier

We completed almost of our goals with the exception of attaching another stepper motor to the twist bar that controls the orientation of the slats. This was a minor goal, not necessary to the success of the project. We decided it was more important to accomplish the main goals of displaying the weather and raising the blinds, so we de-prioritized this objective due to time restraints.

what we need to do here (according to final report guidelines)

  • Present all your results, including modules that only partially worked.
  • Discuss how the results compare to your original objectives.
  • Identify the critical decisions or factors in your project that stopped you from getting a better result (try to avoid obvious comments such as "we run out of time").
  • Include a copy of the poster you used in your demonstration to help explain your results.
Demonstration Poster