scott kelleher / Outdoor_UPAS_v1_2_powerfunction

Dependencies:   ADS1115 BME280 CronoDot SDFileSystem mbed

Fork of Outdoor_UPAS_v1_2_Tboard by scott kelleher

Files at this revision

API Documentation at this revision

Comitter:
caseyquinn
Date:
Fri Feb 26 22:40:31 2016 +0000
Parent:
3:122bfc998c4c
Child:
5:c3252e5d45ca
Commit message:
Initial UPAS Tboard code. Currently has i2c, STRTC, and SDcard all working. Still need to figure out/add in RN4677, Ublox GPS, and hbridges

Changed in this revision

Calibration.lib Show annotated file Show diff for this revision Revisions of this file
SDFileSystem.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 diff for this revision Revisions of this file
mbed.lib Show annotated file Show diff for this revision Revisions of this file
--- a/Calibration.lib	Mon Feb 08 22:49:54 2016 +0000
+++ b/Calibration.lib	Fri Feb 26 22:40:31 2016 +0000
@@ -1,1 +1,1 @@
-https://developer.mbed.org/teams/Vockens-Group-Sensors/code/Calibration/#f6493d2aedcf
+https://developer.mbed.org/teams/Vockens-Group-Sensors/code/Calibration/#cef76c1bfcdb
--- a/SDFileSystem.lib	Mon Feb 08 22:49:54 2016 +0000
+++ b/SDFileSystem.lib	Fri Feb 26 22:40:31 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/neilt6/code/SDFileSystem/#2286a4e7fa31
+http://mbed.org/users/neilt6/code/SDFileSystem/#3fa5eaf48e81
--- 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);
+
 
 }
--- a/mbed.bld	Mon Feb 08 22:49:54 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/552587b429a1
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.lib	Fri Feb 26 22:40:31 2016 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/teams/Vockens-Group-Sensors/code/mbed/#57796552bb4a