Hepta2_Assembly_Ver.1

Dependencies:   HeptaBattery Hepta2_9axis Hepta_Serial SDHCFileSystem HeptaTemp HeptaXbee mbed

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