Code supports writing to the SD card as well as working with the Volckens group smartphone apps for the mbed HRM1017

Dependencies:   ADS1115 BLE_API BME280 Calibration CronoDot EEPROM LSM303 MCP40D17 NCP5623BMUTBG SDFileSystem SI1145 STC3100 mbed nRF51822

Fork of UPAS_BLE_and_USB by Volckens Group Sensors

Committer:
caseyquinn
Date:
Tue May 12 17:29:53 2015 +0000
Revision:
8:204c21adf693
Parent:
7:a24d7156bc02
Child:
9:2057c3779b6a
Toggles on the pump after the digital pot value is set. Added the Honeywell analog pressure sensing line.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
caseyquinn 0:14d46ef4b6cb 1 #include "mbed.h"
caseyquinn 0:14d46ef4b6cb 2 #include "SDFileSystem.h"
caseyquinn 0:14d46ef4b6cb 3 #include "Adafruit_ADS1015.h"
caseyquinn 1:37babeb68ab9 4 #include "MCP40D17.h"
caseyquinn 5:0edf35b6d79a 5 #include "BMP280.h"
caseyquinn 7:a24d7156bc02 6 #include "wire.h"
caseyquinn 7:a24d7156bc02 7 #include "STC3100.h"
caseyquinn 1:37babeb68ab9 8
caseyquinn 1:37babeb68ab9 9 #define SERIAL_BAUD_RATE 9600
caseyquinn 7:a24d7156bc02 10 #define SCL 20
caseyquinn 7:a24d7156bc02 11 #define SDA 22
caseyquinn 7:a24d7156bc02 12 #define Crono 0xD0 //D0 for the chronoDot
caseyquinn 0:14d46ef4b6cb 13
caseyquinn 0:14d46ef4b6cb 14 I2C i2c(p22, p20);
caseyquinn 0:14d46ef4b6cb 15 Adafruit_ADS1115 ads(&i2c);
caseyquinn 1:37babeb68ab9 16 MCP40D17 DigPot(&i2c);
caseyquinn 5:0edf35b6d79a 17 BMP280 bmpsensor(p22, p20);
caseyquinn 7:a24d7156bc02 18 STC3100 gasG(p22, p20);
caseyquinn 2:e596e685eb39 19 Serial pc(USBTX, USBRX);
caseyquinn 8:204c21adf693 20 DigitalOut blower(p29, 0);
caseyquinn 8:204c21adf693 21 AnalogIn Honeywell(P0_2);
caseyquinn 0:14d46ef4b6cb 22
caseyquinn 7:a24d7156bc02 23 //Timer t;
caseyquinn 4:69bd7e8a994c 24
caseyquinn 7:a24d7156bc02 25 //float battAmps;
caseyquinn 7:a24d7156bc02 26 //float battVolts;
caseyquinn 7:a24d7156bc02 27 //float battGG;
caseyquinn 8:204c21adf693 28
caseyquinn 8:204c21adf693 29 float Honeywell_value;
caseyquinn 0:14d46ef4b6cb 30 int omronReading;
caseyquinn 0:14d46ef4b6cb 31 int vInReading;
caseyquinn 0:14d46ef4b6cb 32 int vBlowerReading;
caseyquinn 0:14d46ef4b6cb 33 int omronDiff;
caseyquinn 8:204c21adf693 34 int digital_pot_setpoint = 0x07; //min = 0x7F, max = 0x00
caseyquinn 3:2d059d88582b 35 char filename[] = "/sd/UPASLOG00.txt";
caseyquinn 7:a24d7156bc02 36
caseyquinn 7:a24d7156bc02 37 TwoWire Wire = TwoWire(NRF_TWI0);
caseyquinn 7:a24d7156bc02 38 SDFileSystem sd(SPIS_PSELMOSI, SPIS_PSELMISO, SPIS_PSELSCK, SPIS_PSELSS, "sd"); // I believe this matches Todd's pinout, let me know if this doesn't work. (p12, p13, p15, p14)
caseyquinn 7:a24d7156bc02 39
caseyquinn 7:a24d7156bc02 40 uint8_t Seconds = 0;//Seconds
caseyquinn 7:a24d7156bc02 41 uint8_t Minutes = 0;//Minutes
caseyquinn 7:a24d7156bc02 42 uint8_t Hour = 0;//Hour
caseyquinn 7:a24d7156bc02 43 uint8_t Date = 0;//Date
caseyquinn 7:a24d7156bc02 44 uint8_t Month = 0;//Month
caseyquinn 7:a24d7156bc02 45 uint8_t Year = 0;//Year
caseyquinn 7:a24d7156bc02 46
caseyquinn 7:a24d7156bc02 47 void get_time()
caseyquinn 7:a24d7156bc02 48 {
caseyquinn 7:a24d7156bc02 49 Wire.beginTransmission(Crono); // address DS3231
caseyquinn 7:a24d7156bc02 50 Wire.write(0x0E); // select register
caseyquinn 7:a24d7156bc02 51 Wire.write(0x1C); // write register bitmap, bit 7 is /EOSC
caseyquinn 7:a24d7156bc02 52 Wire.endTransmission();
caseyquinn 7:a24d7156bc02 53 wait(0.05);
caseyquinn 7:a24d7156bc02 54 Wire.beginTransmission(Crono);
caseyquinn 7:a24d7156bc02 55 Wire.write(0x00);
caseyquinn 7:a24d7156bc02 56 Wire.endTransmission();
caseyquinn 7:a24d7156bc02 57 Wire.requestFrom(Crono+1, 7);
caseyquinn 2:e596e685eb39 58
caseyquinn 7:a24d7156bc02 59 while( Wire.available() > 0 )
caseyquinn 7:a24d7156bc02 60 {
caseyquinn 7:a24d7156bc02 61 Seconds = Wire.read();
caseyquinn 7:a24d7156bc02 62 Minutes = Wire.read();
caseyquinn 7:a24d7156bc02 63 Hour = Wire.read();
caseyquinn 7:a24d7156bc02 64 uint8_t day =Wire.read(); // we don't uses this, it's just day of the week
caseyquinn 7:a24d7156bc02 65 Date = Wire.read();
caseyquinn 7:a24d7156bc02 66 Month = Wire.read();
caseyquinn 7:a24d7156bc02 67 Year = Wire.read();
caseyquinn 7:a24d7156bc02 68 //pc.printf("%f", sec); pc.printf("\n");//this is still in bit form
caseyquinn 7:a24d7156bc02 69 //pc.printf("%f", min); pc.printf("\n");
caseyquinn 7:a24d7156bc02 70 //pc.printf("%f", hr); pc.printf("\n");
caseyquinn 7:a24d7156bc02 71 }
caseyquinn 7:a24d7156bc02 72 Year = ((Year&0xF0)>>4)*10 + (Year&0x0F); //Year
caseyquinn 7:a24d7156bc02 73 Month = ((Month&0x10)>>4)*10 + (Month&0x0F); //Month
caseyquinn 7:a24d7156bc02 74 Date = ((Date&0x30)>>4)*10 + (Date&0x0F); //Date
caseyquinn 7:a24d7156bc02 75 Hour = ((Hour&0x10)>>4)*10 + (Hour&0x0F); //Hour
caseyquinn 7:a24d7156bc02 76 Minutes = ((Minutes&0x70)>>4)*10 + (Minutes&0x0F); //Minutes
caseyquinn 7:a24d7156bc02 77 Seconds = ((Seconds&0x70)>>4)*10 + (Seconds&0x0F); //Seconds
caseyquinn 7:a24d7156bc02 78 }
caseyquinn 2:e596e685eb39 79
caseyquinn 0:14d46ef4b6cb 80 int main()
caseyquinn 0:14d46ef4b6cb 81 {
caseyquinn 2:e596e685eb39 82
caseyquinn 7:a24d7156bc02 83 //t.start();
caseyquinn 2:e596e685eb39 84 // create a new file
caseyquinn 8:204c21adf693 85
caseyquinn 8:204c21adf693 86 DigPot.writeRegister(digital_pot_setpoint);
caseyquinn 8:204c21adf693 87 Wire.begin(SCL, SDA, TWI_FREQUENCY_100K);//
caseyquinn 7:a24d7156bc02 88 wait(1);
caseyquinn 8:204c21adf693 89 blower = 1;
caseyquinn 8:204c21adf693 90 wait (1);
caseyquinn 7:a24d7156bc02 91
caseyquinn 7:a24d7156bc02 92
caseyquinn 3:2d059d88582b 93 for (uint8_t i = 0; i < 100; i++) {
caseyquinn 3:2d059d88582b 94 filename[11] = i/10 + '0';
caseyquinn 3:2d059d88582b 95 filename[12] = i%10 + '0';
caseyquinn 2:e596e685eb39 96 FILE *fp = fopen(filename, "r");
caseyquinn 2:e596e685eb39 97 if (fp == NULL) {
caseyquinn 2:e596e685eb39 98 // only open a new file if it doesn't exist
caseyquinn 2:e596e685eb39 99 FILE *fp = fopen(filename, "w");
caseyquinn 2:e596e685eb39 100 fclose(fp);
caseyquinn 2:e596e685eb39 101 break; // leave the loop!
caseyquinn 7:a24d7156bc02 102 }
caseyquinn 2:e596e685eb39 103 }
caseyquinn 7:a24d7156bc02 104
caseyquinn 2:e596e685eb39 105
caseyquinn 1:37babeb68ab9 106
caseyquinn 0:14d46ef4b6cb 107 while(1){
caseyquinn 7:a24d7156bc02 108
caseyquinn 8:204c21adf693 109 get_time();
caseyquinn 8:204c21adf693 110 Honeywell_value = Honeywell.read();
caseyquinn 6:2328feb48792 111 omronReading = ads.readADC_SingleEnded(0, 0xC583); // read channel 0 PGA = 2 : Full Scale Range = 2.048V
caseyquinn 6:2328feb48792 112 //omronReading = ads.readADC_SingleEnded(0, 0xC183); // read channel 0 PGA = 1 : Full Scale Range = 4.096V
caseyquinn 0:14d46ef4b6cb 113 vInReading = ads.readADC_SingleEnded(1, 0xD583); // read channel 0
caseyquinn 0:14d46ef4b6cb 114 vBlowerReading = ads.readADC_SingleEnded(2, 0xE783); // read channel 0
caseyquinn 0:14d46ef4b6cb 115 omronDiff = ads.readADC_Differential(0x8583); // differential channel 2-3
caseyquinn 7:a24d7156bc02 116 //battAmps = gasG.getAmps();
caseyquinn 7:a24d7156bc02 117 //battVolts = gasG.getVolts();
caseyquinn 7:a24d7156bc02 118 //battGG = gasG.getCharge();
caseyquinn 7:a24d7156bc02 119 //pc.printf("%d Amps, %d Volts, %d GG\n", gasG.getAmps(), gasG.getVolts(), gasG.getCharge());
caseyquinn 2:e596e685eb39 120 //Mount the filesystem
caseyquinn 2:e596e685eb39 121 sd.mount();
caseyquinn 3:2d059d88582b 122 FILE *fp = fopen(filename, "a");
caseyquinn 8:204c21adf693 123 fprintf(fp, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%2.2f,%04.2f,%f\r\n", Year,Month,Date,Hour,Minutes,Seconds,omronReading,vInReading, vBlowerReading, omronDiff, gasG.getAmps(), gasG.getVolts(), gasG.getCharge(), bmpsensor.getTemperature(), bmpsensor.getPressure(),Honeywell_value);
caseyquinn 2:e596e685eb39 124 fclose(fp);
caseyquinn 2:e596e685eb39 125 //Unmount the filesystem
caseyquinn 2:e596e685eb39 126 sd.unmount();
caseyquinn 2:e596e685eb39 127
caseyquinn 7:a24d7156bc02 128 wait(10);
caseyquinn 2:e596e685eb39 129
caseyquinn 2:e596e685eb39 130 DigPot.writeRegister(digital_pot_setpoint);
caseyquinn 2:e596e685eb39 131
caseyquinn 2:e596e685eb39 132
caseyquinn 0:14d46ef4b6cb 133 }
caseyquinn 0:14d46ef4b6cb 134 }
caseyquinn 0:14d46ef4b6cb 135
caseyquinn 0:14d46ef4b6cb 136
caseyquinn 0:14d46ef4b6cb 137