High-Level Design

This project was chosen because of its originality. We simply decided that we did not want to do another video game project. When brainstorming, we started staring off into the room walls and began to wish that there was more sun-light in the room. Looking at the miniblinds covering the window gave us this idea. We liked the idea because turning the miniblinds is an everyday nuisance that most people can relate to. Further, we liked this project because it required a nice mix of both hardware and software. For instance, we needed to implement op-amps with filters as well as H-bridges to control the motor, as well as program a nice interface that users could enter in alarm times without having to press up and down repeatedly.

Our implementation boasts five modes of operation: timeset mode, optimize mode, updown mode, alarm mode, and privacy mode. The mode is selected by using a keypad, and the current mode and any other relevant information will be displayed on an LCD.

Since any mode can be accessed by the push buttons at any time, we can transition from any state to any other as seen below:

Operation of the system under each mode is as follows:

Optimize Mode
Most people are too lazy to leave their desk every ten minutes to adjust the blinds in their room to maximize the sunlight entering the room. As a result, the blinds stay at the same position all day, wasting valuable sunlight that could have been used by the studious individual sitting at his desk. To alleviate this problem, we propose to adjust the inclination of a set of miniblinds to admit the maximum possible amount of sunlight into the room. In optimize mode, the user doesn’t have to do anything; that’s the beauty of it!

UpDown Mode
In UpDown mode, the user presses two buttons on the keypad to change the angle of the blinds up or down until a desirable inclination is reached. The blinds then stay at this position until the up/down buttons are pressed again or the mode is changed. The buttons are sensitive enough in time to rotate the blinds for under a revolution.

Alarm Mode
This mode wakes the user up at a certain time. The alarm time is set using the keypad and is displayed on the LCD. The blinds immediately close when entering this state and waits for the user the input the alarm time. The user should type “hhmm” where hh is the hour in 24-hour format and mm is minutes. When the “wakeup” time is reached, the blinds open to allow light to permeate the room.

Privacy Mode
Upon setting the system to privacy mode, the blinds immediately close to prevent any peeping-toms from getting any indecent exposure!

Time Set Mode
This mode allows the user to adjust the current system time in as “hhmm” where hh is the hour in 24-hour format and mm is minutes.

Mode Set
The user can change the mode at any time by pressing the ‘*’ key on the keypad. This will take you to a menu that displays the available modes.

Here is a diagram which gives a general overview of our system:

One of the more interesting aspects of this project is this fact that we use green LEDs as light sensors, which detect rather than produce light. We have 3 LEDs which are angled at different positions, each connected to an op-amp / filter combination. These amplified analog signals are then processed by the analog-to-digital conversion module (ADC) in the microcontroller (MCU). Using knowledge of which LED is receiving more light, the MCU then turns the motor either backwards or forwards through an H-bridge. In order to determine how long to power the motor, we used a Hall-Effect sensor which determines how many revolutions the motor has turned. Finally, we provide a keypad and LCD as a way of changing user modes and displaying user data.

The op-amps were required because the ADC would ruin the incoming LED signal. Also, originally we planned on using software to time our signals to the motor. This proved to be too difficult to accurately change the blinds since the motor would turn at different speeds depending on the blind angle.