Introduction: Smart-Stat

Our product allows individuals to check the efficiency of their heating and air conditioning systems in their homes by measuring the temperature of the incoming and outgoing freon by a simple and realistic process. This smart device will encourage people to make more energy efficient decisions with their heating and cooling systems.

Step 1: Parts Required

- Arduino Uno

- Breadboard (4)

- Thermistor (2)

- 10K Resistors (2)

- Push Button

- Piezo Buzzer

- LCD Display

- Potentiometer

- Wires (25)

- Micro USB or USB Connector

Step 2: Wire Breadboard for Temperature Sensor

A TMP thermistor is a type of temperature sensor that measure the voltage across the sensor as the ambient temperature changes. This particular sensor has three pins - a positive, ground, and a signal. This sensor is a linear sensor, and change in temperature of one degree Celcius is equivalent to a change of 10 millivolts at the sensor output.

Procedure:

1) Connect your temperature sensor as shown in the figure above. The middle wire will connect to A0.

2) Connect your second temperature sensor in a similar way to the first, and the middle wire will connect to A1.

Step 3: Piezo Buzzer

A Piezo buzzer is a device used to alert the user when their heating ventilation and air conditioning system is not operating at peak efficiently. The audible alarm informs the user their is an issue.

Procedure:

1) Connect the buzzer to the board as shown in the figure above.

Step 4: Add Buttons

- The pushbutton is a component that connects two points in a circuit when you press it.

- In our product, the button cycles between displaying the temperature and efficiency from the data the temperature sensors collect.

Procedure

1) Connect the button as it shown in the figure above.

Step 5: Connect LCD to Separate Breadboard & to Power

The LCD, liquid crystal display, is a simple screen that can tell the user when something is wrong with the heating, ventilation and air conditioning systems of their home. Ex. not running efficiently, system failure

The diagram provided will help you correctly connect the screen to the board.

Step 6: Code

a = arduino('com3','uno','libraries','ExampleLCD/LCDAddon'); % creates an arduino object specifying the ExampleLCD/LCDAddon library.

lcd = addon(a,'ExampleLCD/LCDAddon',{'D7','D6','D5','D4','D3','D2'}); % creates the LCD object, and specifies the pins configured on the Arduino device.

initializeLCD(lcd, 'Rows', 2, 'Columns', 16); % initializes the lcd screen

setpref('Internet','SMTP_Server','smtp.gmail.com');

setpref('Internet','E_mail','bwnanney@gmail.com'); % mail account to send from

setpref('Internet','SMTP_Username','bwnanney'); % senders username

setpref('Internet','SMTP_Password','Morill1204'); % senders password

props = java.lang.System.getProperties;

props.setProperty('mail.smtp.auth','true');

props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl.SSLSocketFactory');

props.setProperty('mail.smtp.socketFactory.port','465');

b=readDigitalPin(a,'D9'); % read a digital pin (a digital sensor)

reading= readVoltage(a,'A0'); % read the voltage on analog thermister connected to pin A0

reading2= readVoltage(a,'A2'); % read the voltage on analog thermister connected to pin A2

while true % loops through the existing statement as long as true

b=readDigitalPin(a,'D9'); % read a digital pin (a digital sensor)

reading= readVoltage(a,'A0'); % read the voltage on analog thermister connected to pin A0

if reading>= 0.6 && reading< 0.68 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Temp 64 F'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading>= 0.68 && reading<0.69 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Temp 66 F'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading>= 0.69 && reading<0.7 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Temp 68 F'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading>=0.7 && reading<0.71 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Temp 70 F'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading>=0.71 && reading<0.72 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Temp 72 F'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading>=0.72 && reading<0.73 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Temp 74 F'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading>= 0.73 && reading<0.74 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Temp 76 F'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading>= 0.74 && reading<0.75 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Temp 78 F'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading>= 0.75 && reading<0.76 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Temp 80 F'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading>= 0.76 && reading<0.77 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Temp 82 F'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading>= 0.77 && reading<0.8 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Temp 84 F'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

playTone(a,'D10',880,0.25) % plays a note(a,pin,frequency,duration)

pause(0.3) % pauses after note for set duration

playTone(a,'D10',880,0.25) % plays a note(a,pin,frequency,duration)

pause(0.3) % pauses after note for set duration

playTone(a,'D10',880,0.25) % plays a note(a,pin,frequency,duration)

pause(0.3) % pauses after note for set duration

playTone(a,'D10',880,0.25) % plays a note(a,pin,frequency,duration)

pause(0.3) % pauses after note for set duration

playTone(a,'D10',987,0.25) % plays a note(a,pin,frequency,duration)

pause(0.3) % pauses after note for set duration

playTone(a,'D10',987,0.25) % plays a note(a,pin,frequency,duration)

pause(0.3) % pauses after note for set duration

playTone(a,'D10',880,0.12) % plays a note(a,pin,frequency,duration)

pause(0.1) % pauses after note for set duration

playTone(a,'D10',740,0.12) % plays a note(a,pin,frequency,duration)

pause(0.1) % pauses after note for set duration

playTone(a,'D10',587,0.25) % plays a note(a,pin,frequency,duration)

pause(0.3)

sendmail('bwnanney@gmail.com','Heating and Cooling Unit in Need of Service!!!', ...

'The heating and cooling system is operating inefficiently. Please have a technician service the unit as soon as possible.') % Sends an email to the specified email account

elseif reading>= 0.8 && reading<0.85 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Temp 86 F'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading>= 0.85 && reading<2 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'HOT HOT BABY!!!'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

end % ends if statement

while b==0 % loops through the existing statement as long as false

b=readDigitalPin(a,'D9'); % read a digital pin (a digital sensor)

reading2= readVoltage(a,'A2'); % read the voltage on analog thermister connected to pin A2

if reading2>= 0.6 && reading2< 0.68 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Efficiency 80%'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading2>= 0.68 && reading2<0.69 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Efficiency 90%'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading2>= 0.69 && reading2<0.7 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Efficiency 95%'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading2>=0.7 && reading2<0.71 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Efficiency 97%'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading2>=0.71 && reading2<0.72 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Efficiency 100%'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading2>=0.72 && reading2<0.73 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Efficiency 95%'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading2>= 0.73 && reading2<0.74 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Efficiency 90%'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading2>= 0.74 && reading2<0.75 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Efficiency 85%'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading2>= 0.75 && reading2<0.76 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Efficiency 80%'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading2>= 0.76 && reading2<0.77 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Efficiency 75%'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading2>= 0.77 && reading2<0.8 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Efficiency 70%'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading2>= 0.8 && reading2<0.85 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'Efficiency 65%'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

elseif reading2>= 0.85 && reading2<2 % conditionally executes a single set of statements (a block).

clearLCD(lcd) % clears the lcd screen

printLCD(lcd, 'ON FIRE!!!'); % Print a string to the LCD.

pause(0.5) % pauses before executing the next command

end % end if statement

end % end while loop

end % end while loop

Step 7: Diagram

This is a basic representation of where the temperature sensors would be placed on the discharge and vapor lines to monitor the temperature of each line and the differential between them.