attempt to fix posible power issues with the sharp

Dependencies:   ADS1115 BME280 CronoDot SDFileSystem mbed

Fork of Outdoor_UPAS_v1_2_Tboard by scott kelleher

Revision:
4:5d004fd997d5
Parent:
3:122bfc998c4c
Child:
5:c3252e5d45ca
--- a/main.cpp	Mon Feb 08 22:49:54 2016 +0000
+++ b/main.cpp	Fri Feb 26 22:40:31 2016 +0000
@@ -10,8 +10,8 @@
 #include "CronoDot.h"
 #include "EEPROM.h"
 #include "Calibration.h" 
-Serial pc(USBTX, USBRX);
-Serial microChannel(D8, D2); // tx, rx
+//Serial pc(USBTX, USBRX);
+//Serial microChannel(D0, D1); // tx, rx
 Timer t;
 struct tm tt;
 
@@ -20,8 +20,10 @@
 MCP40D17            DigPot(&i2c);
 BME280              bmesensor(D14, D15);
 STC3100             gasG(D14, D15);
-DigitalOut          blower(D9, 0);
-DigitalOut          pbKill(D7, 1);
+DigitalOut          blower(D8, 0);
+DigitalOut          pbKill(PC_12, 1);
+DigitalOut          bleRTS(PB_14, 0);
+DigitalOut          bleCTS(PB_13, 0);
 LSM303              movementsensor(D14, D15);
 SI1145              lightsensor(D14, D15);
 NCP5623BMUTBG       RGB_LED(D14, D15);
@@ -36,6 +38,9 @@
 uint16_t serial_num = 1;                // Default serial/calibration number
 int RunReady =0;
 
+struct tm STtime;
+
+
 
 float press = 1.1;
 float temp = 75.5;
@@ -94,7 +99,7 @@
 
 char filename[] = "/sd/XXXX0000LOG000000000000---------------.txt";
 
-SDFileSystem sd(D11, D12, D13, D10, "sd"); // I believe this matches Todd's pinout, let me know if this doesn't work. (p12, p13, p15, p14)
+SDFileSystem sd(D4, D5, D3, D10, "sd"); // I believe this matches Todd's pinout, let me know if this doesn't work. (MOSI, MISO, SCK, SEL)
 
 void sendData(); 
 
@@ -114,7 +119,7 @@
 static uint8_t dataLength = 0;
 static int runReady = 0;
 static uint8_t startAndEndTime[12] = {0,};
