HEPTAⅡ_ALL

Dependencies:   Hepta2_9axis HeptaBattery Hepta_Serial HeptaTemp HeptaXbee SDHCFileSystem mbed

Fork of HEPTA2_assembly_0720 by Hepta 2

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }