finish ^o^

Dependencies:   Air_Quality DHT SDFileSystem Servo WIZnetInterface httpServer mbed-src

Fork of httpServer-WIZwiki-W7500 by WIZnet

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?

UserRevisionLine numberNew 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, &eth)) {
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 }