finish ^o^
Dependencies: Air_Quality DHT SDFileSystem Servo WIZnetInterface httpServer mbed-src
Fork of httpServer-WIZwiki-W7500 by
main.cpp@19:e2b03f4e2c7e, 2015-08-19 (annotated)
- Committer:
- M_J
- Date:
- Wed Aug 19 16:28:07 2015 +0000
- Revision:
- 19:e2b03f4e2c7e
- Parent:
- 18:5d96484995cf
- Child:
- 20:3b473e577885
html+sensor(error 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 | 19:e2b03f4e2c7e | 16 | |
| M_J | 19:e2b03f4e2c7e | 17 | DHT sensor(D4, DHT11); |
| M_J | 19:e2b03f4e2c7e | 18 | InterruptIn motion(D5); |
| M_J | 19:e2b03f4e2c7e | 19 | AnalogIn luminance(A1); |
| M_J | 19:e2b03f4e2c7e | 20 | InterruptIn event(D2); // touch |
| M_J | 19:e2b03f4e2c7e | 21 | Servo myservo(D14); // touch servo |
| M_J | 19:e2b03f4e2c7e | 22 | |
| M_J | 19:e2b03f4e2c7e | 23 | DigitalOut led_R(LED1); |
| M_J | 19:e2b03f4e2c7e | 24 | DigitalOut led_G(LED2); |
| M_J | 19:e2b03f4e2c7e | 25 | DigitalOut led_B(LED3); |
| M_J | 19:e2b03f4e2c7e | 26 | |
| hjjeon | 14:9202a7785974 | 27 | #ifdef TARGET_WIZWIKI_W7500 |
| hjjeon | 17:be86c9b2cbda | 28 | //Choose one of file system. |
| hjjeon | 14:9202a7785974 | 29 | SDFileSystem local(SD_MOSI, SD_MISO, SD_CLK, SD_SEL, "local");//PB_3, PB_2, PB_1, PB_0 |
| hjjeon | 17:be86c9b2cbda | 30 | //LocalFileSystem local("local"); |
| hjjeon | 14:9202a7785974 | 31 | #endif |
| M_J | 19:e2b03f4e2c7e | 32 | |
| hjjeon | 14:9202a7785974 | 33 | #ifdef TARGET_WIZWIKI_W7500 |
| hjjeon | 14:9202a7785974 | 34 | uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; |
| hjjeon | 14:9202a7785974 | 35 | #endif |
| M_J | 19:e2b03f4e2c7e | 36 | |
| hjjeon | 14:9202a7785974 | 37 | EthernetInterface eth; |
| hjjeon | 14:9202a7785974 | 38 | HTTPServer svr; |
| hjjeon | 14:9202a7785974 | 39 | char ip_addr[] = "192.168.1.111"; |
| hjjeon | 14:9202a7785974 | 40 | char subnet_mask[] = "255.255.255.0"; |
| hjjeon | 14:9202a7785974 | 41 | char gateway_addr[] = "192.168.1.1"; |
| M_J | 19:e2b03f4e2c7e | 42 | |
| hjjeon | 15:0091888ada99 | 43 | //#define DHCP //If uncomment, W7500 runs DHCP |
| M_J | 19:e2b03f4e2c7e | 44 | |
| M_J | 19:e2b03f4e2c7e | 45 | |
| M_J | 19:e2b03f4e2c7e | 46 | // motion |
| M_J | 19:e2b03f4e2c7e | 47 | void irq_handler() |
| M_J | 19:e2b03f4e2c7e | 48 | { |
| M_J | 19:e2b03f4e2c7e | 49 | motion_detected = 1; |
| M_J | 19:e2b03f4e2c7e | 50 | } |
| hjjeon | 14:9202a7785974 | 51 | |
| M_J | 19:e2b03f4e2c7e | 52 | // touch |
| M_J | 19:e2b03f4e2c7e | 53 | void trigger() { |
| M_J | 19:e2b03f4e2c7e | 54 | |
| M_J | 19:e2b03f4e2c7e | 55 | if(touch_val == 0) |
| M_J | 19:e2b03f4e2c7e | 56 | printf("5. Touch : Can't move!\r\n\r\n"); |
| M_J | 19:e2b03f4e2c7e | 57 | else { |
| M_J | 19:e2b03f4e2c7e | 58 | printf("5. Touch : move!\r\n\r\n"); |
| M_J | 19:e2b03f4e2c7e | 59 | if(i==0) |
| M_J | 19:e2b03f4e2c7e | 60 | myservo = 0; |
| M_J | 19:e2b03f4e2c7e | 61 | else if (i==1) |
| M_J | 19:e2b03f4e2c7e | 62 | myservo = 0.3; |
| M_J | 19:e2b03f4e2c7e | 63 | else if (i==2) |
| M_J | 19:e2b03f4e2c7e | 64 | myservo = 0.6; |
| M_J | 19:e2b03f4e2c7e | 65 | else if (i==3) |
| M_J | 19:e2b03f4e2c7e | 66 | myservo = 0.9; |
| M_J | 19:e2b03f4e2c7e | 67 | } |
| M_J | 19:e2b03f4e2c7e | 68 | |
| M_J | 19:e2b03f4e2c7e | 69 | if (i<3) |
| M_J | 19:e2b03f4e2c7e | 70 | i++; |
| M_J | 19:e2b03f4e2c7e | 71 | else |
| M_J | 19:e2b03f4e2c7e | 72 | i=0; |
| M_J | 19:e2b03f4e2c7e | 73 | } |
| M_J | 19:e2b03f4e2c7e | 74 | |
| M_J | 19:e2b03f4e2c7e | 75 | |
| hjjeon | 14:9202a7785974 | 76 | int main() |
| justinkim | 8:f837e0d255e8 | 77 | { |
| M_J | 19:e2b03f4e2c7e | 78 | int rd_sensor = 0; // when rd_sensor = 0, sensor is ready to read the data. |
| M_J | 19:e2b03f4e2c7e | 79 | float hum = 0.0f; |
| M_J | 19:e2b03f4e2c7e | 80 | float cel = 0.0f; |
| M_J | 19:e2b03f4e2c7e | 81 | |
| hjjeon | 14:9202a7785974 | 82 | HTTPFsRequestHandler::mount("/local/", "/"); |
| hjjeon | 14:9202a7785974 | 83 | svr.addHandler<HTTPFsRequestHandler>("/"); |
| M_J | 19:e2b03f4e2c7e | 84 | |
| hjjeon | 14:9202a7785974 | 85 | #ifdef TARGET_WIZWIKI_W7500 |
| hjjeon | 14:9202a7785974 | 86 | |
| hjjeon | 14:9202a7785974 | 87 | #ifdef DHCP |
| hjjeon | 14:9202a7785974 | 88 | eth.init(mac_addr); //Use DHCP |
| hjjeon | 14:9202a7785974 | 89 | #else |
| hjjeon | 14:9202a7785974 | 90 | eth.init(mac_addr, ip_addr, subnet_mask, gateway_addr); //Not Use DHCP |
| hjjeon | 14:9202a7785974 | 91 | #endif |
| M_J | 19:e2b03f4e2c7e | 92 | |
| hjjeon | 14:9202a7785974 | 93 | #else |
| M_J | 19:e2b03f4e2c7e | 94 | |
| hjjeon | 14:9202a7785974 | 95 | #ifdef DHCP |
| hjjeon | 14:9202a7785974 | 96 | eth.init(); //Use DHCP |
| hjjeon | 14:9202a7785974 | 97 | #else |
| hjjeon | 14:9202a7785974 | 98 | eth.init(ip_addr, subnet_mask, gateway_addr); //Not Use DHCP |
| hjjeon | 14:9202a7785974 | 99 | #endif |
| M_J | 19:e2b03f4e2c7e | 100 | |
| hjjeon | 14:9202a7785974 | 101 | #endif |
| M_J | 19:e2b03f4e2c7e | 102 | |
| hjjeon | 18:5d96484995cf | 103 | printf("Check Ethernet Link\r\n"); |
| hjjeon | 18:5d96484995cf | 104 | while(1) //Wait link up |
| hjjeon | 18:5d96484995cf | 105 | { |
| hjjeon | 18:5d96484995cf | 106 | if(eth.link() == true) |
| hjjeon | 18:5d96484995cf | 107 | break; |
| hjjeon | 18:5d96484995cf | 108 | } |
| hjjeon | 18:5d96484995cf | 109 | printf("Link up\r\n"); |
| M_J | 19:e2b03f4e2c7e | 110 | |
| justinkim | 8:f837e0d255e8 | 111 | eth.connect(); |
| justinkim | 8:f837e0d255e8 | 112 | printf("Server IP Address is %s\r\n", eth.getIPAddress()); |
| M_J | 19:e2b03f4e2c7e | 113 | |
| hjjeon | 14:9202a7785974 | 114 | if (!svr.start(80, ð)) { |
| M_J | 19:e2b03f4e2c7e | 115 | |
| hjjeon | 14:9202a7785974 | 116 | error("Server not starting !"); |
| hjjeon | 14:9202a7785974 | 117 | exit(0); |
| hjjeon | 14:9202a7785974 | 118 | } |
| M_J | 19:e2b03f4e2c7e | 119 | |
| M_J | 19:e2b03f4e2c7e | 120 | motion.rise(&irq_handler); |
| M_J | 19:e2b03f4e2c7e | 121 | event.rise(&trigger); // touch |
| M_J | 19:e2b03f4e2c7e | 122 | |
| hjjeon | 14:9202a7785974 | 123 | while(1) { |
| hjjeon | 14:9202a7785974 | 124 | svr.poll(); |
| M_J | 19:e2b03f4e2c7e | 125 | |
| M_J | 19:e2b03f4e2c7e | 126 | wait(0.3); |
| M_J | 19:e2b03f4e2c7e | 127 | |
| M_J | 19:e2b03f4e2c7e | 128 | //DHT sensor |
| M_J | 19:e2b03f4e2c7e | 129 | rd_sensor = sensor.readData(); |
| M_J | 19:e2b03f4e2c7e | 130 | if (0 == rd_sensor) { |
| M_J | 19:e2b03f4e2c7e | 131 | hum = sensor.ReadHumidity(); |
| M_J | 19:e2b03f4e2c7e | 132 | cel = sensor.ReadTemperature(CELCIUS); |
| M_J | 19:e2b03f4e2c7e | 133 | cel = cel*cel_val; // control with html |
| M_J | 19:e2b03f4e2c7e | 134 | printf("1. Humidity : %4.2f\r\n\n", hum); |
| M_J | 19:e2b03f4e2c7e | 135 | wait(0.3); |
| M_J | 19:e2b03f4e2c7e | 136 | printf("2. Temperature in Celcius : %2.2f\r\n\n", cel); |
| M_J | 19:e2b03f4e2c7e | 137 | wait(0.3); |
| M_J | 19:e2b03f4e2c7e | 138 | } |
| M_J | 19:e2b03f4e2c7e | 139 | else |
| M_J | 19:e2b03f4e2c7e | 140 | printf("1,2. Error! : %d\r\n\n", rd_sensor); |
| M_J | 19:e2b03f4e2c7e | 141 | |
| M_J | 19:e2b03f4e2c7e | 142 | // motion |
| M_J | 19:e2b03f4e2c7e | 143 | if(motion_detected) { |
| M_J | 19:e2b03f4e2c7e | 144 | motion_detected = 0; |
| M_J | 19:e2b03f4e2c7e | 145 | |
| M_J | 19:e2b03f4e2c7e | 146 | printf("3. Something move!\r\n\r\n"); |
| M_J | 19:e2b03f4e2c7e | 147 | wait(0.3); |
| M_J | 19:e2b03f4e2c7e | 148 | } |
| M_J | 19:e2b03f4e2c7e | 149 | |
| M_J | 19:e2b03f4e2c7e | 150 | // luminance |
| M_J | 19:e2b03f4e2c7e | 151 | printf("4. Luminance: %f\r\n\r\n", luminance.read()); |
| M_J | 19:e2b03f4e2c7e | 152 | //printf(" + lumi_val = %d\r\n\r\n", lumi_val); |
| M_J | 19:e2b03f4e2c7e | 153 | |
| M_J | 19:e2b03f4e2c7e | 154 | if(lumi_val == 0) { |
| M_J | 19:e2b03f4e2c7e | 155 | led_R=1; led_G=1; led_B=1;} // led off |
| M_J | 19:e2b03f4e2c7e | 156 | |
| M_J | 19:e2b03f4e2c7e | 157 | else { |
| M_J | 19:e2b03f4e2c7e | 158 | if(luminance.read()<=0.1){ |
| M_J | 19:e2b03f4e2c7e | 159 | led_R=0; led_G=0; led_B=0;} // white LED on |
| M_J | 19:e2b03f4e2c7e | 160 | |
| M_J | 19:e2b03f4e2c7e | 161 | else if(0.1<=luminance.read()&&luminance.read()<=0.3){ |
| M_J | 19:e2b03f4e2c7e | 162 | led_R=0; led_G=0; led_B=1;} // yellow LED on |
| M_J | 19:e2b03f4e2c7e | 163 | |
| M_J | 19:e2b03f4e2c7e | 164 | else{ |
| M_J | 19:e2b03f4e2c7e | 165 | led_R=1; led_G=1; led_B=1;} // led off |
| M_J | 19:e2b03f4e2c7e | 166 | } |
| M_J | 19:e2b03f4e2c7e | 167 | wait(1); |
| hjjeon | 14:9202a7785974 | 168 | } |
| M_J | 19:e2b03f4e2c7e | 169 | } |
