Automatic Cooling system using K64F board featuring: Set desired temperature from phone app using Bluetooth DC motor based fan at three speeds to choose from: slow, medium and fast (to be selected on app) Ambient temperature measured constantly using DHT11 sensor Amibent temperature displayed on LCD LEDs to show status of the system: On or Off
Dependencies: DHT TextLCD mbed
Revision 0:ea560af47ab9, committed 2018-03-19
- Comitter:
- urvishpatel12
- Date:
- Mon Mar 19 05:23:48 2018 +0000
- Child:
- 1:eb4b08eb62d6
- Commit message:
- LCD_added
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DHT.lib Mon Mar 19 05:23:48 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/Wimpie/code/DHT/#9b5b3200688f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Mon Mar 19 05:23:48 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/simon/code/TextLCD/#308d188a2d3a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Mar 19 05:23:48 2018 +0000 @@ -0,0 +1,113 @@ +#include "mbed.h" +#include "DHT.h" +#include "TextLCD.h" + +#define BUFFER_SIZE 3 +#define ON "on" +#define OFF "of" +#define LOW "lo" +#define MEDIUM "me" +#define HIGH "hi" + +TextLCD lcd(PTC2,PTA2,PTB23,PTA1,PTB9,PTC17); +UARTSerial bluetooth(PTC15, PTC14, 38400); +Serial pc(USBTX, USBRX); +DHT temperature(D0, DHT11); +PwmOut motor(PTC3); // PWM pin +DigitalOut ON_led(D15); +DigitalOut OFF_led(D14); + +int dutycycle = 15; +int desired_temp = 76; + +int main(){ + + //switch ON green LED and off red LED + OFF_led = 1; + ON_led = 0; + + //character array to receive BT commands + char command[BUFFER_SIZE]; + + //initialize temperature variable + float temp = 0.0f; + + //temperature sensor error indicator + int sensor_input_error = 0 ; + + //system status flag: ON or OFF + int on_flag = 0; + + //set the PWM period for the motor + motor.period(0.01); + + //make bt reading non blocking + bluetooth.set_blocking(false); + + while(true){ + + //Read the temperature sensor data + sensor_input_error = temperature.readData(); + + //if no error, read temperature in Farenheit + if(sensor_input_error == 0){ + temp = temperature.ReadTemperature(FARENHEIT); + } + + //print the serial the currently measured temperature + pc.printf("temperature is %2d F\n",int(temp)); + + //print the temperature on the LCD + lcd.cls(); + lcd.printf("Temperature is:"); + lcd.locate(6,1); + lcd.printf("%2.0f F", temp); + + //compare the ambian temperature to the desired temperature + //when flag is on + if(on_flag == 1 ){ + ON_led = 1; + OFF_led = 0; + if(temp > desired_temp){ + motor = (float)dutycycle/100.0; + }else{ + motor = 0; + } + //when flag is off + }else{ + motor = 0; + ON_led = 0; + OFF_led = 1; + } + wait(1); + + //Poll command from bluetooth + bluetooth.read(command, BUFFER_SIZE); + + //compare incoming data with NULL + //then parse each one as a specific command + if(strncmp(command,"\0",3) != 0){ + if(strncmp(command,ON,3) == 0){ + on_flag = 1; + }else if(strncmp(command,OFF,3) == 0){ + on_flag = 0; + }else if(strncmp(command,LOW,3) == 0){ + dutycycle = 12; + }else if(strncmp(command,MEDIUM,3) == 0){ + dutycycle = 15; + }else if(strncmp(command,HIGH,3) == 0){ + dutycycle = 20; + }else { + sscanf(command, "%d", &desired_temp); + } + }//end of command null compare + //print the command received + //wait(1); + //pc.printf("Command was : %2s \n",command); + //pc.printf("Duty Cycle is : %d \n",dutycycle); + //pc.printf("Motor flag is : %d \n", on_flag); + //pc.printf("Desired Temp is : %d \n", desired_temp); + //reset the command back to NULL + strcpy(command, "\0"); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Mar 19 05:23:48 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/aa5281ff4a02 \ No newline at end of file