This is the Control Logic for the Electronic control units built in FRDM K64F platform to upload sensor data to a business cloud in real-time, which is being developed for enhancing the the existing state of art Energy Audits in Industrial Assessment Center(IUPUI)

Dependencies:   SDFileSystem mbed

Fork of SDFileSystem_HelloWorld by mbed official

Files at this revision

API Documentation at this revision

Comitter:
AbhiBjee
Date:
Thu Mar 08 22:40:58 2018 +0000
Parent:
1:e4d7342be507
Commit message:
This is a code to update Scaled sensor reads based on port configurations, from FRDM K64F based hardware to a business cloud platform, in real-time,which is being developed to enhance energy audits in Industrial Assessment Center (IUPUI).

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r e4d7342be507 -r 08a2e20c624a main.cpp
--- a/main.cpp	Tue May 16 05:18:55 2017 +0000
+++ b/main.cpp	Thu Mar 08 22:40:58 2018 +0000
@@ -1,19 +1,292 @@
 #include "mbed.h"
-#include "SDFileSystem.h"
- 
-SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board
- 
-int main() {
-    printf("Hello World!\n");   
- 
-    mkdir("/sd/mydir", 0777);
+#include <math.h>
+#include <string.h>
+#include "SDFileSystem.h" 
+#include <iostream>
+using namespace std;
+
+SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
+
+Serial pc(USBTX, USBRX);            // And a little feedback
+
+Timer t;
+Timer ReadClock;
+
+int  bufcnt,lineCnt,prtCnt,ended,timeout,Multiplier,Port_SensorID[11];
+float Port_Multiplier[11];
+char buf[1024];
+char snd[1024];
+char text[1024];
+//char SensorType[100];
+char Port_Description[11][100];
+char Board_specs[10][50];// Board_specs[1]= Board-id, Board_specs[2]=WIFI ssid, Board_specs[3]=Wifi-Password,Board_specs[4]=Database TableName. 
+int brdspCnt=0;
+void SDcrdRead();
+char readConfigText();
+float UnitConversion(int Sens_ID);
+char *SensorName(int Sens_ID);
+ FILE * fp;
+
+AnalogIn Port_1(PTB2);// Current Sensor -> Output 0-2.5V dc Measures 0-600Amps
+AnalogIn Port_2(PTB3);// Pressure Sensor -> Output 0-5V dc Measures 0-200Psig
+AnalogIn Port_3(PTB10);// Temperature Sensor -> Output 0-5V dc Measures 0-50 degree Celcius
+AnalogIn Port_4(PTB11);// CO2 Sensor -> Output 0-10V dc Measures 0-2000ppm
+AnalogIn Port_5(PTC11);// CO2 Sensor -> Output 0-10V dc Measures 0-2000ppm
+AnalogIn Port_6(PTC10);// CO2 Sensor -> Output 0-10V dc Measures 0-2000ppm
+AnalogIn Port_7(PTC2);// CO2 Sensor -> Output 0-10V dc Measures 0-2000ppm
+AnalogIn Port_8(PTC0);// CO2 Sensor -> Output 0-10V dc Measures 0-2000ppm
+AnalogIn Port_9(PTC9);// CO2 Sensor -> Output 0-10V dc Measures 0-2000ppm
+AnalogIn Port_10(PTC8);// CO2 Sensor -> Output 0-10V dc Measures 0-2000ppm
+float Port_1val,Port_2val,Port_3val,Port_4val,Port_5val,Port_6val,Port_7val,Port_8val,Port_9val,Port_10val;
+//float PressureVal,TempVal,CurrentVal,CO2Val;
+float AvgPort_1Val,AvgPort_2Val,AvgPort_3Val,AvgPort_4Val,AvgPort_5Val,AvgPort_6Val,AvgPort_7Val,AvgPort_8Val,AvgPort_9Val,AvgPort_10Val;
+float Port_1ValSum,Port_2ValSum,Port_3ValSum,Port_4ValSum,Port_5ValSum,Port_6ValSum,Port_7ValSum,Port_8ValSum,Port_9ValSum,Port_10ValSum;
+int  Count,ClockOut;
+
+
+//DigitalIn OA2(D2);
+void SDcrdRead(void){
+    //FILE * fp;
+    
+    printf("\r\nReading from SD card...\r\n\n\n");
+    fp = fopen("/sd/IAC_Config_File.txt", "rb");
+    if (fp != NULL) {        
+        readConfigText();        
+        fclose(fp);
+        printf(" \r\n\r\n\r\nRead Successfully!\r\n\r\n\r\n");
+        printf(" \r\n\r\n\r\n ---- Config File ---- \r\n\r\n\r\n");
+        printf("%s\n", text);
+        printf(" \r\n\r\n\r\n ---- End of Config File ---- \r\n\r\n\r\n");
+    } 
+    else {
+        printf("\nReading Failed!\r\n");
+    }
+
+}
+
+
+char readConfigText()
+{
+    memset(buf, '\0', sizeof(buf));
+    t.start();
+    ended=0;
+    bufcnt=0;
+    lineCnt=0;
+    prtCnt =0;    
+    while(true) {        
+        char C = fgetc(fp);
+        //if(t.read() <= timeout) {
+        buf[bufcnt] = C; 
+        bufcnt++;           
+        //printf(buf);
+        if(feof(fp)){
+            break;        
+        }            
+        if(C == '\n'){
+            //buf[bufcnt] = '\0';
+            lineCnt++;                 
+            strcpy(snd,buf);
+            strcat(text,snd);
+            if(buf[0]=='B'){                
+                const char s[2] = ":";
+                char *token;
+               
+                /* get the first token */
+                token = strtok(buf, s);
+                /* get the other tokens there*/
+                while( token != NULL ) {
+                      brdspCnt++;
+                      strcpy(Board_specs[brdspCnt],token);
+                      printf( " Boardspec[%d] = %s\r\n\n",brdspCnt, Board_specs[brdspCnt] );
+                    
+                      token = strtok(NULL, s);
+                }
+               
+                
+                
+            }
+            else if(buf[0]=='P'){
+                prtCnt++;                
+                if (prtCnt<10){                    
+                    Port_SensorID[prtCnt]=int(buf[9]-'0');
+                    Port_Multiplier[prtCnt]= UnitConversion(Port_SensorID[prtCnt]);
+                    char *senStr = SensorName(Port_SensorID[prtCnt]);
+                    strcpy(Port_Description[prtCnt],senStr);                   
+                    
+                    printf("%d  %0.2f    %s\r\n",Port_SensorID[prtCnt],Port_Multiplier[prtCnt],Port_Description[prtCnt]);
+                }
+                else{
+                    Port_SensorID[prtCnt]=int(buf[10]-'0');
+                    Port_Multiplier[prtCnt]= UnitConversion(Port_SensorID[prtCnt]);
+                    char *senStr = SensorName(Port_SensorID[prtCnt]);
+                    strcpy(Port_Description[prtCnt],senStr);
+                    
+                    printf("%d  %0.2f    %s\r\n",Port_SensorID[prtCnt],Port_Multiplier[prtCnt],Port_Description[prtCnt]);
+                }
+                    
+            }
+            //printf(text); 
+            memset(buf, '\0', sizeof(buf));
+            bufcnt = 0;
+        }        
+        
+    }
     
-    FILE *fp = fopen("/sd/mydir/sdtest.txt", "w");
-    if(fp == NULL) {
-        error("Could not open file for write\n");
+    printf("\r\n End of text file \r\n");
+    printf("\r\nLine Count %d\r\n",lineCnt);
+}
+
+float UnitConversion(int Sens_ID){
+    switch (Sens_ID){
+        case 0 :
+            Multiplier = 0.0;
+            break;
+        case 1 :
+            Multiplier = 2000.0;
+            break;
+        case 2 :
+            Multiplier = 133.33;
+            break;
+        case 3 :
+            Multiplier = 800.00;
+            break;
+        case 4 :
+            Multiplier = 50.0;
+            break;
+        case 5 :
+            Multiplier = 50.0;
+            break;
+        case 6 :
+            Multiplier = 200.0;
+            break;
+        case 7 :
+            Multiplier = 100.0;
+            break;
+        case 8 :
+            Multiplier = 100;
+            break;       
+        }
+    return Multiplier;
+}
+
+char *SensorName(int Sens_ID){
+    
+    static char *strng ;
+    //memset(strng, '\0', sizeof(strng));
+    
+    switch (Sens_ID){
+        case 0 :
+            strng = "Null";
+            break;
+        case 1 :
+            strng = "Carbondioxide - Parts per million";
+            break;
+        case 2 :
+            strng = "Current 0-100 Ampere";
+            break;
+        case 3 :
+            strng = "Current 0-600 Ampere";
+            break;
+        case 4 :
+            strng = "Temperature 0-50 Degree Celsius";
+            break;
+        case 5 :
+            strng = "Temperature 0-50 Degree Celsius";
+            break;
+        case 6 :
+            strng = "Pressure (PSIG)";
+            break;
+        case 7 :
+            strng = "Humidity - Percentage";
+            break;
+        case 8 :
+            strng = "Compressed Airflow - Percentage";
+            break;       
+        }
+    return strng;
+}
+
+int main(){
+    SDcrdRead();    
+    while(true){
+        ClockOut = 5;
+        ended=0;
+        Count=0;
+        Port_1ValSum = 0.0;
+        Port_2ValSum = 0.0;
+        Port_3ValSum = 0.0;
+        Port_4ValSum = 0.0;
+        Port_5ValSum = 0.0;
+        Port_6ValSum = 0.0;
+        Port_7ValSum = 0.0;
+        Port_8ValSum = 0.0;
+        Port_9ValSum = 0.0;
+        Port_10ValSum = 0.0;
+        
+        while (ended!=1) {          
+          ReadClock.start();
+          Port_1val = Port_1.read()*Port_Multiplier[1];
+          Port_2val = Port_2.read()*Port_Multiplier[2];
+          Port_3val = Port_3.read()*Port_Multiplier[3];
+          Port_4val = Port_4.read()*Port_Multiplier[4];
+          Port_5val = Port_5.read()*Port_Multiplier[5];
+          Port_6val = Port_6.read()*Port_Multiplier[6];
+          Port_7val = Port_7.read()*Port_Multiplier[7];
+          Port_8val = Port_8.read()*Port_Multiplier[8];
+          Port_9val = Port_9.read()*Port_Multiplier[9];
+          Port_10val = Port_10.read()*Port_Multiplier[10];        
+          
+          Port_1ValSum += Port_1val;
+          Port_2ValSum += Port_2val;
+          Port_3ValSum += Port_3val;
+          Port_4ValSum += Port_4val;
+          Port_5ValSum += Port_5val;
+          Port_6ValSum += Port_6val;
+          Port_7ValSum += Port_7val;
+          Port_8ValSum += Port_8val;
+          Port_9ValSum += Port_9val;
+          Port_10ValSum += Port_10val;          
+          Count++;       
+          //printf(" %f %f %f %f \r\n", CurrentVal, PressureVal, TempVal, CO2Val); 
+          printf(" %f %f %f %f %f %f %f %f %f %f\r\n", Port_1val, Port_2val, Port_3val, Port_4val,Port_5val, Port_6val, Port_7val, Port_8val,Port_9val, Port_10val);      
+          wait(0.002f);
+          if(ReadClock.read() > ClockOut) {
+                ended = 1;
+                ReadClock.stop();
+                ReadClock.reset();
+          }
+          
+        }
+        AvgPort_1Val=Port_1ValSum/Count;
+        //AvgPort_1Val =ceilf(AvgPort_1Val * 10) / 10;
+        AvgPort_2Val=Port_2ValSum/Count;
+        //AvgPort_2Val =ceilf(AvgPort_2Val * 10) / 10;
+        AvgPort_3Val=Port_3ValSum/Count;
+        //AvgPort_3Val =ceilf(AvgPort_3Val * 10) / 10;
+        AvgPort_4Val=Port_4ValSum/Count;
+        //AvgPort_4Val =ceilf(AvgPort_4Val * 10) / 10;
+        AvgPort_5Val=Port_5ValSum/Count;
+        //AvgPort_5Val =ceilf(AvgPort_5Val * 10) / 10;
+        AvgPort_6Val=Port_6ValSum/Count;
+        //AvgPort_6Val =ceilf(AvgPort_6Val * 10) / 10;
+        AvgPort_7Val=Port_7ValSum/Count;
+        //AvgPort_7Val =ceilf(AvgPort_7Val * 10) / 10;
+        AvgPort_8Val=Port_8ValSum/Count;
+        //AvgPort_8Val =ceilf(AvgPort_8Val * 10) / 10;
+        AvgPort_9Val=Port_9ValSum/Count;
+        //AvgPort_9Val =ceilf(AvgPort_9Val * 10) / 10;
+        AvgPort_10Val=Port_10ValSum/Count;
+        //AvgPort_10Val =ceilf(AvgPort_10Val * 10) / 10;      
+        
+        printf("%f %f %f %f %f %f %f %f %f %f %d \r\n", AvgPort_1Val,AvgPort_2Val,AvgPort_3Val,AvgPort_4Val,AvgPort_5Val,AvgPort_6Val,AvgPort_7Val,AvgPort_8Val,AvgPort_9Val,AvgPort_10Val,Count); 
+        wait(2); 
+        
     }
-    fprintf(fp, "Hello fun SD Card World!");
-    fclose(fp); 
+        
+        
+    
+    
  
-    printf("Goodbye World!\n");
-}
+
+    
+}
\ No newline at end of file