zzz

Dependencies:   C12832_lcd ConfigFile LM75B WiflyInterface2 mbed-rtos mbed

Fork of Xbee_Hello_World_B by Tristan Hughes

Committer:
kingkingyyk
Date:
Fri Dec 16 02:56:13 2016 +0000
Revision:
3:623e2b67ebaa
Parent:
2:ae1a5862504b
First commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tristanjph 0:122702c9168a 1 #include "mbed.h"
kingkingyyk 1:15d917484a8d 2 #include "C12832_lcd.h"
kingkingyyk 3:623e2b67ebaa 3 #include "LM75B.h"
kingkingyyk 1:15d917484a8d 4 #include <string>
kingkingyyk 3:623e2b67ebaa 5 #include "WiflyInterface.h"
kingkingyyk 3:623e2b67ebaa 6 #include "rtos.h"
kingkingyyk 3:623e2b67ebaa 7 #include "LM75B.h"
kingkingyyk 3:623e2b67ebaa 8
kingkingyyk 3:623e2b67ebaa 9 class Watchdog {
kingkingyyk 3:623e2b67ebaa 10 public:
kingkingyyk 3:623e2b67ebaa 11 // Load timeout value in watchdog timer and enable
kingkingyyk 3:623e2b67ebaa 12 void kick(float s) {
kingkingyyk 3:623e2b67ebaa 13 LPC_WDT->WDCLKSEL = 0x1; // Set CLK src to PCLK
kingkingyyk 3:623e2b67ebaa 14 uint32_t clk = SystemCoreClock / 16; // WD has a fixed /4 prescaler, PCLK default is /4
kingkingyyk 3:623e2b67ebaa 15 LPC_WDT->WDTC = s * (float)clk;
kingkingyyk 3:623e2b67ebaa 16 LPC_WDT->WDMOD = 0x3; // Enabled and Reset
kingkingyyk 3:623e2b67ebaa 17 kick();
kingkingyyk 3:623e2b67ebaa 18 }
kingkingyyk 3:623e2b67ebaa 19 // "kick" or "feed" the dog - reset the watchdog timer
kingkingyyk 3:623e2b67ebaa 20 // by writing this required bit pattern
kingkingyyk 3:623e2b67ebaa 21 void kick() {
kingkingyyk 3:623e2b67ebaa 22 LPC_WDT->WDFEED = 0xAA;
kingkingyyk 3:623e2b67ebaa 23 LPC_WDT->WDFEED = 0x55;
kingkingyyk 3:623e2b67ebaa 24 }
kingkingyyk 3:623e2b67ebaa 25 };
kingkingyyk 3:623e2b67ebaa 26
kingkingyyk 3:623e2b67ebaa 27 // Setup the watchdog timer
kingkingyyk 3:623e2b67ebaa 28 Watchdog wdt;
tristanjph 0:122702c9168a 29
kingkingyyk 3:623e2b67ebaa 30 WiflyInterface wifly(p9, p10, p30, p29, "SSID", "PASSWORD", WPA);
kingkingyyk 3:623e2b67ebaa 31 AnalogIn ain(p17);
kingkingyyk 1:15d917484a8d 32 C12832_LCD lcd;
kingkingyyk 3:623e2b67ebaa 33 DigitalOut led [] ={(LED1),(LED2),(LED3),(LED4)};
kingkingyyk 3:623e2b67ebaa 34 LM75B tempSensor(p28,p27);
kingkingyyk 3:623e2b67ebaa 35 const char *server_ip="192.168.10.2";
kingkingyyk 3:623e2b67ebaa 36 const int server_port=40000;
kingkingyyk 3:623e2b67ebaa 37 char status_data[100];
kingkingyyk 3:623e2b67ebaa 38
kingkingyyk 3:623e2b67ebaa 39 const char* tempFormat="0;TechRoomB_Monitor;BlockB_Temperature;%f";
kingkingyyk 3:623e2b67ebaa 40 void sendTempReading () {
kingkingyyk 3:623e2b67ebaa 41 led[2]=1;
kingkingyyk 3:623e2b67ebaa 42 TCPSocketConnection conn;
kingkingyyk 3:623e2b67ebaa 43
kingkingyyk 3:623e2b67ebaa 44 for (int i=0;i<100;i++) status_data[i]=0;
kingkingyyk 3:623e2b67ebaa 45 snprintf(status_data,100,tempFormat,(((float)tempSensor)+55)/175);
kingkingyyk 1:15d917484a8d 46
kingkingyyk 3:623e2b67ebaa 47 led[3]=1;
kingkingyyk 3:623e2b67ebaa 48 if (conn.connect(server_ip,server_port)==0 && conn.send_all(status_data,100)>=0); wdt.kick();
kingkingyyk 3:623e2b67ebaa 49 led[3]=0;
kingkingyyk 3:623e2b67ebaa 50
kingkingyyk 3:623e2b67ebaa 51 wait(0.1);
kingkingyyk 3:623e2b67ebaa 52 conn.close();
kingkingyyk 3:623e2b67ebaa 53 led[2]=0;
kingkingyyk 3:623e2b67ebaa 54 }
kingkingyyk 3:623e2b67ebaa 55
kingkingyyk 3:623e2b67ebaa 56 const char* currentFormat="0;TechRoomB_Monitor;BlockB_AirCondCurrent;%f";
kingkingyyk 3:623e2b67ebaa 57 void sendCurrentReading () {
kingkingyyk 3:623e2b67ebaa 58 led[0]=1;
kingkingyyk 3:623e2b67ebaa 59 TCPSocketConnection conn;
kingkingyyk 3:623e2b67ebaa 60
kingkingyyk 3:623e2b67ebaa 61 float max=0.0;
kingkingyyk 3:623e2b67ebaa 62 time_t start=time(NULL);
kingkingyyk 3:623e2b67ebaa 63 while (time(NULL)-start<2) {
kingkingyyk 3:623e2b67ebaa 64 if (ain>0 && ain<0.3 && ain>max) max=ain;
kingkingyyk 3:623e2b67ebaa 65 }
kingkingyyk 3:623e2b67ebaa 66
kingkingyyk 1:15d917484a8d 67 lcd.cls();
kingkingyyk 1:15d917484a8d 68 lcd.locate(0,0);
kingkingyyk 3:623e2b67ebaa 69 lcd.printf("Current : %f",max);
kingkingyyk 3:623e2b67ebaa 70
kingkingyyk 3:623e2b67ebaa 71 for (int i=0;i<100;i++) status_data[i]=0;
kingkingyyk 3:623e2b67ebaa 72 snprintf(status_data,100,currentFormat,max*3);
kingkingyyk 3:623e2b67ebaa 73
kingkingyyk 3:623e2b67ebaa 74 led[1]=1;
kingkingyyk 3:623e2b67ebaa 75 if (conn.connect(server_ip,server_port)==0 && conn.send_all(status_data,100)>=0); wdt.kick();
kingkingyyk 3:623e2b67ebaa 76 led[1]=0;
kingkingyyk 1:15d917484a8d 77
kingkingyyk 3:623e2b67ebaa 78 wait(0.1);
kingkingyyk 3:623e2b67ebaa 79 conn.close();
kingkingyyk 3:623e2b67ebaa 80 led[0]=0;
kingkingyyk 3:623e2b67ebaa 81 }
kingkingyyk 3:623e2b67ebaa 82
kingkingyyk 3:623e2b67ebaa 83 void sendReading() {
kingkingyyk 3:623e2b67ebaa 84 sendCurrentReading();
kingkingyyk 3:623e2b67ebaa 85 wait(3.0);
kingkingyyk 3:623e2b67ebaa 86 sendTempReading();
kingkingyyk 3:623e2b67ebaa 87 }
kingkingyyk 3:623e2b67ebaa 88
kingkingyyk 3:623e2b67ebaa 89 void setupWifly() {
kingkingyyk 3:623e2b67ebaa 90 lcd.cls();
kingkingyyk 3:623e2b67ebaa 91 lcd.locate(0,0);
kingkingyyk 3:623e2b67ebaa 92 lcd.printf("Start WiFi Setup\n");
kingkingyyk 3:623e2b67ebaa 93
kingkingyyk 3:623e2b67ebaa 94 wifly.init();
kingkingyyk 3:623e2b67ebaa 95 }
kingkingyyk 3:623e2b67ebaa 96
kingkingyyk 3:623e2b67ebaa 97 void checkWiflyConnection() {
kingkingyyk 3:623e2b67ebaa 98 if (!wifly.is_associated()) {
kingkingyyk 3:623e2b67ebaa 99 lcd.cls();
kingkingyyk 3:623e2b67ebaa 100 lcd.locate(0,0);
kingkingyyk 3:623e2b67ebaa 101 lcd.printf("Reconnecting...");
kingkingyyk 3:623e2b67ebaa 102 while (!wifly.connect());
kingkingyyk 3:623e2b67ebaa 103 lcd.cls();
kingkingyyk 3:623e2b67ebaa 104 lcd.locate(0,0);
kingkingyyk 3:623e2b67ebaa 105 lcd.printf("IP Address : %s\n", wifly.getIPAddress());
kingkingyyk 1:15d917484a8d 106 }
kingkingyyk 1:15d917484a8d 107 }
kingkingyyk 1:15d917484a8d 108
kingkingyyk 3:623e2b67ebaa 109 void getCommand() {
kingkingyyk 3:623e2b67ebaa 110 checkWiflyConnection();
kingkingyyk 3:623e2b67ebaa 111 wdt.kick(120.0);
kingkingyyk 3:623e2b67ebaa 112 while (1) {
kingkingyyk 3:623e2b67ebaa 113 sendReading();
kingkingyyk 3:623e2b67ebaa 114 wait(60.0);
kingkingyyk 3:623e2b67ebaa 115 }
kingkingyyk 1:15d917484a8d 116 }
tristanjph 0:122702c9168a 117
kingkingyyk 1:15d917484a8d 118 int main() {
kingkingyyk 3:623e2b67ebaa 119 set_time(0);
kingkingyyk 3:623e2b67ebaa 120 mbed_interface_disconnect(); //Disable debugging to improve ADC precision. | Comment this if you need debugging via serial.
tristanjph 0:122702c9168a 121
kingkingyyk 3:623e2b67ebaa 122 setupWifly();
kingkingyyk 3:623e2b67ebaa 123
kingkingyyk 3:623e2b67ebaa 124 getCommand();
tristanjph 0:122702c9168a 125 }