windown
Dependencies: SDFileSystem WIZnetInterface mbed-src
main.cpp@0:1501dea8d383, 2015-10-05 (annotated)
- Committer:
- schenk
- Date:
- Mon Oct 05 06:42:59 2015 +0000
- Revision:
- 0:1501dea8d383
window
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
schenk | 0:1501dea8d383 | 1 | #include "mbed.h" |
schenk | 0:1501dea8d383 | 2 | #include "EthernetInterface.h" |
schenk | 0:1501dea8d383 | 3 | #include "FsHandler.h" |
schenk | 0:1501dea8d383 | 4 | #include "HTTPServer.h" |
schenk | 0:1501dea8d383 | 5 | #include "SDFileSystem.h" |
schenk | 0:1501dea8d383 | 6 | #include "DHT.h" |
schenk | 0:1501dea8d383 | 7 | |
schenk | 0:1501dea8d383 | 8 | #ifdef TARGET_WIZWIKI_W7500 |
schenk | 0:1501dea8d383 | 9 | //Choose one of file system. |
schenk | 0:1501dea8d383 | 10 | SDFileSystem local(SD_MOSI, SD_MISO, SD_CLK, SD_SEL, "local");//PB_3, PB_2, PB_1, PB_0 |
schenk | 0:1501dea8d383 | 11 | //LocalFileSystem local("local"); |
schenk | 0:1501dea8d383 | 12 | #endif |
schenk | 0:1501dea8d383 | 13 | |
schenk | 0:1501dea8d383 | 14 | #ifdef TARGET_WIZWIKI_W7500 |
schenk | 0:1501dea8d383 | 15 | uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; |
schenk | 0:1501dea8d383 | 16 | #endif |
schenk | 0:1501dea8d383 | 17 | DHT sensor(D4, DHT11); |
schenk | 0:1501dea8d383 | 18 | DigitalIn Rain(D2); |
schenk | 0:1501dea8d383 | 19 | EthernetInterface eth; |
schenk | 0:1501dea8d383 | 20 | HTTPServer svr; |
schenk | 0:1501dea8d383 | 21 | char ip_addr[] = "192.168.1.112"; |
schenk | 0:1501dea8d383 | 22 | char subnet_mask[] = "255.255.255.0"; |
schenk | 0:1501dea8d383 | 23 | char gateway_addr[] = "192.168.1.1"; |
schenk | 0:1501dea8d383 | 24 | |
schenk | 0:1501dea8d383 | 25 | //#define DHCP //If uncomment, W7500 runs DHCP |
schenk | 0:1501dea8d383 | 26 | int Rain_value=1; |
schenk | 0:1501dea8d383 | 27 | int mode = 0; |
schenk | 0:1501dea8d383 | 28 | |
schenk | 0:1501dea8d383 | 29 | int main() |
schenk | 0:1501dea8d383 | 30 | { |
schenk | 0:1501dea8d383 | 31 | |
schenk | 0:1501dea8d383 | 32 | |
schenk | 0:1501dea8d383 | 33 | int error = 0; |
schenk | 0:1501dea8d383 | 34 | int h = 0, c = 0, Rain_value = 1; |
schenk | 0:1501dea8d383 | 35 | HTTPFsRequestHandler::mount("/local/", "/"); |
schenk | 0:1501dea8d383 | 36 | svr.addHandler<HTTPFsRequestHandler>("/"); |
schenk | 0:1501dea8d383 | 37 | |
schenk | 0:1501dea8d383 | 38 | #ifdef TARGET_WIZWIKI_W7500 |
schenk | 0:1501dea8d383 | 39 | |
schenk | 0:1501dea8d383 | 40 | #ifdef DHCP |
schenk | 0:1501dea8d383 | 41 | eth.init(mac_addr); //Use DHCP |
schenk | 0:1501dea8d383 | 42 | #else |
schenk | 0:1501dea8d383 | 43 | eth.init(mac_addr, ip_addr, subnet_mask, gateway_addr); //Not Use DHCP |
schenk | 0:1501dea8d383 | 44 | #endif |
schenk | 0:1501dea8d383 | 45 | |
schenk | 0:1501dea8d383 | 46 | #else |
schenk | 0:1501dea8d383 | 47 | |
schenk | 0:1501dea8d383 | 48 | #ifdef DHCP |
schenk | 0:1501dea8d383 | 49 | eth.init(); //Use DHCP |
schenk | 0:1501dea8d383 | 50 | #else |
schenk | 0:1501dea8d383 | 51 | eth.init(ip_addr, subnet_mask, gateway_addr); //Not Use DHCP |
schenk | 0:1501dea8d383 | 52 | #endif |
schenk | 0:1501dea8d383 | 53 | |
schenk | 0:1501dea8d383 | 54 | #endif |
schenk | 0:1501dea8d383 | 55 | |
schenk | 0:1501dea8d383 | 56 | printf("Check Ethernet Link\r\n"); |
schenk | 0:1501dea8d383 | 57 | while(1) //Wait link up |
schenk | 0:1501dea8d383 | 58 | { |
schenk | 0:1501dea8d383 | 59 | if(eth.link() == true) |
schenk | 0:1501dea8d383 | 60 | break; |
schenk | 0:1501dea8d383 | 61 | } |
schenk | 0:1501dea8d383 | 62 | printf("Link up\r\n"); |
schenk | 0:1501dea8d383 | 63 | |
schenk | 0:1501dea8d383 | 64 | eth.connect(); |
schenk | 0:1501dea8d383 | 65 | printf("Server IP Address is %s\r\n", eth.getIPAddress()); |
schenk | 0:1501dea8d383 | 66 | |
schenk | 0:1501dea8d383 | 67 | if (!svr.start(80, ð)) { |
schenk | 0:1501dea8d383 | 68 | |
schenk | 0:1501dea8d383 | 69 | //error("Server not starting !"); |
schenk | 0:1501dea8d383 | 70 | exit(0); |
schenk | 0:1501dea8d383 | 71 | } |
schenk | 0:1501dea8d383 | 72 | |
schenk | 0:1501dea8d383 | 73 | while(1) { |
schenk | 0:1501dea8d383 | 74 | svr.poll(); |
schenk | 0:1501dea8d383 | 75 | Rain_value = Rain.read(); // read the rain value |
schenk | 0:1501dea8d383 | 76 | wait(0.2); |
schenk | 0:1501dea8d383 | 77 | error = sensor.readData(); |
schenk | 0:1501dea8d383 | 78 | if (0 == error) { |
schenk | 0:1501dea8d383 | 79 | c = sensor.ReadTemperature(CELCIUS); |
schenk | 0:1501dea8d383 | 80 | h = sensor.ReadHumidity(); |
schenk | 0:1501dea8d383 | 81 | printf("===============Smart window================\n\r"); |
schenk | 0:1501dea8d383 | 82 | printf("Temperature in Celcius: %d\n",c); |
schenk | 0:1501dea8d383 | 83 | printf("Humidity : %d\n", h); |
schenk | 0:1501dea8d383 | 84 | printf("Rain value : %d\n", Rain_value); |
schenk | 0:1501dea8d383 | 85 | printf("Mode : %d\n", mode); |
schenk | 0:1501dea8d383 | 86 | printf("===========================================\n\r"); |
schenk | 0:1501dea8d383 | 87 | |
schenk | 0:1501dea8d383 | 88 | } else { |
schenk | 0:1501dea8d383 | 89 | printf("Error: %d\n", error); |
schenk | 0:1501dea8d383 | 90 | } |
schenk | 0:1501dea8d383 | 91 | |
schenk | 0:1501dea8d383 | 92 | |
schenk | 0:1501dea8d383 | 93 | //////// open the window |
schenk | 0:1501dea8d383 | 94 | if((c>27 || h>50) && (mode == 0&&Rain_value==1)){ |
schenk | 0:1501dea8d383 | 95 | // ((c>30 or h>50) and closed status) |
schenk | 0:1501dea8d383 | 96 | DigitalOut(D9,0); |
schenk | 0:1501dea8d383 | 97 | DigitalOut(D8,1); |
schenk | 0:1501dea8d383 | 98 | wait(0.87); |
schenk | 0:1501dea8d383 | 99 | DigitalOut(D9,0); |
schenk | 0:1501dea8d383 | 100 | DigitalOut(D8,0); |
schenk | 0:1501dea8d383 | 101 | mode = 1 ; // opened status |
schenk | 0:1501dea8d383 | 102 | |
schenk | 0:1501dea8d383 | 103 | } |
schenk | 0:1501dea8d383 | 104 | /////// close the window |
schenk | 0:1501dea8d383 | 105 | else if((c<20 && h<40) || (mode == 1&&Rain_value==0)){ // ((c<20 and h<40) and opened status) |
schenk | 0:1501dea8d383 | 106 | DigitalOut(D9,1); |
schenk | 0:1501dea8d383 | 107 | DigitalOut(D8,0); |
schenk | 0:1501dea8d383 | 108 | wait(0.8); |
schenk | 0:1501dea8d383 | 109 | DigitalOut(D9,0); |
schenk | 0:1501dea8d383 | 110 | DigitalOut(D8,0); |
schenk | 0:1501dea8d383 | 111 | mode = 0; //closed status |
schenk | 0:1501dea8d383 | 112 | } |
schenk | 0:1501dea8d383 | 113 | |
schenk | 0:1501dea8d383 | 114 | wait(1); |
schenk | 0:1501dea8d383 | 115 | } |
schenk | 0:1501dea8d383 | 116 | } |