Gateway code for sensor network version 4

Dependencies:   C12832_lcd HTTPClient WiflyInterface mbed

Files at this revision

API Documentation at this revision

Comitter:
mreda
Date:
Mon Jul 16 08:09:57 2018 +0000
Commit message:
Fsktm UM Malaysia

Changed in this revision

C12832_lcd.lib Show annotated file Show diff for this revision Revisions of this file
HTTPClient.lib Show annotated file Show diff for this revision Revisions of this file
WiflyInterface.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/C12832_lcd.lib	Mon Jul 16 08:09:57 2018 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/dreschpe/code/C12832_lcd/#8f86576007d6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HTTPClient.lib	Mon Jul 16 08:09:57 2018 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/donatien/code/HTTPClient/#277279a1891e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WiflyInterface.lib	Mon Jul 16 08:09:57 2018 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/WiflyInterface/#c77799a03294
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Jul 16 08:09:57 2018 +0000
@@ -0,0 +1,235 @@
+//Code to recieve serial comms on 
+//mbed appBoard with xbees
+#include "mbed.h"
+#include "C12832_lcd.h" // Include for LCD code
+#include "stdlib.h" 
+#include"string"
+#include"stdio.h"
+#include "WiflyInterface.h"
+#include "HTTPClient.h"
+
+
+//          watchdog
+class Watchdog {
+public:
+// Load timeout value in watchdog timer and enable
+    void kick(float s) {
+        LPC_WDT->WDCLKSEL = 0x1;                // Set CLK src to PCLK
+        uint32_t clk = SystemCoreClock / 16;    // WD has a fixed /4 prescaler, PCLK default is /4
+        LPC_WDT->WDTC = s * (float)clk;
+        LPC_WDT->WDMOD = 0x3;                   // Enabled and Reset
+        kick();
+    }
+// "kick" or "feed" the dog - reset the watchdog timer
+// by writing this required bit pattern
+    void kick() {
+        LPC_WDT->WDFEED = 0xAA;
+        LPC_WDT->WDFEED = 0x55;
+    }
+};
+ 
+// Setup the watchdog timer
+Watchdog wdt;
+
+
+//  Variable
+//      In lab version
+//WiflyInterface wifly(p9, p10, p30, p29, "stroustrup", "stroustrupfsktm", WPA);
+WiflyInterface wifly(p9, p10, p30, p29, "FSKTM-Training", "Training2018", WPA);
+HTTPClient http;
+char str[5];
+int iPrint;
+C12832_LCD lcd;
+Serial xbee(p13, p14);
+DigitalOut rst1(p15);
+DigitalOut myled(LED1); 
+
+Ticker myTicker;
+int loadingStatus = 0;
+
+void loadingcharLcd(void)
+{
+    lcd.locate(120,20);
+    if(loadingStatus == 0)
+        lcd.printf("-");
+    else if(loadingStatus == 1)
+        lcd.printf("\\");
+    else if(loadingStatus == 2)
+        lcd.printf("|");
+    else if(loadingStatus == 3)
+    {
+        lcd.printf("/");
+        loadingStatus = -1;
+    }
+    loadingStatus++;
+    
+        
+}
+
+//  Function
+void SendDataToThingSpeak (int iValue);
+void InitiateWifi(void);
+void InitiateXbee(void);
+void ReadXbee ();
+//  int main 
+int main() 
+{
+    wdt.kick(50.0); 
+    while(1) 
+    {
+// call read xbee
+        
+
+        ReadXbee(); 
+        lcd.cls();  
+        lcd.locate(0,1);        
+        lcd.printf("The distance is : %d   \n",iPrint);
+        wait(1);
+        lcd.cls();  
+        lcd.locate(0,1);        
+        lcd.printf("Wifi-connection verification... \n");
+        
+        myTicker.attach(&loadingcharLcd, 0.25);
+        
+        InitiateWifi();
+        
+        myTicker.detach();
+        lcd.cls();
+        lcd.locate(0,1);
+        lcd.printf("Wifi-connection verification\nDone!");
+        wait_ms(400);
+        
+        SendDataToThingSpeak(iPrint);
+        wifly.disconnect();
+//        wifly.disconnect();
+//        InitiateXbee();
+//        wait (2);
+    } //while(1)
+}// int main()
+
+void SendDataToThingSpeak (int iValue)
+{
+    int iCounter=-1;
+    char reverseData[4];
+    int toSend;
+    toSend=iValue;
+    char tempStr[] = "https://api.thingspeak.com/update?api_key=PQXV093BQK2UNXIV&field2=    ";
+    
+ 
+    do
+    {
+        iCounter++;
+        reverseData[iCounter]=toSend%10;
+        reverseData[iCounter]+=48;
+        toSend/=10;
+    }while(toSend!=0);
+    
+   
+
+    
+    for(int i= 0; i < iCounter+1; i++)
+    {
+        tempStr[66+i]= reverseData[iCounter-i];  
+    }
+  //  tempStr[67+iCounter]='/';
+    printf("iC %d RD %s \n", iCounter, reverseData);
+    
+    lcd.cls();  
+    lcd.locate(0,1);
+    lcd.printf("iC %d RD %s \n", iCounter, reverseData);       
+    
+    HTTPMap map;
+    HTTPText text(str, 1);
+    map.put("", "");
+//    tempStr[66]=55;
+    char tempStr1[] = "https://api.thingspeak.com/";
+    printf("Trying to post data to the Cloud...%s \n", tempStr1);
+    
+    lcd.cls();  
+    lcd.locate(0,1);    
+    lcd.printf("Uploading To Cloud\nTHINGSPEAK");
+    
+    myTicker.attach(&loadingcharLcd, 0.25);
+
+    http.post(tempStr, map, &text,1);
+    
+    myTicker.detach();
+  
+}// void SendDataToThingSpeak
+
+void InitiateWifi(void)
+{
+    
+    wifly.init(); //Use DHCP
+    wifly.connect(); 
+//    wait (2);
+}// wifi
+
+void InitiateXbee(void)
+{
+    rst1 = 0;
+    wait_ms(10); 
+    rst1 = 1;
+    wait_ms(10);
+    
+} // xbee
+
+void ReadXbee (void)
+{
+    printf("Waiting For The Sensor Node To Send Sensor Data To The Gateway \n");
+    
+    lcd.cls();  
+    lcd.locate(0,1);    
+    lcd.printf("Receiving Data From Sensor Node...\n");
+    
+     myTicker.attach(&loadingcharLcd, 0.25);
+    
+
+    
+    InitiateXbee();
+    int toPrint=0;
+    for(int j=0;j<18;j++)
+        toPrint=xbee.getc(); 
+
+   iPrint=0;
+
+   do
+    {
+        toPrint=xbee.getc();
+        //printf("toPrint %c \n", toPrint);
+    }while(toPrint!='$');
+    while (!(xbee.readable()));
+    toPrint=xbee.getc();
+    //printf("toPrint %c \n", toPrint);
+    iPrint=0;
+    if(toPrint=='$')
+    {
+        do{
+            toPrint=xbee.getc();
+        }while(toPrint=='$');    
+    }
+  
+    while (!(toPrint=='$'))
+    {
+        iPrint=(toPrint-48)+iPrint*10;
+        //printf("iPrint %d \n", iPrint);
+        while (!(xbee.readable()));
+        toPrint=xbee.getc();
+        printf("toPr %d , iPr %d \n", toPrint, iPrint);
+        if ((LPC_WDT->WDMOD >> 2) & 1)
+            printf("WatchDog :: Status On");    
+
+           
+    }   
+    printf("The Sensor Data Has Been Received \n");
+    
+    lcd.cls();
+    lcd.locate(0,1);    
+    lcd.printf("he Sensor Data Has Been Received \n");
+    
+    wdt.kick();
+    
+
+    myTicker.detach();
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Jul 16 08:09:57 2018 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/mbed_official/code/mbed/builds/64910690c574
\ No newline at end of file