using websocket to dynamic display sensor data on webpage; sends alert email from mbed.
Dependencies: BroadcastSend EthernetInterface OneWire2 SimpleSMTPClient mbed-rpc mbed-rtos
demo_for_temperature.cpp@3:26beaa8b94ce, 2016-02-18 (annotated)
- Committer:
- cryptoc
- Date:
- Thu Feb 18 20:04:08 2016 +0000
- Revision:
- 3:26beaa8b94ce
.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cryptoc | 3:26beaa8b94ce | 1 | /**Author: Zhongying Qiao |
cryptoc | 3:26beaa8b94ce | 2 | Date: 02/03/2014*/ |
cryptoc | 3:26beaa8b94ce | 3 | #include "mbed.h" |
cryptoc | 3:26beaa8b94ce | 4 | #include "rtos.h" |
cryptoc | 3:26beaa8b94ce | 5 | #include "OneWire.h" |
cryptoc | 3:26beaa8b94ce | 6 | #include "Network.h" |
cryptoc | 3:26beaa8b94ce | 7 | #include "DS1920.h" |
cryptoc | 3:26beaa8b94ce | 8 | |
cryptoc | 3:26beaa8b94ce | 9 | Serial pc(USBTX, USBRX); |
cryptoc | 3:26beaa8b94ce | 10 | |
cryptoc | 3:26beaa8b94ce | 11 | DigitalOut led1(LED1); |
cryptoc | 3:26beaa8b94ce | 12 | DigitalOut led2(LED2); |
cryptoc | 3:26beaa8b94ce | 13 | DigitalOut led3(LED3); |
cryptoc | 3:26beaa8b94ce | 14 | DigitalOut led4(LED4); |
cryptoc | 3:26beaa8b94ce | 15 | |
cryptoc | 3:26beaa8b94ce | 16 | Timeout t; |
cryptoc | 3:26beaa8b94ce | 17 | float temperature=0.0; |
cryptoc | 3:26beaa8b94ce | 18 | |
cryptoc | 3:26beaa8b94ce | 19 | // one wire ONE |
cryptoc | 3:26beaa8b94ce | 20 | OneWire owi(p21); |
cryptoc | 3:26beaa8b94ce | 21 | OneWire_Instruction owtrans; |
cryptoc | 3:26beaa8b94ce | 22 | OneWire_ROM rom; |
cryptoc | 3:26beaa8b94ce | 23 | onewire::ds1920::scratchpad_t scratchpad; |
cryptoc | 3:26beaa8b94ce | 24 | TransportSearchPersist search; |
cryptoc | 3:26beaa8b94ce | 25 | osThreadId controlthread; |
cryptoc | 3:26beaa8b94ce | 26 | |
cryptoc | 3:26beaa8b94ce | 27 | |
cryptoc | 3:26beaa8b94ce | 28 | char readbuffer[16]; |
cryptoc | 3:26beaa8b94ce | 29 | |
cryptoc | 3:26beaa8b94ce | 30 | |
cryptoc | 3:26beaa8b94ce | 31 | //led1 flashing at incresing speed |
cryptoc | 3:26beaa8b94ce | 32 | |
cryptoc | 3:26beaa8b94ce | 33 | void device_detect(OneWire * which){ |
cryptoc | 3:26beaa8b94ce | 34 | osSignalSet(controlthread, 1); |
cryptoc | 3:26beaa8b94ce | 35 | } |
cryptoc | 3:26beaa8b94ce | 36 | |
cryptoc | 3:26beaa8b94ce | 37 | void reset_thread() { |
cryptoc | 3:26beaa8b94ce | 38 | wait(3.0); |
cryptoc | 3:26beaa8b94ce | 39 | //owi.detecthandle = &device_detect; |
cryptoc | 3:26beaa8b94ce | 40 | //controlthread = Thread::gettid(); |
cryptoc | 3:26beaa8b94ce | 41 | //Thread::signal_wait(0); |
cryptoc | 3:26beaa8b94ce | 42 | //osSignalSet(controlthread, 0); |
cryptoc | 3:26beaa8b94ce | 43 | led4 = 1; |
cryptoc | 3:26beaa8b94ce | 44 | search.clear(); |
cryptoc | 3:26beaa8b94ce | 45 | while(!search.done){ |
cryptoc | 3:26beaa8b94ce | 46 | OWNetwork::search(&owtrans, &search); |
cryptoc | 3:26beaa8b94ce | 47 | OWNetwork::no_transport(&owtrans); |
cryptoc | 3:26beaa8b94ce | 48 | if(owi.send(&owtrans, 1)){ |
cryptoc | 3:26beaa8b94ce | 49 | if(owi.error == NO_PRESENCE) puts("device might have been removed\r"); |
cryptoc | 3:26beaa8b94ce | 50 | else if(owi.error == CRC_ERROR) puts("results may have been comprimised by a transmission error\r"); |
cryptoc | 3:26beaa8b94ce | 51 | else puts("UNEXPECTED ERROR\r"); |
cryptoc | 3:26beaa8b94ce | 52 | break; |
cryptoc | 3:26beaa8b94ce | 53 | } |
cryptoc | 3:26beaa8b94ce | 54 | else{ |
cryptoc | 3:26beaa8b94ce | 55 | if((uint64_t)search.rom == 0){ |
cryptoc | 3:26beaa8b94ce | 56 | puts("the line was grounded\r"); |
cryptoc | 3:26beaa8b94ce | 57 | break; |
cryptoc | 3:26beaa8b94ce | 58 | } |
cryptoc | 3:26beaa8b94ce | 59 | printf("detected device %llX\r\n", (uint64_t)search.rom); |
cryptoc | 3:26beaa8b94ce | 60 | rom = search.rom; |
cryptoc | 3:26beaa8b94ce | 61 | OWNetwork::match(&owtrans, &rom); |
cryptoc | 3:26beaa8b94ce | 62 | onewire::ds1920::convert_temperature(&owtrans); |
cryptoc | 3:26beaa8b94ce | 63 | if(owi.send(&owtrans, 1)){ |
cryptoc | 3:26beaa8b94ce | 64 | puts("an error occured sending measure temperature transaction\r"); |
cryptoc | 3:26beaa8b94ce | 65 | break; |
cryptoc | 3:26beaa8b94ce | 66 | } |
cryptoc | 3:26beaa8b94ce | 67 | Thread::wait(1000); |
cryptoc | 3:26beaa8b94ce | 68 | onewire::ds1920::read_scratchpad(&owtrans, &scratchpad); |
cryptoc | 3:26beaa8b94ce | 69 | if(owi.send(&owtrans, 1)){ |
cryptoc | 3:26beaa8b94ce | 70 | puts("an error occured reading the scratchpad\r"); |
cryptoc | 3:26beaa8b94ce | 71 | break; |
cryptoc | 3:26beaa8b94ce | 72 | } |
cryptoc | 3:26beaa8b94ce | 73 | |
cryptoc | 3:26beaa8b94ce | 74 | temperature= scratchpad.temperature_accurate(); |
cryptoc | 3:26beaa8b94ce | 75 | printf("Temperature measured at %f degrees C.\r\n", temperature); |
cryptoc | 3:26beaa8b94ce | 76 | |
cryptoc | 3:26beaa8b94ce | 77 | } |
cryptoc | 3:26beaa8b94ce | 78 | } |
cryptoc | 3:26beaa8b94ce | 79 | } |