Use to WIZwiki-W7500, Sensing to CDS and PIR, Control to LED
Dependencies: WIZnetInterface mbed
main.cpp@0:bc66d31a6df1, 2015-06-29 (annotated)
- Committer:
- nanjsk
- Date:
- Mon Jun 29 13:00:43 2015 +0000
- Revision:
- 0:bc66d31a6df1
1st
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nanjsk | 0:bc66d31a6df1 | 1 | #include "mbed.h" |
nanjsk | 0:bc66d31a6df1 | 2 | #include "EthernetInterface.h" |
nanjsk | 0:bc66d31a6df1 | 3 | |
nanjsk | 0:bc66d31a6df1 | 4 | #define USE_DHCP 0 |
nanjsk | 0:bc66d31a6df1 | 5 | |
nanjsk | 0:bc66d31a6df1 | 6 | #define PORT 5000 |
nanjsk | 0:bc66d31a6df1 | 7 | |
nanjsk | 0:bc66d31a6df1 | 8 | const char * IP_Addr = "192.168.11.194"; |
nanjsk | 0:bc66d31a6df1 | 9 | const char * IP_Subnet = "255.255.255.0"; |
nanjsk | 0:bc66d31a6df1 | 10 | const char * IP_Gateway = "192.168.11.1"; |
nanjsk | 0:bc66d31a6df1 | 11 | const char * Target_IP = "192.168.11.227"; |
nanjsk | 0:bc66d31a6df1 | 12 | unsigned char MAC_Addr[6] = {0x00,0x08,0xDC,0x12,0x34,0x56}; |
nanjsk | 0:bc66d31a6df1 | 13 | |
nanjsk | 0:bc66d31a6df1 | 14 | |
nanjsk | 0:bc66d31a6df1 | 15 | Serial pc(USBTX, USBRX); |
nanjsk | 0:bc66d31a6df1 | 16 | |
nanjsk | 0:bc66d31a6df1 | 17 | DigitalOut ledR0(LED_RED); |
nanjsk | 0:bc66d31a6df1 | 18 | DigitalOut ledG0(LED_GREEN); |
nanjsk | 0:bc66d31a6df1 | 19 | //DigitalOut ledB0(LED_BLUE); |
nanjsk | 0:bc66d31a6df1 | 20 | |
nanjsk | 0:bc66d31a6df1 | 21 | DigitalOut led0(D5); |
nanjsk | 0:bc66d31a6df1 | 22 | DigitalOut led1(D6); |
nanjsk | 0:bc66d31a6df1 | 23 | |
nanjsk | 0:bc66d31a6df1 | 24 | DigitalIn PIR(D8); |
nanjsk | 0:bc66d31a6df1 | 25 | AnalogIn CDS(A0); |
nanjsk | 0:bc66d31a6df1 | 26 | |
nanjsk | 0:bc66d31a6df1 | 27 | #define PLED_ON led0 = led1 = 1 |
nanjsk | 0:bc66d31a6df1 | 28 | #define PLED_OFF led0 = led1 = 0 |
nanjsk | 0:bc66d31a6df1 | 29 | |
nanjsk | 0:bc66d31a6df1 | 30 | int CDS_data; |
nanjsk | 0:bc66d31a6df1 | 31 | int PIR_sensor; |
nanjsk | 0:bc66d31a6df1 | 32 | |
nanjsk | 0:bc66d31a6df1 | 33 | int CDS_check() |
nanjsk | 0:bc66d31a6df1 | 34 | { |
nanjsk | 0:bc66d31a6df1 | 35 | CDS_data = CDS.read()*1000; |
nanjsk | 0:bc66d31a6df1 | 36 | return CDS_data; |
nanjsk | 0:bc66d31a6df1 | 37 | } |
nanjsk | 0:bc66d31a6df1 | 38 | |
nanjsk | 0:bc66d31a6df1 | 39 | int PIR_check() |
nanjsk | 0:bc66d31a6df1 | 40 | { |
nanjsk | 0:bc66d31a6df1 | 41 | PIR_sensor = PIR; |
nanjsk | 0:bc66d31a6df1 | 42 | return PIR_sensor; |
nanjsk | 0:bc66d31a6df1 | 43 | } |
nanjsk | 0:bc66d31a6df1 | 44 | |
nanjsk | 0:bc66d31a6df1 | 45 | int main() { |
nanjsk | 0:bc66d31a6df1 | 46 | ledR0 = ledG0 = 1; |
nanjsk | 0:bc66d31a6df1 | 47 | PLED_OFF; |
nanjsk | 0:bc66d31a6df1 | 48 | |
nanjsk | 0:bc66d31a6df1 | 49 | unsigned char flag = 1; |
nanjsk | 0:bc66d31a6df1 | 50 | int csd_int = 2; |
nanjsk | 0:bc66d31a6df1 | 51 | int pir_int0 = 2; |
nanjsk | 0:bc66d31a6df1 | 52 | int pir_int1 = 2; |
nanjsk | 0:bc66d31a6df1 | 53 | int pir_status = 0; |
nanjsk | 0:bc66d31a6df1 | 54 | |
nanjsk | 0:bc66d31a6df1 | 55 | pc.baud(115200); |
nanjsk | 0:bc66d31a6df1 | 56 | wait(0.5f); |
nanjsk | 0:bc66d31a6df1 | 57 | pc.printf("Hello WIZwiki-W7500!\n\r"); |
nanjsk | 0:bc66d31a6df1 | 58 | pc.printf("===========================================\n\r"); |
nanjsk | 0:bc66d31a6df1 | 59 | |
nanjsk | 0:bc66d31a6df1 | 60 | EthernetInterface eth; |
nanjsk | 0:bc66d31a6df1 | 61 | #if USE_DHCP |
nanjsk | 0:bc66d31a6df1 | 62 | int ret = eth.init(MAC_Addr); |
nanjsk | 0:bc66d31a6df1 | 63 | #else |
nanjsk | 0:bc66d31a6df1 | 64 | int ret = eth.init(MAC_Addr,IP_Addr,IP_Subnet,IP_Gateway); |
nanjsk | 0:bc66d31a6df1 | 65 | #endif |
nanjsk | 0:bc66d31a6df1 | 66 | TCPSocketConnection client; |
nanjsk | 0:bc66d31a6df1 | 67 | |
nanjsk | 0:bc66d31a6df1 | 68 | //eth.link(3000); |
nanjsk | 0:bc66d31a6df1 | 69 | wait(5); |
nanjsk | 0:bc66d31a6df1 | 70 | pc.printf("Connecting......wait 5sec \r\n"); |
nanjsk | 0:bc66d31a6df1 | 71 | if (!ret) { |
nanjsk | 0:bc66d31a6df1 | 72 | pc.printf("Initialized, \r\nMAC: %s\r\n", eth.getMACAddress()); |
nanjsk | 0:bc66d31a6df1 | 73 | ret = eth.connect(); |
nanjsk | 0:bc66d31a6df1 | 74 | if (!ret) { |
nanjsk | 0:bc66d31a6df1 | 75 | pc.printf("IP: %s \r\nMASK: %s \r\nGW: %s\r\n", |
nanjsk | 0:bc66d31a6df1 | 76 | eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway()); |
nanjsk | 0:bc66d31a6df1 | 77 | } else { |
nanjsk | 0:bc66d31a6df1 | 78 | pc.printf("Error ethernet.connect() - ret = %d\r\n", ret); |
nanjsk | 0:bc66d31a6df1 | 79 | exit(0); |
nanjsk | 0:bc66d31a6df1 | 80 | } |
nanjsk | 0:bc66d31a6df1 | 81 | } else { |
nanjsk | 0:bc66d31a6df1 | 82 | pc.printf("Error ethernet.init() - ret = %d\r\n", ret); |
nanjsk | 0:bc66d31a6df1 | 83 | exit(0); |
nanjsk | 0:bc66d31a6df1 | 84 | } |
nanjsk | 0:bc66d31a6df1 | 85 | |
nanjsk | 0:bc66d31a6df1 | 86 | client.connect(Target_IP,5000); |
nanjsk | 0:bc66d31a6df1 | 87 | |
nanjsk | 0:bc66d31a6df1 | 88 | if(client.is_connected() == 1){ |
nanjsk | 0:bc66d31a6df1 | 89 | pc.printf("Connected success : %s\r\n", client.get_address()); |
nanjsk | 0:bc66d31a6df1 | 90 | client.send("Hello server!\r\n", 15); |
nanjsk | 0:bc66d31a6df1 | 91 | PLED_ON; |
nanjsk | 0:bc66d31a6df1 | 92 | wait(0.2f); |
nanjsk | 0:bc66d31a6df1 | 93 | PLED_OFF; |
nanjsk | 0:bc66d31a6df1 | 94 | wait(0.2f); |
nanjsk | 0:bc66d31a6df1 | 95 | PLED_ON; |
nanjsk | 0:bc66d31a6df1 | 96 | wait(0.2f); |
nanjsk | 0:bc66d31a6df1 | 97 | PLED_OFF; |
nanjsk | 0:bc66d31a6df1 | 98 | } |
nanjsk | 0:bc66d31a6df1 | 99 | else { |
nanjsk | 0:bc66d31a6df1 | 100 | pc.printf("Connected fail : %s\r\n", client.get_address()); |
nanjsk | 0:bc66d31a6df1 | 101 | PLED_ON; |
nanjsk | 0:bc66d31a6df1 | 102 | wait(0.4f); |
nanjsk | 0:bc66d31a6df1 | 103 | PLED_OFF; |
nanjsk | 0:bc66d31a6df1 | 104 | } |
nanjsk | 0:bc66d31a6df1 | 105 | |
nanjsk | 0:bc66d31a6df1 | 106 | while (1) { |
nanjsk | 0:bc66d31a6df1 | 107 | Timer t; |
nanjsk | 0:bc66d31a6df1 | 108 | if(CDS_check() > 600){ |
nanjsk | 0:bc66d31a6df1 | 109 | if(csd_int != 0){ |
nanjsk | 0:bc66d31a6df1 | 110 | pc.printf("Now is dark.\r\n"); |
nanjsk | 0:bc66d31a6df1 | 111 | client.send("Now is dark.\r\n", 14); |
nanjsk | 0:bc66d31a6df1 | 112 | csd_int = 0; |
nanjsk | 0:bc66d31a6df1 | 113 | } |
nanjsk | 0:bc66d31a6df1 | 114 | ledG0 = 0; |
nanjsk | 0:bc66d31a6df1 | 115 | flag = 1; |
nanjsk | 0:bc66d31a6df1 | 116 | while(flag){ |
nanjsk | 0:bc66d31a6df1 | 117 | if(PIR_check()){ |
nanjsk | 0:bc66d31a6df1 | 118 | if(pir_int0 != 0){ |
nanjsk | 0:bc66d31a6df1 | 119 | pc.printf("The movement is detected.\r\n"); |
nanjsk | 0:bc66d31a6df1 | 120 | pc.printf("Power LED is turned on.\r\n"); |
nanjsk | 0:bc66d31a6df1 | 121 | client.send("The movement is detected.\r\n", 27); |
nanjsk | 0:bc66d31a6df1 | 122 | client.send("Power LED is turned on.\r\n", 25); |
nanjsk | 0:bc66d31a6df1 | 123 | pir_int0 = 0; |
nanjsk | 0:bc66d31a6df1 | 124 | } |
nanjsk | 0:bc66d31a6df1 | 125 | t.stop(); |
nanjsk | 0:bc66d31a6df1 | 126 | t.reset(); |
nanjsk | 0:bc66d31a6df1 | 127 | t.start(); |
nanjsk | 0:bc66d31a6df1 | 128 | pir_status = 1; |
nanjsk | 0:bc66d31a6df1 | 129 | ledR0 = 0; |
nanjsk | 0:bc66d31a6df1 | 130 | PLED_ON; |
nanjsk | 0:bc66d31a6df1 | 131 | } |
nanjsk | 0:bc66d31a6df1 | 132 | if(pir_status == 0) { |
nanjsk | 0:bc66d31a6df1 | 133 | flag = 0; |
nanjsk | 0:bc66d31a6df1 | 134 | } |
nanjsk | 0:bc66d31a6df1 | 135 | if(t.read_ms() > 5000 && pir_status == 1){ |
nanjsk | 0:bc66d31a6df1 | 136 | if(pir_int0 != 1){ |
nanjsk | 0:bc66d31a6df1 | 137 | pc.printf("The movement is not detected.\r\n"); |
nanjsk | 0:bc66d31a6df1 | 138 | pc.printf("Power LED is turned off.\r\n"); |
nanjsk | 0:bc66d31a6df1 | 139 | client.send("The movement is not detected.\r\n", 31); |
nanjsk | 0:bc66d31a6df1 | 140 | client.send("Power LED is turned off.\r\n", 26); |
nanjsk | 0:bc66d31a6df1 | 141 | pir_int0 = 1; |
nanjsk | 0:bc66d31a6df1 | 142 | } |
nanjsk | 0:bc66d31a6df1 | 143 | t.stop(); |
nanjsk | 0:bc66d31a6df1 | 144 | t.reset(); |
nanjsk | 0:bc66d31a6df1 | 145 | pir_status = 0; |
nanjsk | 0:bc66d31a6df1 | 146 | ledR0 = 1; |
nanjsk | 0:bc66d31a6df1 | 147 | PLED_OFF; |
nanjsk | 0:bc66d31a6df1 | 148 | flag = 0; |
nanjsk | 0:bc66d31a6df1 | 149 | wait(0.1f); |
nanjsk | 0:bc66d31a6df1 | 150 | } |
nanjsk | 0:bc66d31a6df1 | 151 | } |
nanjsk | 0:bc66d31a6df1 | 152 | } |
nanjsk | 0:bc66d31a6df1 | 153 | else{ |
nanjsk | 0:bc66d31a6df1 | 154 | if(csd_int != 1){ |
nanjsk | 0:bc66d31a6df1 | 155 | pc.printf("Now is brighter.\r\n"); |
nanjsk | 0:bc66d31a6df1 | 156 | client.send("Now is brighter.\r\n", 18); |
nanjsk | 0:bc66d31a6df1 | 157 | csd_int = 1; |
nanjsk | 0:bc66d31a6df1 | 158 | } |
nanjsk | 0:bc66d31a6df1 | 159 | |
nanjsk | 0:bc66d31a6df1 | 160 | ledG0 = 1; |
nanjsk | 0:bc66d31a6df1 | 161 | if(PIR_check()){ |
nanjsk | 0:bc66d31a6df1 | 162 | if(pir_int1 != 0){ |
nanjsk | 0:bc66d31a6df1 | 163 | pc.printf("The movement is detected.\r\n"); |
nanjsk | 0:bc66d31a6df1 | 164 | client.send("The movement is detected.\r\n", 27); |
nanjsk | 0:bc66d31a6df1 | 165 | pir_int1 = 0; |
nanjsk | 0:bc66d31a6df1 | 166 | } |
nanjsk | 0:bc66d31a6df1 | 167 | ledR0 = 0; |
nanjsk | 0:bc66d31a6df1 | 168 | } |
nanjsk | 0:bc66d31a6df1 | 169 | else{ |
nanjsk | 0:bc66d31a6df1 | 170 | if(pir_int1 != 1){ |
nanjsk | 0:bc66d31a6df1 | 171 | pc.printf("The movement is not detected.\r\n"); |
nanjsk | 0:bc66d31a6df1 | 172 | client.send("The movement is not detected.\r\n", 31); |
nanjsk | 0:bc66d31a6df1 | 173 | pir_int1 = 1; |
nanjsk | 0:bc66d31a6df1 | 174 | } |
nanjsk | 0:bc66d31a6df1 | 175 | ledR0 = 1; |
nanjsk | 0:bc66d31a6df1 | 176 | } |
nanjsk | 0:bc66d31a6df1 | 177 | } |
nanjsk | 0:bc66d31a6df1 | 178 | } |
nanjsk | 0:bc66d31a6df1 | 179 | } |