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.
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
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.
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.
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.
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.
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
Downloads
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.