finish ^o^

Dependencies:   Air_Quality DHT SDFileSystem Servo WIZnetInterface httpServer mbed-src

Fork of httpServer-WIZwiki-W7500 by WIZnet

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?

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