Dependencies: ChaNFSSD mbed BMP085 SHT2x
main.cpp@7:74ce774e53ef, 2012-02-10 (annotated)
- Committer:
- tosihisa
- Date:
- Fri Feb 10 15:34:09 2012 +0000
- Revision:
- 7:74ce774e53ef
- Parent:
- 6:4af28d398585
- Child:
- 8:fd243a6439f3
V0.85
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tosihisa | 1:83960ee4d9a2 | 1 | /* |
tosihisa | 1:83960ee4d9a2 | 2 | * このソフトウェアは、大阪市立大学と京都大学生存圏ミッション研究の共同研究の成果物です。 |
tosihisa | 1:83960ee4d9a2 | 3 | * ソースコードそのもののライセンスは、各ソースコードのライセンスに沿って公開します。 |
tosihisa | 1:83960ee4d9a2 | 4 | * 2012-1-4 Toshihisa T |
tosihisa | 1:83960ee4d9a2 | 5 | */ |
tosihisa | 3:844fbe607dae | 6 | |
tosihisa | 7:74ce774e53ef | 7 | #define __MY_VERSION__ "0.85" |
tosihisa | 4:879b8dcfee15 | 8 | |
tosihisa | 3:844fbe607dae | 9 | #define HAVE_TOGGLE_SW |
tosihisa | 3:844fbe607dae | 10 | #define HAVE_MICROSD |
tosihisa | 7:74ce774e53ef | 11 | //#define MICROSD_FORMAT |
tosihisa | 3:844fbe607dae | 12 | |
tosihisa | 0:6089ae824f06 | 13 | #include "mbed.h" |
tosihisa | 0:6089ae824f06 | 14 | #include "NMEA_parse.h" |
tosihisa | 0:6089ae824f06 | 15 | #include "SDFileSystem.h" |
tosihisa | 0:6089ae824f06 | 16 | #include "libT/mbed/tserialbuffer.h" |
tosihisa | 0:6089ae824f06 | 17 | #include "BMP085.h" |
tosihisa | 0:6089ae824f06 | 18 | #include "SHT2x.h" |
tosihisa | 0:6089ae824f06 | 19 | #include "AD7994.h" |
tosihisa | 0:6089ae824f06 | 20 | //#include "TextLCD.h" |
tosihisa | 0:6089ae824f06 | 21 | #include "TextLCD_20X4.h" |
tosihisa | 1:83960ee4d9a2 | 22 | #include "UBXPacket.h" |
tosihisa | 0:6089ae824f06 | 23 | |
tosihisa | 0:6089ae824f06 | 24 | using namespace libT; |
tosihisa | 0:6089ae824f06 | 25 | |
tosihisa | 0:6089ae824f06 | 26 | #define _USE_FS_NAME "sd" |
tosihisa | 0:6089ae824f06 | 27 | |
tosihisa | 0:6089ae824f06 | 28 | Serial debug(USBTX,USBRX); |
tosihisa | 0:6089ae824f06 | 29 | |
tosihisa | 0:6089ae824f06 | 30 | DigitalIn gps_int0(p24); |
tosihisa | 0:6089ae824f06 | 31 | DigitalOut gps_reset(p25); |
tosihisa | 0:6089ae824f06 | 32 | InterruptIn gps_pps(p26); |
tosihisa | 0:6089ae824f06 | 33 | tSerialBuffer gps(p28,p27); |
tosihisa | 0:6089ae824f06 | 34 | DigitalOut gps_pps_led(LED2); |
tosihisa | 1:83960ee4d9a2 | 35 | I2C i2c(p9, p10); // sda, scl |
tosihisa | 0:6089ae824f06 | 36 | BMP085 bmp085(p9, p10); |
tosihisa | 4:879b8dcfee15 | 37 | int bmp085_find = 0; |
tosihisa | 2:f546aaa0e1d5 | 38 | SHT2x sht25(p9,p10); |
tosihisa | 4:879b8dcfee15 | 39 | int sht25_find = 0; |
tosihisa | 0:6089ae824f06 | 40 | AD7994 ad7994(p9,p10); |
tosihisa | 4:879b8dcfee15 | 41 | int ad7994_find = 0; |
tosihisa | 0:6089ae824f06 | 42 | TextLCD_20X4 lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7 |
tosihisa | 3:844fbe607dae | 43 | #ifdef HAVE_TOGGLE_SW /* { */ |
tosihisa | 3:844fbe607dae | 44 | DigitalIn toggleSW(p22); |
tosihisa | 3:844fbe607dae | 45 | int toggleSW_scan = 0; |
tosihisa | 3:844fbe607dae | 46 | int toggleSW_pre = -1; |
tosihisa | 3:844fbe607dae | 47 | #endif /* } */ |
tosihisa | 3:844fbe607dae | 48 | int toggleSW_now = 0; |
tosihisa | 3:844fbe607dae | 49 | Ticker tick; |
tosihisa | 4:879b8dcfee15 | 50 | tSerialBuffer CO2(p13,p14); |
tosihisa | 4:879b8dcfee15 | 51 | Timer CO2_TMOUT; |
tosihisa | 0:6089ae824f06 | 52 | |
tosihisa | 1:83960ee4d9a2 | 53 | SDFileSystem sd(p5, p6, p7, p8, _USE_FS_NAME); |
tosihisa | 3:844fbe607dae | 54 | int avaiableSD = -1; |
tosihisa | 3:844fbe607dae | 55 | unsigned short logNextCount = 0; |
tosihisa | 3:844fbe607dae | 56 | FILE *csvFP = NULL; |
tosihisa | 3:844fbe607dae | 57 | FILE *gpsFP = NULL; |
tosihisa | 3:844fbe607dae | 58 | int logSW = 0; |
tosihisa | 6:4af28d398585 | 59 | LocalFileSystem local("local"); |
tosihisa | 4:879b8dcfee15 | 60 | |
tosihisa | 3:844fbe607dae | 61 | DigitalOut logled(LED3); |
tosihisa | 0:6089ae824f06 | 62 | DigitalOut myled(LED1); |
tosihisa | 0:6089ae824f06 | 63 | |
tosihisa | 1:83960ee4d9a2 | 64 | struct UBXPacket_s UBXPacket; |
tosihisa | 1:83960ee4d9a2 | 65 | |
tosihisa | 0:6089ae824f06 | 66 | int pps_count = 0; |
tosihisa | 0:6089ae824f06 | 67 | void gps_pps_rise() |
tosihisa | 0:6089ae824f06 | 68 | { |
tosihisa | 0:6089ae824f06 | 69 | gps_pps_led = ((pps_count+=1) & 1) ? 1 : 0; |
tosihisa | 0:6089ae824f06 | 70 | } |
tosihisa | 0:6089ae824f06 | 71 | |
tosihisa | 3:844fbe607dae | 72 | void logFile_Init() { |
tosihisa | 0:6089ae824f06 | 73 | DIR *d; |
tosihisa | 0:6089ae824f06 | 74 | struct dirent *p; |
tosihisa | 3:844fbe607dae | 75 | unsigned short countCandidate; |
tosihisa | 3:844fbe607dae | 76 | char *endptr; |
tosihisa | 0:6089ae824f06 | 77 | |
tosihisa | 6:4af28d398585 | 78 | //この return を有効にすると、SDカードのチェックを行いません。 |
tosihisa | 6:4af28d398585 | 79 | //return; |
tosihisa | 6:4af28d398585 | 80 | |
tosihisa | 3:844fbe607dae | 81 | avaiableSD = 0; |
tosihisa | 0:6089ae824f06 | 82 | d = opendir("/" _USE_FS_NAME); |
tosihisa | 0:6089ae824f06 | 83 | if ( d != NULL ) { |
tosihisa | 0:6089ae824f06 | 84 | while ( (p = readdir(d)) != NULL ) { |
tosihisa | 0:6089ae824f06 | 85 | debug.printf("FILE - %s\x0d\x0a", p->d_name); |
tosihisa | 3:844fbe607dae | 86 | if (strlen(p->d_name) == (sizeof("ENVxxxxx.CSV")-1)) { |
tosihisa | 3:844fbe607dae | 87 | if ( ((p->d_name[0] == 'E') || (p->d_name[0] == 'e')) |
tosihisa | 3:844fbe607dae | 88 | && ((p->d_name[1] == 'N') || (p->d_name[1] == 'n')) |
tosihisa | 3:844fbe607dae | 89 | && ((p->d_name[2] == 'V') || (p->d_name[2] == 'v'))) { |
tosihisa | 3:844fbe607dae | 90 | } |
tosihisa | 3:844fbe607dae | 91 | countCandidate = (unsigned short)strtoul(&(p->d_name[3]),&endptr,10); |
tosihisa | 3:844fbe607dae | 92 | if (strcasecmp(endptr,".CSV") == 0) { |
tosihisa | 3:844fbe607dae | 93 | if (countCandidate > logNextCount) { |
tosihisa | 3:844fbe607dae | 94 | logNextCount = countCandidate; |
tosihisa | 3:844fbe607dae | 95 | } |
tosihisa | 3:844fbe607dae | 96 | } |
tosihisa | 3:844fbe607dae | 97 | } |
tosihisa | 0:6089ae824f06 | 98 | } |
tosihisa | 0:6089ae824f06 | 99 | closedir(d); |
tosihisa | 3:844fbe607dae | 100 | logNextCount++; |
tosihisa | 3:844fbe607dae | 101 | avaiableSD = 1; |
tosihisa | 0:6089ae824f06 | 102 | } |
tosihisa | 0:6089ae824f06 | 103 | } |
tosihisa | 0:6089ae824f06 | 104 | |
tosihisa | 0:6089ae824f06 | 105 | |
tosihisa | 0:6089ae824f06 | 106 | int CO2_Read(unsigned short *val) |
tosihisa | 0:6089ae824f06 | 107 | { |
tosihisa | 0:6089ae824f06 | 108 | unsigned char sbuf[] = { 0xFE, 0x04, 0x00, 0x03, 0x00, 0x01, 0xD5, 0xC5 }; |
tosihisa | 0:6089ae824f06 | 109 | unsigned char rbuf[7]; |
tosihisa | 0:6089ae824f06 | 110 | int i; |
tosihisa | 0:6089ae824f06 | 111 | unsigned short crc; |
tosihisa | 0:6089ae824f06 | 112 | extern unsigned short modbus_CRC(unsigned char *DataPtr, unsigned short len); |
tosihisa | 0:6089ae824f06 | 113 | |
tosihisa | 0:6089ae824f06 | 114 | for(i=0;i < sizeof(sbuf);i++){ |
tosihisa | 0:6089ae824f06 | 115 | //debug.printf("0x%02x ",sbuf[i]); |
tosihisa | 0:6089ae824f06 | 116 | CO2.putc(sbuf[i]); |
tosihisa | 0:6089ae824f06 | 117 | } |
tosihisa | 4:879b8dcfee15 | 118 | CO2_TMOUT.start(); |
tosihisa | 0:6089ae824f06 | 119 | for(i=0;i < sizeof(rbuf);i++){ |
tosihisa | 4:879b8dcfee15 | 120 | while(!CO2.readable()){ |
tosihisa | 4:879b8dcfee15 | 121 | if(CO2_TMOUT.read_ms() >= 1000){ |
tosihisa | 4:879b8dcfee15 | 122 | return -99; /* TIMEOUT */ |
tosihisa | 4:879b8dcfee15 | 123 | } |
tosihisa | 4:879b8dcfee15 | 124 | } |
tosihisa | 0:6089ae824f06 | 125 | rbuf[i] = CO2.getc(); |
tosihisa | 0:6089ae824f06 | 126 | } |
tosihisa | 1:83960ee4d9a2 | 127 | if(rbuf[0] != 0xFE){ |
tosihisa | 1:83960ee4d9a2 | 128 | return -4; |
tosihisa | 1:83960ee4d9a2 | 129 | } |
tosihisa | 1:83960ee4d9a2 | 130 | if(rbuf[1] != 0x04){ |
tosihisa | 1:83960ee4d9a2 | 131 | return -1; |
tosihisa | 1:83960ee4d9a2 | 132 | } |
tosihisa | 1:83960ee4d9a2 | 133 | if(rbuf[2] != 0x02){ |
tosihisa | 1:83960ee4d9a2 | 134 | return -2; |
tosihisa | 1:83960ee4d9a2 | 135 | } |
tosihisa | 0:6089ae824f06 | 136 | crc = rbuf[6]; |
tosihisa | 0:6089ae824f06 | 137 | crc = (crc << 8) | rbuf[5]; |
tosihisa | 0:6089ae824f06 | 138 | if(crc != modbus_CRC(rbuf,5)){ |
tosihisa | 1:83960ee4d9a2 | 139 | return -3; |
tosihisa | 0:6089ae824f06 | 140 | } |
tosihisa | 0:6089ae824f06 | 141 | *val = rbuf[3]; |
tosihisa | 0:6089ae824f06 | 142 | *val = (*val << 8) | rbuf[4]; |
tosihisa | 0:6089ae824f06 | 143 | return 0; |
tosihisa | 0:6089ae824f06 | 144 | } |
tosihisa | 0:6089ae824f06 | 145 | |
tosihisa | 0:6089ae824f06 | 146 | // BMP085 0xee |
tosihisa | 4:879b8dcfee15 | 147 | // AD7994 0x44 |
tosihisa | 4:879b8dcfee15 | 148 | // SHT2x 0x80 |
tosihisa | 0:6089ae824f06 | 149 | int i2c_found() { |
tosihisa | 0:6089ae824f06 | 150 | int count = 0; |
tosihisa | 5:3a1ce282892c | 151 | lcd.locate(0,0); |
tosihisa | 1:83960ee4d9a2 | 152 | lcd.printf("%-19s","I2C Dev:"); |
tosihisa | 5:3a1ce282892c | 153 | lcd.locate(8,0); |
tosihisa | 0:6089ae824f06 | 154 | for (int address=0; address<256; address+=2) { |
tosihisa | 0:6089ae824f06 | 155 | if (!i2c.write(address, NULL, 0)) { // 0 returned is ok |
tosihisa | 4:879b8dcfee15 | 156 | switch(address){ |
tosihisa | 4:879b8dcfee15 | 157 | case 0xee: bmp085_find = 1; break; |
tosihisa | 4:879b8dcfee15 | 158 | case 0x44: ad7994_find = 1; break; |
tosihisa | 4:879b8dcfee15 | 159 | case 0x80: sht25_find = 1; break; |
tosihisa | 4:879b8dcfee15 | 160 | default: break; |
tosihisa | 4:879b8dcfee15 | 161 | } |
tosihisa | 1:83960ee4d9a2 | 162 | lcd.printf("%02X ",address); |
tosihisa | 0:6089ae824f06 | 163 | count++; |
tosihisa | 0:6089ae824f06 | 164 | } |
tosihisa | 0:6089ae824f06 | 165 | } |
tosihisa | 0:6089ae824f06 | 166 | return count; |
tosihisa | 0:6089ae824f06 | 167 | } |
tosihisa | 1:83960ee4d9a2 | 168 | |
tosihisa | 1:83960ee4d9a2 | 169 | unsigned char NMEA_CalcSum(unsigned char *str,int len) |
tosihisa | 1:83960ee4d9a2 | 170 | { |
tosihisa | 1:83960ee4d9a2 | 171 | unsigned char sum = 0; |
tosihisa | 1:83960ee4d9a2 | 172 | int i; |
tosihisa | 1:83960ee4d9a2 | 173 | for(i = 0;i < len;i++){ |
tosihisa | 1:83960ee4d9a2 | 174 | sum = sum ^ (*(str + i)); |
tosihisa | 1:83960ee4d9a2 | 175 | } |
tosihisa | 1:83960ee4d9a2 | 176 | return sum; |
tosihisa | 1:83960ee4d9a2 | 177 | } |
tosihisa | 1:83960ee4d9a2 | 178 | |
tosihisa | 1:83960ee4d9a2 | 179 | void UBX_CalcSum(unsigned char *str,int len,unsigned char *sum) |
tosihisa | 1:83960ee4d9a2 | 180 | { |
tosihisa | 1:83960ee4d9a2 | 181 | int i; |
tosihisa | 1:83960ee4d9a2 | 182 | *(sum + 0) = *(sum + 1) = 0; |
tosihisa | 1:83960ee4d9a2 | 183 | for(i = 0;i < len;i++){ |
tosihisa | 1:83960ee4d9a2 | 184 | *(sum + 0) = *(sum + 0) + *(str+i); |
tosihisa | 1:83960ee4d9a2 | 185 | *(sum + 1) = *(sum + 1) + *(sum + 0); |
tosihisa | 1:83960ee4d9a2 | 186 | } |
tosihisa | 1:83960ee4d9a2 | 187 | } |
tosihisa | 1:83960ee4d9a2 | 188 | |
tosihisa | 1:83960ee4d9a2 | 189 | int UBX_WaitAck(struct UBXPacket_s *info) |
tosihisa | 1:83960ee4d9a2 | 190 | { |
tosihisa | 1:83960ee4d9a2 | 191 | UBXPacket.cjobst = 0; |
tosihisa | 1:83960ee4d9a2 | 192 | |
tosihisa | 1:83960ee4d9a2 | 193 | while(1){ |
tosihisa | 1:83960ee4d9a2 | 194 | while(gps.readable()) { |
tosihisa | 1:83960ee4d9a2 | 195 | if(UBXPacket_Parse(&UBXPacket,gps.getc()) == 100){ |
tosihisa | 1:83960ee4d9a2 | 196 | if((UBXPacket.cls == 0x05) && (UBXPacket.id == 0x01)){ |
tosihisa | 1:83960ee4d9a2 | 197 | return 1; /* ACK */ |
tosihisa | 1:83960ee4d9a2 | 198 | } else if((UBXPacket.cls == 0x05) && (UBXPacket.id == 0x00)){ |
tosihisa | 1:83960ee4d9a2 | 199 | return 0; /* NAK */ |
tosihisa | 1:83960ee4d9a2 | 200 | } else { |
tosihisa | 1:83960ee4d9a2 | 201 | UBXPacket.cjobst = 0; |
tosihisa | 1:83960ee4d9a2 | 202 | } |
tosihisa | 1:83960ee4d9a2 | 203 | } |
tosihisa | 1:83960ee4d9a2 | 204 | } |
tosihisa | 1:83960ee4d9a2 | 205 | } |
tosihisa | 3:844fbe607dae | 206 | } |
tosihisa | 3:844fbe607dae | 207 | |
tosihisa | 4:879b8dcfee15 | 208 | unsigned long scanCount = 0; |
tosihisa | 3:844fbe607dae | 209 | unsigned long tickCount = 0; |
tosihisa | 3:844fbe607dae | 210 | unsigned long hzCount = 0; |
tosihisa | 3:844fbe607dae | 211 | unsigned long hzCount_tmp = 0; |
tosihisa | 3:844fbe607dae | 212 | void tickHandler() |
tosihisa | 3:844fbe607dae | 213 | { |
tosihisa | 4:879b8dcfee15 | 214 | scanCount++; |
tosihisa | 3:844fbe607dae | 215 | tickCount++; |
tosihisa | 3:844fbe607dae | 216 | hzCount_tmp++; |
tosihisa | 3:844fbe607dae | 217 | if(hzCount_tmp >= 50){ |
tosihisa | 3:844fbe607dae | 218 | hzCount_tmp = 0; |
tosihisa | 3:844fbe607dae | 219 | hzCount++; |
tosihisa | 3:844fbe607dae | 220 | } |
tosihisa | 3:844fbe607dae | 221 | #ifdef HAVE_TOGGLE_SW /* { */ |
tosihisa | 3:844fbe607dae | 222 | int nowRead; |
tosihisa | 3:844fbe607dae | 223 | nowRead = toggleSW.read(); |
tosihisa | 3:844fbe607dae | 224 | if(nowRead != toggleSW_pre){ |
tosihisa | 3:844fbe607dae | 225 | toggleSW_pre = nowRead; |
tosihisa | 3:844fbe607dae | 226 | toggleSW_scan = 0; |
tosihisa | 3:844fbe607dae | 227 | } else { |
tosihisa | 3:844fbe607dae | 228 | toggleSW_scan++; |
tosihisa | 3:844fbe607dae | 229 | if(toggleSW_scan >= 3){ |
tosihisa | 3:844fbe607dae | 230 | toggleSW_now = toggleSW_pre; |
tosihisa | 3:844fbe607dae | 231 | toggleSW_scan = 0; |
tosihisa | 3:844fbe607dae | 232 | } |
tosihisa | 3:844fbe607dae | 233 | } |
tosihisa | 3:844fbe607dae | 234 | #endif |
tosihisa | 3:844fbe607dae | 235 | } |
tosihisa | 3:844fbe607dae | 236 | |
tosihisa | 3:844fbe607dae | 237 | void logCheckProc() |
tosihisa | 3:844fbe607dae | 238 | { |
tosihisa | 3:844fbe607dae | 239 | if((logSW == 0) && (toggleSW_now != 0)){ |
tosihisa | 3:844fbe607dae | 240 | if(csvFP != NULL){ |
tosihisa | 3:844fbe607dae | 241 | fclose(csvFP); |
tosihisa | 3:844fbe607dae | 242 | csvFP = NULL; |
tosihisa | 3:844fbe607dae | 243 | if(gpsFP != NULL){ |
tosihisa | 3:844fbe607dae | 244 | fclose(gpsFP); |
tosihisa | 3:844fbe607dae | 245 | gpsFP = NULL; |
tosihisa | 3:844fbe607dae | 246 | } |
tosihisa | 3:844fbe607dae | 247 | logled = 0; /* No logging */ |
tosihisa | 3:844fbe607dae | 248 | logNextCount++; |
tosihisa | 3:844fbe607dae | 249 | } else { |
tosihisa | 3:844fbe607dae | 250 | char name[64]; |
tosihisa | 3:844fbe607dae | 251 | sprintf(name,"/%s/ENV%05d.CSV",_USE_FS_NAME,logNextCount); |
tosihisa | 3:844fbe607dae | 252 | csvFP = fopen(name,"w+b"); |
tosihisa | 6:4af28d398585 | 253 | sprintf(name,"/%s/ENV%05d.UBX",_USE_FS_NAME,logNextCount); |
tosihisa | 3:844fbe607dae | 254 | gpsFP = fopen(name,"w+b"); |
tosihisa | 3:844fbe607dae | 255 | if((csvFP != NULL) && (gpsFP != NULL)){ |
tosihisa | 3:844fbe607dae | 256 | logled = 1; /* logging */ |
tosihisa | 3:844fbe607dae | 257 | } else { |
tosihisa | 3:844fbe607dae | 258 | if(csvFP) fclose(csvFP); |
tosihisa | 3:844fbe607dae | 259 | if(gpsFP) fclose(gpsFP); |
tosihisa | 3:844fbe607dae | 260 | logled = 0; /* Cannot start logging */ |
tosihisa | 3:844fbe607dae | 261 | } |
tosihisa | 3:844fbe607dae | 262 | } |
tosihisa | 3:844fbe607dae | 263 | } |
tosihisa | 3:844fbe607dae | 264 | logSW = toggleSW_now; |
tosihisa | 1:83960ee4d9a2 | 265 | } |
tosihisa | 1:83960ee4d9a2 | 266 | |
tosihisa | 1:83960ee4d9a2 | 267 | unsigned char wbuf[1024]; |
tosihisa | 2:f546aaa0e1d5 | 268 | int widx = 0; |
tosihisa | 0:6089ae824f06 | 269 | |
tosihisa | 4:879b8dcfee15 | 270 | void ClearScreen(void) |
tosihisa | 4:879b8dcfee15 | 271 | { |
tosihisa | 4:879b8dcfee15 | 272 | lcd.locate(0,0); lcd.printf("%20s"," "); |
tosihisa | 4:879b8dcfee15 | 273 | lcd.locate(0,1); lcd.printf("%20s"," "); |
tosihisa | 4:879b8dcfee15 | 274 | lcd.locate(0,2); lcd.printf("%20s"," "); |
tosihisa | 4:879b8dcfee15 | 275 | lcd.locate(0,3); lcd.printf("%20s"," "); |
tosihisa | 4:879b8dcfee15 | 276 | } |
tosihisa | 4:879b8dcfee15 | 277 | |
tosihisa | 0:6089ae824f06 | 278 | int main() { |
tosihisa | 0:6089ae824f06 | 279 | int ret = 0; |
tosihisa | 3:844fbe607dae | 280 | float p, t1; |
tosihisa | 3:844fbe607dae | 281 | float h, t2; |
tosihisa | 0:6089ae824f06 | 282 | int temp; |
tosihisa | 4:879b8dcfee15 | 283 | unsigned short CO2_val = 0; |
tosihisa | 1:83960ee4d9a2 | 284 | char c; |
tosihisa | 2:f546aaa0e1d5 | 285 | unsigned long UBXCount = 0; |
tosihisa | 4:879b8dcfee15 | 286 | int GPS_isRaw = 0; |
tosihisa | 4:879b8dcfee15 | 287 | int CO2_find = 0; |
tosihisa | 4:879b8dcfee15 | 288 | int year=0; |
tosihisa | 4:879b8dcfee15 | 289 | int mon=0; |
tosihisa | 4:879b8dcfee15 | 290 | int day=0; |
tosihisa | 4:879b8dcfee15 | 291 | int hour=0; |
tosihisa | 4:879b8dcfee15 | 292 | int min=0; |
tosihisa | 4:879b8dcfee15 | 293 | int sec=0; |
tosihisa | 4:879b8dcfee15 | 294 | int pre_sec = -1; |
tosihisa | 0:6089ae824f06 | 295 | |
tosihisa | 4:879b8dcfee15 | 296 | p = -99.0; |
tosihisa | 4:879b8dcfee15 | 297 | t1 = -99.0; |
tosihisa | 4:879b8dcfee15 | 298 | t2 = -99.0; |
tosihisa | 4:879b8dcfee15 | 299 | h = -99.0; |
tosihisa | 4:879b8dcfee15 | 300 | |
tosihisa | 3:844fbe607dae | 301 | tick.attach_us(&tickHandler,(10*1000)); |
tosihisa | 3:844fbe607dae | 302 | |
tosihisa | 0:6089ae824f06 | 303 | debug.format(8,Serial::None,1); |
tosihisa | 0:6089ae824f06 | 304 | debug.baud(115200); |
tosihisa | 4:879b8dcfee15 | 305 | debug.printf("ENV Logger \"%s\" Start (BUILD:[" __DATE__ "/" __TIME__ "])\n",__MY_VERSION__); |
tosihisa | 0:6089ae824f06 | 306 | |
tosihisa | 0:6089ae824f06 | 307 | lcd.locate(0,0); |
tosihisa | 4:879b8dcfee15 | 308 | lcd.printf("ENV Logger \"%s\"",__MY_VERSION__); |
tosihisa | 2:f546aaa0e1d5 | 309 | |
tosihisa | 2:f546aaa0e1d5 | 310 | lcd.locate(0,1); |
tosihisa | 2:f546aaa0e1d5 | 311 | lcd.printf("WAKE UP I/O..."); |
tosihisa | 1:83960ee4d9a2 | 312 | wait(5.0); |
tosihisa | 0:6089ae824f06 | 313 | |
tosihisa | 4:879b8dcfee15 | 314 | ClearScreen(); |
tosihisa | 4:879b8dcfee15 | 315 | |
tosihisa | 5:3a1ce282892c | 316 | //=================================================== |
tosihisa | 5:3a1ce282892c | 317 | i2c_found(); |
tosihisa | 5:3a1ce282892c | 318 | |
tosihisa | 5:3a1ce282892c | 319 | //=================================================== |
tosihisa | 5:3a1ce282892c | 320 | CO2.format(8,Serial::None,1); |
tosihisa | 5:3a1ce282892c | 321 | CO2.baud(9600); |
tosihisa | 5:3a1ce282892c | 322 | CO2.recvStart(); |
tosihisa | 5:3a1ce282892c | 323 | |
tosihisa | 5:3a1ce282892c | 324 | lcd.locate(0,1); |
tosihisa | 5:3a1ce282892c | 325 | lcd.printf("Check CO2:"); |
tosihisa | 5:3a1ce282892c | 326 | CO2_find = 0; |
tosihisa | 5:3a1ce282892c | 327 | ret = CO2_Read(&CO2_val); |
tosihisa | 5:3a1ce282892c | 328 | switch(ret){ |
tosihisa | 3:844fbe607dae | 329 | case 0: |
tosihisa | 5:3a1ce282892c | 330 | lcd.printf("OK"); |
tosihisa | 5:3a1ce282892c | 331 | CO2_find = 1; |
tosihisa | 3:844fbe607dae | 332 | break; |
tosihisa | 5:3a1ce282892c | 333 | case -99: |
tosihisa | 5:3a1ce282892c | 334 | lcd.printf("NOT FOUND"); |
tosihisa | 3:844fbe607dae | 335 | break; |
tosihisa | 3:844fbe607dae | 336 | default: |
tosihisa | 5:3a1ce282892c | 337 | lcd.printf("NG"); |
tosihisa | 3:844fbe607dae | 338 | break; |
tosihisa | 3:844fbe607dae | 339 | } |
tosihisa | 5:3a1ce282892c | 340 | CO2_val = 0; |
tosihisa | 5:3a1ce282892c | 341 | |
tosihisa | 5:3a1ce282892c | 342 | //=================================================== |
tosihisa | 5:3a1ce282892c | 343 | lcd.locate(0,2); |
tosihisa | 4:879b8dcfee15 | 344 | lcd.printf("Initalize GPS:"); |
tosihisa | 2:f546aaa0e1d5 | 345 | |
tosihisa | 1:83960ee4d9a2 | 346 | UBXPacket.cjobst = 0; |
tosihisa | 1:83960ee4d9a2 | 347 | |
tosihisa | 0:6089ae824f06 | 348 | gps_pps.rise(gps_pps_rise); |
tosihisa | 0:6089ae824f06 | 349 | gps.format(8,Serial::None,1); |
tosihisa | 0:6089ae824f06 | 350 | gps.baud(9600); |
tosihisa | 0:6089ae824f06 | 351 | |
tosihisa | 0:6089ae824f06 | 352 | gps_reset = 1; |
tosihisa | 0:6089ae824f06 | 353 | wait(0.5); |
tosihisa | 0:6089ae824f06 | 354 | gps_reset = 0; |
tosihisa | 0:6089ae824f06 | 355 | |
tosihisa | 1:83960ee4d9a2 | 356 | wait(0.5); |
tosihisa | 1:83960ee4d9a2 | 357 | if(1){ |
tosihisa | 1:83960ee4d9a2 | 358 | //unsigned char modeStr[] = "PUBX,41,1,0007,0003,115200,0"; |
tosihisa | 1:83960ee4d9a2 | 359 | unsigned char modeStr[] = "PUBX,41,1,0007,0001,115200,0"; |
tosihisa | 1:83960ee4d9a2 | 360 | unsigned char sum = NMEA_CalcSum(modeStr,strlen((char *)modeStr)); |
tosihisa | 1:83960ee4d9a2 | 361 | debug.printf("SEND:[%s](0x%02X)\n",modeStr,sum); |
tosihisa | 1:83960ee4d9a2 | 362 | gps.printf("$%s*%02X%c%c",modeStr,sum,0x0d,0x0a); |
tosihisa | 1:83960ee4d9a2 | 363 | |
tosihisa | 1:83960ee4d9a2 | 364 | debug.printf("CHG BAUD:115200\n"); |
tosihisa | 1:83960ee4d9a2 | 365 | gps.format(8,Serial::None,1); |
tosihisa | 1:83960ee4d9a2 | 366 | gps.baud(115200); |
tosihisa | 1:83960ee4d9a2 | 367 | } |
tosihisa | 1:83960ee4d9a2 | 368 | |
tosihisa | 1:83960ee4d9a2 | 369 | gps.recvStart(); |
tosihisa | 1:83960ee4d9a2 | 370 | wait(0.5); |
tosihisa | 0:6089ae824f06 | 371 | |
tosihisa | 4:879b8dcfee15 | 372 | GPS_isRaw = 1; |
tosihisa | 1:83960ee4d9a2 | 373 | if(1){ |
tosihisa | 1:83960ee4d9a2 | 374 | unsigned char chkStr[][11] = { |
tosihisa | 4:879b8dcfee15 | 375 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x10,0x01,0xFF,0xFF }, //RXM-RAW (0x02 0x10) |
tosihisa | 4:879b8dcfee15 | 376 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x30,0x01,0xFF,0xFF }, //RXM-ALM (0x02 0x30) |
tosihisa | 4:879b8dcfee15 | 377 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x31,0x01,0xFF,0xFF }, //RXM-EPH (0x02 0x31) |
tosihisa | 1:83960ee4d9a2 | 378 | //{ 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x41,0x02,0xFF,0xFF }, |
tosihisa | 4:879b8dcfee15 | 379 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x11,0x01,0xFF,0xFF }, //RXM-SFRB (0x02 0x11) |
tosihisa | 4:879b8dcfee15 | 380 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x20,0x01,0xFF,0xFF }, //RXM-SVSI (0x02 0x20) |
tosihisa | 4:879b8dcfee15 | 381 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x01,0x21,0x01,0xFF,0xFF }, //NAV-TIMEUTC (0x01 0x21) |
tosihisa | 1:83960ee4d9a2 | 382 | { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF }, //END |
tosihisa | 1:83960ee4d9a2 | 383 | }; |
tosihisa | 1:83960ee4d9a2 | 384 | int i,j; |
tosihisa | 4:879b8dcfee15 | 385 | int isAck; |
tosihisa | 1:83960ee4d9a2 | 386 | |
tosihisa | 1:83960ee4d9a2 | 387 | for(j=0;chkStr[j][0] != 0x00;j++){ |
tosihisa | 1:83960ee4d9a2 | 388 | UBX_CalcSum(&chkStr[j][2],7,&chkStr[j][9]); |
tosihisa | 1:83960ee4d9a2 | 389 | for(i = 0; i < sizeof(chkStr[0]);i++){ |
tosihisa | 1:83960ee4d9a2 | 390 | gps.putc(chkStr[j][i]); |
tosihisa | 1:83960ee4d9a2 | 391 | } |
tosihisa | 4:879b8dcfee15 | 392 | isAck = UBX_WaitAck(&UBXPacket); |
tosihisa | 4:879b8dcfee15 | 393 | debug.printf("%d : SET UBX Rate : %s\n",j,(isAck == 1) ? "ACK" : "NAK"); |
tosihisa | 4:879b8dcfee15 | 394 | if(isAck != 1){ |
tosihisa | 4:879b8dcfee15 | 395 | GPS_isRaw = 0; |
tosihisa | 4:879b8dcfee15 | 396 | } |
tosihisa | 1:83960ee4d9a2 | 397 | } |
tosihisa | 1:83960ee4d9a2 | 398 | } |
tosihisa | 1:83960ee4d9a2 | 399 | UBXPacket.cjobst = 0; |
tosihisa | 5:3a1ce282892c | 400 | lcd.locate(0,2); |
tosihisa | 4:879b8dcfee15 | 401 | lcd.printf("Initalize GPS:%s",(GPS_isRaw) ? "OK" : "NG"); |
tosihisa | 4:879b8dcfee15 | 402 | |
tosihisa | 1:83960ee4d9a2 | 403 | // ad7994.Start(); |
tosihisa | 1:83960ee4d9a2 | 404 | |
tosihisa | 5:3a1ce282892c | 405 | //=================================================== |
tosihisa | 7:74ce774e53ef | 406 | #ifdef MICROSD_FORMAT |
tosihisa | 7:74ce774e53ef | 407 | lcd.locate(0,3); |
tosihisa | 7:74ce774e53ef | 408 | lcd.printf("Format MicroSD:"); |
tosihisa | 7:74ce774e53ef | 409 | sd.format(); |
tosihisa | 7:74ce774e53ef | 410 | lcd.locate(0,3); |
tosihisa | 7:74ce774e53ef | 411 | lcd.printf("Format MicroSD:Done"); |
tosihisa | 7:74ce774e53ef | 412 | wait(3.0); |
tosihisa | 7:74ce774e53ef | 413 | #endif |
tosihisa | 7:74ce774e53ef | 414 | |
tosihisa | 5:3a1ce282892c | 415 | #ifdef HAVE_MICROSD |
tosihisa | 5:3a1ce282892c | 416 | lcd.locate(0,3); |
tosihisa | 7:74ce774e53ef | 417 | lcd.printf("Check MicroSD: "); |
tosihisa | 5:3a1ce282892c | 418 | logFile_Init(); |
tosihisa | 5:3a1ce282892c | 419 | #endif |
tosihisa | 4:879b8dcfee15 | 420 | lcd.locate(0,3); |
tosihisa | 5:3a1ce282892c | 421 | switch(avaiableSD){ |
tosihisa | 4:879b8dcfee15 | 422 | case 0: |
tosihisa | 5:3a1ce282892c | 423 | lcd.printf("Check MicroSD:NG"); |
tosihisa | 4:879b8dcfee15 | 424 | break; |
tosihisa | 5:3a1ce282892c | 425 | case 1: |
tosihisa | 5:3a1ce282892c | 426 | lcd.printf("Check MicroSD:OK"); |
tosihisa | 4:879b8dcfee15 | 427 | break; |
tosihisa | 4:879b8dcfee15 | 428 | default: |
tosihisa | 6:4af28d398585 | 429 | lcd.printf("Check MicroSD:SKIP"); |
tosihisa | 4:879b8dcfee15 | 430 | break; |
tosihisa | 4:879b8dcfee15 | 431 | } |
tosihisa | 5:3a1ce282892c | 432 | |
tosihisa | 5:3a1ce282892c | 433 | //=================================================== |
tosihisa | 3:844fbe607dae | 434 | |
tosihisa | 4:879b8dcfee15 | 435 | wait(3.0); |
tosihisa | 4:879b8dcfee15 | 436 | |
tosihisa | 4:879b8dcfee15 | 437 | ClearScreen(); |
tosihisa | 4:879b8dcfee15 | 438 | |
tosihisa | 4:879b8dcfee15 | 439 | pre_sec = -1; |
tosihisa | 0:6089ae824f06 | 440 | while(1) { |
tosihisa | 0:6089ae824f06 | 441 | //lcd.cls(); |
tosihisa | 2:f546aaa0e1d5 | 442 | //lcd.locate(0,0); |
tosihisa | 2:f546aaa0e1d5 | 443 | //lcd.printf("SCAN:%-10ld",scanCount); |
tosihisa | 3:844fbe607dae | 444 | |
tosihisa | 3:844fbe607dae | 445 | logCheckProc(); |
tosihisa | 0:6089ae824f06 | 446 | |
tosihisa | 0:6089ae824f06 | 447 | while(gps.readable()) { |
tosihisa | 1:83960ee4d9a2 | 448 | c = gps.getc(); |
tosihisa | 1:83960ee4d9a2 | 449 | if(UBXPacket_Parse(&UBXPacket,c) == 100){ |
tosihisa | 2:f546aaa0e1d5 | 450 | UBXCount++; |
tosihisa | 4:879b8dcfee15 | 451 | if((UBXPacket.cls == 0x01) && (UBXPacket.id == 0x21)){ |
tosihisa | 4:879b8dcfee15 | 452 | /* NAV-TIMEUTC */ |
tosihisa | 4:879b8dcfee15 | 453 | year = (((unsigned short)UBXPacket.body[13]) << 8) | UBXPacket.body[12]; |
tosihisa | 4:879b8dcfee15 | 454 | mon = UBXPacket.body[14]; |
tosihisa | 4:879b8dcfee15 | 455 | day = UBXPacket.body[15]; |
tosihisa | 4:879b8dcfee15 | 456 | hour = UBXPacket.body[16]; |
tosihisa | 4:879b8dcfee15 | 457 | min = UBXPacket.body[17]; |
tosihisa | 4:879b8dcfee15 | 458 | sec = UBXPacket.body[18]; |
tosihisa | 4:879b8dcfee15 | 459 | } |
tosihisa | 1:83960ee4d9a2 | 460 | debug.printf("%ld : GET UBX Packet (Class=0x%02X,ID=0x%02X,LEN=%d)\n", |
tosihisa | 1:83960ee4d9a2 | 461 | scanCount, |
tosihisa | 1:83960ee4d9a2 | 462 | UBXPacket.cls, |
tosihisa | 1:83960ee4d9a2 | 463 | UBXPacket.id, |
tosihisa | 1:83960ee4d9a2 | 464 | UBXPacket.len ); |
tosihisa | 1:83960ee4d9a2 | 465 | UBXPacket.cjobst = 0; |
tosihisa | 1:83960ee4d9a2 | 466 | } |
tosihisa | 3:844fbe607dae | 467 | if(gpsFP != NULL){ |
tosihisa | 3:844fbe607dae | 468 | wbuf[widx] = c; |
tosihisa | 3:844fbe607dae | 469 | widx++; |
tosihisa | 3:844fbe607dae | 470 | if(widx >= sizeof(wbuf)){ |
tosihisa | 3:844fbe607dae | 471 | fwrite(&wbuf,sizeof(wbuf[0]),widx,gpsFP); |
tosihisa | 3:844fbe607dae | 472 | widx = 0; |
tosihisa | 3:844fbe607dae | 473 | } |
tosihisa | 3:844fbe607dae | 474 | } |
tosihisa | 0:6089ae824f06 | 475 | } |
tosihisa | 4:879b8dcfee15 | 476 | lcd.locate(0,0); |
tosihisa | 5:3a1ce282892c | 477 | lcd.printf("%c%04d-%02d-%02d %02d:%02d:%02d",(gpsFP) ? '*' : ' ',year,mon,day,hour,min,sec); |
tosihisa | 0:6089ae824f06 | 478 | |
tosihisa | 4:879b8dcfee15 | 479 | if(pre_sec != sec){ |
tosihisa | 4:879b8dcfee15 | 480 | pre_sec = sec; |
tosihisa | 4:879b8dcfee15 | 481 | |
tosihisa | 4:879b8dcfee15 | 482 | if(bmp085_find){ |
tosihisa | 4:879b8dcfee15 | 483 | float tmp1,tmp2; |
tosihisa | 4:879b8dcfee15 | 484 | bmp085.update(); |
tosihisa | 4:879b8dcfee15 | 485 | tmp1 = bmp085.get_pressure(); |
tosihisa | 4:879b8dcfee15 | 486 | tmp2 = bmp085.get_temperature(); |
tosihisa | 4:879b8dcfee15 | 487 | if(tmp2 < 100.0){ |
tosihisa | 4:879b8dcfee15 | 488 | p = tmp1; |
tosihisa | 4:879b8dcfee15 | 489 | t1 = tmp2; |
tosihisa | 4:879b8dcfee15 | 490 | } |
tosihisa | 4:879b8dcfee15 | 491 | } |
tosihisa | 4:879b8dcfee15 | 492 | lcd.locate(0,1); lcd.printf("%-8.2fhPa %-6.2fC", p, t1); |
tosihisa | 0:6089ae824f06 | 493 | |
tosihisa | 4:879b8dcfee15 | 494 | if(sht25_find){ |
tosihisa | 5:3a1ce282892c | 495 | if(sht25.SHT2x_MeasurePoll(TEMP,&temp) == 0){ |
tosihisa | 5:3a1ce282892c | 496 | t2 = sht25.SHT2x_CalcTemperatureC(temp); |
tosihisa | 5:3a1ce282892c | 497 | } |
tosihisa | 5:3a1ce282892c | 498 | if(sht25.SHT2x_MeasurePoll(HUMIDITY,&temp) == 0){ |
tosihisa | 5:3a1ce282892c | 499 | h = sht25.SHT2x_CalcRH(temp); |
tosihisa | 5:3a1ce282892c | 500 | } |
tosihisa | 5:3a1ce282892c | 501 | sht25.SHT2x_SoftReset(); |
tosihisa | 4:879b8dcfee15 | 502 | } |
tosihisa | 4:879b8dcfee15 | 503 | lcd.locate(0,2); lcd.printf("%-6.2fC %-6.2fRH", t2, h); |
tosihisa | 1:83960ee4d9a2 | 504 | |
tosihisa | 4:879b8dcfee15 | 505 | if(CO2_find){ |
tosihisa | 4:879b8dcfee15 | 506 | if((ret = CO2_Read(&CO2_val)) != 0){ |
tosihisa | 4:879b8dcfee15 | 507 | CO2_val = 0; |
tosihisa | 4:879b8dcfee15 | 508 | CO2_find = 0; |
tosihisa | 4:879b8dcfee15 | 509 | } |
tosihisa | 4:879b8dcfee15 | 510 | } |
tosihisa | 4:879b8dcfee15 | 511 | lcd.locate(0,3); lcd.printf("CO2:%5d.%1dppm\n",CO2_val/10,CO2_val%10); |
tosihisa | 0:6089ae824f06 | 512 | |
tosihisa | 4:879b8dcfee15 | 513 | if(csvFP){ |
tosihisa | 4:879b8dcfee15 | 514 | fprintf(csvFP,"%04d-%02d-%02d %02d:%02d:%02d,",year,mon,day,hour,min,sec); |
tosihisa | 3:844fbe607dae | 515 | fprintf(csvFP,"%-8.2f,hPa,%-6.2f,C,%-6.2f,C,%-6.2f,RH,%5d.%1d,ppm\x0d\x0a", p, t1, t2, h,CO2_val/10,CO2_val%10); |
tosihisa | 3:844fbe607dae | 516 | } |
tosihisa | 3:844fbe607dae | 517 | } |
tosihisa | 1:83960ee4d9a2 | 518 | #if 0 |
tosihisa | 0:6089ae824f06 | 519 | ad7994.update(); |
tosihisa | 0:6089ae824f06 | 520 | lcd.locate(0,3); |
tosihisa | 0:6089ae824f06 | 521 | lcd.printf("A/D:%04X/%04X", |
tosihisa | 0:6089ae824f06 | 522 | ad7994.readChn(0), |
tosihisa | 0:6089ae824f06 | 523 | ad7994.readChn(1)); |
tosihisa | 1:83960ee4d9a2 | 524 | #endif |
tosihisa | 3:844fbe607dae | 525 | myled = (hzCount & 1); |
tosihisa | 4:879b8dcfee15 | 526 | //wait(0.1); |
tosihisa | 0:6089ae824f06 | 527 | } |
tosihisa | 0:6089ae824f06 | 528 | } |
tosihisa | 2:f546aaa0e1d5 | 529 | |
tosihisa | 2:f546aaa0e1d5 | 530 | /* |
tosihisa | 7:74ce774e53ef | 531 | * 2012-2-11 V0.85 |
tosihisa | 7:74ce774e53ef | 532 | * SDFileSystem を ChaNFS ベースに変更した。 |
tosihisa | 7:74ce774e53ef | 533 | * 一番の理由はSDカードのフォーマットがしたいため。 |
tosihisa | 7:74ce774e53ef | 534 | * main.cpp に #define MICROSD_FORMAT を追加。 |
tosihisa | 7:74ce774e53ef | 535 | * これを有効にしてバイナリを作成すると、起動時に |
tosihisa | 7:74ce774e53ef | 536 | * SDカードのフォーマットをする(フォーマットには2,3分程かかる) |
tosihisa | 7:74ce774e53ef | 537 | */ |
tosihisa | 7:74ce774e53ef | 538 | /* |
tosihisa | 6:4af28d398585 | 539 | * 2012-2-10 V0.84 |
tosihisa | 6:4af28d398585 | 540 | * *GPSデータの保存拡張子を .GPS から .UBX に変更。 |
tosihisa | 6:4af28d398585 | 541 | * UBXバイナリである事を示す。rtklib で処理できることを確認。 |
tosihisa | 6:4af28d398585 | 542 | * *mbedライブラリ、FATFileSystemライブラリを最新に更新。 |
tosihisa | 6:4af28d398585 | 543 | */ |
tosihisa | 6:4af28d398585 | 544 | /* |
tosihisa | 5:3a1ce282892c | 545 | * 2012-2-5 V0.83 |
tosihisa | 5:3a1ce282892c | 546 | * センサー、I/Oの検出順番を変更(H/W 組立時の試験を兼ねる) |
tosihisa | 5:3a1ce282892c | 547 | * 下記の順番でセンサーやI/Oの検出をする。 |
tosihisa | 5:3a1ce282892c | 548 | * I2C → CO2センサー → U-Blox(raw-mode) → マイクロSD |
tosihisa | 5:3a1ce282892c | 549 | * マイクロSD が未装着でも U-Blox の raw-mode までは |
tosihisa | 5:3a1ce282892c | 550 | * 進めるので、H/W 組立後の基本チェックが可能。 |
tosihisa | 5:3a1ce282892c | 551 | */ |
tosihisa | 5:3a1ce282892c | 552 | /* |
tosihisa | 5:3a1ce282892c | 553 | * 2012-2-5 V0.82 |
tosihisa | 5:3a1ce282892c | 554 | * バイクによる実走試験での結果を反映。 |
tosihisa | 5:3a1ce282892c | 555 | * 1) ログボタンのON/OFFでLEDも光らせるが、ケースに収めると |
tosihisa | 5:3a1ce282892c | 556 | * LED だと分からなくなるので、液晶画面でもログのON/OFFが |
tosihisa | 5:3a1ce282892c | 557 | * 分かるようにした。ログをONすると、画面左上に'*'を出す。 |
tosihisa | 5:3a1ce282892c | 558 | * 2) SHT25 が、時々オフセットがかかったかの様な値を返すので、 |
tosihisa | 5:3a1ce282892c | 559 | * 下記の修正を行った。但しこの修正が確実かはまだ分からない。 |
tosihisa | 5:3a1ce282892c | 560 | * a) 関数の戻り値が正常な場合に値を採用する。これは必要。 |
tosihisa | 5:3a1ce282892c | 561 | * b) 温湿度の取得後、SHT25 に対してソフトリセット命令を |
tosihisa | 6:4af28d398585 | 562 | * 毎回送る。これでうまく行くようならこれでいく。 |
tosihisa | 6:4af28d398585 | 563 | * →2012-2-10 今のところ問題は見つからない。これで進める。 |
tosihisa | 5:3a1ce282892c | 564 | */ |
tosihisa | 5:3a1ce282892c | 565 | /* |
tosihisa | 4:879b8dcfee15 | 566 | * 2012-2-5 V0.81 |
tosihisa | 4:879b8dcfee15 | 567 | * 気圧センサーが時々不正な値を出力する。気温が100度を超える値になる。 |
tosihisa | 4:879b8dcfee15 | 568 | * ソフトバグか、センサー自身の問題かは切り分けていないが、気温が100度を |
tosihisa | 4:879b8dcfee15 | 569 | * 超えることはあり得ないので、100度を超える気温は値として採用しない様に |
tosihisa | 4:879b8dcfee15 | 570 | * した。 |
tosihisa | 4:879b8dcfee15 | 571 | */ |
tosihisa | 4:879b8dcfee15 | 572 | /* |
tosihisa | 4:879b8dcfee15 | 573 | * 2012-2-5 V0.8 |
tosihisa | 4:879b8dcfee15 | 574 | * 1) GPS レシーバ受信バッファが少ないので拡大(512->8K) |
tosihisa | 4:879b8dcfee15 | 575 | * 2) 起動時に、各センサーの接続チェックを行い、起動時に見つかった |
tosihisa | 4:879b8dcfee15 | 576 | * センサーとだけ通信するようにした。これにより CO2 センサーが |
tosihisa | 4:879b8dcfee15 | 577 | * 無くても動きます。 |
tosihisa | 4:879b8dcfee15 | 578 | * 3) NAV-TIMEUTC を受信し、表示するようにした。 |
tosihisa | 4:879b8dcfee15 | 579 | * 4) センサーデータのスキャンタイミングを、NAV-TIMEUTC の |
tosihisa | 4:879b8dcfee15 | 580 | * 秒が変わった直後とした。つまり1秒おきにセンサーデータを |
tosihisa | 4:879b8dcfee15 | 581 | * スキャンする。 |
tosihisa | 4:879b8dcfee15 | 582 | * 5) センサーデータの保存データ(ENVnnnnn.CSV) の先頭に |
tosihisa | 4:879b8dcfee15 | 583 | * NAV-TIMEUTC の日付時刻を入れるようにした。 |
tosihisa | 4:879b8dcfee15 | 584 | * これで何時何分のセンサーデータか分かるようにした。 |
tosihisa | 4:879b8dcfee15 | 585 | */ |
tosihisa | 4:879b8dcfee15 | 586 | /* |
tosihisa | 3:844fbe607dae | 587 | * 2012-1-29 V0.7 |
tosihisa | 3:844fbe607dae | 588 | * ログ機能の追加。スイッチを押すとログのON/OFFが出来る。 |
tosihisa | 3:844fbe607dae | 589 | * ログ収集中は、mbed LED3 が点灯する。 |
tosihisa | 3:844fbe607dae | 590 | */ |
tosihisa | 3:844fbe607dae | 591 | /* |
tosihisa | 3:844fbe607dae | 592 | * 2012-1-29 V0.6 |
tosihisa | 3:844fbe607dae | 593 | * 1) スキャンカウントの変更。今までは1秒周期だったが、 |
tosihisa | 3:844fbe607dae | 594 | * 100ミリ秒周期でセンサーデータを得るようにした。 |
tosihisa | 3:844fbe607dae | 595 | * 2) モーメンタリSW対応。 |
tosihisa | 3:844fbe607dae | 596 | */ |
tosihisa | 3:844fbe607dae | 597 | /* |
tosihisa | 2:f546aaa0e1d5 | 598 | * 2012-1-23 V0.5 |
tosihisa | 2:f546aaa0e1d5 | 599 | * U-Blox,気圧センサー,温度センサー,CO2センサーの値を表示するようにした。 |
tosihisa | 2:f546aaa0e1d5 | 600 | * U-Blox は受信できたパケット数を表示する。 |
tosihisa | 2:f546aaa0e1d5 | 601 | * マイクロSDへの保存機能はまだ(H/W的に動くのは確認済み) |
tosihisa | 2:f546aaa0e1d5 | 602 | */ |