HEPTAⅡ_ALL
Dependencies: Hepta2_9axis HeptaBattery Hepta_Serial HeptaTemp HeptaXbee SDHCFileSystem mbed
Fork of HEPTA2_assembly_0720 by
main.cpp
00001 /* 00002 ************************************************************* 00003 H29/07_20/T.Umezawa 00004 1:SD.....OK! 00005 2:MPU9250(Accel) = OK 00006 3:MPU9250(Gyro) = OK 00007 4:MPU9250(Mag_compass) = 微妙 00008 5:GPS sensing Mode = 00009 6:CAM Mode = OK!(微妙だった) 00010 7:Temperature sensing = OK! 00011 8:Xbee mode = OK! 00012 ************************************************************* 00013 */ 00014 00015 #include "mbed.h" 00016 #include "SDHCFileSystem.h" 00017 #include "HeptaXbee.h" 00018 #include "HeptaSerial.h" 00019 #include "Hepta9axis.h" 00020 #include "HeptaTemp.h" 00021 #include "HeptaBattery.h" 00022 #define USE_JPEG_HIGH_RESOLUTION 1 00023 00024 Serial pc(USBTX,USBRX); 00025 SDFileSystem sd(p5, p6, p7, p8, "fs"); 00026 HeptaXbee xbee(p9,p10); 00027 HeptaSerial camera(p13, p14); 00028 HeptaMPU9250 MPU9250(p28,p27,0xD0,0x18);//sda,scl,acc&gyro_address,mag_gyro 00029 HeptaTemp heptatemp(p17); 00030 HeptaBattery bat(p16,p26); 00031 DigitalOut CAM_SW(p25);//CAM_control 00032 DigitalOut GPS_SW(p24);//GPS_control 00033 00034 int main() 00035 { 00036 char mode; 00037 //pc.baud(9600); 00038 00039 while(1) { 00040 00041 /* 00042 ************ 00043 Mode select 00044 *********** 00045 */ 00046 pc.printf("\r\n"); 00047 pc.printf("*********************************\r\n"); 00048 pc.printf("Hello world.\r\n"); 00049 pc.printf("My name is HEPTA2\r\n"); 00050 pc.printf("Please select mode.\r\n"); 00051 pc.printf("a:SD test Mode\r\n"); 00052 pc.printf("b:Check Battery Level\r\n"); 00053 pc.printf("c:Gyro Sening Mode\r\n"); 00054 pc.printf("d:Accel Sensing Mode\r\n"); 00055 pc.printf("e:Magnet Sensig Mode\r\n"); 00056 pc.printf("f:GPS Test Sensing Mode\r\n"); 00057 pc.printf("g:GPS data_GPGGA Mode\r\n"); 00058 pc.printf("h:Camera Synchro Mode\r\n"); 00059 pc.printf("i:CAM SnapShot Mode\r\n"); 00060 pc.printf("j:Saving Camera Data Mode\r\n"); 00061 pc.printf("k:Camera Data Transmitting Mode\r\n"); 00062 pc.printf("l:Temperature Sensing Mode\r\n"); 00063 pc.printf("m:Xbee Mode\r\n"); 00064 pc.printf("n:Xbee & Temperature Mode\r\n");//恒温槽用 00065 pc.printf("o:All Transmitting Mode\r\n"); 00066 pc.printf("*********************************\r\n"); 00067 00068 mode = pc.getc(); 00069 pc.printf("\r\n"); 00070 pc.printf("Your select Mode = %c\r\n",mode); 00071 wait(0.5); 00072 00073 switch(mode) { 00074 case'a': { 00075 00076 printf("=============\r\n"); 00077 printf("SD test Mode\r\n"); 00078 printf("=============\r\n"); 00079 FILE *fp = fopen("/fs/myfile.txt", "w"); 00080 if(fp == NULL) { 00081 pc.printf("Could not open file for write\r\n"); 00082 } else { 00083 fprintf(fp, "\n\rHello World!\n\r"); 00084 printf("SD Check Complete!!\r\n"); 00085 fclose(fp); 00086 } 00087 00088 00089 break; 00090 }//case'1' 00091 00092 /* 00093 ************************ 00094 Check Battery Level mode 00095 ************************ 00096 */ 00097 case'b': { 00098 float bt; 00099 for(int i = 0;i<50;i++){ 00100 bat.vol(&bt); 00101 pc.printf("V = %f\r\n",bt); 00102 } 00103 break; 00104 } 00105 00106 /* 00107 ****************** 00108 Gyro sensing mode 00109 ****************** 00110 */ 00111 00112 case'c': { 00113 printf("===================\r\n"); 00114 printf("Gyro sensing Mode\r\n"); 00115 printf("===================\r\n"); 00116 float gx,gy,gz; 00117 for(int i = 0; i < 10; i++) { 00118 MPU9250.sen_gyro(&gx,&gy,&gz); 00119 pc.printf("GX = %f,GY = %f,GZ = %f\r\n",gx,gy,gz); 00120 wait(0.5); 00121 } 00122 break; 00123 }//case'2' 00124 00125 /* 00126 ****************** 00127 Accel sensing mode 00128 ****************** 00129 */ 00130 00131 case'd': { 00132 printf("===================\r\n"); 00133 printf("Accel sensing Mode\r\n"); 00134 printf("===================\r\n"); 00135 float ax,ay,az; 00136 for(int i = 0; i < 10; i++) { 00137 MPU9250.sen_acc(&ax,&ay,&az); 00138 pc.printf("AX = %f,AY = %f,AZ = %f\r\n",ax,ay,az); 00139 wait(0.5); 00140 } 00141 break; 00142 }//case'3' 00143 00144 /* 00145 ****************** 00146 Magnet sensing mode 00147 ****************** 00148 */ 00149 00150 case'e': { 00151 float mx,my,mz; 00152 printf("===================\r\n"); 00153 printf("Magnet sensing Mode\r\n"); 00154 printf("===================\r\n"); 00155 for(int i = 0; i < 10; i++) { 00156 MPU9250.sen_mag(&mx,&my,&mz); 00157 pc.printf("MX = %f,MY = %f,MZ = %f\r\n",mx,my,mz); 00158 wait(0.5); 00159 } 00160 break; 00161 }//case'4' 00162 00163 /* 00164 ****************** 00165 GPS sensing mode 00166 ****************** 00167 */ 00168 00169 case'f': { 00170 GPS_SW = 1; 00171 CAM_SW = 0; 00172 printf("===================\r\n"); 00173 printf("GPS sensing Mode\r\n"); 00174 printf("===================\r\n"); 00175 while(1) pc.putc(camera.getc()); 00176 break; 00177 }//case'4' 00178 00179 00180 case'g': { 00181 GPS_SW = 1; 00182 CAM_SW = 0; 00183 pc.printf("GPS GPGGA Mode\r\n"); 00184 int quality=0,stnum=0,gps_check=0; 00185 char ns='A',ew='B',aunit='m'; 00186 float time=0.0,latitude=0.0,longitude=0.0,hacu=0.0,altitude=0.0; 00187 for(int i=1; i<10; i++) { 00188 camera.gga_sensing(&time, &latitude, &ns, &longitude, &ew, &quality, &stnum, &hacu, &altitude, &aunit, &gps_check); 00189 if((gps_check==0)|(gps_check==1)) { 00190 pc.printf("GPGGA,%f,%f,%c,%f,%c,%d,%d,%f,%f,%c\r\n",time,latitude,ns,longitude,ew,quality,stnum,hacu,altitude,aunit); 00191 } 00192 } 00193 break; 00194 } 00195 00196 /* 00197 ****************** 00198 Camera Synchro mode 00199 ****************** 00200 */ 00201 00202 case'h': { 00203 GPS_SW = 0; 00204 CAM_SW = 1; 00205 wait(0.5); 00206 printf("\r\n"); 00207 printf("==========\r\n"); 00208 printf("CameraC1098\r\n"); 00209 printf("==========\r\n"); 00210 camera.Sync(); 00211 break; 00212 }//case'6' 00213 00214 /* 00215 ****************** 00216 Cam Snapshot mode 00217 ****************** 00218 */ 00219 00220 case'i': { 00221 GPS_SW = 0; 00222 CAM_SW = 1; 00223 printf("\r\n"); 00224 printf("==========\r\n"); 00225 printf("CameraC1098\r\n"); 00226 printf("==========\r\n"); 00227 //camera.Sync(); 00228 camera.initialize(HeptaSerial::Baud115200, HeptaSerial::JpegResolution320x240); 00229 camera.test_jpeg_snapshot_picture(1); 00230 00231 break; 00232 }//case'6' 00233 00234 /* 00235 ****************** 00236 Cam Snapshot mode 00237 ****************** 00238 */ 00239 00240 case'j': { 00241 GPS_SW = 0; 00242 CAM_SW = 1; 00243 printf("\r\n"); 00244 printf("==========\r\n"); 00245 printf("CameraC1098\r\n"); 00246 printf("==========\r\n"); 00247 //camera.Sync(); 00248 camera.initialize(HeptaSerial::Baud115200, HeptaSerial::JpegResolution320x240); 00249 camera.test_jpeg_snapshot_data(1); 00250 00251 break; 00252 }//case'6' 00253 00254 00255 00256 case'k': { 00257 GPS_SW = 0; 00258 CAM_SW = 1; 00259 printf("\r\n"); 00260 printf("==========\r\n"); 00261 printf("CameraC1098\r\n"); 00262 printf("==========\r\n"); 00263 //camera.Sync(); 00264 camera.initialize(HeptaSerial::Baud115200, HeptaSerial::JpegResolution320x240); 00265 camera.test_jpeg_snapshot_picture(1); 00266 00267 FILE *fp = fopen("/fs/test.txt", "r"); 00268 if(fp == NULL) { 00269 pc.printf("Could not open file for write\r\n"); 00270 } else { 00271 char str[1024]; 00272 while((fgets(str,256,fp))!=NULL) { 00273 pc.printf("%s",str); 00274 } 00275 fclose(fp); 00276 } 00277 00278 break; 00279 } 00280 00281 /* 00282 ****************** 00283 Temp sensing mode 00284 ****************** 00285 */ 00286 00287 case'l': { 00288 printf("==================\r\n"); 00289 printf("Temp sensing Mode\r\n"); 00290 printf("==================\r\n"); 00291 float temp; 00292 for(int i = 0; i<100; i++) { 00293 heptatemp.temp_sense(&temp); 00294 pc.printf("%f\r\n",temp); 00295 //xbee.printf("%f\r\n",temp); 00296 } 00297 break; 00298 }//case'7' 00299 00300 /* 00301 *********** 00302 Xbee mode 00303 *********** 00304 */ 00305 00306 case'm': { 00307 00308 int i=0,rcmd=0,cmdflag=0; 00309 xbee.printf("Count Up!\r"); 00310 while(1) { 00311 xbee.printf("num = %d\r",i); 00312 i++; 00313 wait(1.0); 00314 xbee.xbee_recieve(&rcmd,&cmdflag); 00315 pc.printf("rcmd=%d, cmdflag=%d\r\n",rcmd, cmdflag); 00316 if (cmdflag == 1) { 00317 if (rcmd == 'a') { 00318 pc.printf("Command Get %d\r\n",rcmd); 00319 xbee.printf("HEPTA Uplink OK\r"); 00320 } 00321 xbee.initialize(); 00322 } 00323 } 00324 00325 break; 00326 }//case'8' 00327 00328 /* 00329 ****************** 00330 Temp sensing mode by Xbbe 00331 ****************** 00332 */ 00333 00334 case'n': { 00335 00336 printf("==================\r\n"); 00337 printf("Temp sensing Mode & Xbee\r\n"); 00338 printf("==================\r\n"); 00339 00340 float temp; 00341 while(1) { 00342 FILE *fp = fopen("/fs/myfile.csv", "a"); 00343 heptatemp.temp_sense(&temp); 00344 pc.printf("%f\r\n",temp); 00345 xbee.printf("%f\r\n",temp); 00346 fprintf(fp, "%f\n",temp); 00347 fclose(fp); 00348 } 00349 break; 00350 }//case'9' 00351 00352 /* 00353 ********************* 00354 All Transmitting Mode 00355 ********************* 00356 */ 00357 00358 case'o': { 00359 GPS_SW = 1; 00360 CAM_SW = 0; 00361 00362 printf("==================\r\n"); 00363 printf("All Transmitting Mode\r\n"); 00364 printf("==================\r\n"); 00365 char gx[4],gy[4],gz[4],ax[4],ay[4],az[4],mx[4],my[4],mz[4],lad[8],log[8],bt[4],temp[4]; 00366 char ddata[60]; 00367 int dsize[6]; 00368 while(1) { 00369 00370 MPU9250.sen_gyro_u16(gx,gy,gz,&dsize[0]); 00371 MPU9250.sen_acc_u16(ax,ay,az,&dsize[1]); 00372 MPU9250.sen_mag_u16(mx,my,mz,&dsize[2]); 00373 camera.lat_log_sensing_u16(lad,log,&dsize[3]); 00374 bat.vol_u16(bt,&dsize[4]); 00375 heptatemp.temp_sense_u16(temp,&dsize[5]); 00376 xbee.xbee_transmit(ddata,60,gx,gy,gz,ax,ay,az,mx,my,mz,lad,log,bt,temp,dsize[0],dsize[0],dsize[0],dsize[1],dsize[1],dsize[1],dsize[2],dsize[2],dsize[2],dsize[3],dsize[3],dsize[4],dsize[5],13); 00377 } 00378 break; 00379 }//case'9' 00380 00381 default: 00382 break; 00383 00384 00385 } 00386 } 00387 }
Generated on Mon Sep 26 2022 17:29:27 by 1.7.2