Dependencies:   ChaNFSSD mbed BMP085 SHT2x

Committer:
tosihisa
Date:
Mon Feb 27 16:20:15 2012 +0000
Revision:
9:9ca3db7ed7cb
Parent:
8:fd243a6439f3
V0.89.2. GPS recv data is OK.

Who changed what in which revision?

UserRevisionLine numberNew 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 9:9ca3db7ed7cb 7 #define __MY_VERSION__ "0.89.2"
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 9:9ca3db7ed7cb 237 unsigned char wbuf[512];
tosihisa 9:9ca3db7ed7cb 238 int widx = 0;
tosihisa 9:9ca3db7ed7cb 239
tosihisa 9:9ca3db7ed7cb 240 int logBtnPush = 0;
tosihisa 9:9ca3db7ed7cb 241 int logBtnAck = 0;
tosihisa 9:9ca3db7ed7cb 242
tosihisa 9:9ca3db7ed7cb 243 void logOpenClose()
tosihisa 3:844fbe607dae 244 {
tosihisa 9:9ca3db7ed7cb 245 if(logBtnPush != logBtnAck){
tosihisa 3:844fbe607dae 246 if(csvFP != NULL){
tosihisa 3:844fbe607dae 247 fclose(csvFP);
tosihisa 3:844fbe607dae 248 csvFP = NULL;
tosihisa 3:844fbe607dae 249 if(gpsFP != NULL){
tosihisa 9:9ca3db7ed7cb 250 if(widx > 0){
tosihisa 9:9ca3db7ed7cb 251 fwrite(&wbuf,sizeof(wbuf[0]),widx,gpsFP);
tosihisa 9:9ca3db7ed7cb 252 widx = 0;
tosihisa 9:9ca3db7ed7cb 253 }
tosihisa 3:844fbe607dae 254 fclose(gpsFP);
tosihisa 3:844fbe607dae 255 gpsFP = NULL;
tosihisa 3:844fbe607dae 256 }
tosihisa 3:844fbe607dae 257 logled = 0; /* No logging */
tosihisa 3:844fbe607dae 258 logNextCount++;
tosihisa 3:844fbe607dae 259 } else {
tosihisa 3:844fbe607dae 260 char name[64];
tosihisa 3:844fbe607dae 261 sprintf(name,"/%s/ENV%05d.CSV",_USE_FS_NAME,logNextCount);
tosihisa 3:844fbe607dae 262 csvFP = fopen(name,"w+b");
tosihisa 6:4af28d398585 263 sprintf(name,"/%s/ENV%05d.UBX",_USE_FS_NAME,logNextCount);
tosihisa 3:844fbe607dae 264 gpsFP = fopen(name,"w+b");
tosihisa 3:844fbe607dae 265 if((csvFP != NULL) && (gpsFP != NULL)){
tosihisa 3:844fbe607dae 266 logled = 1; /* logging */
tosihisa 9:9ca3db7ed7cb 267 widx = 0; /* buffer clear */
tosihisa 3:844fbe607dae 268 } else {
tosihisa 3:844fbe607dae 269 if(csvFP) fclose(csvFP);
tosihisa 3:844fbe607dae 270 if(gpsFP) fclose(gpsFP);
tosihisa 3:844fbe607dae 271 logled = 0; /* Cannot start logging */
tosihisa 3:844fbe607dae 272 }
tosihisa 3:844fbe607dae 273 }
tosihisa 9:9ca3db7ed7cb 274 logBtnAck = logBtnPush;
tosihisa 9:9ca3db7ed7cb 275 }
tosihisa 9:9ca3db7ed7cb 276 }
tosihisa 9:9ca3db7ed7cb 277
tosihisa 9:9ca3db7ed7cb 278 void logBtnUpdate()
tosihisa 9:9ca3db7ed7cb 279 {
tosihisa 9:9ca3db7ed7cb 280 if((logSW == 0) && (toggleSW_now != 0)){
tosihisa 9:9ca3db7ed7cb 281 logBtnPush++;
tosihisa 3:844fbe607dae 282 }
tosihisa 3:844fbe607dae 283 logSW = toggleSW_now;
tosihisa 1:83960ee4d9a2 284 }
tosihisa 1:83960ee4d9a2 285
tosihisa 4:879b8dcfee15 286 void ClearScreen(void)
tosihisa 4:879b8dcfee15 287 {
tosihisa 4:879b8dcfee15 288 lcd.locate(0,0); lcd.printf("%20s"," ");
tosihisa 4:879b8dcfee15 289 lcd.locate(0,1); lcd.printf("%20s"," ");
tosihisa 4:879b8dcfee15 290 lcd.locate(0,2); lcd.printf("%20s"," ");
tosihisa 4:879b8dcfee15 291 lcd.locate(0,3); lcd.printf("%20s"," ");
tosihisa 4:879b8dcfee15 292 }
tosihisa 4:879b8dcfee15 293
tosihisa 0:6089ae824f06 294 int main() {
tosihisa 0:6089ae824f06 295 int ret = 0;
tosihisa 3:844fbe607dae 296 float p, t1;
tosihisa 3:844fbe607dae 297 float h, t2;
tosihisa 0:6089ae824f06 298 int temp;
tosihisa 4:879b8dcfee15 299 unsigned short CO2_val = 0;
tosihisa 1:83960ee4d9a2 300 char c;
tosihisa 2:f546aaa0e1d5 301 unsigned long UBXCount = 0;
tosihisa 4:879b8dcfee15 302 int GPS_isRaw = 0;
tosihisa 4:879b8dcfee15 303 int CO2_find = 0;
tosihisa 4:879b8dcfee15 304 int year=0;
tosihisa 4:879b8dcfee15 305 int mon=0;
tosihisa 4:879b8dcfee15 306 int day=0;
tosihisa 4:879b8dcfee15 307 int hour=0;
tosihisa 4:879b8dcfee15 308 int min=0;
tosihisa 4:879b8dcfee15 309 int sec=0;
tosihisa 4:879b8dcfee15 310 int pre_sec = -1;
tosihisa 9:9ca3db7ed7cb 311 struct tm t;
tosihisa 0:6089ae824f06 312
tosihisa 4:879b8dcfee15 313 p = -99.0;
tosihisa 4:879b8dcfee15 314 t1 = -99.0;
tosihisa 4:879b8dcfee15 315 t2 = -99.0;
tosihisa 4:879b8dcfee15 316 h = -99.0;
tosihisa 4:879b8dcfee15 317
tosihisa 3:844fbe607dae 318 tick.attach_us(&tickHandler,(10*1000));
tosihisa 3:844fbe607dae 319
tosihisa 0:6089ae824f06 320 debug.format(8,Serial::None,1);
tosihisa 0:6089ae824f06 321 debug.baud(115200);
tosihisa 4:879b8dcfee15 322 debug.printf("ENV Logger \"%s\" Start (BUILD:[" __DATE__ "/" __TIME__ "])\n",__MY_VERSION__);
tosihisa 0:6089ae824f06 323
tosihisa 0:6089ae824f06 324 lcd.locate(0,0);
tosihisa 4:879b8dcfee15 325 lcd.printf("ENV Logger \"%s\"",__MY_VERSION__);
tosihisa 2:f546aaa0e1d5 326
tosihisa 2:f546aaa0e1d5 327 lcd.locate(0,1);
tosihisa 2:f546aaa0e1d5 328 lcd.printf("WAKE UP I/O...");
tosihisa 1:83960ee4d9a2 329 wait(5.0);
tosihisa 0:6089ae824f06 330
tosihisa 4:879b8dcfee15 331 ClearScreen();
tosihisa 4:879b8dcfee15 332
tosihisa 5:3a1ce282892c 333 //===================================================
tosihisa 5:3a1ce282892c 334 i2c_found();
tosihisa 5:3a1ce282892c 335
tosihisa 5:3a1ce282892c 336 //===================================================
tosihisa 5:3a1ce282892c 337 CO2.format(8,Serial::None,1);
tosihisa 5:3a1ce282892c 338 CO2.baud(9600);
tosihisa 5:3a1ce282892c 339 CO2.recvStart();
tosihisa 5:3a1ce282892c 340
tosihisa 5:3a1ce282892c 341 lcd.locate(0,1);
tosihisa 5:3a1ce282892c 342 lcd.printf("Check CO2:");
tosihisa 5:3a1ce282892c 343 CO2_find = 0;
tosihisa 5:3a1ce282892c 344 ret = CO2_Read(&CO2_val);
tosihisa 5:3a1ce282892c 345 switch(ret){
tosihisa 3:844fbe607dae 346 case 0:
tosihisa 5:3a1ce282892c 347 lcd.printf("OK");
tosihisa 5:3a1ce282892c 348 CO2_find = 1;
tosihisa 3:844fbe607dae 349 break;
tosihisa 5:3a1ce282892c 350 case -99:
tosihisa 5:3a1ce282892c 351 lcd.printf("NOT FOUND");
tosihisa 3:844fbe607dae 352 break;
tosihisa 3:844fbe607dae 353 default:
tosihisa 5:3a1ce282892c 354 lcd.printf("NG");
tosihisa 3:844fbe607dae 355 break;
tosihisa 3:844fbe607dae 356 }
tosihisa 5:3a1ce282892c 357 CO2_val = 0;
tosihisa 5:3a1ce282892c 358
tosihisa 5:3a1ce282892c 359 //===================================================
tosihisa 5:3a1ce282892c 360 lcd.locate(0,2);
tosihisa 4:879b8dcfee15 361 lcd.printf("Initalize GPS:");
tosihisa 2:f546aaa0e1d5 362
tosihisa 1:83960ee4d9a2 363 UBXPacket.cjobst = 0;
tosihisa 1:83960ee4d9a2 364
tosihisa 0:6089ae824f06 365 gps_pps.rise(gps_pps_rise);
tosihisa 0:6089ae824f06 366 gps.format(8,Serial::None,1);
tosihisa 0:6089ae824f06 367 gps.baud(9600);
tosihisa 0:6089ae824f06 368
tosihisa 0:6089ae824f06 369 gps_reset = 1;
tosihisa 0:6089ae824f06 370 wait(0.5);
tosihisa 0:6089ae824f06 371 gps_reset = 0;
tosihisa 0:6089ae824f06 372
tosihisa 1:83960ee4d9a2 373 wait(0.5);
tosihisa 1:83960ee4d9a2 374 if(1){
tosihisa 1:83960ee4d9a2 375 //unsigned char modeStr[] = "PUBX,41,1,0007,0003,115200,0";
tosihisa 9:9ca3db7ed7cb 376 //unsigned char modeStr[] = "PUBX,41,1,0007,0001,115200,0";
tosihisa 9:9ca3db7ed7cb 377 unsigned char modeStr[] = "PUBX,41,1,0007,0001,38400,0";
tosihisa 1:83960ee4d9a2 378 unsigned char sum = NMEA_CalcSum(modeStr,strlen((char *)modeStr));
tosihisa 1:83960ee4d9a2 379 debug.printf("SEND:[%s](0x%02X)\n",modeStr,sum);
tosihisa 1:83960ee4d9a2 380 gps.printf("$%s*%02X%c%c",modeStr,sum,0x0d,0x0a);
tosihisa 1:83960ee4d9a2 381
tosihisa 1:83960ee4d9a2 382 debug.printf("CHG BAUD:115200\n");
tosihisa 1:83960ee4d9a2 383 gps.format(8,Serial::None,1);
tosihisa 9:9ca3db7ed7cb 384 gps.baud(38400);
tosihisa 1:83960ee4d9a2 385 }
tosihisa 1:83960ee4d9a2 386
tosihisa 1:83960ee4d9a2 387 gps.recvStart();
tosihisa 1:83960ee4d9a2 388 wait(0.5);
tosihisa 0:6089ae824f06 389
tosihisa 4:879b8dcfee15 390 GPS_isRaw = 1;
tosihisa 1:83960ee4d9a2 391 if(1){
tosihisa 1:83960ee4d9a2 392 unsigned char chkStr[][11] = {
tosihisa 4:879b8dcfee15 393 { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x10,0x01,0xFF,0xFF }, //RXM-RAW (0x02 0x10)
tosihisa 4:879b8dcfee15 394 { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x30,0x01,0xFF,0xFF }, //RXM-ALM (0x02 0x30)
tosihisa 8:fd243a6439f3 395 //{ 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x31,0x01,0xFF,0xFF }, //RXM-EPH (0x02 0x31)
tosihisa 1:83960ee4d9a2 396 //{ 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x41,0x02,0xFF,0xFF },
tosihisa 4:879b8dcfee15 397 { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x11,0x01,0xFF,0xFF }, //RXM-SFRB (0x02 0x11)
tosihisa 4:879b8dcfee15 398 { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x20,0x01,0xFF,0xFF }, //RXM-SVSI (0x02 0x20)
tosihisa 4:879b8dcfee15 399 { 0xB5,0x62,0x06,0x01,0x03,0x00,0x01,0x21,0x01,0xFF,0xFF }, //NAV-TIMEUTC (0x01 0x21)
tosihisa 1:83960ee4d9a2 400 { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF }, //END
tosihisa 1:83960ee4d9a2 401 };
tosihisa 1:83960ee4d9a2 402 int i,j;
tosihisa 4:879b8dcfee15 403 int isAck;
tosihisa 1:83960ee4d9a2 404
tosihisa 1:83960ee4d9a2 405 for(j=0;chkStr[j][0] != 0x00;j++){
tosihisa 1:83960ee4d9a2 406 UBX_CalcSum(&chkStr[j][2],7,&chkStr[j][9]);
tosihisa 1:83960ee4d9a2 407 for(i = 0; i < sizeof(chkStr[0]);i++){
tosihisa 1:83960ee4d9a2 408 gps.putc(chkStr[j][i]);
tosihisa 1:83960ee4d9a2 409 }
tosihisa 4:879b8dcfee15 410 isAck = UBX_WaitAck(&UBXPacket);
tosihisa 4:879b8dcfee15 411 debug.printf("%d : SET UBX Rate : %s\n",j,(isAck == 1) ? "ACK" : "NAK");
tosihisa 4:879b8dcfee15 412 if(isAck != 1){
tosihisa 4:879b8dcfee15 413 GPS_isRaw = 0;
tosihisa 4:879b8dcfee15 414 }
tosihisa 1:83960ee4d9a2 415 }
tosihisa 1:83960ee4d9a2 416 }
tosihisa 1:83960ee4d9a2 417 UBXPacket.cjobst = 0;
tosihisa 5:3a1ce282892c 418 lcd.locate(0,2);
tosihisa 4:879b8dcfee15 419 lcd.printf("Initalize GPS:%s",(GPS_isRaw) ? "OK" : "NG");
tosihisa 4:879b8dcfee15 420
tosihisa 1:83960ee4d9a2 421 // ad7994.Start();
tosihisa 1:83960ee4d9a2 422
tosihisa 5:3a1ce282892c 423 //===================================================
tosihisa 7:74ce774e53ef 424 #ifdef MICROSD_FORMAT
tosihisa 7:74ce774e53ef 425 lcd.locate(0,3);
tosihisa 7:74ce774e53ef 426 lcd.printf("Format MicroSD:");
tosihisa 7:74ce774e53ef 427 sd.format();
tosihisa 7:74ce774e53ef 428 lcd.locate(0,3);
tosihisa 7:74ce774e53ef 429 lcd.printf("Format MicroSD:Done");
tosihisa 7:74ce774e53ef 430 wait(3.0);
tosihisa 7:74ce774e53ef 431 #endif
tosihisa 7:74ce774e53ef 432
tosihisa 5:3a1ce282892c 433 #ifdef HAVE_MICROSD
tosihisa 5:3a1ce282892c 434 lcd.locate(0,3);
tosihisa 7:74ce774e53ef 435 lcd.printf("Check MicroSD: ");
tosihisa 5:3a1ce282892c 436 logFile_Init();
tosihisa 5:3a1ce282892c 437 #endif
tosihisa 4:879b8dcfee15 438 lcd.locate(0,3);
tosihisa 5:3a1ce282892c 439 switch(avaiableSD){
tosihisa 4:879b8dcfee15 440 case 0:
tosihisa 5:3a1ce282892c 441 lcd.printf("Check MicroSD:NG");
tosihisa 4:879b8dcfee15 442 break;
tosihisa 5:3a1ce282892c 443 case 1:
tosihisa 5:3a1ce282892c 444 lcd.printf("Check MicroSD:OK");
tosihisa 4:879b8dcfee15 445 break;
tosihisa 4:879b8dcfee15 446 default:
tosihisa 6:4af28d398585 447 lcd.printf("Check MicroSD:SKIP");
tosihisa 4:879b8dcfee15 448 break;
tosihisa 4:879b8dcfee15 449 }
tosihisa 5:3a1ce282892c 450
tosihisa 5:3a1ce282892c 451 //===================================================
tosihisa 3:844fbe607dae 452
tosihisa 4:879b8dcfee15 453 wait(3.0);
tosihisa 4:879b8dcfee15 454
tosihisa 4:879b8dcfee15 455 ClearScreen();
tosihisa 4:879b8dcfee15 456
tosihisa 4:879b8dcfee15 457 pre_sec = -1;
tosihisa 0:6089ae824f06 458 while(1) {
tosihisa 0:6089ae824f06 459 //lcd.cls();
tosihisa 2:f546aaa0e1d5 460 //lcd.locate(0,0);
tosihisa 2:f546aaa0e1d5 461 //lcd.printf("SCAN:%-10ld",scanCount);
tosihisa 3:844fbe607dae 462
tosihisa 9:9ca3db7ed7cb 463 logBtnUpdate();
tosihisa 0:6089ae824f06 464
tosihisa 0:6089ae824f06 465 while(gps.readable()) {
tosihisa 1:83960ee4d9a2 466 c = gps.getc();
tosihisa 9:9ca3db7ed7cb 467 if(gpsFP != NULL){
tosihisa 9:9ca3db7ed7cb 468 wbuf[widx] = c;
tosihisa 9:9ca3db7ed7cb 469 widx++;
tosihisa 9:9ca3db7ed7cb 470 if(widx >= sizeof(wbuf)){
tosihisa 9:9ca3db7ed7cb 471 fwrite(wbuf,sizeof(wbuf[0]),widx,gpsFP);
tosihisa 9:9ca3db7ed7cb 472 widx = 0;
tosihisa 9:9ca3db7ed7cb 473 }
tosihisa 9:9ca3db7ed7cb 474 }
tosihisa 1:83960ee4d9a2 475 if(UBXPacket_Parse(&UBXPacket,c) == 100){
tosihisa 2:f546aaa0e1d5 476 UBXCount++;
tosihisa 4:879b8dcfee15 477 if((UBXPacket.cls == 0x01) && (UBXPacket.id == 0x21)){
tosihisa 4:879b8dcfee15 478 /* NAV-TIMEUTC */
tosihisa 4:879b8dcfee15 479 year = (((unsigned short)UBXPacket.body[13]) << 8) | UBXPacket.body[12];
tosihisa 4:879b8dcfee15 480 mon = UBXPacket.body[14];
tosihisa 4:879b8dcfee15 481 day = UBXPacket.body[15];
tosihisa 4:879b8dcfee15 482 hour = UBXPacket.body[16];
tosihisa 4:879b8dcfee15 483 min = UBXPacket.body[17];
tosihisa 4:879b8dcfee15 484 sec = UBXPacket.body[18];
tosihisa 9:9ca3db7ed7cb 485
tosihisa 9:9ca3db7ed7cb 486 t.tm_sec = sec; // 0-59
tosihisa 9:9ca3db7ed7cb 487 t.tm_min = min; // 0-59
tosihisa 9:9ca3db7ed7cb 488 t.tm_hour = hour; // 0-23
tosihisa 9:9ca3db7ed7cb 489 t.tm_mday = day; // 1-31
tosihisa 9:9ca3db7ed7cb 490 t.tm_mon = mon-1; // 0-11
tosihisa 9:9ca3db7ed7cb 491 t.tm_year = year-1900; // year since 1900
tosihisa 9:9ca3db7ed7cb 492 set_time(mktime(&t));
tosihisa 4:879b8dcfee15 493 }
tosihisa 1:83960ee4d9a2 494 debug.printf("%ld : GET UBX Packet (Class=0x%02X,ID=0x%02X,LEN=%d)\n",
tosihisa 1:83960ee4d9a2 495 scanCount,
tosihisa 1:83960ee4d9a2 496 UBXPacket.cls,
tosihisa 1:83960ee4d9a2 497 UBXPacket.id,
tosihisa 1:83960ee4d9a2 498 UBXPacket.len );
tosihisa 1:83960ee4d9a2 499 UBXPacket.cjobst = 0;
tosihisa 1:83960ee4d9a2 500 }
tosihisa 0:6089ae824f06 501 }
tosihisa 9:9ca3db7ed7cb 502 if(UBXPacket.cjobst == 0){
tosihisa 9:9ca3db7ed7cb 503 logOpenClose();
tosihisa 9:9ca3db7ed7cb 504 }
tosihisa 9:9ca3db7ed7cb 505
tosihisa 4:879b8dcfee15 506 lcd.locate(0,0);
tosihisa 5:3a1ce282892c 507 lcd.printf("%c%04d-%02d-%02d %02d:%02d:%02d",(gpsFP) ? '*' : ' ',year,mon,day,hour,min,sec);
tosihisa 0:6089ae824f06 508
tosihisa 4:879b8dcfee15 509 if(pre_sec != sec){
tosihisa 4:879b8dcfee15 510 pre_sec = sec;
tosihisa 4:879b8dcfee15 511
tosihisa 4:879b8dcfee15 512 if(bmp085_find){
tosihisa 4:879b8dcfee15 513 float tmp1,tmp2;
tosihisa 4:879b8dcfee15 514 bmp085.update();
tosihisa 4:879b8dcfee15 515 tmp1 = bmp085.get_pressure();
tosihisa 4:879b8dcfee15 516 tmp2 = bmp085.get_temperature();
tosihisa 4:879b8dcfee15 517 if(tmp2 < 100.0){
tosihisa 4:879b8dcfee15 518 p = tmp1;
tosihisa 4:879b8dcfee15 519 t1 = tmp2;
tosihisa 4:879b8dcfee15 520 }
tosihisa 4:879b8dcfee15 521 }
tosihisa 4:879b8dcfee15 522 lcd.locate(0,1); lcd.printf("%-8.2fhPa %-6.2fC", p, t1);
tosihisa 0:6089ae824f06 523
tosihisa 4:879b8dcfee15 524 if(sht25_find){
tosihisa 5:3a1ce282892c 525 if(sht25.SHT2x_MeasurePoll(TEMP,&temp) == 0){
tosihisa 5:3a1ce282892c 526 t2 = sht25.SHT2x_CalcTemperatureC(temp);
tosihisa 5:3a1ce282892c 527 }
tosihisa 5:3a1ce282892c 528 if(sht25.SHT2x_MeasurePoll(HUMIDITY,&temp) == 0){
tosihisa 5:3a1ce282892c 529 h = sht25.SHT2x_CalcRH(temp);
tosihisa 5:3a1ce282892c 530 }
tosihisa 5:3a1ce282892c 531 sht25.SHT2x_SoftReset();
tosihisa 4:879b8dcfee15 532 }
tosihisa 4:879b8dcfee15 533 lcd.locate(0,2); lcd.printf("%-6.2fC %-6.2fRH", t2, h);
tosihisa 1:83960ee4d9a2 534
tosihisa 4:879b8dcfee15 535 if(CO2_find){
tosihisa 4:879b8dcfee15 536 if((ret = CO2_Read(&CO2_val)) != 0){
tosihisa 4:879b8dcfee15 537 CO2_val = 0;
tosihisa 4:879b8dcfee15 538 CO2_find = 0;
tosihisa 4:879b8dcfee15 539 }
tosihisa 4:879b8dcfee15 540 }
tosihisa 4:879b8dcfee15 541 lcd.locate(0,3); lcd.printf("CO2:%5d.%1dppm\n",CO2_val/10,CO2_val%10);
tosihisa 0:6089ae824f06 542
tosihisa 4:879b8dcfee15 543 if(csvFP){
tosihisa 4:879b8dcfee15 544 fprintf(csvFP,"%04d-%02d-%02d %02d:%02d:%02d,",year,mon,day,hour,min,sec);
tosihisa 3:844fbe607dae 545 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 546 }
tosihisa 3:844fbe607dae 547 }
tosihisa 1:83960ee4d9a2 548 #if 0
tosihisa 0:6089ae824f06 549 ad7994.update();
tosihisa 0:6089ae824f06 550 lcd.locate(0,3);
tosihisa 0:6089ae824f06 551 lcd.printf("A/D:%04X/%04X",
tosihisa 0:6089ae824f06 552 ad7994.readChn(0),
tosihisa 0:6089ae824f06 553 ad7994.readChn(1));
tosihisa 1:83960ee4d9a2 554 #endif
tosihisa 3:844fbe607dae 555 myled = (hzCount & 1);
tosihisa 4:879b8dcfee15 556 //wait(0.1);
tosihisa 0:6089ae824f06 557 }
tosihisa 0:6089ae824f06 558 }
tosihisa 2:f546aaa0e1d5 559
tosihisa 2:f546aaa0e1d5 560 /*
tosihisa 9:9ca3db7ed7cb 561 * 2012-2-26 V0.89.2
tosihisa 9:9ca3db7ed7cb 562 * ●ログデータの保存開始・終了のタイミングを変更。
tosihisa 9:9ca3db7ed7cb 563 * ublox のパケットデータ単位で保存開始・終了するようにした。
tosihisa 9:9ca3db7ed7cb 564 * 今まではバイト単位で保存開始・終了していたため、タイミングに
tosihisa 9:9ca3db7ed7cb 565 * よっては先頭と最後が正しく記録できていなかった。
tosihisa 9:9ca3db7ed7cb 566 * ●ublox の受信ボーレートを 115200bps から 38400bps に変更。
tosihisa 9:9ca3db7ed7cb 567 * なるべく負荷を下げるため。
tosihisa 9:9ca3db7ed7cb 568 * ●ファイル保存用のバッファも 1024 から 512 に変更。
tosihisa 9:9ca3db7ed7cb 569 * これもなるべく負荷を下げるため。
tosihisa 9:9ca3db7ed7cb 570 * 正しく記録出来なかったのはファイル保存用のバッファサイズによる模様。
tosihisa 9:9ca3db7ed7cb 571 * このバージョンで、10分間記録する分には特にエラーは発生していない。
tosihisa 9:9ca3db7ed7cb 572 * このバージョンで長時間ログ採取テストを行う。
tosihisa 9:9ca3db7ed7cb 573 */
tosihisa 9:9ca3db7ed7cb 574 /*
tosihisa 9:9ca3db7ed7cb 575 * 2012-2-26 V0.88
tosihisa 9:9ca3db7ed7cb 576 * ublox から受診した日付時刻を RTC に保存するようにした。
tosihisa 9:9ca3db7ed7cb 577 * ファイルの日付をRTCに保存している日付を設定するようにした。
tosihisa 9:9ca3db7ed7cb 578 * これで、マイクロSDをパソコンで見るとき、ファイルの日付が
tosihisa 9:9ca3db7ed7cb 579 * 正しく記録される。
tosihisa 9:9ca3db7ed7cb 580 */
tosihisa 9:9ca3db7ed7cb 581 /* V0.87 is nothing... */
tosihisa 9:9ca3db7ed7cb 582 /*
tosihisa 8:fd243a6439f3 583 * 2012-2-23 V0.86
tosihisa 8:fd243a6439f3 584 * Eugenio さんからの連絡で、RXM-EPH は
tosihisa 8:fd243a6439f3 585 * 受信する必要が無いので受信しないようにした。
tosihisa 8:fd243a6439f3 586 */
tosihisa 8:fd243a6439f3 587 /*
tosihisa 7:74ce774e53ef 588 * 2012-2-11 V0.85
tosihisa 7:74ce774e53ef 589 * SDFileSystem を ChaNFS ベースに変更した。
tosihisa 7:74ce774e53ef 590 * 一番の理由はSDカードのフォーマットがしたいため。
tosihisa 7:74ce774e53ef 591 * main.cpp に #define MICROSD_FORMAT を追加。
tosihisa 7:74ce774e53ef 592 * これを有効にしてバイナリを作成すると、起動時に
tosihisa 7:74ce774e53ef 593 * SDカードのフォーマットをする(フォーマットには2,3分程かかる)
tosihisa 7:74ce774e53ef 594 */
tosihisa 7:74ce774e53ef 595 /*
tosihisa 6:4af28d398585 596 * 2012-2-10 V0.84
tosihisa 6:4af28d398585 597 * *GPSデータの保存拡張子を .GPS から .UBX に変更。
tosihisa 6:4af28d398585 598 * UBXバイナリである事を示す。rtklib で処理できることを確認。
tosihisa 6:4af28d398585 599 * *mbedライブラリ、FATFileSystemライブラリを最新に更新。
tosihisa 6:4af28d398585 600 */
tosihisa 6:4af28d398585 601 /*
tosihisa 5:3a1ce282892c 602 * 2012-2-5 V0.83
tosihisa 5:3a1ce282892c 603 * センサー、I/Oの検出順番を変更(H/W 組立時の試験を兼ねる)
tosihisa 5:3a1ce282892c 604 * 下記の順番でセンサーやI/Oの検出をする。
tosihisa 5:3a1ce282892c 605 * I2C → CO2センサー → U-Blox(raw-mode) → マイクロSD
tosihisa 5:3a1ce282892c 606 * マイクロSD が未装着でも U-Blox の raw-mode までは
tosihisa 5:3a1ce282892c 607 * 進めるので、H/W 組立後の基本チェックが可能。
tosihisa 5:3a1ce282892c 608 */
tosihisa 5:3a1ce282892c 609 /*
tosihisa 5:3a1ce282892c 610 * 2012-2-5 V0.82
tosihisa 5:3a1ce282892c 611 * バイクによる実走試験での結果を反映。
tosihisa 5:3a1ce282892c 612 * 1) ログボタンのON/OFFでLEDも光らせるが、ケースに収めると
tosihisa 5:3a1ce282892c 613 * LED だと分からなくなるので、液晶画面でもログのON/OFFが
tosihisa 5:3a1ce282892c 614 * 分かるようにした。ログをONすると、画面左上に'*'を出す。
tosihisa 5:3a1ce282892c 615 * 2) SHT25 が、時々オフセットがかかったかの様な値を返すので、
tosihisa 5:3a1ce282892c 616 * 下記の修正を行った。但しこの修正が確実かはまだ分からない。
tosihisa 5:3a1ce282892c 617 * a) 関数の戻り値が正常な場合に値を採用する。これは必要。
tosihisa 5:3a1ce282892c 618 * b) 温湿度の取得後、SHT25 に対してソフトリセット命令を
tosihisa 6:4af28d398585 619 * 毎回送る。これでうまく行くようならこれでいく。
tosihisa 6:4af28d398585 620 * →2012-2-10 今のところ問題は見つからない。これで進める。
tosihisa 5:3a1ce282892c 621 */
tosihisa 5:3a1ce282892c 622 /*
tosihisa 4:879b8dcfee15 623 * 2012-2-5 V0.81
tosihisa 4:879b8dcfee15 624 * 気圧センサーが時々不正な値を出力する。気温が100度を超える値になる。
tosihisa 4:879b8dcfee15 625 * ソフトバグか、センサー自身の問題かは切り分けていないが、気温が100度を
tosihisa 4:879b8dcfee15 626 * 超えることはあり得ないので、100度を超える気温は値として採用しない様に
tosihisa 4:879b8dcfee15 627 * した。
tosihisa 4:879b8dcfee15 628 */
tosihisa 4:879b8dcfee15 629 /*
tosihisa 4:879b8dcfee15 630 * 2012-2-5 V0.8
tosihisa 4:879b8dcfee15 631 * 1) GPS レシーバ受信バッファが少ないので拡大(512->8K)
tosihisa 4:879b8dcfee15 632 * 2) 起動時に、各センサーの接続チェックを行い、起動時に見つかった
tosihisa 4:879b8dcfee15 633 * センサーとだけ通信するようにした。これにより CO2 センサーが
tosihisa 4:879b8dcfee15 634 * 無くても動きます。
tosihisa 4:879b8dcfee15 635 * 3) NAV-TIMEUTC を受信し、表示するようにした。
tosihisa 4:879b8dcfee15 636 * 4) センサーデータのスキャンタイミングを、NAV-TIMEUTC の
tosihisa 4:879b8dcfee15 637 * 秒が変わった直後とした。つまり1秒おきにセンサーデータを
tosihisa 4:879b8dcfee15 638 * スキャンする。
tosihisa 4:879b8dcfee15 639 * 5) センサーデータの保存データ(ENVnnnnn.CSV) の先頭に
tosihisa 4:879b8dcfee15 640 * NAV-TIMEUTC の日付時刻を入れるようにした。
tosihisa 4:879b8dcfee15 641 * これで何時何分のセンサーデータか分かるようにした。
tosihisa 4:879b8dcfee15 642 */
tosihisa 4:879b8dcfee15 643 /*
tosihisa 3:844fbe607dae 644 * 2012-1-29 V0.7
tosihisa 3:844fbe607dae 645 * ログ機能の追加。スイッチを押すとログのON/OFFが出来る。
tosihisa 3:844fbe607dae 646 * ログ収集中は、mbed LED3 が点灯する。
tosihisa 3:844fbe607dae 647 */
tosihisa 3:844fbe607dae 648 /*
tosihisa 3:844fbe607dae 649 * 2012-1-29 V0.6
tosihisa 3:844fbe607dae 650 * 1) スキャンカウントの変更。今までは1秒周期だったが、
tosihisa 3:844fbe607dae 651 * 100ミリ秒周期でセンサーデータを得るようにした。
tosihisa 3:844fbe607dae 652 * 2) モーメンタリSW対応。
tosihisa 3:844fbe607dae 653 */
tosihisa 3:844fbe607dae 654 /*
tosihisa 2:f546aaa0e1d5 655 * 2012-1-23 V0.5
tosihisa 2:f546aaa0e1d5 656 * U-Blox,気圧センサー,温度センサー,CO2センサーの値を表示するようにした。
tosihisa 2:f546aaa0e1d5 657 * U-Blox は受信できたパケット数を表示する。
tosihisa 2:f546aaa0e1d5 658 * マイクロSDへの保存機能はまだ(H/W的に動くのは確認済み)
tosihisa 2:f546aaa0e1d5 659 */