gs testing

Dependencies:   HEPTA_CDH HEPTA_COM HEPTA_EPS HEPTA_SENSOR mbed

Committer:
tomoyuki1021
Date:
Sun Sep 25 02:14:01 2022 +0000
Revision:
31:cb894a9a4f15
Parent:
30:f300d1e88f4c
heptasat gs testing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 0:bdbd3d6fc5d5 1 #include "mbed.h"
HeptaSatTraining2019 25:ccc5ff675e0c 2 #include "HEPTA_CDH.h"
HeptaSatTraining2019 25:ccc5ff675e0c 3 #include "HEPTA_EPS.h"
MEXT1 27:b4689aa48bf5 4 #include "HEPTA_SENSOR.h"
MEXT1 27:b4689aa48bf5 5 #include "HEPTA_COM.h"
HeptaSatTraining2019 26:220e5f95168a 6 HEPTA_CDH cdh(p5, p6, p7, p8, "sd");
HeptaSatTraining2019 26:220e5f95168a 7 HEPTA_EPS eps(p16,p26);
MEXT1 27:b4689aa48bf5 8 HEPTA_SENSOR sensor(p17,
MEXT1 27:b4689aa48bf5 9 p28,p27,0xD0,0x18,
MEXT1 27:b4689aa48bf5 10 p13,p14,p25,p24);
heptasat2021 29:eb84063fe5c9 11 HEPTA_COM com(p9,p10);
heptasat2021 29:eb84063fe5c9 12 DigitalOut condition(LED1);
heptasat2021 29:eb84063fe5c9 13 Serial sat(USBTX,USBRX,9600);
heptasat2021 29:eb84063fe5c9 14 Timer sattime;
MEXT1 27:b4689aa48bf5 15 int rcmd = 0,cmdflag = 0; //command variable
heptasat2021 29:eb84063fe5c9 16
tomoyuki1021 31:cb894a9a4f15 17 int main()
tomoyuki1021 31:cb894a9a4f15 18 {
heptasat2021 29:eb84063fe5c9 19 sat.printf("From Sat : Nominal Operation\r\n");
heptasat2021 29:eb84063fe5c9 20 com.printf("From Sat : Nominal Operation\r\n");
heptasat2021 29:eb84063fe5c9 21 com.baud(9600);
heptasat2021 29:eb84063fe5c9 22 int flag = 0; //condition flag
tomoyuki1021 31:cb894a9a4f15 23 float batvol, temp; //voltage, temperature
heptasat2021 29:eb84063fe5c9 24 int rcmd=0,cmdflag=0; //command variable
heptasat2021 29:eb84063fe5c9 25 sattime.start();
heptasat2021 29:eb84063fe5c9 26 eps.turn_on_regulator();//turn on 3.3V conveter
tomoyuki1021 31:cb894a9a4f15 27
tomoyuki1021 31:cb894a9a4f15 28 while(1) {
heptasat2021 30:f300d1e88f4c 29 com.xbee_receive(&rcmd,&cmdflag);//interupting by ground station command
heptasat2021 29:eb84063fe5c9 30 //senssing HK data(dummy data)
heptasat2021 29:eb84063fe5c9 31 eps.vol(&batvol);
MEXT1 27:b4689aa48bf5 32 sensor.temp_sense(&temp);
tomoyuki1021 31:cb894a9a4f15 33 wait_ms(100);
heptasat2021 29:eb84063fe5c9 34 //Transmitting HK data to Ground Station(GS)
tomoyuki1021 31:cb894a9a4f15 35 sensor.gps_setting();
tomoyuki1021 31:cb894a9a4f15 36 int quality=0,stnum=0,gps_check=0;
tomoyuki1021 31:cb894a9a4f15 37 char ns='A',ew='B',aunit='m';
tomoyuki1021 31:cb894a9a4f15 38 float time=0.0,latitude=0.0,longitude=0.0,hacu=0.0,altitude=0.0;
tomoyuki1021 31:cb894a9a4f15 39 com.printf("HEPTASAT::Condition=%d,Time=%f[s],batVol=%.2f[V],Temp=%.2f[C],GPGGA,%f,%f,%f\r\n",
tomoyuki1021 31:cb894a9a4f15 40 flag,sattime.read(),batvol,temp,latitude,longitude,altitude);
heptasat2021 29:eb84063fe5c9 41 wait_ms(1000);
tomoyuki1021 31:cb894a9a4f15 42
tomoyuki1021 31:cb894a9a4f15 43 //Power Saving Mode
tomoyuki1021 31:cb894a9a4f15 44 if((batvol <= 3.5) | (temp > 35.0)) {
heptasat2021 29:eb84063fe5c9 45 eps.shut_down_regulator();
tomoyuki1021 31:cb894a9a4f15 46 com.printf("Power saving mode ON\r\n");
heptasat2021 29:eb84063fe5c9 47 flag = 1;
heptasat2021 29:eb84063fe5c9 48 } else if((flag == 1) & (batvol > 3.7) & (temp <= 25.0)) {
heptasat2021 29:eb84063fe5c9 49 eps.turn_on_regulator();
heptasat2021 29:eb84063fe5c9 50 com.printf("Power saving mode OFF\r\n");
heptasat2021 29:eb84063fe5c9 51 flag = 0;
HeptaSatTraining2019 26:220e5f95168a 52 }
MEXT1 27:b4689aa48bf5 53 //Contents of command
tomoyuki1021 31:cb894a9a4f15 54 //if (cmdflag == 1) {
tomoyuki1021 31:cb894a9a4f15 55 if (rcmd == '0') {
tomoyuki1021 31:cb894a9a4f15 56 sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
tomoyuki1021 31:cb894a9a4f15 57 com.printf("Hepta-Sat Uplink Ok\r\n");
tomoyuki1021 31:cb894a9a4f15 58 for(int j=0; j<5; j++) {
tomoyuki1021 31:cb894a9a4f15 59 com.printf("Hello World!\r\n");
tomoyuki1021 31:cb894a9a4f15 60 condition = 1;
tomoyuki1021 31:cb894a9a4f15 61 wait_ms(1000);
tomoyuki1021 31:cb894a9a4f15 62 }
tomoyuki1021 31:cb894a9a4f15 63 } else if (rcmd == '1') {
tomoyuki1021 31:cb894a9a4f15 64 sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
tomoyuki1021 31:cb894a9a4f15 65 com.printf("Hepta-Sat Uplink Ok\r\n");
tomoyuki1021 31:cb894a9a4f15 66 char str[100];
tomoyuki1021 31:cb894a9a4f15 67 mkdir("/sd/mydir", 0777);
tomoyuki1021 31:cb894a9a4f15 68 FILE *fp = fopen("/sd/mydir/satdata.txt","w");
tomoyuki1021 31:cb894a9a4f15 69 if(fp == NULL) {
tomoyuki1021 31:cb894a9a4f15 70 error("Could not open file for write\r\n");
tomoyuki1021 31:cb894a9a4f15 71 }
tomoyuki1021 31:cb894a9a4f15 72 for(int i = 0; i < 10; i++) {
tomoyuki1021 31:cb894a9a4f15 73 eps.vol(&batvol);
tomoyuki1021 31:cb894a9a4f15 74 fprintf(fp,"%f\r\n",batvol);
tomoyuki1021 31:cb894a9a4f15 75 condition = 1;
tomoyuki1021 31:cb894a9a4f15 76 wait_ms(1000);
tomoyuki1021 31:cb894a9a4f15 77 }
tomoyuki1021 31:cb894a9a4f15 78 fclose(fp);
tomoyuki1021 31:cb894a9a4f15 79 fp = fopen("/sd/mydir/satdata.txt","r");
tomoyuki1021 31:cb894a9a4f15 80 for(int i = 0; i < 10; i++) {
tomoyuki1021 31:cb894a9a4f15 81 fgets(str,100,fp);
tomoyuki1021 31:cb894a9a4f15 82 com.puts(str);
tomoyuki1021 31:cb894a9a4f15 83 }
tomoyuki1021 31:cb894a9a4f15 84 fclose(fp);
tomoyuki1021 31:cb894a9a4f15 85 } else if (rcmd == '2') {
tomoyuki1021 31:cb894a9a4f15 86 sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
tomoyuki1021 31:cb894a9a4f15 87 com.printf("Hepta-Sat Uplink Ok\r\n");
tomoyuki1021 31:cb894a9a4f15 88 sensor.gps_setting();
tomoyuki1021 31:cb894a9a4f15 89 int quality=0,stnum=0,gps_check=0;
tomoyuki1021 31:cb894a9a4f15 90 char ns='A',ew='B',aunit='m';
tomoyuki1021 31:cb894a9a4f15 91 float time=0.0,latitude=0.0,longitude=0.0,hacu=0.0,altitude=0.0;
tomoyuki1021 31:cb894a9a4f15 92 for(int i=1; i<1000; i++) {
tomoyuki1021 31:cb894a9a4f15 93 sensor.gga_sensing(&time, &latitude, &ns, &longitude, &ew, &quality, &stnum, &hacu, &altitude, &aunit, &gps_check);
tomoyuki1021 31:cb894a9a4f15 94 if((gps_check==0)|(gps_check==1)) {
tomoyuki1021 31:cb894a9a4f15 95 com.printf("GPGGA,%f,%f,%c,%f,%c,%d,%d,%f,%f,%c\r\n",time,latitude,ns,longitude,ew,quality,stnum,hacu,altitude,aunit);
MEXT1 27:b4689aa48bf5 96 }
tomoyuki1021 31:cb894a9a4f15 97 }
tomoyuki1021 31:cb894a9a4f15 98 } else if (rcmd == '3') {
tomoyuki1021 31:cb894a9a4f15 99 sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
tomoyuki1021 31:cb894a9a4f15 100 com.printf("Hepta-Sat Uplink Ok\r\n");
tomoyuki1021 31:cb894a9a4f15 101 float ax,ay,az;
tomoyuki1021 31:cb894a9a4f15 102 com.printf("Accel Sensor Mode\r\n");
tomoyuki1021 31:cb894a9a4f15 103 for(int i = 0; i<50; i++) {
tomoyuki1021 31:cb894a9a4f15 104 sensor.sen_acc(&ax,&ay,&az);
tomoyuki1021 31:cb894a9a4f15 105 com.printf("%f,%f,%f\r\n",ax,ay,az);
tomoyuki1021 31:cb894a9a4f15 106 wait(0.5);
tomoyuki1021 31:cb894a9a4f15 107 }
tomoyuki1021 31:cb894a9a4f15 108 } else if (rcmd == '4') {
tomoyuki1021 31:cb894a9a4f15 109 sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
tomoyuki1021 31:cb894a9a4f15 110 com.printf("Hepta-Sat Uplink Ok\r\n");
tomoyuki1021 31:cb894a9a4f15 111 float gx,gy,gz;
tomoyuki1021 31:cb894a9a4f15 112 com.printf("Gyro Sensor Mode\r\n");
tomoyuki1021 31:cb894a9a4f15 113 for(int i = 0; i<50; i++) {
tomoyuki1021 31:cb894a9a4f15 114 sensor.sen_gyro(&gx,&gy,&gz);
tomoyuki1021 31:cb894a9a4f15 115 com.printf("%f,%f,%f\r\n",gx,gy,gz);
tomoyuki1021 31:cb894a9a4f15 116 wait(0.5);
tomoyuki1021 31:cb894a9a4f15 117 }
tomoyuki1021 31:cb894a9a4f15 118 } else if (rcmd == '5') {
tomoyuki1021 31:cb894a9a4f15 119 sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
tomoyuki1021 31:cb894a9a4f15 120 com.printf("Hepta-Sat Uplink Ok\r\n");
tomoyuki1021 31:cb894a9a4f15 121 float mx,my,mz;
tomoyuki1021 31:cb894a9a4f15 122 com.printf("Magnetometer Mode\r\n");
tomoyuki1021 31:cb894a9a4f15 123 for(int i = 0; i<50; i++) {
tomoyuki1021 31:cb894a9a4f15 124 sensor.sen_mag(&mx,&my,&mz);
tomoyuki1021 31:cb894a9a4f15 125 com.printf("%f,%f,%f\r\n",mx,my,mz);
tomoyuki1021 31:cb894a9a4f15 126 wait(0.5);
tomoyuki1021 31:cb894a9a4f15 127 }
tomoyuki1021 31:cb894a9a4f15 128 } else if (rcmd == '6') {
tomoyuki1021 31:cb894a9a4f15 129 sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
tomoyuki1021 31:cb894a9a4f15 130 com.printf("Hepta-Sat Uplink Ok\r\n");
tomoyuki1021 31:cb894a9a4f15 131 float ax,ay,az;
tomoyuki1021 31:cb894a9a4f15 132 float gx,gy,gz;
tomoyuki1021 31:cb894a9a4f15 133 float mx,my,mz;
tomoyuki1021 31:cb894a9a4f15 134 com.printf("9-axis sensor Mode\r\n");
tomoyuki1021 31:cb894a9a4f15 135 for(int i = 0; i<50; i++) {
tomoyuki1021 31:cb894a9a4f15 136 sensor.sen_acc(&ax,&ay,&az);
tomoyuki1021 31:cb894a9a4f15 137 sensor.sen_gyro(&gx,&gy,&gz);
tomoyuki1021 31:cb894a9a4f15 138 sensor.sen_mag(&mx,&my,&mz);
tomoyuki1021 31:cb894a9a4f15 139 com.printf("-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,%f,%f,%f,%f,%f,%f,%f,%f,%f\r\n",ax,ay,az,gx,gy,gz,mx,my,mz);
tomoyuki1021 31:cb894a9a4f15 140 wait(0.5);
tomoyuki1021 31:cb894a9a4f15 141 }
tomoyuki1021 31:cb894a9a4f15 142 } else if (rcmd == '7') {
tomoyuki1021 31:cb894a9a4f15 143 sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
tomoyuki1021 31:cb894a9a4f15 144 com.printf("Hepta-Sat Uplink Ok\r\n");
tomoyuki1021 31:cb894a9a4f15 145 com.printf("CAMERA\r\n");
tomoyuki1021 31:cb894a9a4f15 146 sensor.Sync();
tomoyuki1021 31:cb894a9a4f15 147 sensor.initialize(HeptaCamera_GPS::Baud115200, HeptaCamera_GPS::JpegResolution320x240);
tomoyuki1021 31:cb894a9a4f15 148 sensor.test_jpeg_snapshot_data("/sd/test.txt");
tomoyuki1021 31:cb894a9a4f15 149 FILE *fp = fopen("/sd/test.txt", "r");
tomoyuki1021 31:cb894a9a4f15 150 if(fp == NULL) {
tomoyuki1021 31:cb894a9a4f15 151 sat.printf("Could not open file for write\r\n");
tomoyuki1021 31:cb894a9a4f15 152 } else {
tomoyuki1021 31:cb894a9a4f15 153 char str[1024];
tomoyuki1021 31:cb894a9a4f15 154 com.printf("INICIO\r\n");
tomoyuki1021 31:cb894a9a4f15 155 while((fgets(str,256,fp))!=NULL) {
tomoyuki1021 31:cb894a9a4f15 156 com.printf("%s",str);
tomoyuki1021 31:cb894a9a4f15 157 wait(0.001);
heptasat2021 29:eb84063fe5c9 158 }
tomoyuki1021 31:cb894a9a4f15 159 com.printf("FIN\r\n");
tomoyuki1021 31:cb894a9a4f15 160 //com.printf("Data transmitting finished:)\r\n");
tomoyuki1021 31:cb894a9a4f15 161 fclose(fp);
HeptaSatTraining2019 26:220e5f95168a 162 }
tomoyuki1021 31:cb894a9a4f15 163 } else if (rcmd == '8') {
heptasat2021 30:f300d1e88f4c 164 com.initialize();
tomoyuki1021 31:cb894a9a4f15 165 sattime.stop();
tomoyuki1021 31:cb894a9a4f15 166 sat.printf("From Sat : End of operation\r\n");
tomoyuki1021 31:cb894a9a4f15 167 com.printf("From Sat : End of operation\r\n");
tomoyuki1021 31:cb894a9a4f15 168 break;
HeptaSatTraining2019 26:220e5f95168a 169 }
tomoyuki1021 31:cb894a9a4f15 170 //}
HeptaSatTraining2019 24:3659e0c223c8 171 }
tomoyuki1021 31:cb894a9a4f15 172 }