-
+/*
 void uartMicro(void){
     if(runReady!=1){
         haltBLE = 2;
@@ -124,7 +129,7 @@
             //Code block to verify what is being transmitted.  To function correctly, all data must terminate with \0 or \n
             if(transmissionValue==0){
                 
-                if     (rx_buf[0] == 0x01)transmissionValue = 1;      //rtc
+                if     (rx_buf[0] == 0x01)transmissionValue = 1; //rtc
                 else if(rx_buf[0] == 0x02)transmissionValue = 2; //sample start and end times
                 else if(rx_buf[0] == 0x03)transmissionValue = 3; //sample name
                 else if(rx_buf[0] == 0x04)transmissionValue = 4; //Send Data Check
@@ -221,13 +226,13 @@
 
     
 } 
-
+*/
 void check_stop()   // this checks if it's time to stop and shutdown
 {
     
     if(RTC_UPAS.compare(startAndEndTime[6], startAndEndTime[7], startAndEndTime[8], startAndEndTime[9], startAndEndTime[10], startAndEndTime[11])) {
         pbKill = 0; // this is were we shut everything down
-        pc.printf("If you're reading this something has gone very wrong.");
+        //pc.printf("If you're reading this something has gone very wrong.");
     }
     stop.detach();
     stop.attach(&check_stop, 9);
@@ -251,7 +256,7 @@
     lastsecondD = secondsD;
 
     omronVolt = (omronReading*4.096)/(32768*2);
-
+/*
     FILE *fp = fopen(filename, "a");
     fprintf(fp, "%02d,%02d,%02d,%02d,%02d,%02d,",RTC_UPAS.year, RTC_UPAS.month,RTC_UPAS.date,RTC_UPAS.hour,RTC_UPAS.minutes,RTC_UPAS.seconds);
     fprintf(fp, "%1.3f,%1.3f,%2.2f,%4.2f,%2.1f,%1.3f,", omronVolt,massflow,temp,press,rh,atmoRho);
@@ -261,17 +266,30 @@
     fprintf(fp, "%d,%d,%d,%1.3f,%1.3f\r\n", gasG.getVolts(), gasG.getCharge(),digital_pot_set, deltaMflow, deltaVflow);
     fclose(fp);
     //wait_ms(5);
-    
+    */
 }
  
 int main(){
-    
-    pc.baud(115200);  // set what you want here depending on your terminal program speed
-    pc.printf("\f\n\r-------------Startup-------------\n\r");
+    RGB_LED.set_led(1,1,1);
+    STtime.tm_sec = 10;    // 0-59
+    STtime.tm_min = 38;    // 0-59
+    STtime.tm_hour = 15;   // 0-23
+    STtime.tm_mday = 26;   // 1-31
+    STtime.tm_mon = 1;     // 0-11
+    STtime.tm_year = 116;  // year since 1900
+    time_t STseconds = mktime(&STtime);
+    set_time(STseconds); // Set RTC time to 16 December 2013 10:05:23 UTC
+    char timestr[32];
+    //wait(10);
+    RGB_LED.set_led(0,0,1);
+    //pc.baud(115200);  // set what you want here depending on your terminal program speed
+    //pc.printf("\f\n\r-------------Startup-------------\n\r");
     wait(0.5);
     //timeout=2;
+    /*
     uint8_t serialNumberAndType[6] = {0x50,0x53};
     E2PROM.read(0x00034,serialNumberAndType+2,2);
+   
     int tempSerialNum = serialNumberAndType[2]+serialNumberAndType[3];
     int serialNumDigits[4];
     serialNumDigits[0] = tempSerialNum / 1000 % 10;
@@ -300,7 +318,7 @@
     wait(0.5);
     
 
-        
+       
     
     RGB_LED.set_led(1,1,1);
     while(runReady!=1) {
@@ -333,7 +351,7 @@
     logInerval = logByte[0];
     
     stop.attach(&check_stop, 30);    // check if we should shut down every 9 seconds, starting 60s after the start.
-
+ 
     //Use the flow rate value stored in eeprom
     uint8_t flowRateBytes[4] = {0,};
     E2PROM.read(0x00010,flowRateBytes,4);
@@ -364,8 +382,12 @@
     blower = 1;
 
     uint8_t subjectLabelOriginal[8] = {0,};
-    E2PROM.read(0x00001, subjectLabelOriginal,8);        
+    E2PROM.read(0x00001, subjectLabelOriginal,8); 
     sprintf(filename, "/sd/UPAS%04dLOG_%02d-%02d-%02d_%02d=%02d=%02d_%c%c%c%c%c%c%c%c.txt",serial_num,RTC_UPAS.year,RTC_UPAS.month,RTC_UPAS.date,RTC_UPAS.hour,RTC_UPAS.minutes,RTC_UPAS.seconds,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7]);
+    */
+    time_t seconds = time(NULL);
+    strftime(timestr, 32, "%y-%m-%d-%H=%M=%S", localtime(&seconds));
+    sprintf(filename, "/sd/UPASboardtest_%s.txt", timestr);
     FILE *fp = fopen(filename, "w");
     fclose(fp);
 
@@ -387,18 +409,33 @@
 
 
     //logg.attach(&log_data, 30); // uses callbacks or block Interrupts for anything that uses i2c
-    while(!RTC_UPAS.compare(startAndEndTime[6], startAndEndTime[7], startAndEndTime[8], startAndEndTime[9], startAndEndTime[10], startAndEndTime[11])){
+   // while(!RTC_UPAS.compare(startAndEndTime[6], startAndEndTime[7], startAndEndTime[8], startAndEndTime[9], startAndEndTime[10], startAndEndTime[11])){
+      while(1){   
         wait(logInerval);
         RGB_LED.set_led(1,1,0);
-        FILE *fp = fopen(filename, "a");
-        fprintf(fp, "%02d,%02d,%02d,%02d,%02d,%02d,",RTC_UPAS.year, RTC_UPAS.month,RTC_UPAS.date,RTC_UPAS.hour,RTC_UPAS.minutes,RTC_UPAS.seconds);
-        fprintf(fp, "%1.3f,%1.3f,%2.2f,%4.2f,%2.1f,%1.3f,", omronVolt,massflow,temp,press,rh,atmoRho);
-        fprintf(fp, "%1.3f,%5.1f,%1.1f,%1.1f,%1.1f,%1.1f,", volflow, sampledVol, accel_x, accel_y, accel_z, accel_comp);
-        fprintf(fp, "%.1f,%.1f,%.1f,%.3f,%.3f,%.3f,%.1f,", angle_x,angle_y,angle_z,mag_x, mag_y, mag_z,compass);
-        fprintf(fp, "%d,%d,%d,%d,%d,%d," ,uv,omronReading, vInReading, vBlowerReading, omronDiff,gasG.getAmps());
-        fprintf(fp, "%d,%d,%d,%1.3f,%1.3f\r\n", gasG.getVolts(), gasG.getCharge(),digital_pot_set, deltaMflow, deltaVflow);
-        fclose(fp);
+        
+        
+    time_t seconds = time(NULL);
+    strftime(timestr, 32, "%y%m%d%H%M%S", localtime(&seconds));
+    press = bmesensor.getPressure();
+    temp = bmesensor.getTemperature()-5.0;
+    rh = bmesensor.getHumidity();
+    uv =  lightsensor.getUV();
+        
+    FILE *fp = fopen(filename, "a");
+    //fprintf(fp, "Time as a basic string = %s\r\n", ctime(&seconds));
+    //fprintf(fp, "Time as a basic string = %s\r\n", timestr);
+    //fprintf(fp, "%02d,%02d,%02d,%02d,%02d,%02d,",RTC_UPAS.year, RTC_UPAS.month,RTC_UPAS.date,RTC_UPAS.hour,RTC_UPAS.minutes,RTC_UPAS.seconds);
+    fprintf(fp, "%s,", timestr);
+    fprintf(fp, "%1.3f,%1.3f,%2.2f,%4.2f,%2.1f,%1.3f,", omronVolt,massflow,temp,press,rh,atmoRho);
+    fprintf(fp, "%1.3f,%5.1f,%1.1f,%1.1f,%1.1f,%1.1f,", volflow, sampledVol, accel_x, accel_y, accel_z, accel_comp);
+    fprintf(fp, "%.1f,%.1f,%.1f,%.3f,%.3f,%.3f,%.1f,", angle_x,angle_y,angle_z,mag_x, mag_y, mag_z,compass);
+    fprintf(fp, "%d,%d,%d,%d,%d,%d," ,uv,omronReading, vInReading, vBlowerReading, omronDiff,gasG.getAmps());
+    fprintf(fp, "%d,%d,%d,%1.3f,%1.3f\r\n", gasG.getVolts(), gasG.getCharge(),digital_pot_set, deltaMflow, deltaVflow);
+    fclose(fp);
+    free(fp);
+    RGB_LED.set_led(1,0,0);
     }
-    RGB_LED.set_led(1,0,0);
+
 
 }