Daisuke Yanagihara / Mbed 2 deprecated CLTP_Lab5-6_create_satellite_program_step6_v1

Dependencies:   HEPTA_SENSOR mbed HEPTA_EPS HEPTA_COM HEPTA_CDH

Committer:
Yanagihara
Date:
Tue Aug 30 02:55:02 2022 +0000
Revision:
33:d6e22ac4fb84
Parent:
32:c22cbcfb4635
maybe Lab5-6

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"
Yanagihara 33:d6e22ac4fb84 6 #include <stdlib.h>
Yanagihara 33:d6e22ac4fb84 7
HeptaSatTraining2019 26:220e5f95168a 8 HEPTA_CDH cdh(p5, p6, p7, p8, "sd");
HeptaSatTraining2019 26:220e5f95168a 9 HEPTA_EPS eps(p16,p26);
MEXT1 27:b4689aa48bf5 10 HEPTA_SENSOR sensor(p17,
csmk18112 32:c22cbcfb4635 11 p28,p27,0x19,0x69,0x13,
csmk18112 32:c22cbcfb4635 12 p13, p14,p25,p24);
heptasat2021 29:eb84063fe5c9 13 HEPTA_COM com(p9,p10);
heptasat2021 29:eb84063fe5c9 14 DigitalOut condition(LED1);
heptasat2021 29:eb84063fe5c9 15 Serial sat(USBTX,USBRX,9600);
heptasat2021 29:eb84063fe5c9 16 Timer sattime;
MEXT1 27:b4689aa48bf5 17 int rcmd = 0,cmdflag = 0; //command variable
heptasat2021 29:eb84063fe5c9 18
MEXT1 27:b4689aa48bf5 19 int main() {
heptasat2021 29:eb84063fe5c9 20 sat.printf("From Sat : Nominal Operation\r\n");
heptasat2021 29:eb84063fe5c9 21 com.printf("From Sat : Nominal Operation\r\n");
heptasat2021 29:eb84063fe5c9 22 com.baud(9600);
heptasat2021 29:eb84063fe5c9 23 int flag = 0; //condition flag
heptasat2021 29:eb84063fe5c9 24 float batvol, temp; //voltage, temperature
heptasat2021 29:eb84063fe5c9 25 int rcmd=0,cmdflag=0; //command variable
heptasat2021 29:eb84063fe5c9 26 sattime.start();
heptasat2021 29:eb84063fe5c9 27 eps.turn_on_regulator();//turn on 3.3V conveter
Yanagihara 33:d6e22ac4fb84 28 while(1) {
heptasat2021 30:f300d1e88f4c 29 com.xbee_receive(&rcmd,&cmdflag);//interupting by ground station command
heptasat2021 30:f300d1e88f4c 30
heptasat2021 29:eb84063fe5c9 31 //satellite condition led
heptasat2021 29:eb84063fe5c9 32 condition = !condition;
heptasat2021 29:eb84063fe5c9 33
heptasat2021 29:eb84063fe5c9 34 //senssing HK data(dummy data)
heptasat2021 29:eb84063fe5c9 35 eps.vol(&batvol);
MEXT1 27:b4689aa48bf5 36 sensor.temp_sense(&temp);
heptasat2021 29:eb84063fe5c9 37
heptasat2021 29:eb84063fe5c9 38 //Transmitting HK data to Ground Station(GS)
heptasat2021 29:eb84063fe5c9 39 com.printf("HEPTASAT::Condition = %d, Time = %f [s], batVol = %.2f [V],Temp = %.2f [C]\r\n",flag,sattime.read(),batvol,temp);
heptasat2021 29:eb84063fe5c9 40 wait_ms(1000);
heptasat2021 29:eb84063fe5c9 41
heptasat2021 29:eb84063fe5c9 42 //Power Saving Mode
heptasat2021 29:eb84063fe5c9 43 if((batvol <= 3.5) | (temp > 35.0)){
heptasat2021 29:eb84063fe5c9 44 eps.shut_down_regulator();
heptasat2021 29:eb84063fe5c9 45 com.printf("Power saving mode ON\r\n");
heptasat2021 29:eb84063fe5c9 46 flag = 1;
heptasat2021 29:eb84063fe5c9 47 } else if((flag == 1) & (batvol > 3.7) & (temp <= 25.0)) {
heptasat2021 29:eb84063fe5c9 48 eps.turn_on_regulator();
heptasat2021 29:eb84063fe5c9 49 com.printf("Power saving mode OFF\r\n");
heptasat2021 29:eb84063fe5c9 50 flag = 0;
HeptaSatTraining2019 26:220e5f95168a 51 }
MEXT1 27:b4689aa48bf5 52 //Contents of command
HeptaSatTraining2019 26:220e5f95168a 53 if (cmdflag == 1) {
Yanagihara 33:d6e22ac4fb84 54 if (rcmd == 'z') {
heptasat2021 29:eb84063fe5c9 55 sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
heptasat2021 29:eb84063fe5c9 56 com.printf("Hepta-Sat Lite Uplink Ok\r\n");
heptasat2021 29:eb84063fe5c9 57 for(int j=0;j<5;j++){
heptasat2021 29:eb84063fe5c9 58 com.printf("Hello World!\r\n");
heptasat2021 29:eb84063fe5c9 59 condition = 1;
heptasat2021 29:eb84063fe5c9 60 wait_ms(1000);
heptasat2021 29:eb84063fe5c9 61 }
Yanagihara 33:d6e22ac4fb84 62 }else if (rcmd == 'y') {
heptasat2021 29:eb84063fe5c9 63 sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
heptasat2021 29:eb84063fe5c9 64 com.printf("Hepta-Sat Lite Uplink Ok\r\n");
MEXT1 27:b4689aa48bf5 65 char str[100];
MEXT1 27:b4689aa48bf5 66 mkdir("/sd/mydir", 0777);
heptasat2021 29:eb84063fe5c9 67 FILE *fp = fopen("/sd/mydir/satdata.txt","w");
MEXT1 27:b4689aa48bf5 68 if(fp == NULL) {
MEXT1 27:b4689aa48bf5 69 error("Could not open file for write\r\n");
MEXT1 27:b4689aa48bf5 70 }
heptasat2021 29:eb84063fe5c9 71 for(int i = 0; i < 10; i++) {
heptasat2021 29:eb84063fe5c9 72 eps.vol(&batvol);
heptasat2021 29:eb84063fe5c9 73 fprintf(fp,"%f\r\n",batvol);
heptasat2021 29:eb84063fe5c9 74 condition = 1;
heptasat2021 29:eb84063fe5c9 75 wait_ms(1000);
MEXT1 27:b4689aa48bf5 76 }
heptasat2021 29:eb84063fe5c9 77 fclose(fp);
heptasat2021 29:eb84063fe5c9 78 fp = fopen("/sd/mydir/satdata.txt","r");
heptasat2021 29:eb84063fe5c9 79 for(int i = 0; i < 10; i++) {
heptasat2021 29:eb84063fe5c9 80 fgets(str,100,fp);
heptasat2021 29:eb84063fe5c9 81 com.puts(str);
heptasat2021 29:eb84063fe5c9 82 }
heptasat2021 29:eb84063fe5c9 83 fclose(fp);
Yanagihara 33:d6e22ac4fb84 84 }else if (rcmd == 'a') {
Yanagihara 33:d6e22ac4fb84 85 sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
Yanagihara 33:d6e22ac4fb84 86 int myrand = (rand()%10) + 400;
Yanagihara 33:d6e22ac4fb84 87 char byte1 = (myrand&0xff00)>>8;
Yanagihara 33:d6e22ac4fb84 88 char byte2 = myrand&0x00ff;
Yanagihara 33:d6e22ac4fb84 89 com.printf("CO2 = %04d [ppm]\r\n",(byte1*256)+byte2);
Yanagihara 33:d6e22ac4fb84 90 /*
Yanagihara 33:d6e22ac4fb84 91 com.putc(0x03);
Yanagihara 33:d6e22ac4fb84 92 com.putc(0x45);
Yanagihara 33:d6e22ac4fb84 93 com.putc(0x13);
Yanagihara 33:d6e22ac4fb84 94 com.putc(0x10);
Yanagihara 33:d6e22ac4fb84 95 */
Yanagihara 33:d6e22ac4fb84 96 wait_ms(1000);
Yanagihara 33:d6e22ac4fb84 97 }else if (rcmd == 'b') {
Yanagihara 33:d6e22ac4fb84 98 // TODO
heptasat2021 29:eb84063fe5c9 99
Yanagihara 33:d6e22ac4fb84 100 }else if (rcmd == 'c') {
Yanagihara 33:d6e22ac4fb84 101 wait_ms(2000);
Yanagihara 33:d6e22ac4fb84 102 com.printf("Cal OK\r\n");
HeptaSatTraining2019 26:220e5f95168a 103 }
heptasat2021 30:f300d1e88f4c 104 com.initialize();
HeptaSatTraining2019 26:220e5f95168a 105 }
HeptaSatTraining2019 24:3659e0c223c8 106 }
heptasat2021 29:eb84063fe5c9 107 sattime.stop();
heptasat2021 29:eb84063fe5c9 108 sat.printf("From Sat : End of operation\r\n");
heptasat2021 29:eb84063fe5c9 109 com.printf("From Sat : End of operation\r\n");
MEXT1 27:b4689aa48bf5 110 }
Yanagihara 33:d6e22ac4fb84 111