Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: ADS1115 BME280 CronoDot SDFileSystem mbed
Fork of Outdoor_UPAS_v1_2_Tboard by
Revision 4:5d004fd997d5, committed 2016-02-26
- 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
--- 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
