Dependencies: ChaNFSSD mbed BMP085 SHT2x
main.cpp@2:f546aaa0e1d5, 2012-01-23 (annotated)
- Committer:
- tosihisa
- Date:
- Mon Jan 23 15:04:58 2012 +0000
- Revision:
- 2:f546aaa0e1d5
- Parent:
- 1:83960ee4d9a2
- Child:
- 3:844fbe607dae
ENV Logger v0.5
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 | 0:6089ae824f06 | 6 | #include "mbed.h" |
tosihisa | 0:6089ae824f06 | 7 | #include "NMEA_parse.h" |
tosihisa | 0:6089ae824f06 | 8 | #include "SDFileSystem.h" |
tosihisa | 0:6089ae824f06 | 9 | #include "libT/mbed/tserialbuffer.h" |
tosihisa | 0:6089ae824f06 | 10 | #include "BMP085.h" |
tosihisa | 0:6089ae824f06 | 11 | #include "SHT2x.h" |
tosihisa | 0:6089ae824f06 | 12 | #include "AD7994.h" |
tosihisa | 0:6089ae824f06 | 13 | //#include "TextLCD.h" |
tosihisa | 0:6089ae824f06 | 14 | #include "TextLCD_20X4.h" |
tosihisa | 1:83960ee4d9a2 | 15 | #include "UBXPacket.h" |
tosihisa | 0:6089ae824f06 | 16 | |
tosihisa | 0:6089ae824f06 | 17 | using namespace libT; |
tosihisa | 0:6089ae824f06 | 18 | |
tosihisa | 2:f546aaa0e1d5 | 19 | //#define _CO2_TEST |
tosihisa | 1:83960ee4d9a2 | 20 | //#define _I2C_TEST |
tosihisa | 0:6089ae824f06 | 21 | |
tosihisa | 0:6089ae824f06 | 22 | #define _USE_FS_NAME "sd" |
tosihisa | 0:6089ae824f06 | 23 | |
tosihisa | 0:6089ae824f06 | 24 | Serial debug(USBTX,USBRX); |
tosihisa | 0:6089ae824f06 | 25 | |
tosihisa | 0:6089ae824f06 | 26 | DigitalIn gps_int0(p24); |
tosihisa | 0:6089ae824f06 | 27 | DigitalOut gps_reset(p25); |
tosihisa | 0:6089ae824f06 | 28 | InterruptIn gps_pps(p26); |
tosihisa | 0:6089ae824f06 | 29 | tSerialBuffer gps(p28,p27); |
tosihisa | 0:6089ae824f06 | 30 | DigitalOut gps_pps_led(LED2); |
tosihisa | 1:83960ee4d9a2 | 31 | #ifdef _I2C_TEST /* { */ |
tosihisa | 1:83960ee4d9a2 | 32 | I2C i2c(p9, p10); // sda, scl |
tosihisa | 1:83960ee4d9a2 | 33 | #endif /* } */ |
tosihisa | 0:6089ae824f06 | 34 | BMP085 bmp085(p9, p10); |
tosihisa | 0:6089ae824f06 | 35 | //SHT25 sht25(p9, p10); |
tosihisa | 2:f546aaa0e1d5 | 36 | SHT2x sht25(p9,p10); |
tosihisa | 0:6089ae824f06 | 37 | AD7994 ad7994(p9,p10); |
tosihisa | 0:6089ae824f06 | 38 | TextLCD_20X4 lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7 |
tosihisa | 0:6089ae824f06 | 39 | |
tosihisa | 1:83960ee4d9a2 | 40 | SDFileSystem sd(p5, p6, p7, p8, _USE_FS_NAME); |
tosihisa | 0:6089ae824f06 | 41 | |
tosihisa | 0:6089ae824f06 | 42 | DigitalOut myled(LED1); |
tosihisa | 0:6089ae824f06 | 43 | |
tosihisa | 0:6089ae824f06 | 44 | tSerialBuffer CO2(p13,p14); |
tosihisa | 0:6089ae824f06 | 45 | |
tosihisa | 1:83960ee4d9a2 | 46 | struct UBXPacket_s UBXPacket; |
tosihisa | 1:83960ee4d9a2 | 47 | |
tosihisa | 0:6089ae824f06 | 48 | int pps_count = 0; |
tosihisa | 0:6089ae824f06 | 49 | void gps_pps_rise() |
tosihisa | 0:6089ae824f06 | 50 | { |
tosihisa | 0:6089ae824f06 | 51 | gps_pps_led = ((pps_count+=1) & 1) ? 1 : 0; |
tosihisa | 0:6089ae824f06 | 52 | } |
tosihisa | 0:6089ae824f06 | 53 | |
tosihisa | 0:6089ae824f06 | 54 | void logFile_Init() |
tosihisa | 0:6089ae824f06 | 55 | { |
tosihisa | 0:6089ae824f06 | 56 | DIR *d; |
tosihisa | 0:6089ae824f06 | 57 | struct dirent *p; |
tosihisa | 0:6089ae824f06 | 58 | |
tosihisa | 0:6089ae824f06 | 59 | d = opendir("/" _USE_FS_NAME); |
tosihisa | 0:6089ae824f06 | 60 | if ( d != NULL ) { |
tosihisa | 0:6089ae824f06 | 61 | while ( (p = readdir(d)) != NULL ) { |
tosihisa | 0:6089ae824f06 | 62 | debug.printf("FILE - %s\x0d\x0a", p->d_name); |
tosihisa | 0:6089ae824f06 | 63 | } |
tosihisa | 0:6089ae824f06 | 64 | closedir(d); |
tosihisa | 0:6089ae824f06 | 65 | } |
tosihisa | 0:6089ae824f06 | 66 | } |
tosihisa | 0:6089ae824f06 | 67 | |
tosihisa | 0:6089ae824f06 | 68 | void FileWriteTest() |
tosihisa | 0:6089ae824f06 | 69 | { |
tosihisa | 0:6089ae824f06 | 70 | FILE *fp; |
tosihisa | 0:6089ae824f06 | 71 | char *logname = "/" _USE_FS_NAME "/MBEDLOG.TXT"; |
tosihisa | 0:6089ae824f06 | 72 | |
tosihisa | 0:6089ae824f06 | 73 | debug.printf("FileWriteTest() open(%s) :", logname); |
tosihisa | 0:6089ae824f06 | 74 | fp = fopen(logname,"a+w"); |
tosihisa | 0:6089ae824f06 | 75 | if(fp == NULL){ |
tosihisa | 0:6089ae824f06 | 76 | printf("NG\n"); |
tosihisa | 0:6089ae824f06 | 77 | return; |
tosihisa | 0:6089ae824f06 | 78 | } |
tosihisa | 0:6089ae824f06 | 79 | printf("OK\n"); |
tosihisa | 0:6089ae824f06 | 80 | fprintf(fp,"ENV Logger \"V1\" Start (BUILD:[" __DATE__ "/" __TIME__ "])\x0d\x0a"); |
tosihisa | 0:6089ae824f06 | 81 | fclose(fp); |
tosihisa | 0:6089ae824f06 | 82 | } |
tosihisa | 0:6089ae824f06 | 83 | |
tosihisa | 0:6089ae824f06 | 84 | int CO2_Read(unsigned short *val) |
tosihisa | 0:6089ae824f06 | 85 | { |
tosihisa | 0:6089ae824f06 | 86 | unsigned char sbuf[] = { 0xFE, 0x04, 0x00, 0x03, 0x00, 0x01, 0xD5, 0xC5 }; |
tosihisa | 0:6089ae824f06 | 87 | unsigned char rbuf[7]; |
tosihisa | 0:6089ae824f06 | 88 | int i; |
tosihisa | 0:6089ae824f06 | 89 | unsigned short crc; |
tosihisa | 0:6089ae824f06 | 90 | extern unsigned short modbus_CRC(unsigned char *DataPtr, unsigned short len); |
tosihisa | 0:6089ae824f06 | 91 | |
tosihisa | 0:6089ae824f06 | 92 | for(i=0;i < sizeof(sbuf);i++){ |
tosihisa | 0:6089ae824f06 | 93 | //debug.printf("0x%02x ",sbuf[i]); |
tosihisa | 0:6089ae824f06 | 94 | CO2.putc(sbuf[i]); |
tosihisa | 0:6089ae824f06 | 95 | } |
tosihisa | 0:6089ae824f06 | 96 | for(i=0;i < sizeof(rbuf);i++){ |
tosihisa | 0:6089ae824f06 | 97 | while(!CO2.readable()){} |
tosihisa | 0:6089ae824f06 | 98 | rbuf[i] = CO2.getc(); |
tosihisa | 0:6089ae824f06 | 99 | } |
tosihisa | 1:83960ee4d9a2 | 100 | if(rbuf[0] != 0xFE){ |
tosihisa | 1:83960ee4d9a2 | 101 | return -4; |
tosihisa | 1:83960ee4d9a2 | 102 | } |
tosihisa | 1:83960ee4d9a2 | 103 | if(rbuf[1] != 0x04){ |
tosihisa | 1:83960ee4d9a2 | 104 | return -1; |
tosihisa | 1:83960ee4d9a2 | 105 | } |
tosihisa | 1:83960ee4d9a2 | 106 | if(rbuf[2] != 0x02){ |
tosihisa | 1:83960ee4d9a2 | 107 | return -2; |
tosihisa | 1:83960ee4d9a2 | 108 | } |
tosihisa | 0:6089ae824f06 | 109 | crc = rbuf[6]; |
tosihisa | 0:6089ae824f06 | 110 | crc = (crc << 8) | rbuf[5]; |
tosihisa | 0:6089ae824f06 | 111 | if(crc != modbus_CRC(rbuf,5)){ |
tosihisa | 1:83960ee4d9a2 | 112 | return -3; |
tosihisa | 0:6089ae824f06 | 113 | } |
tosihisa | 0:6089ae824f06 | 114 | *val = rbuf[3]; |
tosihisa | 0:6089ae824f06 | 115 | *val = (*val << 8) | rbuf[4]; |
tosihisa | 0:6089ae824f06 | 116 | return 0; |
tosihisa | 0:6089ae824f06 | 117 | } |
tosihisa | 0:6089ae824f06 | 118 | |
tosihisa | 0:6089ae824f06 | 119 | // BMP085 0xee |
tosihisa | 0:6089ae824f06 | 120 | // AD9774 0x44 |
tosihisa | 1:83960ee4d9a2 | 121 | #ifdef _I2C_TEST /* { */ |
tosihisa | 0:6089ae824f06 | 122 | int i2c_found() { |
tosihisa | 0:6089ae824f06 | 123 | int count = 0; |
tosihisa | 1:83960ee4d9a2 | 124 | lcd.locate(0,2); |
tosihisa | 1:83960ee4d9a2 | 125 | lcd.printf("%-19s","I2C Dev:"); |
tosihisa | 1:83960ee4d9a2 | 126 | lcd.locate(8,2); |
tosihisa | 0:6089ae824f06 | 127 | for (int address=0; address<256; address+=2) { |
tosihisa | 0:6089ae824f06 | 128 | if (!i2c.write(address, NULL, 0)) { // 0 returned is ok |
tosihisa | 1:83960ee4d9a2 | 129 | lcd.printf("%02X ",address); |
tosihisa | 0:6089ae824f06 | 130 | count++; |
tosihisa | 0:6089ae824f06 | 131 | } |
tosihisa | 0:6089ae824f06 | 132 | } |
tosihisa | 1:83960ee4d9a2 | 133 | lcd.printf("\n"); |
tosihisa | 1:83960ee4d9a2 | 134 | lcd.printf("%d devices found", count); |
tosihisa | 0:6089ae824f06 | 135 | return count; |
tosihisa | 0:6089ae824f06 | 136 | } |
tosihisa | 1:83960ee4d9a2 | 137 | #endif /* } */ |
tosihisa | 1:83960ee4d9a2 | 138 | |
tosihisa | 1:83960ee4d9a2 | 139 | unsigned char NMEA_CalcSum(unsigned char *str,int len) |
tosihisa | 1:83960ee4d9a2 | 140 | { |
tosihisa | 1:83960ee4d9a2 | 141 | unsigned char sum = 0; |
tosihisa | 1:83960ee4d9a2 | 142 | int i; |
tosihisa | 1:83960ee4d9a2 | 143 | for(i = 0;i < len;i++){ |
tosihisa | 1:83960ee4d9a2 | 144 | sum = sum ^ (*(str + i)); |
tosihisa | 1:83960ee4d9a2 | 145 | } |
tosihisa | 1:83960ee4d9a2 | 146 | return sum; |
tosihisa | 1:83960ee4d9a2 | 147 | } |
tosihisa | 1:83960ee4d9a2 | 148 | |
tosihisa | 1:83960ee4d9a2 | 149 | void UBX_CalcSum(unsigned char *str,int len,unsigned char *sum) |
tosihisa | 1:83960ee4d9a2 | 150 | { |
tosihisa | 1:83960ee4d9a2 | 151 | int i; |
tosihisa | 1:83960ee4d9a2 | 152 | *(sum + 0) = *(sum + 1) = 0; |
tosihisa | 1:83960ee4d9a2 | 153 | for(i = 0;i < len;i++){ |
tosihisa | 1:83960ee4d9a2 | 154 | *(sum + 0) = *(sum + 0) + *(str+i); |
tosihisa | 1:83960ee4d9a2 | 155 | *(sum + 1) = *(sum + 1) + *(sum + 0); |
tosihisa | 1:83960ee4d9a2 | 156 | } |
tosihisa | 1:83960ee4d9a2 | 157 | } |
tosihisa | 1:83960ee4d9a2 | 158 | |
tosihisa | 1:83960ee4d9a2 | 159 | int UBX_WaitAck(struct UBXPacket_s *info) |
tosihisa | 1:83960ee4d9a2 | 160 | { |
tosihisa | 1:83960ee4d9a2 | 161 | UBXPacket.cjobst = 0; |
tosihisa | 1:83960ee4d9a2 | 162 | |
tosihisa | 1:83960ee4d9a2 | 163 | while(1){ |
tosihisa | 1:83960ee4d9a2 | 164 | while(gps.readable()) { |
tosihisa | 1:83960ee4d9a2 | 165 | if(UBXPacket_Parse(&UBXPacket,gps.getc()) == 100){ |
tosihisa | 1:83960ee4d9a2 | 166 | if((UBXPacket.cls == 0x05) && (UBXPacket.id == 0x01)){ |
tosihisa | 1:83960ee4d9a2 | 167 | return 1; /* ACK */ |
tosihisa | 1:83960ee4d9a2 | 168 | } else if((UBXPacket.cls == 0x05) && (UBXPacket.id == 0x00)){ |
tosihisa | 1:83960ee4d9a2 | 169 | return 0; /* NAK */ |
tosihisa | 1:83960ee4d9a2 | 170 | } else { |
tosihisa | 1:83960ee4d9a2 | 171 | UBXPacket.cjobst = 0; |
tosihisa | 1:83960ee4d9a2 | 172 | } |
tosihisa | 1:83960ee4d9a2 | 173 | } |
tosihisa | 1:83960ee4d9a2 | 174 | } |
tosihisa | 1:83960ee4d9a2 | 175 | } |
tosihisa | 1:83960ee4d9a2 | 176 | return -1; |
tosihisa | 1:83960ee4d9a2 | 177 | } |
tosihisa | 1:83960ee4d9a2 | 178 | |
tosihisa | 1:83960ee4d9a2 | 179 | unsigned char wbuf[1024]; |
tosihisa | 2:f546aaa0e1d5 | 180 | int widx = 0; |
tosihisa | 0:6089ae824f06 | 181 | |
tosihisa | 0:6089ae824f06 | 182 | int main() { |
tosihisa | 0:6089ae824f06 | 183 | int ret = 0; |
tosihisa | 0:6089ae824f06 | 184 | float p, t; |
tosihisa | 0:6089ae824f06 | 185 | int temp; |
tosihisa | 0:6089ae824f06 | 186 | unsigned short CO2_val; |
tosihisa | 0:6089ae824f06 | 187 | unsigned long scanCount = 0; |
tosihisa | 1:83960ee4d9a2 | 188 | FILE *fp; |
tosihisa | 1:83960ee4d9a2 | 189 | char *logname = "/" _USE_FS_NAME "/ENVLOG.TXT"; |
tosihisa | 1:83960ee4d9a2 | 190 | char c; |
tosihisa | 2:f546aaa0e1d5 | 191 | unsigned long UBXCount = 0; |
tosihisa | 0:6089ae824f06 | 192 | |
tosihisa | 0:6089ae824f06 | 193 | debug.format(8,Serial::None,1); |
tosihisa | 0:6089ae824f06 | 194 | debug.baud(115200); |
tosihisa | 2:f546aaa0e1d5 | 195 | debug.printf("ENV Logger \"V0.5\" Start (BUILD:[" __DATE__ "/" __TIME__ "])\n"); |
tosihisa | 0:6089ae824f06 | 196 | |
tosihisa | 0:6089ae824f06 | 197 | debug.printf("LCD Display\n"); |
tosihisa | 0:6089ae824f06 | 198 | |
tosihisa | 0:6089ae824f06 | 199 | //lcd.cls(); |
tosihisa | 0:6089ae824f06 | 200 | lcd.locate(0,0); |
tosihisa | 2:f546aaa0e1d5 | 201 | lcd.printf("ENV Logger \"V0.5\""); |
tosihisa | 2:f546aaa0e1d5 | 202 | |
tosihisa | 2:f546aaa0e1d5 | 203 | lcd.locate(0,1); |
tosihisa | 2:f546aaa0e1d5 | 204 | lcd.printf("WAKE UP I/O..."); |
tosihisa | 1:83960ee4d9a2 | 205 | wait(5.0); |
tosihisa | 0:6089ae824f06 | 206 | |
tosihisa | 0:6089ae824f06 | 207 | //logFile_Init(); |
tosihisa | 0:6089ae824f06 | 208 | //FileWriteTest(); |
tosihisa | 0:6089ae824f06 | 209 | |
tosihisa | 2:f546aaa0e1d5 | 210 | lcd.locate(0,1); |
tosihisa | 2:f546aaa0e1d5 | 211 | lcd.printf("SETTING GPS..."); |
tosihisa | 2:f546aaa0e1d5 | 212 | |
tosihisa | 1:83960ee4d9a2 | 213 | UBXPacket.cjobst = 0; |
tosihisa | 1:83960ee4d9a2 | 214 | |
tosihisa | 0:6089ae824f06 | 215 | gps_pps.rise(gps_pps_rise); |
tosihisa | 0:6089ae824f06 | 216 | gps.format(8,Serial::None,1); |
tosihisa | 0:6089ae824f06 | 217 | gps.baud(9600); |
tosihisa | 0:6089ae824f06 | 218 | |
tosihisa | 0:6089ae824f06 | 219 | gps_reset = 1; |
tosihisa | 0:6089ae824f06 | 220 | wait(0.5); |
tosihisa | 0:6089ae824f06 | 221 | gps_reset = 0; |
tosihisa | 0:6089ae824f06 | 222 | |
tosihisa | 1:83960ee4d9a2 | 223 | wait(0.5); |
tosihisa | 1:83960ee4d9a2 | 224 | if(1){ |
tosihisa | 1:83960ee4d9a2 | 225 | //unsigned char modeStr[] = "PUBX,41,1,0007,0003,115200,0"; |
tosihisa | 1:83960ee4d9a2 | 226 | unsigned char modeStr[] = "PUBX,41,1,0007,0001,115200,0"; |
tosihisa | 1:83960ee4d9a2 | 227 | unsigned char sum = NMEA_CalcSum(modeStr,strlen((char *)modeStr)); |
tosihisa | 1:83960ee4d9a2 | 228 | debug.printf("SEND:[%s](0x%02X)\n",modeStr,sum); |
tosihisa | 1:83960ee4d9a2 | 229 | gps.printf("$%s*%02X%c%c",modeStr,sum,0x0d,0x0a); |
tosihisa | 1:83960ee4d9a2 | 230 | |
tosihisa | 1:83960ee4d9a2 | 231 | debug.printf("CHG BAUD:115200\n"); |
tosihisa | 1:83960ee4d9a2 | 232 | gps.format(8,Serial::None,1); |
tosihisa | 1:83960ee4d9a2 | 233 | gps.baud(115200); |
tosihisa | 1:83960ee4d9a2 | 234 | } |
tosihisa | 1:83960ee4d9a2 | 235 | |
tosihisa | 1:83960ee4d9a2 | 236 | gps.recvStart(); |
tosihisa | 1:83960ee4d9a2 | 237 | wait(0.5); |
tosihisa | 0:6089ae824f06 | 238 | |
tosihisa | 1:83960ee4d9a2 | 239 | if(1){ |
tosihisa | 1:83960ee4d9a2 | 240 | unsigned char chkStr[][11] = { |
tosihisa | 1:83960ee4d9a2 | 241 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x10,0x02,0xFF,0xFF }, //RXM-RAW (0x02 0x10) |
tosihisa | 1:83960ee4d9a2 | 242 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x30,0x02,0xFF,0xFF }, //RXM-ALM (0x02 0x30) |
tosihisa | 1:83960ee4d9a2 | 243 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x31,0x02,0xFF,0xFF }, //RXM-EPH (0x02 0x31) |
tosihisa | 1:83960ee4d9a2 | 244 | //{ 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x41,0x02,0xFF,0xFF }, |
tosihisa | 1:83960ee4d9a2 | 245 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x11,0x02,0xFF,0xFF }, //RXM-SFRB (0x02 0x11) |
tosihisa | 1:83960ee4d9a2 | 246 | { 0xB5,0x62,0x06,0x01,0x03,0x00,0x02,0x20,0x02,0xFF,0xFF }, //RXM-SVSI (0x02 0x20) |
tosihisa | 1:83960ee4d9a2 | 247 | { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF }, //END |
tosihisa | 1:83960ee4d9a2 | 248 | }; |
tosihisa | 1:83960ee4d9a2 | 249 | int i,j; |
tosihisa | 1:83960ee4d9a2 | 250 | |
tosihisa | 1:83960ee4d9a2 | 251 | for(j=0;chkStr[j][0] != 0x00;j++){ |
tosihisa | 1:83960ee4d9a2 | 252 | UBX_CalcSum(&chkStr[j][2],7,&chkStr[j][9]); |
tosihisa | 1:83960ee4d9a2 | 253 | for(i = 0; i < sizeof(chkStr[0]);i++){ |
tosihisa | 1:83960ee4d9a2 | 254 | gps.putc(chkStr[j][i]); |
tosihisa | 1:83960ee4d9a2 | 255 | } |
tosihisa | 1:83960ee4d9a2 | 256 | debug.printf("%d : SET UBX Rate : %s\n",j,(UBX_WaitAck(&UBXPacket) == 1) ? "ACK" : "NAK"); |
tosihisa | 1:83960ee4d9a2 | 257 | } |
tosihisa | 1:83960ee4d9a2 | 258 | } |
tosihisa | 1:83960ee4d9a2 | 259 | UBXPacket.cjobst = 0; |
tosihisa | 2:f546aaa0e1d5 | 260 | lcd.locate(0,1); |
tosihisa | 2:f546aaa0e1d5 | 261 | lcd.printf("SETTING GPS...Done."); |
tosihisa | 1:83960ee4d9a2 | 262 | |
tosihisa | 1:83960ee4d9a2 | 263 | #if 0 |
tosihisa | 1:83960ee4d9a2 | 264 | debug.printf("open(%s) :", logname); |
tosihisa | 1:83960ee4d9a2 | 265 | if((fp = fopen(logname,"a+w")) == NULL){ |
tosihisa | 1:83960ee4d9a2 | 266 | printf("NG\n"); |
tosihisa | 1:83960ee4d9a2 | 267 | } else { |
tosihisa | 1:83960ee4d9a2 | 268 | printf("OK\n"); |
tosihisa | 1:83960ee4d9a2 | 269 | } |
tosihisa | 1:83960ee4d9a2 | 270 | widx = 0; |
tosihisa | 1:83960ee4d9a2 | 271 | #endif |
tosihisa | 1:83960ee4d9a2 | 272 | |
tosihisa | 1:83960ee4d9a2 | 273 | // ad7994.Start(); |
tosihisa | 1:83960ee4d9a2 | 274 | |
tosihisa | 0:6089ae824f06 | 275 | CO2.format(8,Serial::None,1); |
tosihisa | 0:6089ae824f06 | 276 | CO2.baud(9600); |
tosihisa | 0:6089ae824f06 | 277 | CO2.recvStart(); |
tosihisa | 0:6089ae824f06 | 278 | |
tosihisa | 0:6089ae824f06 | 279 | while(1) { |
tosihisa | 0:6089ae824f06 | 280 | //lcd.cls(); |
tosihisa | 2:f546aaa0e1d5 | 281 | //lcd.locate(0,0); |
tosihisa | 2:f546aaa0e1d5 | 282 | //lcd.printf("SCAN:%-10ld",scanCount); |
tosihisa | 0:6089ae824f06 | 283 | |
tosihisa | 0:6089ae824f06 | 284 | while(gps.readable()) { |
tosihisa | 1:83960ee4d9a2 | 285 | c = gps.getc(); |
tosihisa | 1:83960ee4d9a2 | 286 | if(UBXPacket_Parse(&UBXPacket,c) == 100){ |
tosihisa | 2:f546aaa0e1d5 | 287 | UBXCount++; |
tosihisa | 2:f546aaa0e1d5 | 288 | lcd.locate(0,0); |
tosihisa | 2:f546aaa0e1d5 | 289 | lcd.printf("UBX Recv:%-10ld",UBXCount); |
tosihisa | 1:83960ee4d9a2 | 290 | debug.printf("%ld : GET UBX Packet (Class=0x%02X,ID=0x%02X,LEN=%d)\n", |
tosihisa | 1:83960ee4d9a2 | 291 | scanCount, |
tosihisa | 1:83960ee4d9a2 | 292 | UBXPacket.cls, |
tosihisa | 1:83960ee4d9a2 | 293 | UBXPacket.id, |
tosihisa | 1:83960ee4d9a2 | 294 | UBXPacket.len ); |
tosihisa | 1:83960ee4d9a2 | 295 | UBXPacket.cjobst = 0; |
tosihisa | 1:83960ee4d9a2 | 296 | } |
tosihisa | 2:f546aaa0e1d5 | 297 | //if(fp != NULL){ |
tosihisa | 2:f546aaa0e1d5 | 298 | // wbuf[widx] = c; |
tosihisa | 2:f546aaa0e1d5 | 299 | // widx++; |
tosihisa | 2:f546aaa0e1d5 | 300 | // if(widx >= sizeof(wbuf)){ |
tosihisa | 2:f546aaa0e1d5 | 301 | // fwrite(&wbuf,sizeof(wbuf[0]),widx,fp); |
tosihisa | 2:f546aaa0e1d5 | 302 | // widx = 0; |
tosihisa | 2:f546aaa0e1d5 | 303 | // } |
tosihisa | 2:f546aaa0e1d5 | 304 | //} |
tosihisa | 0:6089ae824f06 | 305 | } |
tosihisa | 0:6089ae824f06 | 306 | |
tosihisa | 2:f546aaa0e1d5 | 307 | if(1){ |
tosihisa | 2:f546aaa0e1d5 | 308 | bmp085.update(); |
tosihisa | 2:f546aaa0e1d5 | 309 | p = bmp085.get_pressure(); |
tosihisa | 2:f546aaa0e1d5 | 310 | t = bmp085.get_temperature(); |
tosihisa | 2:f546aaa0e1d5 | 311 | lcd.locate(0,1); |
tosihisa | 2:f546aaa0e1d5 | 312 | lcd.printf("%-8.2fhPa %-6.2fC", p, t); |
tosihisa | 2:f546aaa0e1d5 | 313 | } |
tosihisa | 0:6089ae824f06 | 314 | |
tosihisa | 2:f546aaa0e1d5 | 315 | if(1){ |
tosihisa | 2:f546aaa0e1d5 | 316 | sht25.SHT2x_MeasurePoll(TEMP,&temp); |
tosihisa | 2:f546aaa0e1d5 | 317 | p = sht25.SHT2x_CalcTemperatureC(temp); |
tosihisa | 2:f546aaa0e1d5 | 318 | sht25.SHT2x_MeasurePoll(HUMIDITY,&temp); |
tosihisa | 2:f546aaa0e1d5 | 319 | t = sht25.SHT2x_CalcRH(temp); |
tosihisa | 2:f546aaa0e1d5 | 320 | lcd.locate(0,2); |
tosihisa | 2:f546aaa0e1d5 | 321 | lcd.printf("%-6.2fC %-6.2fRH", p, t); |
tosihisa | 2:f546aaa0e1d5 | 322 | //sht25.SHT2x_SoftReset(); |
tosihisa | 2:f546aaa0e1d5 | 323 | } |
tosihisa | 1:83960ee4d9a2 | 324 | |
tosihisa | 1:83960ee4d9a2 | 325 | #ifdef _I2C_TEST /* { */ |
tosihisa | 1:83960ee4d9a2 | 326 | i2c_found(); |
tosihisa | 1:83960ee4d9a2 | 327 | #endif /* } */ |
tosihisa | 0:6089ae824f06 | 328 | |
tosihisa | 2:f546aaa0e1d5 | 329 | lcd.locate(0,3); |
tosihisa | 1:83960ee4d9a2 | 330 | ret = CO2_Read(&CO2_val); |
tosihisa | 1:83960ee4d9a2 | 331 | if(ret == 0){ |
tosihisa | 2:f546aaa0e1d5 | 332 | lcd.printf("CO2:%5d.%1dppm\n",CO2_val/10,CO2_val%10); |
tosihisa | 0:6089ae824f06 | 333 | } else { |
tosihisa | 1:83960ee4d9a2 | 334 | lcd.printf("CO2:NG(%d) \n",ret); |
tosihisa | 0:6089ae824f06 | 335 | } |
tosihisa | 1:83960ee4d9a2 | 336 | |
tosihisa | 1:83960ee4d9a2 | 337 | #if 0 |
tosihisa | 0:6089ae824f06 | 338 | ad7994.update(); |
tosihisa | 0:6089ae824f06 | 339 | lcd.locate(0,3); |
tosihisa | 0:6089ae824f06 | 340 | lcd.printf("A/D:%04X/%04X", |
tosihisa | 0:6089ae824f06 | 341 | ad7994.readChn(0), |
tosihisa | 0:6089ae824f06 | 342 | ad7994.readChn(1)); |
tosihisa | 1:83960ee4d9a2 | 343 | #endif |
tosihisa | 0:6089ae824f06 | 344 | |
tosihisa | 0:6089ae824f06 | 345 | myled = 1; |
tosihisa | 1:83960ee4d9a2 | 346 | wait(0.5); |
tosihisa | 0:6089ae824f06 | 347 | myled = 0; |
tosihisa | 1:83960ee4d9a2 | 348 | wait(0.5); |
tosihisa | 0:6089ae824f06 | 349 | |
tosihisa | 0:6089ae824f06 | 350 | scanCount++; |
tosihisa | 0:6089ae824f06 | 351 | } |
tosihisa | 0:6089ae824f06 | 352 | } |
tosihisa | 2:f546aaa0e1d5 | 353 | |
tosihisa | 2:f546aaa0e1d5 | 354 | /* |
tosihisa | 2:f546aaa0e1d5 | 355 | * 2012-1-23 V0.5 |
tosihisa | 2:f546aaa0e1d5 | 356 | * U-Blox,気圧センサー,温度センサー,CO2センサーの値を表示するようにした。 |
tosihisa | 2:f546aaa0e1d5 | 357 | * U-Blox は受信できたパケット数を表示する。 |
tosihisa | 2:f546aaa0e1d5 | 358 | * マイクロSDへの保存機能はまだ(H/W的に動くのは確認済み) |
tosihisa | 2:f546aaa0e1d5 | 359 | */ |