finish ^o^
Dependencies: Air_Quality DHT SDFileSystem Servo WIZnetInterface httpServer mbed-src
Fork of httpServer-WIZwiki-W7500 by
main.cpp@20:3b473e577885, 2015-08-21 (annotated)
- Committer:
- M_J
- Date:
- Fri Aug 21 05:13:49 2015 +0000
- Revision:
- 20:3b473e577885
- Parent:
- 19:e2b03f4e2c7e
finish ^o^
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
justinkim | 8:f837e0d255e8 | 1 | #include "mbed.h" |
justinkim | 8:f837e0d255e8 | 2 | #include "EthernetInterface.h" |
hjjeon | 14:9202a7785974 | 3 | #include "FsHandler.h" |
hjjeon | 14:9202a7785974 | 4 | #include "HTTPServer.h" |
hjjeon | 14:9202a7785974 | 5 | #include "SDFileSystem.h" |
hjjeon | 9:a63ff95c354b | 6 | |
M_J | 19:e2b03f4e2c7e | 7 | #include "DHT.h" |
M_J | 19:e2b03f4e2c7e | 8 | #include "Servo.h" |
M_J | 19:e2b03f4e2c7e | 9 | |
M_J | 19:e2b03f4e2c7e | 10 | int motion_detected = 0; // motion |
M_J | 19:e2b03f4e2c7e | 11 | int i=0; // touch |
M_J | 19:e2b03f4e2c7e | 12 | |
M_J | 19:e2b03f4e2c7e | 13 | extern int lumi_val; |
M_J | 19:e2b03f4e2c7e | 14 | extern int cel_val; |
M_J | 19:e2b03f4e2c7e | 15 | extern int touch_val; |
M_J | 20:3b473e577885 | 16 | extern int control; |
M_J | 19:e2b03f4e2c7e | 17 | |
M_J | 20:3b473e577885 | 18 | DHT sensor(D8, DHT11); |
M_J | 20:3b473e577885 | 19 | InterruptIn motion(D9); |
M_J | 19:e2b03f4e2c7e | 20 | AnalogIn luminance(A1); |
M_J | 20:3b473e577885 | 21 | InterruptIn event(D10); // touch |
M_J | 19:e2b03f4e2c7e | 22 | Servo myservo(D14); // touch servo |
M_J | 19:e2b03f4e2c7e | 23 | |
M_J | 19:e2b03f4e2c7e | 24 | DigitalOut led_R(LED1); |
M_J | 19:e2b03f4e2c7e | 25 | DigitalOut led_G(LED2); |
M_J | 19:e2b03f4e2c7e | 26 | DigitalOut led_B(LED3); |
M_J | 19:e2b03f4e2c7e | 27 | |
M_J | 20:3b473e577885 | 28 | DigitalOut vol_in(A5); |
M_J | 20:3b473e577885 | 29 | |
hjjeon | 14:9202a7785974 | 30 | #ifdef TARGET_WIZWIKI_W7500 |
hjjeon | 17:be86c9b2cbda | 31 | //Choose one of file system. |
hjjeon | 14:9202a7785974 | 32 | SDFileSystem local(SD_MOSI, SD_MISO, SD_CLK, SD_SEL, "local");//PB_3, PB_2, PB_1, PB_0 |
hjjeon | 17:be86c9b2cbda | 33 | //LocalFileSystem local("local"); |
hjjeon | 14:9202a7785974 | 34 | #endif |
M_J | 19:e2b03f4e2c7e | 35 | |
hjjeon | 14:9202a7785974 | 36 | #ifdef TARGET_WIZWIKI_W7500 |
hjjeon | 14:9202a7785974 | 37 | uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; |
hjjeon | 14:9202a7785974 | 38 | #endif |
M_J | 19:e2b03f4e2c7e | 39 | |
hjjeon | 14:9202a7785974 | 40 | EthernetInterface eth; |
hjjeon | 14:9202a7785974 | 41 | HTTPServer svr; |
hjjeon | 14:9202a7785974 | 42 | char ip_addr[] = "192.168.1.111"; |
hjjeon | 14:9202a7785974 | 43 | char subnet_mask[] = "255.255.255.0"; |
hjjeon | 14:9202a7785974 | 44 | char gateway_addr[] = "192.168.1.1"; |
M_J | 19:e2b03f4e2c7e | 45 | |
hjjeon | 15:0091888ada99 | 46 | //#define DHCP //If uncomment, W7500 runs DHCP |
M_J | 19:e2b03f4e2c7e | 47 | |
M_J | 19:e2b03f4e2c7e | 48 | |
M_J | 19:e2b03f4e2c7e | 49 | // motion |
M_J | 19:e2b03f4e2c7e | 50 | void irq_handler() |
M_J | 19:e2b03f4e2c7e | 51 | { |
M_J | 19:e2b03f4e2c7e | 52 | motion_detected = 1; |
M_J | 19:e2b03f4e2c7e | 53 | } |
hjjeon | 14:9202a7785974 | 54 | |
M_J | 19:e2b03f4e2c7e | 55 | // touch |
M_J | 19:e2b03f4e2c7e | 56 | void trigger() { |
M_J | 19:e2b03f4e2c7e | 57 | |
M_J | 19:e2b03f4e2c7e | 58 | if(touch_val == 0) |
M_J | 19:e2b03f4e2c7e | 59 | printf("5. Touch : Can't move!\r\n\r\n"); |
M_J | 19:e2b03f4e2c7e | 60 | else { |
M_J | 19:e2b03f4e2c7e | 61 | printf("5. Touch : move!\r\n\r\n"); |
M_J | 19:e2b03f4e2c7e | 62 | if(i==0) |
M_J | 19:e2b03f4e2c7e | 63 | myservo = 0; |
M_J | 19:e2b03f4e2c7e | 64 | else if (i==1) |
M_J | 19:e2b03f4e2c7e | 65 | myservo = 0.3; |
M_J | 19:e2b03f4e2c7e | 66 | else if (i==2) |
M_J | 19:e2b03f4e2c7e | 67 | myservo = 0.6; |
M_J | 19:e2b03f4e2c7e | 68 | else if (i==3) |
M_J | 19:e2b03f4e2c7e | 69 | myservo = 0.9; |
M_J | 19:e2b03f4e2c7e | 70 | } |
M_J | 19:e2b03f4e2c7e | 71 | |
M_J | 19:e2b03f4e2c7e | 72 | if (i<3) |
M_J | 19:e2b03f4e2c7e | 73 | i++; |
M_J | 19:e2b03f4e2c7e | 74 | else |
M_J | 19:e2b03f4e2c7e | 75 | i=0; |
M_J | 19:e2b03f4e2c7e | 76 | } |
M_J | 20:3b473e577885 | 77 | |
M_J | 20:3b473e577885 | 78 | void sensor_5() { |
M_J | 20:3b473e577885 | 79 | |
M_J | 20:3b473e577885 | 80 | int rd_sensor = 0; // when rd_sensor = 0, sensor is ready to read the data. |
M_J | 20:3b473e577885 | 81 | float hum = 0.0f; |
M_J | 20:3b473e577885 | 82 | float cel = 0.0f; |
M_J | 20:3b473e577885 | 83 | vol_in = 0; |
M_J | 20:3b473e577885 | 84 | |
M_J | 20:3b473e577885 | 85 | //DHT sensor |
M_J | 20:3b473e577885 | 86 | rd_sensor = sensor.readData(); |
M_J | 20:3b473e577885 | 87 | if (0 == rd_sensor) { |
M_J | 20:3b473e577885 | 88 | hum = sensor.ReadHumidity(); |
M_J | 20:3b473e577885 | 89 | cel = sensor.ReadTemperature(CELCIUS); |
M_J | 20:3b473e577885 | 90 | |
M_J | 20:3b473e577885 | 91 | printf("1. Humidity : %4.2f\r\n\n", hum); |
M_J | 20:3b473e577885 | 92 | wait(0.3); |
M_J | 20:3b473e577885 | 93 | printf("2. Temperature in Celcius : %2.2f\r\n\n", cel); |
M_J | 20:3b473e577885 | 94 | wait(0.3); } |
M_J | 20:3b473e577885 | 95 | else |
M_J | 20:3b473e577885 | 96 | printf("1,2. Error! : %d\r\n\n", rd_sensor); |
M_J | 20:3b473e577885 | 97 | |
M_J | 20:3b473e577885 | 98 | // motion |
M_J | 20:3b473e577885 | 99 | if(motion_detected) { |
M_J | 20:3b473e577885 | 100 | motion_detected = 0; |
M_J | 20:3b473e577885 | 101 | |
M_J | 20:3b473e577885 | 102 | printf("3. Something move!\r\n\r\n"); |
M_J | 20:3b473e577885 | 103 | wait(0.3); |
M_J | 20:3b473e577885 | 104 | } |
M_J | 20:3b473e577885 | 105 | |
M_J | 20:3b473e577885 | 106 | // luminance |
M_J | 20:3b473e577885 | 107 | printf("4. Luminance: %f\r\n\r\n", luminance.read()); |
M_J | 20:3b473e577885 | 108 | //printf(" + lumi_val = %d\r\n\r\n", lumi_val); |
M_J | 20:3b473e577885 | 109 | |
M_J | 20:3b473e577885 | 110 | if(lumi_val == 0) { |
M_J | 20:3b473e577885 | 111 | led_R=1; led_G=1; led_B=1;} // led off |
M_J | 20:3b473e577885 | 112 | |
M_J | 20:3b473e577885 | 113 | else { |
M_J | 20:3b473e577885 | 114 | if(luminance.read()<=0.1){ |
M_J | 20:3b473e577885 | 115 | led_R=0; led_G=0; led_B=0;} // white LED on |
M_J | 20:3b473e577885 | 116 | |
M_J | 20:3b473e577885 | 117 | else if(0.1<=luminance.read()&&luminance.read()<=0.3){ |
M_J | 20:3b473e577885 | 118 | led_R=0; led_G=0; led_B=1;} // yellow LED on |
M_J | 20:3b473e577885 | 119 | |
M_J | 20:3b473e577885 | 120 | else{ |
M_J | 20:3b473e577885 | 121 | led_R=1; led_G=1; led_B=1;} // led off |
M_J | 20:3b473e577885 | 122 | } |
M_J | 20:3b473e577885 | 123 | |
M_J | 20:3b473e577885 | 124 | if(control == 1) { |
M_J | 20:3b473e577885 | 125 | if(cel_val == 0) |
M_J | 20:3b473e577885 | 126 | vol_in = 0; |
M_J | 20:3b473e577885 | 127 | else if(cel_val == 1) |
M_J | 20:3b473e577885 | 128 | vol_in = 1; } |
M_J | 20:3b473e577885 | 129 | else { |
M_J | 20:3b473e577885 | 130 | if(cel < 34) |
M_J | 20:3b473e577885 | 131 | vol_in = 0; |
M_J | 20:3b473e577885 | 132 | else if(cel >= 34) |
M_J | 20:3b473e577885 | 133 | vol_in = 1; } |
M_J | 20:3b473e577885 | 134 | |
M_J | 20:3b473e577885 | 135 | |
M_J | 20:3b473e577885 | 136 | wait(1); |
M_J | 20:3b473e577885 | 137 | } |
M_J | 20:3b473e577885 | 138 | |
M_J | 19:e2b03f4e2c7e | 139 | |
M_J | 19:e2b03f4e2c7e | 140 | |
hjjeon | 14:9202a7785974 | 141 | int main() |
M_J | 20:3b473e577885 | 142 | { /* |
M_J | 19:e2b03f4e2c7e | 143 | int rd_sensor = 0; // when rd_sensor = 0, sensor is ready to read the data. |
M_J | 19:e2b03f4e2c7e | 144 | float hum = 0.0f; |
M_J | 20:3b473e577885 | 145 | float cel = 0.0f; */ |
M_J | 20:3b473e577885 | 146 | |
hjjeon | 14:9202a7785974 | 147 | HTTPFsRequestHandler::mount("/local/", "/"); |
hjjeon | 14:9202a7785974 | 148 | svr.addHandler<HTTPFsRequestHandler>("/"); |
M_J | 19:e2b03f4e2c7e | 149 | |
hjjeon | 14:9202a7785974 | 150 | #ifdef TARGET_WIZWIKI_W7500 |
hjjeon | 14:9202a7785974 | 151 | |
hjjeon | 14:9202a7785974 | 152 | #ifdef DHCP |
hjjeon | 14:9202a7785974 | 153 | eth.init(mac_addr); //Use DHCP |
hjjeon | 14:9202a7785974 | 154 | #else |
hjjeon | 14:9202a7785974 | 155 | eth.init(mac_addr, ip_addr, subnet_mask, gateway_addr); //Not Use DHCP |
hjjeon | 14:9202a7785974 | 156 | #endif |
M_J | 19:e2b03f4e2c7e | 157 | |
hjjeon | 14:9202a7785974 | 158 | #else |
M_J | 19:e2b03f4e2c7e | 159 | |
hjjeon | 14:9202a7785974 | 160 | #ifdef DHCP |
hjjeon | 14:9202a7785974 | 161 | eth.init(); //Use DHCP |
hjjeon | 14:9202a7785974 | 162 | #else |
hjjeon | 14:9202a7785974 | 163 | eth.init(ip_addr, subnet_mask, gateway_addr); //Not Use DHCP |
hjjeon | 14:9202a7785974 | 164 | #endif |
M_J | 19:e2b03f4e2c7e | 165 | |
hjjeon | 14:9202a7785974 | 166 | #endif |
M_J | 19:e2b03f4e2c7e | 167 | |
hjjeon | 18:5d96484995cf | 168 | printf("Check Ethernet Link\r\n"); |
hjjeon | 18:5d96484995cf | 169 | while(1) //Wait link up |
hjjeon | 18:5d96484995cf | 170 | { |
hjjeon | 18:5d96484995cf | 171 | if(eth.link() == true) |
hjjeon | 18:5d96484995cf | 172 | break; |
hjjeon | 18:5d96484995cf | 173 | } |
hjjeon | 18:5d96484995cf | 174 | printf("Link up\r\n"); |
M_J | 19:e2b03f4e2c7e | 175 | |
justinkim | 8:f837e0d255e8 | 176 | eth.connect(); |
justinkim | 8:f837e0d255e8 | 177 | printf("Server IP Address is %s\r\n", eth.getIPAddress()); |
M_J | 19:e2b03f4e2c7e | 178 | |
hjjeon | 14:9202a7785974 | 179 | if (!svr.start(80, ð)) { |
M_J | 19:e2b03f4e2c7e | 180 | |
hjjeon | 14:9202a7785974 | 181 | error("Server not starting !"); |
hjjeon | 14:9202a7785974 | 182 | exit(0); |
hjjeon | 14:9202a7785974 | 183 | } |
M_J | 19:e2b03f4e2c7e | 184 | |
M_J | 19:e2b03f4e2c7e | 185 | motion.rise(&irq_handler); |
M_J | 19:e2b03f4e2c7e | 186 | event.rise(&trigger); // touch |
M_J | 19:e2b03f4e2c7e | 187 | |
hjjeon | 14:9202a7785974 | 188 | while(1) { |
hjjeon | 14:9202a7785974 | 189 | svr.poll(); |
M_J | 20:3b473e577885 | 190 | sensor_5(); |
M_J | 19:e2b03f4e2c7e | 191 | |
M_J | 20:3b473e577885 | 192 | if(control == 0) { |
M_J | 20:3b473e577885 | 193 | while (1) |
M_J | 20:3b473e577885 | 194 | sensor_5(); |
M_J | 20:3b473e577885 | 195 | } |
M_J | 20:3b473e577885 | 196 | wait(1); |
M_J | 19:e2b03f4e2c7e | 197 | |
M_J | 20:3b473e577885 | 198 | |
M_J | 20:3b473e577885 | 199 | /* |
M_J | 19:e2b03f4e2c7e | 200 | //DHT sensor |
M_J | 19:e2b03f4e2c7e | 201 | rd_sensor = sensor.readData(); |
M_J | 19:e2b03f4e2c7e | 202 | if (0 == rd_sensor) { |
M_J | 19:e2b03f4e2c7e | 203 | hum = sensor.ReadHumidity(); |
M_J | 19:e2b03f4e2c7e | 204 | cel = sensor.ReadTemperature(CELCIUS); |
M_J | 19:e2b03f4e2c7e | 205 | cel = cel*cel_val; // control with html |
M_J | 19:e2b03f4e2c7e | 206 | printf("1. Humidity : %4.2f\r\n\n", hum); |
M_J | 19:e2b03f4e2c7e | 207 | wait(0.3); |
M_J | 19:e2b03f4e2c7e | 208 | printf("2. Temperature in Celcius : %2.2f\r\n\n", cel); |
M_J | 19:e2b03f4e2c7e | 209 | wait(0.3); |
M_J | 19:e2b03f4e2c7e | 210 | } |
M_J | 19:e2b03f4e2c7e | 211 | else |
M_J | 19:e2b03f4e2c7e | 212 | printf("1,2. Error! : %d\r\n\n", rd_sensor); |
M_J | 19:e2b03f4e2c7e | 213 | |
M_J | 19:e2b03f4e2c7e | 214 | // motion |
M_J | 19:e2b03f4e2c7e | 215 | if(motion_detected) { |
M_J | 19:e2b03f4e2c7e | 216 | motion_detected = 0; |
M_J | 19:e2b03f4e2c7e | 217 | |
M_J | 19:e2b03f4e2c7e | 218 | printf("3. Something move!\r\n\r\n"); |
M_J | 19:e2b03f4e2c7e | 219 | wait(0.3); |
M_J | 19:e2b03f4e2c7e | 220 | } |
M_J | 19:e2b03f4e2c7e | 221 | |
M_J | 19:e2b03f4e2c7e | 222 | // luminance |
M_J | 19:e2b03f4e2c7e | 223 | printf("4. Luminance: %f\r\n\r\n", luminance.read()); |
M_J | 19:e2b03f4e2c7e | 224 | //printf(" + lumi_val = %d\r\n\r\n", lumi_val); |
M_J | 19:e2b03f4e2c7e | 225 | |
M_J | 19:e2b03f4e2c7e | 226 | if(lumi_val == 0) { |
M_J | 19:e2b03f4e2c7e | 227 | led_R=1; led_G=1; led_B=1;} // led off |
M_J | 19:e2b03f4e2c7e | 228 | |
M_J | 19:e2b03f4e2c7e | 229 | else { |
M_J | 19:e2b03f4e2c7e | 230 | if(luminance.read()<=0.1){ |
M_J | 19:e2b03f4e2c7e | 231 | led_R=0; led_G=0; led_B=0;} // white LED on |
M_J | 19:e2b03f4e2c7e | 232 | |
M_J | 19:e2b03f4e2c7e | 233 | else if(0.1<=luminance.read()&&luminance.read()<=0.3){ |
M_J | 19:e2b03f4e2c7e | 234 | led_R=0; led_G=0; led_B=1;} // yellow LED on |
M_J | 19:e2b03f4e2c7e | 235 | |
M_J | 19:e2b03f4e2c7e | 236 | else{ |
M_J | 19:e2b03f4e2c7e | 237 | led_R=1; led_G=1; led_B=1;} // led off |
M_J | 20:3b473e577885 | 238 | } */ |
M_J | 20:3b473e577885 | 239 | //wait(1); |
hjjeon | 14:9202a7785974 | 240 | } |
M_J | 19:e2b03f4e2c7e | 241 | } |