Hepta

Dependencies:   Hepta2_9axis HeptaBattery HeptaTemp HeptaXbee SDHCFileSystem mbed

Fork of HEPTA2_ALL_ver0803_02 by Hepta 2

Committer:
umeume
Date:
Sat Aug 05 14:22:08 2017 +0000
Revision:
6:a61510510f54
Parent:
5:aedf4491aa0f
Hepta

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sunifu 0:0482779cd78e 1 #include "mbed.h"
hepta2ume 1:890188e041da 2 #include "SDHCFileSystem.h"
hepta2ume 2:726072016da1 3 #include "HeptaXbee.h"
hepta2ume 1:890188e041da 4 #include "HeptaSerial.h"
hepta2ume 2:726072016da1 5 #include "Hepta9axis.h"
hepta2ume 2:726072016da1 6 #include "HeptaTemp.h"
hepta2ume 3:4854731e663d 7 #include "HeptaBattery.h"
sunifu 0:0482779cd78e 8
hepta2ume 2:726072016da1 9 Serial pc(USBTX,USBRX);
hepta2ume 2:726072016da1 10 SDFileSystem sd(p5, p6, p7, p8, "fs");
hepta2ume 2:726072016da1 11 HeptaXbee xbee(p9,p10);
umeume 6:a61510510f54 12 HeptaSerial camera(p13, p14,p25,p26);
hepta2ume 2:726072016da1 13 HeptaMPU9250 MPU9250(p28,p27,0xD0,0x18);//sda,scl,acc&gyro_address,mag_gyro
hepta2ume 2:726072016da1 14 HeptaTemp heptatemp(p17);
hepta2ume 3:4854731e663d 15 HeptaBattery bat(p16,p26);
umeume 6:a61510510f54 16 /*
hepta2ume 2:726072016da1 17 DigitalOut CAM_SW(p25);//CAM_control
hepta2ume 2:726072016da1 18 DigitalOut GPS_SW(p24);//GPS_control
umeume 6:a61510510f54 19 */
hepta2ume 2:726072016da1 20 int main()
hepta2ume 2:726072016da1 21 {
umeume 6:a61510510f54 22 char mode;
hepta2ume 4:6565d9843337 23 //pc.baud(9600);
hepta2ume 2:726072016da1 24
hepta2ume 2:726072016da1 25 while(1) {
hepta2ume 2:726072016da1 26
hepta2ume 2:726072016da1 27 pc.printf("\r\n");
hepta2ume 2:726072016da1 28 pc.printf("*********************************\r\n");
hepta2ume 2:726072016da1 29 pc.printf("Hello world.\r\n");
hepta2ume 2:726072016da1 30 pc.printf("My name is HEPTA2\r\n");
hepta2ume 2:726072016da1 31 pc.printf("Please select mode.\r\n");
hepta2ume 3:4854731e663d 32 pc.printf("a:SD test Mode\r\n");
hepta2ume 3:4854731e663d 33 pc.printf("b:Check Battery Level\r\n");
hepta2ume 3:4854731e663d 34 pc.printf("c:Gyro Sening Mode\r\n");
hepta2ume 3:4854731e663d 35 pc.printf("d:Accel Sensing Mode\r\n");
hepta2ume 3:4854731e663d 36 pc.printf("e:Magnet Sensig Mode\r\n");
hepta2ume 3:4854731e663d 37 pc.printf("f:GPS Test Sensing Mode\r\n");
hepta2ume 4:6565d9843337 38 pc.printf("g:GPS data_GPGGA Mode\r\n");
hepta2ume 4:6565d9843337 39 pc.printf("h:Camera Synchro Mode\r\n");
hepta2ume 4:6565d9843337 40 pc.printf("i:CAM SnapShot Mode\r\n");
hepta2ume 4:6565d9843337 41 pc.printf("j:Saving Camera Data Mode\r\n");
hepta2ume 4:6565d9843337 42 pc.printf("k:Camera Data Transmitting Mode\r\n");
hepta2ume 4:6565d9843337 43 pc.printf("l:Temperature Sensing Mode\r\n");
hepta2ume 4:6565d9843337 44 pc.printf("m:Xbee Mode\r\n");
hepta2ume 4:6565d9843337 45 pc.printf("n:Xbee & Temperature Mode\r\n");//恒温槽用
hepta2ume 4:6565d9843337 46 pc.printf("o:All Transmitting Mode\r\n");
hepta2ume 2:726072016da1 47 pc.printf("*********************************\r\n");
hepta2ume 2:726072016da1 48
umeume 6:a61510510f54 49 mode = pc.getc();
hepta2ume 2:726072016da1 50 pc.printf("\r\n");
hepta2ume 2:726072016da1 51 pc.printf("Your select Mode = %c\r\n",mode);
hepta2ume 2:726072016da1 52 wait(0.5);
hepta2ume 3:4854731e663d 53
hepta2ume 2:726072016da1 54 switch(mode) {
hepta2ume 3:4854731e663d 55 case'a': {
hepta2ume 2:726072016da1 56 printf("=============\r\n");
hepta2ume 2:726072016da1 57 printf("SD test Mode\r\n");
hepta2ume 2:726072016da1 58 printf("=============\r\n");
hepta2ume 2:726072016da1 59 FILE *fp = fopen("/fs/myfile.txt", "w");
hepta2ume 2:726072016da1 60 if(fp == NULL) {
hepta2ume 2:726072016da1 61 pc.printf("Could not open file for write\r\n");
hepta2ume 2:726072016da1 62 } else {
hepta2ume 2:726072016da1 63 fprintf(fp, "\n\rHello World!\n\r");
hepta2ume 2:726072016da1 64 printf("SD Check Complete!!\r\n");
hepta2ume 2:726072016da1 65 fclose(fp);
hepta2ume 2:726072016da1 66 }
hepta2ume 2:726072016da1 67
hepta2ume 2:726072016da1 68
hepta2ume 2:726072016da1 69 break;
umeume 6:a61510510f54 70 }//case'a'
hepta2ume 2:726072016da1 71
hepta2ume 3:4854731e663d 72 case'b': {
umeume 6:a61510510f54 73 printf("===================\r\n");
umeume 6:a61510510f54 74 printf("Check Battery Level\r\n");
umeume 6:a61510510f54 75 printf("===================\r\n");
hepta2ume 3:4854731e663d 76 float bt;
umeume 6:a61510510f54 77 for(int i = 0; i<50; i++) {
umeume 6:a61510510f54 78 bat.vol(&bt);
umeume 6:a61510510f54 79 pc.printf("V = %f\r\n",bt);
hepta2ume 4:6565d9843337 80 }
hepta2ume 3:4854731e663d 81 break;
umeume 6:a61510510f54 82 }//case'b'
sunifu 0:0482779cd78e 83
hepta2ume 3:4854731e663d 84 case'c': {
hepta2ume 2:726072016da1 85 printf("===================\r\n");
hepta2ume 2:726072016da1 86 printf("Gyro sensing Mode\r\n");
hepta2ume 2:726072016da1 87 printf("===================\r\n");
hepta2ume 2:726072016da1 88 float gx,gy,gz;
hepta2ume 2:726072016da1 89 for(int i = 0; i < 10; i++) {
hepta2ume 2:726072016da1 90 MPU9250.sen_gyro(&gx,&gy,&gz);
hepta2ume 2:726072016da1 91 pc.printf("GX = %f,GY = %f,GZ = %f\r\n",gx,gy,gz);
hepta2ume 2:726072016da1 92 wait(0.5);
hepta2ume 2:726072016da1 93 }
hepta2ume 2:726072016da1 94 break;
umeume 6:a61510510f54 95 }//case'c'
hepta2ume 2:726072016da1 96
hepta2ume 3:4854731e663d 97 case'd': {
hepta2ume 2:726072016da1 98 printf("===================\r\n");
hepta2ume 2:726072016da1 99 printf("Accel sensing Mode\r\n");
hepta2ume 2:726072016da1 100 printf("===================\r\n");
hepta2ume 2:726072016da1 101 float ax,ay,az;
hepta2ume 2:726072016da1 102 for(int i = 0; i < 10; i++) {
hepta2ume 2:726072016da1 103 MPU9250.sen_acc(&ax,&ay,&az);
hepta2ume 2:726072016da1 104 pc.printf("AX = %f,AY = %f,AZ = %f\r\n",ax,ay,az);
hepta2ume 2:726072016da1 105 wait(0.5);
hepta2ume 2:726072016da1 106 }
hepta2ume 2:726072016da1 107 break;
umeume 6:a61510510f54 108 }//case'd'
hepta2ume 2:726072016da1 109
hepta2ume 3:4854731e663d 110 case'e': {
hepta2ume 2:726072016da1 111 float mx,my,mz;
hepta2ume 2:726072016da1 112 printf("===================\r\n");
hepta2ume 2:726072016da1 113 printf("Magnet sensing Mode\r\n");
hepta2ume 2:726072016da1 114 printf("===================\r\n");
hepta2ume 2:726072016da1 115 for(int i = 0; i < 10; i++) {
hepta2ume 2:726072016da1 116 MPU9250.sen_mag(&mx,&my,&mz);
hepta2ume 2:726072016da1 117 pc.printf("MX = %f,MY = %f,MZ = %f\r\n",mx,my,mz);
hepta2ume 2:726072016da1 118 wait(0.5);
hepta2ume 2:726072016da1 119 }
hepta2ume 2:726072016da1 120 break;
umeume 6:a61510510f54 121 }//case'e'
hepta2ume 3:4854731e663d 122
hepta2ume 3:4854731e663d 123 case'f': {
umeume 6:a61510510f54 124 //GPS_SW = 1;
umeume 6:a61510510f54 125 //CAM_SW = 0;
hepta2ume 3:4854731e663d 126 printf("===================\r\n");
hepta2ume 3:4854731e663d 127 printf("GPS sensing Mode\r\n");
hepta2ume 3:4854731e663d 128 printf("===================\r\n");
hepta2ume 3:4854731e663d 129 while(1) pc.putc(camera.getc());
hepta2ume 3:4854731e663d 130 break;
umeume 6:a61510510f54 131 }//case'f'
hepta2ume 3:4854731e663d 132
hepta2ume 4:6565d9843337 133
hepta2ume 4:6565d9843337 134 case'g': {
umeume 6:a61510510f54 135 //GPS_SW = 1;
umeume 6:a61510510f54 136 //CAM_SW = 0;
umeume 6:a61510510f54 137 printf("===================\r\n");
hepta2ume 4:6565d9843337 138 pc.printf("GPS GPGGA Mode\r\n");
umeume 6:a61510510f54 139 printf("===================\r\n");
hepta2ume 4:6565d9843337 140 int quality=0,stnum=0,gps_check=0;
hepta2ume 4:6565d9843337 141 char ns='A',ew='B',aunit='m';
hepta2ume 4:6565d9843337 142 float time=0.0,latitude=0.0,longitude=0.0,hacu=0.0,altitude=0.0;
hepta2ume 4:6565d9843337 143 for(int i=1; i<10; i++) {
hepta2ume 4:6565d9843337 144 camera.gga_sensing(&time, &latitude, &ns, &longitude, &ew, &quality, &stnum, &hacu, &altitude, &aunit, &gps_check);
hepta2ume 4:6565d9843337 145 if((gps_check==0)|(gps_check==1)) {
hepta2ume 4:6565d9843337 146 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);
hepta2ume 4:6565d9843337 147 }
hepta2ume 4:6565d9843337 148 }
hepta2ume 4:6565d9843337 149 break;
umeume 6:a61510510f54 150 }//case'g'
hepta2ume 4:6565d9843337 151
hepta2ume 4:6565d9843337 152
hepta2ume 4:6565d9843337 153 case'h': {
umeume 6:a61510510f54 154 //GPS_SW = 0;
umeume 6:a61510510f54 155 //CAM_SW = 1;
hepta2ume 4:6565d9843337 156 wait(0.5);
hepta2ume 4:6565d9843337 157 printf("\r\n");
hepta2ume 4:6565d9843337 158 printf("==========\r\n");
umeume 6:a61510510f54 159 printf("Camera Synchro\r\n");
hepta2ume 4:6565d9843337 160 printf("==========\r\n");
hepta2ume 4:6565d9843337 161 camera.Sync();
hepta2ume 4:6565d9843337 162 break;
umeume 6:a61510510f54 163 }//case'h'
hepta2ume 2:726072016da1 164
hepta2ume 4:6565d9843337 165 case'i': {
umeume 6:a61510510f54 166 //GPS_SW = 0;
umeume 6:a61510510f54 167 //CAM_SW = 1;
hepta2ume 2:726072016da1 168 printf("\r\n");
hepta2ume 2:726072016da1 169 printf("==========\r\n");
hepta2ume 2:726072016da1 170 printf("CameraC1098\r\n");
hepta2ume 2:726072016da1 171 printf("==========\r\n");
umeume 6:a61510510f54 172 camera.initialize(HeptaSerial::Baud115200, HeptaSerial::JpegResolution320x240);
hepta2ume 2:726072016da1 173 camera.test_jpeg_snapshot_picture(1);
sunifu 0:0482779cd78e 174
hepta2ume 2:726072016da1 175 break;
umeume 6:a61510510f54 176 }//case'i'
hepta2ume 4:6565d9843337 177
hepta2ume 4:6565d9843337 178 case'j': {
umeume 6:a61510510f54 179 //GPS_SW = 0;
umeume 6:a61510510f54 180 //CAM_SW = 1;
hepta2ume 4:6565d9843337 181 printf("\r\n");
hepta2ume 4:6565d9843337 182 printf("==========\r\n");
hepta2ume 4:6565d9843337 183 printf("CameraC1098\r\n");
hepta2ume 4:6565d9843337 184 printf("==========\r\n");
umeume 6:a61510510f54 185 camera.initialize(HeptaSerial::Baud115200, HeptaSerial::JpegResolution320x240);
hepta2ume 4:6565d9843337 186 camera.test_jpeg_snapshot_data(1);
hepta2ume 4:6565d9843337 187
hepta2ume 4:6565d9843337 188 break;
umeume 6:a61510510f54 189 }//case'j'
hepta2ume 4:6565d9843337 190
hepta2ume 4:6565d9843337 191 case'k': {
umeume 6:a61510510f54 192 //GPS_SW = 0;
umeume 6:a61510510f54 193 //CAM_SW = 1;
hepta2ume 4:6565d9843337 194 printf("\r\n");
hepta2ume 4:6565d9843337 195 printf("==========\r\n");
hepta2ume 4:6565d9843337 196 printf("CameraC1098\r\n");
hepta2ume 4:6565d9843337 197 printf("==========\r\n");
umeume 6:a61510510f54 198 camera.initialize(HeptaSerial::Baud115200, HeptaSerial::JpegResolution320x240);
hepta2ume 4:6565d9843337 199 camera.test_jpeg_snapshot_picture(1);
hepta2ume 4:6565d9843337 200
hepta2ume 4:6565d9843337 201 FILE *fp = fopen("/fs/test.txt", "r");
hepta2ume 4:6565d9843337 202 if(fp == NULL) {
hepta2ume 4:6565d9843337 203 pc.printf("Could not open file for write\r\n");
hepta2ume 4:6565d9843337 204 } else {
hepta2ume 4:6565d9843337 205 char str[1024];
hepta2ume 4:6565d9843337 206 while((fgets(str,256,fp))!=NULL) {
umeume 6:a61510510f54 207 xbee.printf("%s",str);
hepta2ume 4:6565d9843337 208 }
hepta2ume 4:6565d9843337 209 fclose(fp);
hepta2ume 4:6565d9843337 210 }
hepta2ume 4:6565d9843337 211
hepta2ume 4:6565d9843337 212 break;
umeume 6:a61510510f54 213 }//case'k'
hepta2ume 2:726072016da1 214
hepta2ume 4:6565d9843337 215 case'l': {
hepta2ume 2:726072016da1 216 printf("==================\r\n");
hepta2ume 2:726072016da1 217 printf("Temp sensing Mode\r\n");
hepta2ume 2:726072016da1 218 printf("==================\r\n");
hepta2ume 2:726072016da1 219 float temp;
hepta2ume 2:726072016da1 220 for(int i = 0; i<100; i++) {
hepta2ume 2:726072016da1 221 heptatemp.temp_sense(&temp);
hepta2ume 2:726072016da1 222 pc.printf("%f\r\n",temp);
hepta2ume 2:726072016da1 223 //xbee.printf("%f\r\n",temp);
hepta2ume 2:726072016da1 224 }
hepta2ume 2:726072016da1 225 break;
umeume 6:a61510510f54 226 }//case'l'
hepta2ume 2:726072016da1 227
hepta2ume 4:6565d9843337 228 case'm': {
hepta2ume 2:726072016da1 229
hepta2ume 2:726072016da1 230 int i=0,rcmd=0,cmdflag=0;
hepta2ume 2:726072016da1 231 xbee.printf("Count Up!\r");
hepta2ume 2:726072016da1 232 while(1) {
hepta2ume 2:726072016da1 233 xbee.printf("num = %d\r",i);
hepta2ume 2:726072016da1 234 i++;
hepta2ume 2:726072016da1 235 wait(1.0);
hepta2ume 2:726072016da1 236 xbee.xbee_recieve(&rcmd,&cmdflag);
hepta2ume 2:726072016da1 237 pc.printf("rcmd=%d, cmdflag=%d\r\n",rcmd, cmdflag);
hepta2ume 2:726072016da1 238 if (cmdflag == 1) {
hepta2ume 2:726072016da1 239 if (rcmd == 'a') {
hepta2ume 2:726072016da1 240 pc.printf("Command Get %d\r\n",rcmd);
hepta2ume 2:726072016da1 241 xbee.printf("HEPTA Uplink OK\r");
hepta2ume 2:726072016da1 242 }
hepta2ume 2:726072016da1 243 xbee.initialize();
hepta2ume 2:726072016da1 244 }
hepta2ume 2:726072016da1 245 }
hepta2ume 2:726072016da1 246
hepta2ume 2:726072016da1 247 break;
umeume 6:a61510510f54 248 }//case'm'
hepta2ume 2:726072016da1 249
hepta2ume 4:6565d9843337 250 case'n': {
hepta2ume 2:726072016da1 251 printf("==================\r\n");
hepta2ume 2:726072016da1 252 printf("Temp sensing Mode & Xbee\r\n");
hepta2ume 2:726072016da1 253 printf("==================\r\n");
hepta2ume 2:726072016da1 254 float temp;
hepta2ume 3:4854731e663d 255 while(1) {
hepta2ume 3:4854731e663d 256 FILE *fp = fopen("/fs/myfile.csv", "a");
hepta2ume 3:4854731e663d 257 heptatemp.temp_sense(&temp);
hepta2ume 3:4854731e663d 258 pc.printf("%f\r\n",temp);
hepta2ume 3:4854731e663d 259 xbee.printf("%f\r\n",temp);
hepta2ume 3:4854731e663d 260 fprintf(fp, "%f\n",temp);
hepta2ume 3:4854731e663d 261 fclose(fp);
hepta2ume 3:4854731e663d 262 }
hepta2ume 2:726072016da1 263 break;
umeume 6:a61510510f54 264 }//case'n'
hepta2ume 2:726072016da1 265
hepta2ume 4:6565d9843337 266 case'o': {
umeume 6:a61510510f54 267 //GPS_SW = 1;
umeume 6:a61510510f54 268 //CAM_SW = 0;
hepta2ume 2:726072016da1 269 printf("==================\r\n");
hepta2ume 2:726072016da1 270 printf("All Transmitting Mode\r\n");
hepta2ume 2:726072016da1 271 printf("==================\r\n");
hepta2ume 5:aedf4491aa0f 272 char gx[4],gy[4],gz[4],ax[4],ay[4],az[4],mx[4],my[4],mz[4],lad[8],log[8],height[4],bt[4],temp[4];
hepta2ume 5:aedf4491aa0f 273 char ddata[64];
hepta2ume 5:aedf4491aa0f 274 int dsize[7];
hepta2ume 2:726072016da1 275 while(1) {
hepta2ume 4:6565d9843337 276
hepta2ume 4:6565d9843337 277 MPU9250.sen_gyro_u16(gx,gy,gz,&dsize[0]);
hepta2ume 4:6565d9843337 278 MPU9250.sen_acc_u16(ax,ay,az,&dsize[1]);
hepta2ume 4:6565d9843337 279 MPU9250.sen_mag_u16(mx,my,mz,&dsize[2]);
hepta2ume 5:aedf4491aa0f 280 camera.lat_log_sensing_u16(lad,log,height,&dsize[3],&dsize[4]);
hepta2ume 5:aedf4491aa0f 281 bat.vol_u16(bt,&dsize[5]);
hepta2ume 5:aedf4491aa0f 282 heptatemp.temp_sense_u16(temp,&dsize[6]);
hepta2ume 5:aedf4491aa0f 283 xbee.xbee_transmit(ddata,64,gx,gy,gz,ax,ay,az,mx,my,mz,lad,log,height,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],dsize[6],14);
hepta2ume 2:726072016da1 284 }
hepta2ume 2:726072016da1 285 break;
hepta2ume 2:726072016da1 286 }//case'9'
hepta2ume 3:4854731e663d 287
hepta2ume 2:726072016da1 288 default:
hepta2ume 2:726072016da1 289 break;
hepta2ume 2:726072016da1 290
hepta2ume 2:726072016da1 291
hepta2ume 2:726072016da1 292 }
hepta2ume 2:726072016da1 293 }
hepta2ume 2:726072016da1 294 }