Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: HEPTA_SENSOR mbed HEPTA_EPS HEPTA_COM HEPTA_CDH
Diff: main.cpp
- Revision:
- 33:8a992b69fcd3
- Parent:
- 32:c22cbcfb4635
diff -r c22cbcfb4635 -r 8a992b69fcd3 main.cpp
--- a/main.cpp Fri Aug 19 04:35:30 2022 +0000
+++ b/main.cpp Tue Aug 30 02:39:39 2022 +0000
@@ -3,27 +3,73 @@
#include "HEPTA_EPS.h"
#include "HEPTA_SENSOR.h"
#include "HEPTA_COM.h"
+
HEPTA_CDH cdh(p5, p6, p7, p8, "sd");
HEPTA_EPS eps(p16,p26);
HEPTA_SENSOR sensor(p17,
p28,p27,0x19,0x69,0x13,
p13, p14,p25,p24);
HEPTA_COM com(p9,p10);
+
DigitalOut condition(LED1);
+DigitalOut LandLED1(p29);
+DigitalOut LandLED2(p30);
+DigitalOut LandLED3(p11);
+DigitalOut LandLED4(p12);
+
Serial sat(USBTX,USBRX,9600);
Timer sattime;
int rcmd = 0,cmdflag = 0; //command variable
+DigitalOut debug2(LED2);
+DigitalOut debug3(LED3);
+DigitalOut debug4(LED4);
+
+int co2ppm = 0;
+
int main() {
+
+ debug2 = 1;
+ debug3 = 1;
+ debug4 = 1;
+ wait_ms(500);
+ debug2 = 0;
+ debug3 = 0;
+ debug4 = 0;
+ wait_ms(500);
+ debug2 = 1;
+ debug3 = 1;
+ debug4 = 1;
+ wait_ms(500);
+ debug2 = 0;
+ debug3 = 0;
+ debug4 = 0;
+ wait_ms(500);
+ debug2 = 1;
+ debug3 = 1;
+ debug4 = 1;
+ wait_ms(500);
+ debug2 = 0;
+ debug3 = 0;
+ debug4 = 0;
+ wait_ms(500);
+
+ LandLED1 = 1;
+ LandLED2 = 1;
+ LandLED3 = 1;
+ LandLED4 = 1;
sat.printf("From Sat : Nominal Operation\r\n");
com.printf("From Sat : Nominal Operation\r\n");
com.baud(9600);
int flag = 0; //condition flag
float batvol, temp; //voltage, temperature
int rcmd=0,cmdflag=0; //command variable
+ float ax,ay,az;
+ float gx,gy,gz;
+
sattime.start();
eps.turn_on_regulator();//turn on 3.3V conveter
- for(int i = 0; i < 100; i++) {
+ while(1) {
com.xbee_receive(&rcmd,&cmdflag);//interupting by ground station command
//satellite condition led
@@ -36,7 +82,6 @@
//Transmitting HK data to Ground Station(GS)
com.printf("HEPTASAT::Condition = %d, Time = %f [s], batVol = %.2f [V],Temp = %.2f [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();
@@ -51,7 +96,7 @@
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");
+ com.printf("Hepta-Sat Uplink Ok\r\n");
for(int j=0;j<5;j++){
com.printf("Hello World!\r\n");
condition = 1;
@@ -59,7 +104,7 @@
}
}else if (rcmd == 'b') {
sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
- com.printf("Hepta-Sat Lite Uplink Ok\r\n");
+ com.printf("Hepta-Sat Uplink Ok\r\n");
char str[100];
mkdir("/sd/mydir", 0777);
FILE *fp = fopen("/sd/mydir/satdata.txt","w");
@@ -81,13 +126,80 @@
fclose(fp);
}else if (rcmd == 'c') {
//Please insert your answer
-
+ sat.printf("Command Get %d\r\n",rcmd);
+ com.printf("HEPTA Uplink OK\r\n");
+ sat.printf("===================\r\n");
+ sat.printf("Accel sensing Mode\r\n");
+ sat.printf("===================\r\n");
+ for(int ii = 0; ii < 10; ii++) {
+ sensor.sen_acc(&ax,&ay,&az);
+ com.printf("AX = %f\r\n",ax);
+ com.printf("AY = %f\r\n",ay);
+ com.printf("AZ = %f\r\n",az);
+ wait(0.5);
+ }
}else if (rcmd == 'd') {
- //Please insert your answer
+ sat.printf("Command Get %d\r\n",rcmd);
+ com.printf("HEPTA Uplink OK\r\n");
+ sat.printf("===================\r\n");
+ sat.printf("Gyro sensing Mode\r\n");
+ sat.printf("===================\r\n");
+ for(int ii = 0; ii < 10; ii++) {
+ sensor.sen_gyro(&gx,&gy,&gz);
+ com.printf("GX = %f\r\n",gx);
+ com.printf("GY = %f\r\n",gy);
+ com.printf("GZ = %f\r\n",gz);
+ wait(0.5);
+ }
}else if (rcmd == 'e') {
- //Please insert your answer
+ sat.printf("Command Get %d\r\n",rcmd);
+ com.printf("HEPTA Uplink OK\r\n");
+ sat.printf("===================\r\n");
+ sat.printf("CO2 sensing Mode\r\n");
+ sat.printf("===================\r\n");
+
+ co2ppm = 42;
+ for(int ii = 0; ii < 10; ii++) {
+ com.printf("CO2 = %d [ppm]\r\n",co2ppm);
+ wait(0.5);
+ }
+ }else if (rcmd == 'f') {
+ sat.printf("Command Get %d\r\n",rcmd);
+ com.printf("HEPTA Uplink OK\r\n");
+ sat.printf("===================\r\n");
+ sat.printf("Landing sense Mode\r\n");
+ sat.printf("===================\r\n");
+ //Try do detect landing for 10 seconds
+ for(int j = 0; j< 20; j++){
+ com.printf("Checking for landing!\r\n");
+ sensor.sen_acc(&ax,&ay,&az);
+ sensor.sen_gyro(&gx,&gy,&gz);
+ //com.printf("Gravity^2 = %4f\r\n",(ax*ax)+(ay*ay)+(az*az));
+ //com.printf("Gyros = %4f,%4f,%4f\r\n",gx,gy,gz);
+
+ // Gyros < 0,1?
+ if((gx<0.5)&&(gy<0.5)&&(gz<0.5)){
+ // Gravity > 9.6 and < 10.0?
+ if(( (ax*ax)+(ay*ay)+(az*az) ) > 92.16){
+ if(((ax*ax)+(ay*ay)+(az*az) ) < 100.0){
+ com.printf("Landing detected!\r\n");
+ for(int i = 0; i < 10; i++){
+ //flash LEDS
+ LandLED1 = ! LandLED1;
+ LandLED2 = ! LandLED2;
+ LandLED3 = ! LandLED3;
+ LandLED4 = ! LandLED4;
+ wait_ms(500);
+ //put on sound
+ //TODO
+ }
+ }
+ }
+ }
+ wait_ms(500);
+ }
}
com.initialize();
}
@@ -96,3 +208,4 @@
sat.printf("From Sat : End of operation\r\n");
com.printf("From Sat : End of operation\r\n");
}
+