Simple IoT demo over Ethernet using the legacy network libraries
Dependencies: EthernetNetIf mbed DNSResolver
main.cpp@0:db53174490c3, 2012-02-23 (annotated)
- Committer:
- emilmont
- Date:
- Thu Feb 23 11:12:00 2012 +0000
- Revision:
- 0:db53174490c3
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emilmont | 0:db53174490c3 | 1 | #include "mbed.h" |
emilmont | 0:db53174490c3 | 2 | #include "Websocket.h" |
emilmont | 0:db53174490c3 | 3 | #define MEAN_VALUE_MIC 32500 |
emilmont | 0:db53174490c3 | 4 | |
emilmont | 0:db53174490c3 | 5 | Serial pc(USBTX, USBRX); |
emilmont | 0:db53174490c3 | 6 | Timer tmr; |
emilmont | 0:db53174490c3 | 7 | |
emilmont | 0:db53174490c3 | 8 | Websocket ws("ws://sockets.mbed.org/ws/sensors/wo"); |
emilmont | 0:db53174490c3 | 9 | |
emilmont | 0:db53174490c3 | 10 | AnalogIn light_pin(p19); |
emilmont | 0:db53174490c3 | 11 | AnalogIn mic_pin(p18); |
emilmont | 0:db53174490c3 | 12 | |
emilmont | 0:db53174490c3 | 13 | DigitalOut led1(LED1); |
emilmont | 0:db53174490c3 | 14 | DigitalOut led2(LED2); |
emilmont | 0:db53174490c3 | 15 | DigitalOut led3(LED3); |
emilmont | 0:db53174490c3 | 16 | DigitalOut led4(LED4); |
emilmont | 0:db53174490c3 | 17 | void notify(int a, int b, int c) { |
emilmont | 0:db53174490c3 | 18 | led1 = a; |
emilmont | 0:db53174490c3 | 19 | led2 = b; |
emilmont | 0:db53174490c3 | 20 | led3 = c; |
emilmont | 0:db53174490c3 | 21 | } |
emilmont | 0:db53174490c3 | 22 | |
emilmont | 0:db53174490c3 | 23 | int main() { |
emilmont | 0:db53174490c3 | 24 | notify(1, 0, 0); |
emilmont | 0:db53174490c3 | 25 | |
emilmont | 0:db53174490c3 | 26 | //unsigned short light; |
emilmont | 0:db53174490c3 | 27 | char json_str[100]; |
emilmont | 0:db53174490c3 | 28 | int press; |
emilmont | 0:db53174490c3 | 29 | double temp; |
emilmont | 0:db53174490c3 | 30 | int light; |
emilmont | 0:db53174490c3 | 31 | unsigned short mic_mean; |
emilmont | 0:db53174490c3 | 32 | unsigned short mic = 0; |
emilmont | 0:db53174490c3 | 33 | |
emilmont | 0:db53174490c3 | 34 | char recv[128]; |
emilmont | 0:db53174490c3 | 35 | while (1) { |
emilmont | 0:db53174490c3 | 36 | |
emilmont | 0:db53174490c3 | 37 | while (!ws.connect()) { |
emilmont | 0:db53174490c3 | 38 | pc.printf("cannot connect websocket, retrying in one second\r\n"); |
emilmont | 0:db53174490c3 | 39 | wait(1.0); |
emilmont | 0:db53174490c3 | 40 | } |
emilmont | 0:db53174490c3 | 41 | notify(0, 0, 1); |
emilmont | 0:db53174490c3 | 42 | |
emilmont | 0:db53174490c3 | 43 | pc.printf("Connected\r\n"); |
emilmont | 0:db53174490c3 | 44 | |
emilmont | 0:db53174490c3 | 45 | tmr.start(); |
emilmont | 0:db53174490c3 | 46 | while (1) { |
emilmont | 0:db53174490c3 | 47 | |
emilmont | 0:db53174490c3 | 48 | if (tmr.read() > 0.5) { |
emilmont | 0:db53174490c3 | 49 | |
emilmont | 0:db53174490c3 | 50 | //pressure |
emilmont | 0:db53174490c3 | 51 | //press = scp1000.readPressure(); |
emilmont | 0:db53174490c3 | 52 | press = 10; |
emilmont | 0:db53174490c3 | 53 | |
emilmont | 0:db53174490c3 | 54 | //temperature |
emilmont | 0:db53174490c3 | 55 | //temp = scp1000.readTemperature(); |
emilmont | 0:db53174490c3 | 56 | temp = 10.1; |
emilmont | 0:db53174490c3 | 57 | |
emilmont | 0:db53174490c3 | 58 | //light |
emilmont | 0:db53174490c3 | 59 | light = light_pin.read_u16()/480; |
emilmont | 0:db53174490c3 | 60 | |
emilmont | 0:db53174490c3 | 61 | //microphone |
emilmont | 0:db53174490c3 | 62 | mic_mean = 0; |
emilmont | 0:db53174490c3 | 63 | for (double i = 0; i < 200; i++) { |
emilmont | 0:db53174490c3 | 64 | mic = mic_pin.read_u16(); |
emilmont | 0:db53174490c3 | 65 | mic = (mic > MEAN_VALUE_MIC) ? mic : MEAN_VALUE_MIC + (MEAN_VALUE_MIC - mic); |
emilmont | 0:db53174490c3 | 66 | mic_mean = (mic_mean*i + mic)/(i+1); |
emilmont | 0:db53174490c3 | 67 | } |
emilmont | 0:db53174490c3 | 68 | pc.putc('!'); |
emilmont | 0:db53174490c3 | 69 | |
emilmont | 0:db53174490c3 | 70 | sprintf(json_str, "{\"id\":\"eth_env\",\"p\":\"%d\",\"t\":\"%d\",\"l\":\"%d\",\"m\":\"%d\"}", (int)press, (int)temp, (int)(140 - light), mic_mean); |
emilmont | 0:db53174490c3 | 71 | ws.send(json_str); |
emilmont | 0:db53174490c3 | 72 | |
emilmont | 0:db53174490c3 | 73 | led4 = !led4; |
emilmont | 0:db53174490c3 | 74 | |
emilmont | 0:db53174490c3 | 75 | if (ws.read(recv)) { |
emilmont | 0:db53174490c3 | 76 | pc.printf("."); |
emilmont | 0:db53174490c3 | 77 | pc.printf("recv: %s\r\n", recv); |
emilmont | 0:db53174490c3 | 78 | } |
emilmont | 0:db53174490c3 | 79 | |
emilmont | 0:db53174490c3 | 80 | tmr.start(); |
emilmont | 0:db53174490c3 | 81 | } |
emilmont | 0:db53174490c3 | 82 | |
emilmont | 0:db53174490c3 | 83 | Net::poll(); |
emilmont | 0:db53174490c3 | 84 | } |
emilmont | 0:db53174490c3 | 85 | } |
emilmont | 0:db53174490c3 | 86 | } |