first commit
Dependencies: C12832_lcd DigiLogger LM75B XBeeLib2 mbed
Fork of XBee802_Send_Data by
main.cpp@11:44571f2b239e, 2016-12-16 (annotated)
- Committer:
- kingkingyyk
- Date:
- Fri Dec 16 02:59:48 2016 +0000
- Revision:
- 11:44571f2b239e
- Parent:
- 9:db657fba2ccf
first commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kingkingyyk | 11:44571f2b239e | 1 | #include "mbed.h" |
kingkingyyk | 11:44571f2b239e | 2 | #include "C12832_lcd.h" |
kingkingyyk | 11:44571f2b239e | 3 | #include "LM75B.h" |
kingkingyyk | 11:44571f2b239e | 4 | #include "XBeeLib.h" |
hbujanda | 5:1b2d489605b1 | 5 | |
hbujanda | 5:1b2d489605b1 | 6 | #if defined(ENABLE_LOGGING) |
hbujanda | 5:1b2d489605b1 | 7 | #include "DigiLoggerMbedSerial.h" |
hbujanda | 5:1b2d489605b1 | 8 | using namespace DigiLog; |
hbujanda | 5:1b2d489605b1 | 9 | #endif |
hbujanda | 5:1b2d489605b1 | 10 | |
kingkingyyk | 11:44571f2b239e | 11 | #define REMOTE_NODE_ADDR16 ((uint16_t)0x0) |
hbujanda | 5:1b2d489605b1 | 12 | |
hbujanda | 5:1b2d489605b1 | 13 | using namespace XBeeLib; |
hbujanda | 5:1b2d489605b1 | 14 | |
kingkingyyk | 11:44571f2b239e | 15 | const int NODE_MODE=0; //0 = send reading, 1 = receive command |
kingkingyyk | 11:44571f2b239e | 16 | LM75B tempSensor(p28,p27); |
kingkingyyk | 11:44571f2b239e | 17 | C12832_LCD lcd; |
kingkingyyk | 11:44571f2b239e | 18 | AnalogIn current(p17); |
kingkingyyk | 11:44571f2b239e | 19 | DigitalOut leds [] ={(LED1),(LED2)}; |
kingkingyyk | 11:44571f2b239e | 20 | XBee802 xbee = XBee802(RADIO_TX, RADIO_RX, RADIO_RESET, NC, NC, 9600); |
kingkingyyk | 11:44571f2b239e | 21 | const RemoteXBee802 remoteDevice16b = RemoteXBee802(REMOTE_NODE_ADDR16); |
kingkingyyk | 11:44571f2b239e | 22 | char send_data [98]; |
hbujanda | 5:1b2d489605b1 | 23 | |
kingkingyyk | 11:44571f2b239e | 24 | void clear_send_data() { |
kingkingyyk | 11:44571f2b239e | 25 | for (int i=0;i<98;i++) send_data[i]=0; |
kingkingyyk | 11:44571f2b239e | 26 | } |
hbujanda | 5:1b2d489605b1 | 27 | |
kingkingyyk | 11:44571f2b239e | 28 | int calculate_send_data_size() { |
kingkingyyk | 11:44571f2b239e | 29 | for (int i=0;i<98;i++) if (send_data[i]==0) return i; |
kingkingyyk | 11:44571f2b239e | 30 | return 98; |
kingkingyyk | 11:44571f2b239e | 31 | } |
hbujanda | 5:1b2d489605b1 | 32 | |
kingkingyyk | 11:44571f2b239e | 33 | void sendTemp(const char* format, XBee802& xbee, const RemoteXBee802& remoteDevice) { |
kingkingyyk | 11:44571f2b239e | 34 | leds[0]=1; |
kingkingyyk | 11:44571f2b239e | 35 | snprintf(send_data,98,format,(tempSensor.temp()+55)/(175)); |
kingkingyyk | 11:44571f2b239e | 36 | |
kingkingyyk | 11:44571f2b239e | 37 | xbee.send_data(remoteDevice,(const uint8_t *)send_data,calculate_send_data_size()); |
kingkingyyk | 11:44571f2b239e | 38 | clear_send_data(); |
kingkingyyk | 11:44571f2b239e | 39 | leds[0]=0; |
hbujanda | 5:1b2d489605b1 | 40 | } |
hbujanda | 5:1b2d489605b1 | 41 | |
kingkingyyk | 11:44571f2b239e | 42 | void sendCurrent(const char* format, XBee802& xbee, const RemoteXBee802& remoteDevice) { |
kingkingyyk | 11:44571f2b239e | 43 | leds[1]=1; |
kingkingyyk | 11:44571f2b239e | 44 | float max=0.0; |
kingkingyyk | 11:44571f2b239e | 45 | time_t start=time(NULL); |
kingkingyyk | 11:44571f2b239e | 46 | while (time(NULL)-start<2) { |
kingkingyyk | 11:44571f2b239e | 47 | float value=1.0-current; |
kingkingyyk | 11:44571f2b239e | 48 | if (value>0 && value>max) max=value; |
kingkingyyk | 11:44571f2b239e | 49 | } |
kingkingyyk | 11:44571f2b239e | 50 | |
kingkingyyk | 11:44571f2b239e | 51 | lcd.cls(); |
kingkingyyk | 11:44571f2b239e | 52 | lcd.locate(0,0); |
kingkingyyk | 11:44571f2b239e | 53 | lcd.printf("Waterflow : %f L/min",max*19.8); |
kingkingyyk | 11:44571f2b239e | 54 | snprintf(send_data,98,format,max); |
kingkingyyk | 11:44571f2b239e | 55 | |
kingkingyyk | 11:44571f2b239e | 56 | xbee.send_data(remoteDevice,(const uint8_t *)send_data,calculate_send_data_size()); |
kingkingyyk | 11:44571f2b239e | 57 | clear_send_data(); |
kingkingyyk | 11:44571f2b239e | 58 | leds[1]=0; |
hbujanda | 5:1b2d489605b1 | 59 | } |
hbujanda | 5:1b2d489605b1 | 60 | |
kingkingyyk | 11:44571f2b239e | 61 | const char tempFormat []="0;Toilet_Monitor;ToiletTemperature;%f"; |
kingkingyyk | 11:44571f2b239e | 62 | const char currentFormat []="0;Toilet_Monitor;ToiletWaterflow;%f"; |
kingkingyyk | 11:44571f2b239e | 63 | |
kingkingyyk | 11:44571f2b239e | 64 | void sendReadings () { |
kingkingyyk | 11:44571f2b239e | 65 | while (1) { |
kingkingyyk | 11:44571f2b239e | 66 | sendTemp(tempFormat,xbee,remoteDevice16b); |
kingkingyyk | 11:44571f2b239e | 67 | wait(0.1); |
kingkingyyk | 11:44571f2b239e | 68 | sendCurrent(currentFormat,xbee,remoteDevice16b); |
kingkingyyk | 11:44571f2b239e | 69 | wait(58.0); |
kingkingyyk | 11:44571f2b239e | 70 | } |
kingkingyyk | 11:44571f2b239e | 71 | } |
hbujanda | 5:1b2d489605b1 | 72 | int main() |
hbujanda | 5:1b2d489605b1 | 73 | { |
kingkingyyk | 11:44571f2b239e | 74 | set_time(0); |
kingkingyyk | 11:44571f2b239e | 75 | mbed_interface_disconnect(); //Disable debugging to improve ADC precision. | Comment this if you need debugging via serial. |
kingkingyyk | 11:44571f2b239e | 76 | |
hbujanda | 5:1b2d489605b1 | 77 | RadioStatus radioStatus = xbee.init(); |
hbujanda | 5:1b2d489605b1 | 78 | MBED_ASSERT(radioStatus == Success); |
kingkingyyk | 11:44571f2b239e | 79 | |
kingkingyyk | 11:44571f2b239e | 80 | if (NODE_MODE==0) { |
kingkingyyk | 11:44571f2b239e | 81 | sendReadings(); |
kingkingyyk | 11:44571f2b239e | 82 | } else {} |
kingkingyyk | 11:44571f2b239e | 83 | } |