Lab5-03_create_satcode_step6_lite
Dependencies: mbed HEPTA_CDH_lite HEPTA_COM_lite HEPTA_SENSOR_lite HEPTA_EPS_lite
Diff: main.cpp
- Revision:
- 3:e5ae22e02335
- Parent:
- 2:30f72f09756e
- Child:
- 4:52de4bb3146f
--- a/main.cpp Tue Aug 17 11:01:44 2021 +0000 +++ b/main.cpp Tue Aug 17 11:07:04 2021 +0000 @@ -7,27 +7,101 @@ HEPTA_EPS eps(PA_0,PA_4); HEPTA_SENSOR sensor(PA_7,PB_7,PB_6,0xD0); HEPTA_COM com(PA_9,PA_10,9600); -Serial sat(USBTX,USBRX,9600); +DigitalOut condition(PB_1); +Serial sat(USBTX,USBRX, 38400); +Timer sattime; int main() { - sat.printf("Xbee Uplink Downlink Mode\r\n"); - int rcmd=0,cmdflag=0; - float ax,ay,az; - for(int i=0;i<10;i++){ + sat.printf("From Sat : Nominal Operation\r\n"); + com.printf("From Sat : Nominal Operation\r\n"); + int flag = 0; //condition flag + float batvol, temp; //voltage, temperature + int rcmd=0,cmdflag=0; //command variable + sattime.start(); + eps.turn_on_regulator();//turn on 3.3V conveter + for(int i=0;i<50;i++){ com.xbee_receive(&rcmd,&cmdflag); - com.printf("num=%d\r\n",i); - if(cmdflag==1){ - if(rcmd=='a'){ + + //satellite condition led + condition = !condition; + + //senssing HK data + eps.vol(&batvol); + sensor.temp_sense(&temp); + + //Transmitting HK data to Ground Station(GS) + com.printf("HEPTASAT::Condition = %d, Time = %f [s], batvol = %2f [V], temp = %2f [deg C]\r\n",flag,sattime.read(),batvol,temp); + wait_ms(1000); + + //Power Saving Mode + if((batvol <= 3.5) | (temp > 35.0)){ + eps.shut_down_regulator(); + com.printf("Power saving mode ON\r\n"); + flag = 1; + } else if((flag == 1) & (batvol > 3.7) & (temp <= 25.0)) { + eps.turn_on_regulator(); + com.printf("Power saving mode OFF\r\n"); + flag = 0; + } + + if(cmdflag == 1){ + if(rcmd == 'a'){ + sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag); + com.printf("Hepta-Sat Lite Uplink Ok\r\n"); + for(int j=0;j<5;j++){ + com.printf("Hello World!\r\n"); + condition = 1; + wait_ms(1000); + } + }else if(rcmd == 'b') { sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag); com.printf("Hepta-Sat Lite Uplink Ok\r\n"); - for(int i=0;i<10;i++){ - sensor.sen_acc(&ax,&ay,&az); - com.printf("%f,%f,%f\r\n",ax,ay,az); + char str[100]; + mkdir("/sd/mydir", 0777); + FILE *fp = fopen("/sd/mydir/satdata.txt","w"); + if(fp == NULL) { + error("Could not open file for write\r\n"); + } + for(int i = 0; i < 10; i++) { + eps.vol(&batvol); + fprintf(fp,"%f\r\n",batvol); + condition = 1; wait_ms(1000); } + fclose(fp); + fp = fopen("/sd/mydir/satdata.txt","r"); + for(int i = 0; i < 10; i++) { + fgets(str,100,fp); + com.puts(str); + } + fclose(fp); + }else if(rcmd == 'c'){ + sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag); + com.printf("Hepta-Sat Lite Uplink Ok\r\n"); + float ax,ay,az; + for(int i = 0; i < 10; i++) { + sensor.sen_acc(&ax,&ay,&az); + com.printf("%f,%f,%f\r\n",ax,ay,az); + wait_ms(1000); + } + }else if(rcmd == 'd'){ + sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag); + com.printf("Hepta-Sat Lite Uplink Ok\r\n"); + float gx,gy,gz; + for(int i = 0; i < 10; i++) { + sensor.sen_gyro(&gx,&gy,&gz); + com.printf("%f,%f,%f\r\n",gx,gy,gz); + wait_ms(1000); + } + }else if(rcmd == 'e'){ + + + } - com.initialize(); + com.initialize(); //initializing } - wait_ms(1000); } + sattime.stop(); + sat.printf("From Sat : End of operation\r\n"); + com.printf("From Sat : End of operation\r\n"); } \ No newline at end of file