first commit

Dependencies:   C12832_lcd DigiLogger LM75B XBeeLib2 mbed

Fork of XBee802_Send_Data by Digi International Inc.

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?

UserRevisionLine numberNew 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 }