From 78c586ac6106709f7c138ed43975092a07672e35 Mon Sep 17 00:00:00 2001 From: Anthony Good Date: Sun, 26 Jul 2020 11:58:40 -0400 Subject: [PATCH] 2020.07.26.01 FEATURE_SATELLITE_TRACKING \% command - print upcoming passes for current satellite \~ command now shows upcoming pass AOS and LOS \^1 activate satellite tracking command now pre-rotates to satellite next AOS az and el Added OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING - LCD display one line that alternates current satellite az/el, AOS date/time, and AOS az/le Settings TRACKING_ACTIVE_CHAR and TRACKING_INACTIVE_CHAR deprecated New settings OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING_TIME_MS 5000 LCD_DISPLAY_SATELLITE_VISIBLE_NOT_TRACKED_CHAR "~" LCD_DISPLAY_SATELLITE_VISIBLE_TRACKED_CHAR "*" LCD_DISPLAY_SATELLITE_NOT_VISIBLE_TRACKED_CHAR "." LCD_DISPLAY_MOON_TRACKING_ACTIVE_CHAR "*" LCD_DISPLAY_MOON_TRACKING_INACTIVE_CHAR "-" LCD_DISPLAY_SUN_TRACKING_ACTIVE_CHAR "*" LCD_DISPLAY_SUN_TRACKING_INACTIVE_CHAR "-" Added nasabare.txt bare TLE file to Github in tle/ directory --- .../k3ng_rotator_controller.ino | 870 +++++++++++++++--- k3ng_rotator_controller/rotator.h | 8 + .../rotator_dependencies.h | 4 +- k3ng_rotator_controller/rotator_features.h | 5 +- .../rotator_features_m0upu.h | 1 + .../rotator_features_test.h | 3 +- .../rotator_features_wb6kcn.h | 1 + k3ng_rotator_controller/rotator_settings.h | 15 +- .../rotator_settings_ea4tx_ars_usb.h | 13 +- .../rotator_settings_m0upu.h | 14 +- .../rotator_settings_test.h | 13 +- .../rotator_settings_wb6kcn.h | 14 +- tle/nasabare.txt | 591 ++++++++++++ 13 files changed, 1399 insertions(+), 153 deletions(-) create mode 100644 tle/nasabare.txt diff --git a/k3ng_rotator_controller/k3ng_rotator_controller.ino b/k3ng_rotator_controller/k3ng_rotator_controller.ino index b33fdda..7a3f330 100644 --- a/k3ng_rotator_controller/k3ng_rotator_controller.ino +++ b/k3ng_rotator_controller/k3ng_rotator_controller.ino @@ -633,6 +633,23 @@     gSC         Integer, Bit Mapped   System Capabilities                                             Bit Values                                                SATELLITE 1024 + 2020.07.26.01 + FEATURE_SATELLITE_TRACKING + \% command - print upcoming passes for current satellite + \~ command now shows upcoming pass AOS and LOS + \^1 activate satellite tracking command now pre-rotates to satellite next AOS az and el + Added OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING - LCD display one line that alternates current satellite az/el, AOS date/time, and AOS az/le + Settings TRACKING_ACTIVE_CHAR and TRACKING_INACTIVE_CHAR deprecated + New settings + OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING_TIME_MS 5000 + LCD_DISPLAY_SATELLITE_VISIBLE_NOT_TRACKED_CHAR "~" + LCD_DISPLAY_SATELLITE_VISIBLE_TRACKED_CHAR "*" + LCD_DISPLAY_SATELLITE_NOT_VISIBLE_TRACKED_CHAR "." + LCD_DISPLAY_MOON_TRACKING_ACTIVE_CHAR "*" + LCD_DISPLAY_MOON_TRACKING_INACTIVE_CHAR "-" + LCD_DISPLAY_SUN_TRACKING_ACTIVE_CHAR "*" + LCD_DISPLAY_SUN_TRACKING_INACTIVE_CHAR "-" + Added nasabare.txt bare TLE file to Github in tle/ directory All library files should be placed in directories likes \sketchbook\libraries\library1\ , \sketchbook\libraries\library2\ , etc. Anything rotator_*.* should be in the ino directory! @@ -645,7 +662,7 @@ */ -#define CODE_VERSION "2020.07.25.03" +#define CODE_VERSION "2020.07.26.01" #include #include @@ -1289,6 +1306,22 @@ DebugClass debug; byte satellite_tracking_active = 0; byte satellite_visible = 0; + int current_satellite_next_aos_year = 0; + int current_satellite_next_aos_month = 0; + int current_satellite_next_aos_day = 0; + int current_satellite_next_aos_hour = 0; + int current_satellite_next_aos_minute = 0; + float current_satellite_next_aos_az = 0; + float current_satellite_next_aos_el = 0; + + int current_satellite_next_los_year = 0; + int current_satellite_next_los_month = 0; + int current_satellite_next_los_day = 0; + int current_satellite_next_los_hour = 0; + int current_satellite_next_los_minute = 0; + float current_satellite_next_los_az = 0; + float current_satellite_next_los_el = 0; + Satellite sat; Observer obs("my_location", DEFAULT_LATITUDE, DEFAULT_LONGITUDE, DEFAULT_ALTITUDE_M); SatDateTime sat_datetime; @@ -3898,21 +3931,21 @@ void check_buttons(){ #ifdef DEBUG_BUTTONS debug.println("check_buttons: moon tracking on"); #endif // DEBUG_BUTTONS - moon_tracking_active = 1; + change_tracking(ACTIVATE_MOON_TRACKING); #if defined(FEATURE_LCD_DISPLAY) perform_screen_redraw = 1; #endif #ifdef FEATURE_SUN_TRACKING - sun_tracking_active = 0; + change_tracking(DEACTIVATE_SUN_TRACKING); #endif // FEATURE_SUN_TRACKING #ifdef FEATURE_SATELLITE_TRACKING - satellite_tracking_active = 0; + change_tracking(DEACTIVATE_SATELLITE_TRACKING); #endif // FEATURE_SATELLITE_TRACKING } else { #ifdef DEBUG_BUTTONS debug.println("check_buttons: moon tracking off"); #endif // DEBUG_BUTTONS - moon_tracking_active = 0; + change_tracking(DEACTIVATE_MOON_TRACKING); submit_request(AZ, REQUEST_STOP, 0, DBG_CHECK_BUTTONS_MOON); #ifdef FEATURE_ELEVATION_CONTROL submit_request(EL, REQUEST_STOP, 0, DBG_CHECK_BUTTONS_MOON); @@ -3941,21 +3974,21 @@ void check_buttons(){ #ifdef DEBUG_BUTTONS debug.println("check_buttons: sun tracking on"); #endif // DEBUG_BUTTONS - sun_tracking_active = 1; + change_tracking(ACTIVATE_SUN_TRACKING); #if defined(FEATURE_LCD_DISPLAY) perform_screen_redraw = 1; #endif #ifdef FEATURE_MOON_TRACKING - moon_tracking_active = 0; + change_tracking(DEACTIVATE_MOON_TRACKING); #endif // FEATURE_MOON_TRACKING #ifdef FEATURE_SATELLITE_TRACKING - satellite_tracking_active = 0; + change_tracking(DEACTIVATE_SATELLITE_TRACKING); #endif // FEATURE_SATELLITE_TRACKING } else { #ifdef DEBUG_BUTTONS debug.print("check_buttons: sun tracking off"); #endif // DEBUG_BUTTONS - sun_tracking_active = 0; + change_tracking(DEACTIVATE_SUN_TRACKING); submit_request(AZ, REQUEST_STOP, 0, DBG_CHECK_BUTTONS_SUN); #ifdef FEATURE_ELEVATION_CONTROL submit_request(EL, REQUEST_STOP, 0, DBG_CHECK_BUTTONS_SUN); @@ -3984,21 +4017,21 @@ void check_buttons(){ #ifdef DEBUG_BUTTONS debug.println("check_buttons: sun tracking on"); #endif // DEBUG_BUTTONS - satellite_tracking_active = 1; + change_tracking(ACTIVATE_SATELLITE_TRACKING); #if defined(FEATURE_LCD_DISPLAY) perform_screen_redraw = 1; #endif #ifdef FEATURE_MOON_TRACKING - moon_tracking_active = 0; + change_tracking(DEACTIVATE_MOON_TRACKING); #endif // FEATURE_MOON_TRACKING #ifdef FEATURE_SUN_TRACKING - sun_tracking_active = 0; + change_tracking(DEACTIVATE_SUN_TRACKING); #endif // FEATURE_SUN_TRACKING } else { #ifdef DEBUG_BUTTONS debug.print("check_buttons: sun tracking off"); #endif // DEBUG_BUTTONS - satellite_tracking_active = 0; + change_tracking(DEACTIVATE_SATELLITE_TRACKING); submit_request(AZ, REQUEST_STOP, 0, DBG_CHECK_BUTTONS_SATELLITE); #ifdef FEATURE_ELEVATION_CONTROL submit_request(EL, REQUEST_STOP, 0, DBG_CHECK_BUTTONS_SATELLITE); @@ -5490,9 +5523,9 @@ void update_lcd_display(){ strcpy(workstring,""); if (moon_tracking_active){ if (moon_visible){ - strcat(workstring,TRACKING_ACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_MOON_TRACKING_ACTIVE_CHAR); } else { - strcat(workstring,TRACKING_INACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_MOON_TRACKING_INACTIVE_CHAR); } } strcat(workstring,MOON_STRING); @@ -5505,9 +5538,9 @@ void update_lcd_display(){ if ((LCD_COLUMNS>16) && ((moon_azimuth < 100) || (abs(moon_elevation)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} if (moon_tracking_active){ if (moon_visible){ - strcat(workstring,TRACKING_ACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_MOON_TRACKING_ACTIVE_CHAR); } else { - strcat(workstring,TRACKING_INACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_MOON_TRACKING_INACTIVE_CHAR); } } k3ngdisplay.print_center_fixed_field_size(workstring,LCD_MOON_TRACKING_ROW-1,LCD_COLUMNS); @@ -5528,9 +5561,9 @@ void update_lcd_display(){ strcpy(workstring,""); if (sun_tracking_active){ if (sun_visible){ - strcat(workstring,TRACKING_ACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_SUN_TRACKING_ACTIVE_CHAR); } else { - strcat(workstring,TRACKING_INACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_SUN_TRACKING_INACTIVE_CHAR); } } strcat(workstring,SUN_STRING); @@ -5543,9 +5576,9 @@ void update_lcd_display(){ if ((LCD_COLUMNS>16) && ((sun_azimuth < 100) || (abs(sun_elevation)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} if (sun_tracking_active){ if (sun_visible){ - strcat(workstring,TRACKING_ACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_SUN_TRACKING_ACTIVE_CHAR); } else { - strcat(workstring,TRACKING_INACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_SUN_TRACKING_INACTIVE_CHAR); } } k3ngdisplay.print_center_fixed_field_size(workstring,LCD_SUN_TRACKING_ROW-1,LCD_COLUMNS); @@ -5564,12 +5597,21 @@ void update_lcd_display(){ strcpy(workstring,""); if (satellite_tracking_active){ if (satellite_visible){ - strcat(workstring,TRACKING_ACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_SATELLITE_VISIBLE_TRACKED_CHAR); } else { - strcat(workstring,TRACKING_INACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_SATELLITE_NOT_VISIBLE_TRACKED_CHAR); } + } else { + if (satellite_visible){ + strcat(workstring,LCD_DISPLAY_SATELLITE_VISIBLE_NOT_TRACKED_CHAR); + } } - strcat(workstring,sat.name); + if ((DISPLAY_DECIMAL_PLACES < 1) && (LCD_COLUMNS>16)){ + strncpy(workstring2,sat.name,8); + } else { + strncpy(workstring2,sat.name,6); + } + strcat(workstring,workstring2); strcat(workstring," "); dtostrf(current_satellite_azimuth,0,DISPLAY_DECIMAL_PLACES,workstring2); strcat(workstring,workstring2); @@ -5580,10 +5622,14 @@ void update_lcd_display(){ if ((LCD_COLUMNS>16) && ((current_satellite_azimuth < 100) || (abs(current_satellite_elevation)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} if (satellite_tracking_active){ if (satellite_visible){ - strcat(workstring,TRACKING_ACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_SATELLITE_VISIBLE_TRACKED_CHAR); } else { - strcat(workstring,TRACKING_INACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_SATELLITE_NOT_VISIBLE_TRACKED_CHAR); } + } else { + if (satellite_visible){ + strcat(workstring,LCD_DISPLAY_SATELLITE_VISIBLE_NOT_TRACKED_CHAR); + } } k3ngdisplay.print_center_fixed_field_size(workstring,LCD_SATELLITE_TRACKING_ROW-1,LCD_COLUMNS); } else { @@ -5591,7 +5637,162 @@ void update_lcd_display(){ debug.println(F("update_lcd_display: OPTION_DISPLAY_SATELLITE_TRACKING_CONTINUOUSLY row override")); #endif } - #endif //defined(OPTION_DISPLAY_MOON_TRACKING_CONTINUOUSLY) && defined(FEATURE_MOON_TRACKING) + #endif //defined(OPTION_DISPLAY_SATELLITE_TRACKING_CONTINUOUSLY) && defined(FEATURE_SATELLITE_TRACKING) + + + // OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING ************************************************************* + #if defined(OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING) && defined(FEATURE_SATELLITE_TRACKING) + + static unsigned long last_alernating_change_time = 0; + static byte current_display_state_sat = 2; + + if (!row_override[LCD_SATELLITE_TRACKING_ROW]){ + if ((millis() - last_alernating_change_time) >= OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING_TIME_MS) { + current_display_state_sat++; + if (current_display_state_sat == 3){ + current_display_state_sat = 0; + } + last_alernating_change_time = millis(); + } + if (current_display_state_sat == 0){ // show current satellite az and el + strcpy(workstring,""); + if (satellite_tracking_active){ + if (satellite_visible){ + strcat(workstring,LCD_DISPLAY_SATELLITE_VISIBLE_TRACKED_CHAR); + } else { + strcat(workstring,LCD_DISPLAY_SATELLITE_NOT_VISIBLE_TRACKED_CHAR); + } + } else { + if (satellite_visible){ + strcat(workstring,LCD_DISPLAY_SATELLITE_VISIBLE_NOT_TRACKED_CHAR); + } + } + if ((DISPLAY_DECIMAL_PLACES < 1) && (LCD_COLUMNS>16)){ + strncpy(workstring2,sat.name,8); + } else { + strncpy(workstring2,sat.name,6); + } + strcat(workstring,workstring2); + strcat(workstring," "); + dtostrf(current_satellite_azimuth,0,DISPLAY_DECIMAL_PLACES,workstring2); + strcat(workstring,workstring2); + if ((LCD_COLUMNS>16) && ((current_satellite_azimuth < 100) || (abs(current_satellite_elevation)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} + strcat(workstring," "); + dtostrf(current_satellite_elevation,0,DISPLAY_DECIMAL_PLACES,workstring2); + strcat(workstring,workstring2); + if ((LCD_COLUMNS>16) && ((current_satellite_azimuth < 100) || (abs(current_satellite_elevation)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} + if (satellite_tracking_active){ + if (satellite_visible){ + strcat(workstring,LCD_DISPLAY_SATELLITE_VISIBLE_TRACKED_CHAR); + } else { + strcat(workstring,LCD_DISPLAY_SATELLITE_NOT_VISIBLE_TRACKED_CHAR); + } + } else { + if (satellite_visible){ + strcat(workstring,LCD_DISPLAY_SATELLITE_VISIBLE_NOT_TRACKED_CHAR); + } + } + k3ngdisplay.print_center_fixed_field_size(workstring,LCD_SATELLITE_TRACKING_ROW-1,LCD_COLUMNS); + } // if (current_display_state_sat == 0) + + + if (current_display_state_sat == 1){ // show next AOS date and time + if (!satellite_visible){ + strcpy(workstring,"AOS "); + if (LCD_COLUMNS > 16){ + dtostrf(current_satellite_next_aos_year,0,0,workstring2); + strcat(workstring,workstring2); + strcat(workstring,"-"); + } + if (current_satellite_next_aos_month < 10){ + strcat(workstring,"0"); + } + dtostrf(current_satellite_next_aos_month,0,0,workstring2); + strcat(workstring,workstring2); + strcat(workstring,"-"); + if (current_satellite_next_aos_day < 10){ + strcat(workstring,"0"); + } + dtostrf(current_satellite_next_aos_day,0,0,workstring2); + strcat(workstring,workstring2); + strcat(workstring," "); + if (current_satellite_next_aos_hour < 10){ + strcat(workstring,"0"); + } + dtostrf(current_satellite_next_aos_hour,0,0,workstring2); + strcat(workstring,workstring2); + strcat(workstring,":"); + if (current_satellite_next_aos_minute < 10){ + strcat(workstring,"0"); + } + dtostrf(current_satellite_next_aos_minute,0,0,workstring2); + strcat(workstring,workstring2); + } else { + strcpy(workstring,"LOS "); + if (LCD_COLUMNS > 16){ + dtostrf(current_satellite_next_los_year,0,0,workstring2); + strcat(workstring,workstring2); + strcat(workstring,"-"); + } + if (current_satellite_next_los_month < 10){ + strcat(workstring,"0"); + } + dtostrf(current_satellite_next_los_month,0,0,workstring2); + strcat(workstring,workstring2); + strcat(workstring,"-"); + if (current_satellite_next_los_day < 10){ + strcat(workstring,"0"); + } + dtostrf(current_satellite_next_los_day,0,0,workstring2); + strcat(workstring,workstring2); + strcat(workstring," "); + if (current_satellite_next_aos_hour < 10){ + strcat(workstring,"0"); + } + dtostrf(current_satellite_next_los_hour,0,0,workstring2); + strcat(workstring,workstring2); + strcat(workstring,":"); + if (current_satellite_next_los_minute < 10){ + strcat(workstring,"0"); + } + dtostrf(current_satellite_next_los_minute,0,0,workstring2); + strcat(workstring,workstring2); + } + k3ngdisplay.print_center_fixed_field_size(workstring,LCD_SATELLITE_TRACKING_ROW-1,LCD_COLUMNS); + } // if (current_display_state_sat == 1) + + + if (current_display_state_sat == 2){ // show next AOS/LOS az and el + if (!satellite_visible){ + strcpy(workstring,"AOS Az "); + dtostrf(current_satellite_next_aos_az,DISPLAY_DECIMAL_PLACES,0,workstring2); + strcat(workstring,workstring2); + if ((LCD_COLUMNS>16) && ((current_satellite_next_aos_az < 100) || (abs(current_satellite_next_aos_el)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} + strcat(workstring," El "); + dtostrf(current_satellite_next_aos_el,DISPLAY_DECIMAL_PLACES,0,workstring2); + strcat(workstring,workstring2); + if ((LCD_COLUMNS>16) && ((current_satellite_next_aos_az < 100) || (abs(current_satellite_next_aos_el)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} + } else { + strcpy(workstring,"LOS Az "); + dtostrf(current_satellite_next_los_az,DISPLAY_DECIMAL_PLACES,0,workstring2); + strcat(workstring,workstring2); + if ((LCD_COLUMNS>16) && ((current_satellite_next_los_az < 100) || (abs(current_satellite_next_los_el)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} + strcat(workstring," El "); + dtostrf(current_satellite_next_los_el,DISPLAY_DECIMAL_PLACES,0,workstring2); + strcat(workstring,workstring2); + if ((LCD_COLUMNS>16) && ((current_satellite_next_los_az < 100) || (abs(current_satellite_next_los_el)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} + } + + k3ngdisplay.print_center_fixed_field_size(workstring,LCD_SATELLITE_TRACKING_ROW-1,LCD_COLUMNS); + } // if (current_display_state_sat == 1) + + } else { + #if defined(DEBUG_DISPLAY) + debug.println(F("update_lcd_display: OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING row override")); + #endif + } + + #endif //defined(OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING) && defined(FEATURE_SATELLITE_TRACKING) // OPTION_DISPLAY_ALT_HHMM_CLOCK_AND_MAIDENHEAD **************************************************** @@ -5708,9 +5909,9 @@ void update_lcd_display(){ last_moon_tracking_check_time = millis(); } if (moon_visible){ - strcpy(workstring,TRACKING_ACTIVE_CHAR); + strcpy(workstring,LCD_DISPLAY_MOON_TRACKING_ACTIVE_CHAR); } else { - strcpy(workstring,TRACKING_INACTIVE_CHAR); + strcpy(workstring,LCD_DISPLAY_MOON_TRACKING_INACTIVE_CHAR); } strcat(workstring,MOON_STRING); dtostrf(moon_azimuth,0,DISPLAY_DECIMAL_PLACES,workstring2); @@ -5721,9 +5922,9 @@ void update_lcd_display(){ strcat(workstring,workstring2); if ((LCD_COLUMNS>16) && ((moon_azimuth < 100) || (abs(moon_elevation)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} if (moon_visible){ - strcat(workstring,TRACKING_ACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_MOON_TRACKING_ACTIVE_CHAR); } else { - strcat(workstring,TRACKING_INACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_MOON_TRACKING_INACTIVE_CHAR); } k3ngdisplay.print_center_fixed_field_size(workstring,LCD_MOON_OR_SUN_OR_SAT_TRACKING_CONDITIONAL_ROW-1,LCD_COLUMNS); } @@ -5740,9 +5941,9 @@ void update_lcd_display(){ last_sun_tracking_check_time = millis(); } if (sun_visible){ - strcpy(workstring,TRACKING_ACTIVE_CHAR); + strcpy(workstring,LCD_DISPLAY_SUN_TRACKING_ACTIVE_CHAR); } else { - strcpy(workstring,TRACKING_INACTIVE_CHAR); + strcpy(workstring,LCD_DISPLAY_SUN_TRACKING_INACTIVE_CHAR); } strcat(workstring,SUN_STRING); dtostrf(sun_azimuth,0,DISPLAY_DECIMAL_PLACES,workstring2); @@ -5753,9 +5954,9 @@ void update_lcd_display(){ strcat(workstring,workstring2); if ((LCD_COLUMNS>16) && ((sun_azimuth < 100) || (abs(sun_elevation)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} if (sun_visible){ - strcat(workstring,TRACKING_ACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_SUN_TRACKING_ACTIVE_CHAR); } else { - strcat(workstring,TRACKING_INACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_SUN_TRACKING_INACTIVE_CHAR); } k3ngdisplay.print_center_fixed_field_size(workstring,LCD_MOON_OR_SUN_OR_SAT_TRACKING_CONDITIONAL_ROW-1,LCD_COLUMNS); } @@ -5767,66 +5968,28 @@ void update_lcd_display(){ #ifdef FEATURE_SATELLITE_TRACKING if ((!row_override[LCD_MOON_OR_SUN_OR_SAT_TRACKING_CONDITIONAL_ROW]) && (satellite_tracking_active)){ if (satellite_visible){ - strcpy(workstring,TRACKING_ACTIVE_CHAR); + strcpy(workstring,LCD_DISPLAY_SATELLITE_VISIBLE_TRACKED_CHAR); } else { - strcpy(workstring,TRACKING_INACTIVE_CHAR); + strcpy(workstring,LCD_DISPLAY_SATELLITE_NOT_VISIBLE_TRACKED_CHAR); } strcat(workstring,sat.name); strcat(workstring," "); dtostrf(current_satellite_azimuth,0,DISPLAY_DECIMAL_PLACES,workstring2); strcat(workstring,workstring2); - if ((LCD_COLUMNS>16) && ((sun_azimuth < 100) || (abs(current_satellite_elevation)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} + if ((LCD_COLUMNS>16) && ((current_satellite_azimuth < 100) || (abs(current_satellite_elevation)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} strcat(workstring," "); dtostrf(current_satellite_elevation,0,DISPLAY_DECIMAL_PLACES,workstring2); strcat(workstring,workstring2); - if ((LCD_COLUMNS>16) && ((sun_azimuth < 100) || (abs(sun_elevation)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} + if ((LCD_COLUMNS>16) && ((current_satellite_azimuth < 100) || (abs(current_satellite_elevation)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} if (satellite_visible){ - strcat(workstring,TRACKING_ACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_SATELLITE_VISIBLE_TRACKED_CHAR); } else { - strcat(workstring,TRACKING_INACTIVE_CHAR); + strcat(workstring,LCD_DISPLAY_SATELLITE_NOT_VISIBLE_TRACKED_CHAR); } k3ngdisplay.print_center_fixed_field_size(workstring,LCD_MOON_OR_SUN_OR_SAT_TRACKING_CONDITIONAL_ROW-1,LCD_COLUMNS); } #endif //FEATURE_SATELLITE_TRACKING - - - // if (!row_override[LCD_SATELLITE_TRACKING_ROW]){ - - // strcpy(workstring,""); - // if (satellite_tracking_active){ - // if (satellite_visible){ - // strcat(workstring,TRACKING_ACTIVE_CHAR); - // } else { - // strcat(workstring,TRACKING_INACTIVE_CHAR); - // } - // } - // strcat(workstring,sat.name); - // strcat(workstring," "); - // dtostrf(current_satellite_azimuth,0,DISPLAY_DECIMAL_PLACES,workstring2); - // strcat(workstring,workstring2); - // if ((LCD_COLUMNS>16) && ((current_satellite_azimuth < 100) || (abs(current_satellite_elevation)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} - // strcat(workstring," "); - // dtostrf(current_satellite_elevation,0,DISPLAY_DECIMAL_PLACES,workstring2); - // strcat(workstring,workstring2); - // if ((LCD_COLUMNS>16) && ((current_satellite_azimuth < 100) || (abs(current_satellite_elevation)<100))) {strcat(workstring,LCD_DISPLAY_DEGREES_STRING);} - // if (satellite_tracking_active){ - // if (satellite_visible){ - // strcat(workstring,TRACKING_ACTIVE_CHAR); - // } else { - // strcat(workstring,TRACKING_INACTIVE_CHAR); - // } - // } - // k3ngdisplay.print_center_fixed_field_size(workstring,LCD_SATELLITE_TRACKING_ROW-1,LCD_COLUMNS); - // } else { - // #if defined(DEBUG_DISPLAY) - // debug.println(F("update_lcd_display: OPTION_DISPLAY_SATELLITE_TRACKING_CONTINUOUSLY row override")); - // #endif - // } - // #endif //defined(OPTION_DISPLAY_MOON_TRACKING_CONTINUOUSLY) && defined(FEATURE_MOON_TRACKING) - - - #endif //OPTION_DISPLAY_MOON_OR_SUN_OR_SAT_TRACKING_CONDITIONAL @@ -6137,7 +6300,7 @@ void write_settings_to_eeprom(){ static unsigned int eeprom_write_location = 0; #ifdef DEBUG_SATELLITE_TLE_EEPROM - control_port->print("\r\nwrite_char_to_tle_file_area_eeprom: "); + control_port->print(F("\r\nwrite_char_to_tle_file_area_eeprom: ")); if (initialize_to_start){ control_port->println("initialize_to_start"); } else { @@ -7586,7 +7749,51 @@ void output_debug(){ if (!satellite_tracking_active) { debug.print("IN"); } - debug.println("ACTIVE "); + debug.print("ACTIVE Next AOS:"); + + debug.print(current_satellite_next_aos_year); + debug.print("-"); + if (current_satellite_next_aos_month < 10){debug.print("0");} + debug.print(current_satellite_next_aos_month); + debug.print("-"); + if (current_satellite_next_aos_day < 10){debug.print("0");} + debug.print(current_satellite_next_aos_day); + debug.print(" "); + if (current_satellite_next_aos_hour < 10){debug.print("0");} + debug.print(current_satellite_next_aos_hour); + debug.print(":"); + if (current_satellite_next_aos_minute < 10){debug.print("0");} + debug.print(current_satellite_next_aos_minute); + debug.print(" "); + if (current_satellite_next_aos_az < 10){debug.print(" ");} + if (current_satellite_next_aos_az < 100){debug.print(" ");} + debug.print(current_satellite_next_aos_az); + debug.print(" "); + if (current_satellite_next_aos_el > 0){debug.print(" ");} + debug.print(current_satellite_next_aos_el); + debug.print(" LOS:"); + debug.print(current_satellite_next_los_year); + debug.print("-"); + if (current_satellite_next_los_month < 10){debug.print("0");} + debug.print(current_satellite_next_los_month); + debug.print("-"); + if (current_satellite_next_los_day < 10){debug.print("0");} + debug.print(current_satellite_next_los_day); + debug.print(" "); + if (current_satellite_next_los_hour < 10){debug.print("0");} + debug.print(current_satellite_next_los_hour); + debug.print(":"); + if (current_satellite_next_los_minute < 10){debug.print("0");} + debug.print(current_satellite_next_los_minute); + debug.print(" "); + if (current_satellite_next_los_az < 10){debug.print(" ");} + if (current_satellite_next_los_az < 100){debug.print(" ");} + debug.print(current_satellite_next_los_az); + debug.print(" "); + if (current_satellite_next_los_el > 0){debug.print(" ");} + debug.println(current_satellite_next_los_el); + + #endif debug.print("\tCONFIG_"); @@ -10111,19 +10318,8 @@ void service_rotation(){ #endif } /* service_rotation */ -// -------------------------------------------------------------- -void stop_all_tracking(){ - #ifdef FEATURE_MOON_TRACKING - moon_tracking_active = 0; - #endif // FEATURE_MOON_TRACKING - #ifdef FEATURE_SUN_TRACKING - sun_tracking_active = 0; - #endif // FEATURE_SUN_TRACKING - -} - // -------------------------------------------------------------- void service_request_queue(){ @@ -10152,7 +10348,7 @@ void service_request_queue(){ #ifdef DEBUG_SERVICE_REQUEST_QUEUE debug.print("REQUEST_STOP"); #endif // DEBUG_SERVICE_REQUEST_QUEUE - stop_all_tracking(); + change_tracking(DEACTIVATE_ALL); #ifdef FEATURE_PARK deactivate_park(); #endif // FEATURE_PARK @@ -10407,7 +10603,7 @@ void service_request_queue(){ #ifdef DEBUG_SERVICE_REQUEST_QUEUE debug.print("REQUEST_CW"); #endif // DEBUG_SERVICE_REQUEST_QUEUE - stop_all_tracking(); + change_tracking(DEACTIVATE_ALL); #ifdef FEATURE_PARK deactivate_park(); #endif // FEATURE_PARK @@ -10439,7 +10635,7 @@ void service_request_queue(){ #ifdef DEBUG_SERVICE_REQUEST_QUEUE debug.print("REQUEST_CCW"); #endif // DEBUG_SERVICE_REQUEST_QUEUE - stop_all_tracking(); + change_tracking(DEACTIVATE_ALL); #ifdef FEATURE_PARK deactivate_park(); #endif // FEATURE_PARK @@ -10469,7 +10665,7 @@ void service_request_queue(){ #ifdef DEBUG_SERVICE_REQUEST_QUEUE debug.print("REQUEST_KILL"); #endif // DEBUG_SERVICE_REQUEST_QUEUE - stop_all_tracking(); + change_tracking(DEACTIVATE_ALL); #ifdef FEATURE_PARK deactivate_park(); #endif // FEATURE_PARK @@ -10593,7 +10789,7 @@ void service_request_queue(){ debug.print(F("REQUEST_UP\n")); } #endif // DEBUG_SERVICE_REQUEST_QUEUE - stop_all_tracking(); + change_tracking(DEACTIVATE_ALL); #ifdef FEATURE_PARK deactivate_park(); #endif // FEATURE_PARK @@ -10626,7 +10822,7 @@ void service_request_queue(){ debug.print(F("REQUEST_DOWN\n")); } #endif // DEBUG_SERVICE_REQUEST_QUEUE - stop_all_tracking(); + change_tracking(DEACTIVATE_ALL); #ifdef FEATURE_PARK deactivate_park(); #endif // FEATURE_PARK @@ -10659,7 +10855,7 @@ void service_request_queue(){ debug.print(F("REQUEST_STOP\n")); } #endif // DEBUG_SERVICE_REQUEST_QUEUE - stop_all_tracking(); + change_tracking(DEACTIVATE_ALL); #ifdef FEATURE_PARK deactivate_park(); #endif // FEATURE_PARK @@ -10703,7 +10899,7 @@ void service_request_queue(){ debug.print(F("REQUEST_KILL\n")); } #endif // DEBUG_SERVICE_REQUEST_QUEUE - stop_all_tracking(); + change_tracking(DEACTIVATE_ALL); #ifdef FEATURE_PARK deactivate_park(); #endif // FEATURE_PARK @@ -11629,7 +11825,7 @@ void initiate_park(){ byte park_initiated = 0; - stop_all_tracking(); + change_tracking(DEACTIVATE_ALL); if (abs(raw_azimuth - PARK_AZIMUTH) > (AZIMUTH_TOLERANCE)) { submit_request(AZ, REQUEST_AZIMUTH_RAW, PARK_AZIMUTH, 7); @@ -13494,18 +13690,18 @@ byte process_backslash_command(byte input_buffer[], int input_buffer_index, byte case 'M': switch (input_buffer[2]) { case '0': - moon_tracking_active = 0; + change_tracking(DEACTIVATE_MOON_TRACKING); submit_request(AZ, REQUEST_STOP, 0, DBG_SERVICE_MOON_CLI_CMD); submit_request(EL, REQUEST_STOP, 0, DBG_SERVICE_MOON_CLI_CMD); strcpy(return_string, "Moon tracking deactivated."); break; case '1': - moon_tracking_active = 1; + change_tracking(ACTIVATE_MOON_TRACKING); #ifdef FEATURE_SUN_TRACKING - sun_tracking_active = 0; + change_tracking(DEACTIVATE_SUN_TRACKING); #endif // FEATURE_SUN_TRACKING #ifdef FEATURE_SATELLITE_TRACKING - satellite_tracking_active = 0; + change_tracking(DEACTIVATE_SATELLITE_TRACKING); #endif // FEATURE_SATELLITE_TRACKING strcpy(return_string, "Moon tracking activated."); break; @@ -13576,19 +13772,19 @@ byte process_backslash_command(byte input_buffer[], int input_buffer_index, byte case 'U': // activate / deactivate sun tracking switch (input_buffer[2]) { case '0': - sun_tracking_active = 0; + change_tracking(DEACTIVATE_SUN_TRACKING); submit_request(AZ, REQUEST_STOP, 0, DBG_SERVICE_SATELLITE_CLI_CMD); submit_request(EL, REQUEST_STOP, 0, DBG_SERVICE_SATELLITE_CLI_CMD); strcpy(return_string, "Sun tracking deactivated."); break; case '1': - sun_tracking_active = 1; + change_tracking(ACTIVATE_SUN_TRACKING); strcpy(return_string, "Sun tracking activated."); #ifdef FEATURE_MOON_TRACKING - moon_tracking_active = 0; + change_tracking(DEACTIVATE_MOON_TRACKING); #endif // FEATURE_MOON_TRACKING #ifdef FEATURE_SATELLITE_TRACKING - satellite_tracking_active = 0; + change_tracking(DEACTIVATE_SATELLITE_TRACKING); #endif // FEATURE_SATELLITE_TRACKING break; default: strcpy(return_string, "Error."); break; @@ -13799,9 +13995,9 @@ byte process_backslash_command(byte input_buffer[], int input_buffer_index, byte #if defined(FEATURE_SATELLITE_TRACKING) case '~': - control_port->print("Satellite:"); - control_port->print(sat.name); - control_port->print(" Location:"); + control_port->print(F("Satellite:")); + control_port->println(sat.name); + control_port->print(F("Location:")); control_port->print(obs.name); control_port->print(" ("); control_port->print(obs.LA); @@ -13809,41 +14005,88 @@ byte process_backslash_command(byte input_buffer[], int input_buffer_index, byte control_port->print(obs.LO); control_port->print(","); control_port->print(obs.HT); - control_port->print(") AZ:"); + control_port->println(")"); + control_port->print("AZ:"); control_port->print(current_satellite_azimuth); control_port->print(" EL:"); control_port->print(current_satellite_elevation); - control_port->print(" Lat:"); + control_port->print(F(" Lat:")); control_port->print(current_satellite_latitude); - control_port->print(" Long:"); + control_port->print(F(" Long:")); control_port->print(current_satellite_longitude); if (satellite_visible) { - control_port->print(" AOS"); + control_port->print(F(" AOS")); } else { - control_port->print(" LOS"); + control_port->print(F(" LOS")); } - control_port->print(" TRACKING_"); + control_port->print(F(" TRACKING_")); if (!satellite_tracking_active) { - control_port->print("IN"); + control_port->print(F("IN")); } - control_port->println("ACTIVE "); + control_port->println(F("ACTIVE")); + control_port->print(F("Next AOS:")); + control_port->print(current_satellite_next_aos_year); + control_port->print("-"); + if (current_satellite_next_aos_month < 10){control_port->print("0");} + control_port->print(current_satellite_next_aos_month); + control_port->print("-"); + if (current_satellite_next_aos_day < 10){control_port->print("0");} + control_port->print(current_satellite_next_aos_day); + control_port->print(" "); + if (current_satellite_next_aos_hour < 10){control_port->print("0");} + control_port->print(current_satellite_next_aos_hour); + control_port->print(":"); + if (current_satellite_next_aos_minute < 10){control_port->print("0");} + control_port->print(current_satellite_next_aos_minute); + control_port->print(" "); + if (current_satellite_next_aos_az < 10){control_port->print(" ");} + if (current_satellite_next_aos_az < 100){control_port->print(" ");} + control_port->print(current_satellite_next_aos_az); + control_port->print(" "); + if (current_satellite_next_aos_el > 0){control_port->print(" ");} + control_port->print(current_satellite_next_aos_el); + control_port->print(" LOS:"); + control_port->print(current_satellite_next_los_year); + control_port->print("-"); + if (current_satellite_next_los_month < 10){control_port->print("0");} + control_port->print(current_satellite_next_los_month); + control_port->print("-"); + if (current_satellite_next_los_day < 10){control_port->print("0");} + control_port->print(current_satellite_next_los_day); + control_port->print(" "); + if (current_satellite_next_los_hour < 10){control_port->print("0");} + control_port->print(current_satellite_next_los_hour); + control_port->print(":"); + if (current_satellite_next_los_minute < 10){control_port->print("0");} + control_port->print(current_satellite_next_los_minute); + control_port->print(" "); + if (current_satellite_next_los_az < 10){control_port->print(" ");} + if (current_satellite_next_los_az < 100){control_port->print(" ");} + control_port->print(current_satellite_next_los_az); + control_port->print(" "); + if (current_satellite_next_los_el > 0){control_port->print(" ");} + control_port->println(current_satellite_next_los_el); break; case '^': switch (input_buffer[2]) { case '0': - satellite_tracking_active = 0; + change_tracking(DEACTIVATE_SATELLITE_TRACKING); submit_request(AZ, REQUEST_STOP, 0, DBG_SERVICE_SATELLITE_CLI_CMD); submit_request(EL, REQUEST_STOP, 0, DBG_SERVICE_SATELLITE_CLI_CMD); strcpy(return_string, "Satellite tracking deactivated."); break; case '1': - satellite_tracking_active = 1; + change_tracking(ACTIVATE_SATELLITE_TRACKING); + if (!satellite_visible){ + submit_request(AZ, REQUEST_AZIMUTH, current_satellite_next_aos_az, DBG_SERVICE_SATELLITE_CLI_CMD_PREROTATE); + submit_request(EL, REQUEST_ELEVATION, current_satellite_next_aos_el, DBG_SERVICE_SATELLITE_CLI_CMD_PREROTATE); + } #ifdef FEATURE_SUN_TRACKING - sun_tracking_active = 0; + change_tracking(DEACTIVATE_SUN_TRACKING); #endif // FEATURE_SUN_TRACKING #ifdef FEATURE_MOON_TRACKING - moon_tracking_active = 0; + change_tracking(DEACTIVATE_MOON_TRACKING); #endif // FEATURE_SUN_TRACKING strcpy(return_string, "Satellite tracking activated."); break; @@ -13911,16 +14154,34 @@ byte process_backslash_command(byte input_buffer[], int input_buffer_index, byte control_port->println("File was truncated."); } break; -//zzzzzz + case '$': for (x = 2;x < input_buffer_index;x++){ satellite_to_find[x-2] = input_buffer[x]; satellite_to_find[x-1] = 0; } - control_port->print("Searching for "); + control_port->print(F("Searching for ")); control_port->println(satellite_to_find); pull_satellite_tle_and_activate(satellite_to_find,1); break; +//zzzzzz + case '%': + if (input_buffer_index == 3){ + x = (input_buffer[2] - 48); + } else { + if (input_buffer_index == 4){ + x = ((input_buffer[2] - 48) * 10) + (input_buffer[3] - 48); + } else { + if (input_buffer_index == 5){ + x = ((input_buffer[2] - 48) * 100) + ((input_buffer[3] - 48) * 10) + (input_buffer[4] - 48); + } else { + x = 1; + } + } + } + calculate_satellite_upcoming_aos_and_los(x,2,1); + break; + #endif //FEATURE_SATELLITE_TRACKING @@ -16336,6 +16597,86 @@ byte ethernet_slave_link_send(char * string_to_send){ } #endif //FEATURE_MASTER_WITH_ETHERNET_SLAVE +//------------------------------------------------------- + +void change_tracking(byte action){ + + #if defined(FEATURE_MOON_TRACKING) || defined(FEATURE_SUN_TRACKING) || defined(FEATURE_SATELLITE_TRACKING) + switch(action){ + + + case DEACTIVATE_ALL: + #if defined(FEATURE_MOON_TRACKING) + moon_tracking_active = 0; + #endif + #if defined(FEATURE_SUN_TRACKING) + sun_tracking_active = 0; + #endif + #if defined(FEATURE_SATELLITE_TRACKING) + satellite_tracking_active = 0; + #endif + break; + + case DEACTIVATE_MOON_TRACKING: + #if defined(FEATURE_MOON_TRACKING) + moon_tracking_active = 0; + #endif + break; + + case DEACTIVATE_SUN_TRACKING: + #if defined(FEATURE_SUN_TRACKING) + sun_tracking_active = 0; + #endif + break; + + case DEACTIVATE_SATELLITE_TRACKING: + #if defined(FEATURE_SATELLITE_TRACKING) + satellite_tracking_active = 0; + #endif + break; + + case ACTIVATE_MOON_TRACKING: + #if defined(FEATURE_MOON_TRACKING) + moon_tracking_active = 1; + #endif + #if defined(FEATURE_SUN_TRACKING) + sun_tracking_active = 0; + #endif + #if defined(FEATURE_SATELLITE_TRACKING) + satellite_tracking_active = 0; + #endif + break; + + case ACTIVATE_SUN_TRACKING: + #if defined(FEATURE_MOON_TRACKING) + moon_tracking_active = 0; + #endif + #if defined(FEATURE_SUN_TRACKING) + change_tracking(ACTIVATE_SUN_TRACKING); + #endif + #if defined(FEATURE_SATELLITE_TRACKING) + satellite_tracking_active = 0; + #endif + break; + + case ACTIVATE_SATELLITE_TRACKING: + #if defined(FEATURE_MOON_TRACKING) + moon_tracking_active = 0; + #endif + #if defined(FEATURE_SUN_TRACKING) + sun_tracking_active = 0; + #endif + #if defined(FEATURE_SATELLITE_TRACKING) + satellite_tracking_active = 1; + #endif + break; + + } + + #endif //defined(FEATURE_MOON_TRACKING) || defined(FEATURE_SUN_TRACKING) || defined(FEATURE_SATELLITE_TRACKING) +} + + //------------------------------------------------------- @@ -16367,11 +16708,11 @@ void service_moon_tracking(){ if (moon_tracking_activate_line) { if ((!moon_tracking_active) && (!digitalReadEnhanced(moon_tracking_activate_line))) { - moon_tracking_active = 1; + change_tracking(ACTIVATE_MOON_TRACKING); moon_tracking_activated_by_activate_line = 1; } if ((moon_tracking_active) && (digitalReadEnhanced(moon_tracking_activate_line)) && (moon_tracking_activated_by_activate_line)) { - moon_tracking_active = 0; + change_tracking(DEACTIVATE_MOON_TRACKING); moon_tracking_activated_by_activate_line = 0; submit_request(AZ, REQUEST_STOP, 0, DBG_SERVICE_MOON_TRACKING); #ifdef FEATURE_ELEVATION_CONTROL @@ -16457,11 +16798,11 @@ void service_sun_tracking(){ if (sun_tracking_activate_line) { if ((!sun_tracking_active) && (!digitalReadEnhanced(sun_tracking_activate_line))) { - sun_tracking_active = 1; + change_tracking(ACTIVATE_SUN_TRACKING); sun_tracking_activated_by_activate_line = 1; } if ((sun_tracking_active) && (digitalReadEnhanced(sun_tracking_activate_line)) && (sun_tracking_activated_by_activate_line)) { - sun_tracking_active = 0; + change_tracking(DEACTIVATE_SUN_TRACKING); sun_tracking_activated_by_activate_line = 0; submit_request(AZ, REQUEST_STOP, 0, DBG_SERVICE_SUN_TRACKING); #ifdef FEATURE_ELEVATION_CONTROL @@ -16902,7 +17243,10 @@ void convert_polar_to_cartesian(byte coordinate_conversion,double azimuth_in,dou "2 07530 101.8018 175.0260 0011861 296.2265 184.6086 12.53644244090508"); } else { sat.tle(name,tle_line1,tle_line2); - } + } + + current_satellite_next_aos_year = 0; // flag that next AOS and LOS needs to be populated + } #endif //FEATURE_SATELLITE_TRACKING @@ -16928,11 +17272,11 @@ void convert_polar_to_cartesian(byte coordinate_conversion,double azimuth_in,dou if (satellite_tracking_activate_line) { if ((!satellite_tracking_active) && (!digitalReadEnhanced(satellite_tracking_activate_line))) { - satellite_tracking_active = 1; + change_tracking(ACTIVATE_SATELLITE_TRACKING); satellite_tracking_activated_by_activate_line = 1; } if ((satellite_tracking_active) && (digitalReadEnhanced(satellite_tracking_activate_line)) && (satellite_tracking_activated_by_activate_line)) { - satellite_tracking_active = 0; + change_tracking(DEACTIVATE_SATELLITE_TRACKING); satellite_tracking_activated_by_activate_line = 0; submit_request(AZ, REQUEST_STOP, 0, DBG_SERVICE_SATELLITE_TRACKING); #ifdef FEATURE_ELEVATION_CONTROL @@ -16951,12 +17295,18 @@ void convert_polar_to_cartesian(byte coordinate_conversion,double azimuth_in,dou sat.predict(sat_datetime); sat.LL(current_satellite_latitude,current_satellite_longitude); sat.altaz(obs, current_satellite_elevation, current_satellite_azimuth); + + if (current_satellite_next_aos_year == 0){ // 0 is a flag that this needs to be populated + calculate_satellite_upcoming_aos_and_los(1,0,0); + } + last_update_satellite_position = millis(); } if ((current_satellite_azimuth >= SATELLITE_AOS_AZIMUTH_MIN) && (current_satellite_azimuth <= SATELLITE_AOS_AZIMUTH_MAX) && (current_satellite_elevation >= SATELLITE_AOS_ELEVATION_MIN) && (current_satellite_elevation <= SATELLITE_AOS_ELEVATION_MAX)) { if (!satellite_visible) { satellite_visible = 1; + current_satellite_next_aos_year = 0; // flag to populate next AOS and LOS #ifdef DEBUG_SATELLITE_TRACKING debug.println("service_satellite_tracking: sat AOS"); #endif // DEBUG_SATELLITE_TRACKING @@ -16996,8 +17346,260 @@ void convert_polar_to_cartesian(byte coordinate_conversion,double azimuth_in,dou } #endif //FEATURE_SATELLITE_TRACKING -//------------------------------------------------------ +//------------------------------------------------------ +#if defined(FEATURE_SATELLITE_TRACKING) + void add_time(int &calc_years,int &calc_months,int &calc_days,int &calc_hours,int &calc_minutes,int increment_minutes,byte progress_dots){ + + + calc_minutes = calc_minutes + increment_minutes; + if (calc_minutes > 59){ + if (progress_dots){control_port->print(".");} + calc_minutes = 0; + calc_hours++; + if (calc_hours > 23){ + calc_hours = 0; + calc_days++; + switch(calc_months){ + case 1: // 31 day months + case 3: + case 5: + case 7: + case 8: + case 10: + case 12: + if (calc_days > 31){ + calc_months++; + calc_days = 1; + } + break; + case 4: // 30 day months + case 6: + case 9: + case 11: + if (calc_days > 30){ + calc_months++; + calc_days = 1; + } + break; + case 2: + if ((calc_years / 4.0) == 0.0) { // do we have a leap year? + if (calc_days > 29){ + calc_days = 1; + calc_months++; + } + } else { // not a leap year, 28 days + if (calc_days > 28){ + calc_days = 1; + calc_months++; + } + } + break; + } + if (calc_months > 12){ + calc_months = 1; + calc_years++; + } + + } + } + + + + } + +#endif //FEATURE_SATELLITE_TRACKING +//------------------------------------------------------ +#if defined(FEATURE_SATELLITE_TRACKING) + void calculate_satellite_upcoming_aos_and_los(byte number_of_passes,byte format,byte print_header){ + + + // format + // 0 = just populate next AOS and LOS global variables + // 1 = line report (good for one satellite) + // 2 = tabular (better for multiple satellites) + +//zzzzzz + double calc_satellite_latitude; + double calc_satellite_longitude; + double calc_satellite_azimuth; + double calc_satellite_elevation; + + int calc_years = clock_years; + int calc_months = clock_months; + int calc_days = clock_days; + int calc_hours = clock_hours; + int calc_minutes = clock_minutes; + + byte AOS = 0; + byte LOS = 0; + + byte hit_first_event = 1; + + byte progress_dots = 0; + + byte got_first_aos = 0; + + + if (format == 1){ + if (print_header){ + control_port->println(sat.name); + control_port->println(F("\r\n Date Time Az El")); + control_port->println(F("----------------------------------")); + } + progress_dots = 1; + } + + if (format == 2){ + if (print_header){ + control_port->println(F("\r\n AOS LOS")); + control_port->println(F(" Sat Date UTC az el Date UTC az el")); + control_port->println(F("---------------------------------------------------------------------")); + //AO-07 2020-07-26 12:16 353.66 3.09 2020-07-26 12:27 288.33 0.98 + + } + } + + + while(number_of_passes > 0){ + add_time(calc_years,calc_months,calc_days,calc_hours,calc_minutes,1,progress_dots); + sat_datetime.settime(calc_years, calc_months, calc_days, calc_hours, calc_minutes, 0); + sat.predict(sat_datetime); + sat.LL(calc_satellite_latitude,calc_satellite_longitude); + sat.altaz(obs, calc_satellite_elevation, calc_satellite_azimuth); + + if (calc_satellite_elevation > SATELLITE_AOS_ELEVATION_MIN){ + if (!AOS){ + if ((format == 0) && (got_first_aos == 0)){ + if (hit_first_event){ // we're currently in AOS/visible + if (got_first_aos == 5){ // we got the next LOS + current_satellite_next_aos_year = calc_years; + current_satellite_next_aos_month = calc_months; + current_satellite_next_aos_day = calc_days; + current_satellite_next_aos_hour = calc_hours; + current_satellite_next_aos_minute = calc_minutes; + current_satellite_next_aos_az = calc_satellite_azimuth; + current_satellite_next_aos_el = calc_satellite_elevation; + got_first_aos = 6; // we're done; we got the LOS first, AOS second + } else { + got_first_aos = 4; // got the next LOS first, then the next AOS + } + } else { // we're not in AOS/visible; get AOS first, LOS second + current_satellite_next_aos_year = calc_years; + current_satellite_next_aos_month = calc_months; + current_satellite_next_aos_day = calc_days; + current_satellite_next_aos_hour = calc_hours; + current_satellite_next_aos_minute = calc_minutes; + current_satellite_next_aos_az = calc_satellite_azimuth; + current_satellite_next_aos_el = calc_satellite_elevation; + got_first_aos = 1; // get LOS next and we're done + } + } + + if (format == 1){ + control_port->print(F("\rAOS: ")); + } + if (format == 2){ + control_port->print(sat.name); + control_port->print("\t"); + } + if (hit_first_event){ + hit_first_event = 0; + if (format == 1){control_port->println(F("now"));} + if (format == 2){control_port->print(F("***** now *****"));} + } else { + if ((format == 1) || (format == 2)){ + control_port->print(calc_years); + control_port->print("-"); + if (calc_months < 10){control_port->print("0");} + control_port->print(calc_months); + control_port->print("-"); + if (calc_days < 10){control_port->print("0");} + control_port->print(calc_days); + control_port->print(" "); + if (calc_hours < 10){control_port->print("0");} + control_port->print(calc_hours); + control_port->print(":"); + if (calc_minutes < 10){control_port->print("0");} + control_port->print(calc_minutes); + control_port->print(" "); + if (calc_satellite_azimuth < 10){control_port->print(" ");} + if (calc_satellite_azimuth < 100){control_port->print(" ");} + control_port->print(calc_satellite_azimuth); + control_port->print(" "); + if (calc_satellite_elevation > 0){control_port->print(" ");} + + } + if (format == 1){ + control_port->println(calc_satellite_elevation); + } + if (format == 2){ + control_port->print(calc_satellite_elevation); + } + } + AOS = 1; + LOS = 0; + } + } else { + if (!LOS){ + if ((got_first_aos == 1) || (got_first_aos == 4)){ + current_satellite_next_los_year = calc_years; + current_satellite_next_los_month = calc_months; + current_satellite_next_los_day = calc_days; + current_satellite_next_los_hour = calc_hours; + current_satellite_next_los_minute = calc_minutes; + current_satellite_next_los_az = calc_satellite_azimuth; + current_satellite_next_los_el = calc_satellite_elevation; + if (got_first_aos == 1){ + got_first_aos = 2; // we're done; got AOS then LOS; + } else { + got_first_aos = 5; // got LOS first, will get AOS second next + } + } + if (hit_first_event){ + hit_first_event = 0; // if the first thing we calculated was an LOS, ignore it; we want the first AOS + } else { + if (format == 1){ + control_port->print(F("\rLOS: ")); + } + if (format == 2){ + control_port->print("\t"); + } + if ((format == 1) || (format == 2)){ + control_port->print(calc_years); + control_port->print("-"); + if (calc_months < 10){control_port->print("0");} + control_port->print(calc_months); + control_port->print("-"); + if (calc_days < 10){control_port->print("0");} + control_port->print(calc_days); + control_port->print(" "); + if (calc_hours < 10){control_port->print("0");} + control_port->print(calc_hours); + control_port->print(":"); + if (calc_minutes < 10){control_port->print("0");} + control_port->print(calc_minutes); + control_port->print(" "); + if (calc_satellite_azimuth < 10){control_port->print(" ");} + if (calc_satellite_azimuth < 100){control_port->print(" ");} + control_port->print(calc_satellite_azimuth); + control_port->print(" "); + if (calc_satellite_elevation > 0){control_port->print(" ");} + control_port->println(calc_satellite_elevation); + } + if (format == 1){control_port->println();} + number_of_passes--; + } + LOS = 1; + AOS = 0; + } + } // while(number_of_passes > 0){ + } + + + } +#endif //FEATURE_SATELLITE_TRACKING +//------------------------------------------------------ void initialize_satellite_tracking(){ diff --git a/k3ng_rotator_controller/rotator.h b/k3ng_rotator_controller/rotator.h index 6a70a47..fee752e 100755 --- a/k3ng_rotator_controller/rotator.h +++ b/k3ng_rotator_controller/rotator.h @@ -191,6 +191,7 @@ #define DBG_PROCESS_DCU_1 233 +#define DBG_SERVICE_SATELLITE_CLI_CMD_PREROTATE 239 #define DBG_BACKSLASH_GT_CMD 240 #define DBG_BACKSLASH_GC_CMD 241 #define DBG_CHECK_BUTTONS_SATELLITE 244 @@ -244,6 +245,13 @@ #define COORDINATE_PLANE_NORMAL 0 #define COORDINATE_PLANE_UPPER_LEFT_ORIGIN 1 +#define DEACTIVATE_ALL 0 +#define DEACTIVATE_MOON_TRACKING 1 +#define DEACTIVATE_SUN_TRACKING 2 +#define DEACTIVATE_SATELLITE_TRACKING 3 +#define ACTIVATE_MOON_TRACKING 4 +#define ACTIVATE_SUN_TRACKING 5 +#define ACTIVATE_SATELLITE_TRACKING 6 /* ------end of macros ------- */ diff --git a/k3ng_rotator_controller/rotator_dependencies.h b/k3ng_rotator_controller/rotator_dependencies.h index 992f748..4f62f94 100755 --- a/k3ng_rotator_controller/rotator_dependencies.h +++ b/k3ng_rotator_controller/rotator_dependencies.h @@ -142,6 +142,8 @@ #error "FEATURE_SATELLITE_TRACKING requires FEATURE_ELEVATION_CONTROL" #endif - +#if defined(FEATURE_SATELLITE_TRACKING) && !defined(FEATURE_CLOCK) + #error "FEATURE_SATELLITE_TRACKING requires FEATURE_CLOCK" +#endif diff --git a/k3ng_rotator_controller/rotator_features.h b/k3ng_rotator_controller/rotator_features.h index 91e59b7..ad1900d 100755 --- a/k3ng_rotator_controller/rotator_features.h +++ b/k3ng_rotator_controller/rotator_features.h @@ -9,7 +9,7 @@ // #define FEATURE_ELEVATION_CONTROL // uncomment this for AZ/EL rotators #define FEATURE_YAESU_EMULATION // uncomment this for Yaesu GS-232 emulation on control port // #define FEATURE_EASYCOM_EMULATION // Easycom protocol emulation on control port -// #define FEATURE_DCU_1_EMULATION // DCU-1 protocol emulation on control port +// #define FEATURE_DCU_1_EMULATION // DCU-1 protocol emulation on control port (only supports azimuth only systems) // #define FEATURE_MOON_TRACKING // #define FEATURE_SUN_TRACKING @@ -22,7 +22,7 @@ // #define FEATURE_AUTOCORRECT // #define FEATURE_TEST_DISPLAY_AT_STARTUP -//#define FEATURE_SATELLITE_TRACKING // https://github.com/k3ng/k3ng_rotator_controller/wiki/707-Satellite-Tracking +// #define FEATURE_SATELLITE_TRACKING // https://github.com/k3ng/k3ng_rotator_controller/wiki/707-Satellite-Tracking #define LANGUAGE_ENGLISH // all languages customized in rotator_language.h // #define LANGUAGE_SPANISH @@ -148,6 +148,7 @@ // #define OPTION_DISPLAY_DIRECTION_STATUS // LCD N, W, E, S, NW, etc. direction indicator // #define OPTION_DISPLAY_MOON_TRACKING_CONTINUOUSLY // LCD // #define OPTION_DISPLAY_SATELLITE_TRACKING_CONTINUOUSLY // LCD +// #define OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING // LCD // #define OPTION_DISPLAY_SUN_TRACKING_CONTINUOUSLY // LCD #define OPTION_DISPLAY_MOON_OR_SUN_OR_SAT_TRACKING_CONDITIONAL // LCD #define OPTION_DISPLAY_VERSION_ON_STARTUP //code provided by Paolo, IT9IPQ diff --git a/k3ng_rotator_controller/rotator_features_m0upu.h b/k3ng_rotator_controller/rotator_features_m0upu.h index fcdc669..6864c90 100755 --- a/k3ng_rotator_controller/rotator_features_m0upu.h +++ b/k3ng_rotator_controller/rotator_features_m0upu.h @@ -138,6 +138,7 @@ // #define OPTION_DISPLAY_DIRECTION_STATUS // LCD N, W, E, S, NW, etc. direction indicator // #define OPTION_DISPLAY_MOON_TRACKING_CONTINUOUSLY // LCD // #define OPTION_DISPLAY_SATELLITE_TRACKING_CONTINUOUSLY // LCD +// #define OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING // LCD // #define OPTION_DISPLAY_SUN_TRACKING_CONTINUOUSLY // LCD #define OPTION_DISPLAY_MOON_OR_SUN_OR_SAT_TRACKING_CONDITIONAL // LCD //#define OPTION_DISPLAY_VERSION_ON_STARTUP //code provided by Paolo, IT9IPQ diff --git a/k3ng_rotator_controller/rotator_features_test.h b/k3ng_rotator_controller/rotator_features_test.h index e3de223..0c77a24 100755 --- a/k3ng_rotator_controller/rotator_features_test.h +++ b/k3ng_rotator_controller/rotator_features_test.h @@ -154,7 +154,8 @@ #define OPTION_DISPLAY_GPS_INDICATOR // display GPS indicator on LCD - set position with LCD_GPS_INDICATOR_POSITION and LCD_GPS_INDICATOR_ROW // #define OPTION_DISPLAY_DIRECTION_STATUS // LCD N, W, E, S, NW, etc. direction indicator // #define OPTION_DISPLAY_MOON_TRACKING_CONTINUOUSLY // LCD -#define OPTION_DISPLAY_SATELLITE_TRACKING_CONTINUOUSLY // LCD +// #define OPTION_DISPLAY_SATELLITE_TRACKING_CONTINUOUSLY // LCD +#define OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING // LCD // #define OPTION_DISPLAY_SUN_TRACKING_CONTINUOUSLY // LCD // #define OPTION_DISPLAY_MOON_OR_SUN_OR_SAT_TRACKING_CONDITIONAL // LCD #define OPTION_DISPLAY_VERSION_ON_STARTUP //code provided by Paolo, IT9IPQ diff --git a/k3ng_rotator_controller/rotator_features_wb6kcn.h b/k3ng_rotator_controller/rotator_features_wb6kcn.h index 08372cc..f4b85e1 100755 --- a/k3ng_rotator_controller/rotator_features_wb6kcn.h +++ b/k3ng_rotator_controller/rotator_features_wb6kcn.h @@ -132,6 +132,7 @@ // #define OPTION_DISPLAY_DIRECTION_STATUS // LCD N, W, E, S, NW, etc. direction indicator // #define OPTION_DISPLAY_MOON_TRACKING_CONTINUOUSLY // LCD // #define OPTION_DISPLAY_SATELLITE_TRACKING_CONTINUOUSLY // LCD +// #define OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING // LCD // #define OPTION_DISPLAY_SUN_TRACKING_CONTINUOUSLY // LCD // #define OPTION_DISPLAY_MOON_OR_SUN_OR_SAT_TRACKING_CONDITIONAL // LCD //#define OPTION_DISPLAY_VERSION_ON_STARTUP //code provided by Paolo, IT9IPQ diff --git a/k3ng_rotator_controller/rotator_settings.h b/k3ng_rotator_controller/rotator_settings.h index f1291fe..def7aeb 100755 --- a/k3ng_rotator_controller/rotator_settings.h +++ b/k3ng_rotator_controller/rotator_settings.h @@ -203,8 +203,6 @@ You can tweak these, but read the online documentation! #define SUN_AOS_ELEVATION_MIN 0 #define SUN_AOS_ELEVATION_MAX 180 -#define TRACKING_ACTIVE_CHAR "*" -#define TRACKING_INACTIVE_CHAR "-" #define LCD_DISPLAY_DEGREES_STRING "\xDF" #define NEXTION_DISPLAY_DEGREES_STRING "\xB0" @@ -360,9 +358,20 @@ You can tweak these, but read the online documentation! #define SATELLITE_TRACKING_UPDATE_INTERVAL 5000 #define SATELLITE_AOS_AZIMUTH_MIN 0 #define SATELLITE_AOS_AZIMUTH_MAX 360 -#define SATELLITE_AOS_ELEVATION_MIN 0 +#define SATELLITE_AOS_ELEVATION_MIN 2 #define SATELLITE_AOS_ELEVATION_MAX 180 // Added in 2020.07.25.01 #define LCD_SATELLITE_TRACKING_ROW 4 #define SATELLITE_TLE_CHAR_SIZE 71 + +// Added in 2020.07.26.01 +#define OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING_TIME_MS 5000 +#define LCD_DISPLAY_SATELLITE_VISIBLE_NOT_TRACKED_CHAR "~" +#define LCD_DISPLAY_SATELLITE_VISIBLE_TRACKED_CHAR "*" +#define LCD_DISPLAY_SATELLITE_NOT_VISIBLE_TRACKED_CHAR "." +#define LCD_DISPLAY_MOON_TRACKING_ACTIVE_CHAR "*" +#define LCD_DISPLAY_MOON_TRACKING_INACTIVE_CHAR "-" +#define LCD_DISPLAY_SUN_TRACKING_ACTIVE_CHAR "*" +#define LCD_DISPLAY_SUN_TRACKING_INACTIVE_CHAR "-" + diff --git a/k3ng_rotator_controller/rotator_settings_ea4tx_ars_usb.h b/k3ng_rotator_controller/rotator_settings_ea4tx_ars_usb.h index da812e1..5b14b1d 100755 --- a/k3ng_rotator_controller/rotator_settings_ea4tx_ars_usb.h +++ b/k3ng_rotator_controller/rotator_settings_ea4tx_ars_usb.h @@ -200,8 +200,6 @@ You can tweak these, but read the online documentation! #define SUN_AOS_ELEVATION_MIN 0 #define SUN_AOS_ELEVATION_MAX 180 -#define TRACKING_ACTIVE_CHAR "*" -#define TRACKING_INACTIVE_CHAR "-" #define LCD_DISPLAY_DEGREES_STRING "\xDF" #define NEXTION_DISPLAY_DEGREES_STRING "\xB0" @@ -356,10 +354,19 @@ You can tweak these, but read the online documentation! #define SATELLITE_TRACKING_UPDATE_INTERVAL 5000 #define SATELLITE_AOS_AZIMUTH_MIN 0 #define SATELLITE_AOS_AZIMUTH_MAX 360 -#define SATELLITE_AOS_ELEVATION_MIN 0 +#define SATELLITE_AOS_ELEVATION_MIN 2 #define SATELLITE_AOS_ELEVATION_MAX 180 // Added in 2020.07.25.01 #define LCD_SATELLITE_TRACKING_ROW 4 #define SATELLITE_TLE_CHAR_SIZE 71 +// Added in 2020.07.26.01 +#define OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING_TIME_MS 5000 +#define LCD_DISPLAY_SATELLITE_VISIBLE_NOT_TRACKED_CHAR "~" +#define LCD_DISPLAY_SATELLITE_VISIBLE_TRACKED_CHAR "*" +#define LCD_DISPLAY_SATELLITE_NOT_VISIBLE_TRACKED_CHAR "." +#define LCD_DISPLAY_MOON_TRACKING_ACTIVE_CHAR "*" +#define LCD_DISPLAY_MON_TRACKING_INACTIVE_CHAR "-" +#define LCD_DISPLAY_SUN_TRACKING_ACTIVE_CHAR "*" +#define LCD_DISPLAY_SUN_TRACKING_INACTIVE_CHAR "-" \ No newline at end of file diff --git a/k3ng_rotator_controller/rotator_settings_m0upu.h b/k3ng_rotator_controller/rotator_settings_m0upu.h index d4cfe85..25027fe 100755 --- a/k3ng_rotator_controller/rotator_settings_m0upu.h +++ b/k3ng_rotator_controller/rotator_settings_m0upu.h @@ -200,8 +200,6 @@ You can tweak these, but read the online documentation! #define SUN_AOS_ELEVATION_MIN 0 #define SUN_AOS_ELEVATION_MAX 180 -#define TRACKING_ACTIVE_CHAR "*" -#define TRACKING_INACTIVE_CHAR "-" #define LCD_DISPLAY_DEGREES_STRING "\xDF" #define NEXTION_DISPLAY_DEGREES_STRING "\xB0" @@ -353,9 +351,19 @@ You can tweak these, but read the online documentation! #define SATELLITE_TRACKING_UPDATE_INTERVAL 5000 #define SATELLITE_AOS_AZIMUTH_MIN 0 #define SATELLITE_AOS_AZIMUTH_MAX 360 -#define SATELLITE_AOS_ELEVATION_MIN 0 +#define SATELLITE_AOS_ELEVATION_MIN 2 #define SATELLITE_AOS_ELEVATION_MAX 180 // Added in 2020.07.25.01 #define LCD_SATELLITE_TRACKING_ROW 4 #define SATELLITE_TLE_CHAR_SIZE 71 + +// Added in 2020.07.26.01 +#define OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING_TIME_MS 5000 +#define LCD_DISPLAY_SATELLITE_VISIBLE_NOT_TRACKED_CHAR "~" +#define LCD_DISPLAY_SATELLITE_VISIBLE_TRACKED_CHAR "*" +#define LCD_DISPLAY_SATELLITE_NOT_VISIBLE_TRACKED_CHAR "." +#define LCD_DISPLAY_MOON_TRACKING_ACTIVE_CHAR "*" +#define LCD_DISPLAY_MOON_TRACKING_INACTIVE_CHAR "-" +#define LCD_DISPLAY_SUN_TRACKING_ACTIVE_CHAR "*" +#define LCD_DISPLAY_SUN_TRACKING_INACTIVE_CHAR "-" diff --git a/k3ng_rotator_controller/rotator_settings_test.h b/k3ng_rotator_controller/rotator_settings_test.h index 42d6434..fe2be1d 100755 --- a/k3ng_rotator_controller/rotator_settings_test.h +++ b/k3ng_rotator_controller/rotator_settings_test.h @@ -215,8 +215,6 @@ You can tweak these, but read the online documentation! #define SUN_AOS_ELEVATION_MIN 0 #define SUN_AOS_ELEVATION_MAX 180 -#define TRACKING_ACTIVE_CHAR "*" -#define TRACKING_INACTIVE_CHAR "-" #define LCD_DISPLAY_DEGREES_STRING "\xDF" #define NEXTION_DISPLAY_DEGREES_STRING "\xB0" @@ -371,7 +369,7 @@ You can tweak these, but read the online documentation! #define SATELLITE_TRACKING_UPDATE_INTERVAL 5000 #define SATELLITE_AOS_AZIMUTH_MIN 0 #define SATELLITE_AOS_AZIMUTH_MAX 360 -#define SATELLITE_AOS_ELEVATION_MIN 0 +#define SATELLITE_AOS_ELEVATION_MIN 2 #define SATELLITE_AOS_ELEVATION_MAX 180 @@ -379,6 +377,15 @@ You can tweak these, but read the online documentation! #define LCD_SATELLITE_TRACKING_ROW 4 #define SATELLITE_TLE_CHAR_SIZE 71 +// Added in 2020.07.26.01 +#define OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING_TIME_MS 5000 +#define LCD_DISPLAY_SATELLITE_VISIBLE_NOT_TRACKED_CHAR "~" +#define LCD_DISPLAY_SATELLITE_VISIBLE_TRACKED_CHAR "*" +#define LCD_DISPLAY_SATELLITE_NOT_VISIBLE_TRACKED_CHAR "." +#define LCD_DISPLAY_MOON_TRACKING_ACTIVE_CHAR "*" +#define LCD_DISPLAY_MOON_TRACKING_INACTIVE_CHAR "-" +#define LCD_DISPLAY_SUN_TRACKING_ACTIVE_CHAR "*" +#define LCD_DISPLAY_SUN_TRACKING_INACTIVE_CHAR "-" // ######## ######## ###### ######## // ## ## ## ## ## diff --git a/k3ng_rotator_controller/rotator_settings_wb6kcn.h b/k3ng_rotator_controller/rotator_settings_wb6kcn.h index f58f2df..78e214a 100755 --- a/k3ng_rotator_controller/rotator_settings_wb6kcn.h +++ b/k3ng_rotator_controller/rotator_settings_wb6kcn.h @@ -201,8 +201,6 @@ You can tweak these, but read the online documentation! #define SUN_AOS_ELEVATION_MIN 0 #define SUN_AOS_ELEVATION_MAX 180 -#define TRACKING_ACTIVE_CHAR "*" -#define TRACKING_INACTIVE_CHAR "-" #define LCD_DISPLAY_DEGREES_STRING "\xDF" #define NEXTION_DISPLAY_DEGREES_STRING "\xB0" @@ -355,11 +353,21 @@ You can tweak these, but read the online documentation! #define SATELLITE_TRACKING_UPDATE_INTERVAL 5000 #define SATELLITE_AOS_AZIMUTH_MIN 0 #define SATELLITE_AOS_AZIMUTH_MAX 360 -#define SATELLITE_AOS_ELEVATION_MIN 0 +#define SATELLITE_AOS_ELEVATION_MIN 2 #define SATELLITE_AOS_ELEVATION_MAX 180 // Added in 2020.07.25.01 #define LCD_SATELLITE_TRACKING_ROW 4 #define SATELLITE_TLE_CHAR_SIZE 71 +// Added in 2020.07.26.01 +#define OPTION_DISPLAY_SATELLITE_TRACKING_ALTERNATING_TIME_MS 5000 +#define LCD_DISPLAY_SATELLITE_VISIBLE_NOT_TRACKED_CHAR "~" +#define LCD_DISPLAY_SATELLITE_VISIBLE_TRACKED_CHAR "*" +#define LCD_DISPLAY_SATELLITE_NOT_VISIBLE_TRACKED_CHAR "." +#define LCD_DISPLAY_MOON_TRACKING_ACTIVE_CHAR "*" +#define LCD_DISPLAY_MOON_TRACKING_INACTIVE_CHAR "-" +#define LCD_DISPLAY_SUN_TRACKING_ACTIVE_CHAR "*" +#define LCD_DISPLAY_SUN_TRACKING_INACTIVE_CHAR "-" + \ No newline at end of file diff --git a/tle/nasabare.txt b/tle/nasabare.txt new file mode 100644 index 0000000..9c39375 --- /dev/null +++ b/tle/nasabare.txt @@ -0,0 +1,591 @@ +AO-07 +1 07530U 74089B 20205.48277872 -.00000043 00000-0 13494-4 0 9990 +2 07530 101.8018 175.0260 0011861 296.2265 184.6086 12.53644244090508 +UO-11 +1 14781U 84021B 20205.45028052 .00000011 00000-0 73722-5 0 9999 +2 14781 097.5894 215.6333 0010059 084.2955 275.9406 14.83179338937162 +LO-19 +1 20442U 90005G 20205.40270221 -.00000003 00000-0 15438-4 0 9992 +2 20442 098.6939 152.7774 0012735 052.5234 307.7106 14.32956924593769 +HUBBLE +1 20580U 90037B 20205.79346029 .00000335 00000-0 93875-5 0 9991 +2 20580 28.4701 79.3049 0002843 122.0282 332.3461 15.09408263461545 +MET-2/21 +1 22782U 93055A 20205.76974663 .00000006 00000-0 -79659-5 0 9998 +2 22782 82.5477 204.7625 0023493 131.0006 42.3561 13.83826532358338 +AO-27 +1 22825U 93061C 20205.47484219 -.00000026 00000-0 81926-5 0 9996 +2 22825 098.9235 208.8343 0007310 272.9830 087.0515 14.30089046398963 +IO-26 +1 22826U 93061D 20205.45281420 -.00000023 00000-0 92702-5 0 9995 +2 22826 098.9176 208.7547 0007840 259.3611 100.6688 14.30425042399444 +FO-29 +1 24278U 96046B 20205.54750867 .00000001 00000-0 40493-4 0 9994 +2 24278 098.5868 310.6584 0349296 281.4372 074.7736 13.53098180181761 +NOAA-15 +1 25338U 98030A 20205.50008540 .00000059 00000-0 43219-4 0 9999 +2 25338 098.7149 230.3641 0010975 152.4882 207.6881 14.25980827154112 +GO-32 +1 25397U 98043D 20205.56910897 -.00000019 00000-0 10991-4 0 9999 +2 25397 098.7294 146.7951 0001009 014.8284 345.2924 14.23687710144699 +ISS +1 25544U 98067A 20209.07304659 .00016717 00000-0 10270-3 0 9071 +2 25544 51.6422 151.0501 0001324 154.8065 205.3150 15.49545786 38195 +NO-44 +1 26931U 01043C 20205.59366540 -.00000060 00000-0 89108-5 0 9994 +2 26931 67.0514 49.1317 0005897 274.1700 85.8727 14.30582661982317 +SO-50 +1 27607U 02058C 20205.55747917 -.00000054 00000-0 12770-4 0 9992 +2 27607 064.5549 263.9837 0043424 166.2874 193.9420 14.75647519946057 +CO-55 +1 27844U 03031E 20205.24098410 .00000016 00000-0 26856-4 0 9997 +2 27844 098.6811 212.4347 0008992 317.7839 042.2645 14.22247562885187 +CO-57 +1 27848U 03031J 20205.48916286 .00000009 00000-0 23936-4 0 9995 +2 27848 098.6876 213.2390 0009089 330.3699 029.6962 14.21833415885067 +RS-22 +1 27939U 03042A 20205.81215863 -.00000019 00000-0 53636-5 0 9991 +2 27939 98.0961 340.1592 0011997 234.3273 125.6821 14.66872839899342 +NOAA-18 +1 28654U 05018A 20205.57203222 .00000070 00000-0 62678-4 0 9991 +2 28654 099.0413 262.3340 0015210 127.4653 232.7904 14.12526902782017 +CO-58 +1 28895U 05043F 20205.64335439 .00000068 00000-0 22036-4 0 9991 +2 28895 98.0146 340.9946 0017298 162.3453 197.8354 14.63784564786138 +Falconsat-3 +1 30776U 07006E 20205.25809954 .00001634 00000-0 44207-4 0 9992 +2 30776 035.4352 050.9157 0001994 172.5736 187.5020 15.37930803742351 +CO-65 +1 32785U 08021C 20205.16219448 .00000112 00000-0 17653-4 0 9990 +2 32785 097.5742 191.6110 0013597 021.7764 338.4029 14.88490252663188 +AAUSAT2 +1 32788U 08021F 20205.72729436 -.00000075 00000-0 -18976-5 0 9998 +2 32788 97.4910 208.6140 0010259 298.3256 61.6930 14.95096117664838 +DO-64 +1 32789U 08021G 20205.56978499 .00000476 00000-0 34996-4 0 9998 +2 32789 097.4159 247.1054 0011902 183.7444 176.3697 15.07804840667255 +CO-66 +1 32791U 08021J 20204.96712003 .00000078 00000-0 13247-4 0 9995 +2 32791 097.5416 197.5512 0012987 351.7603 008.3401 14.91075253663679 +RS-30 +1 32953U 08025A 20205.85589914 .00000037 00000-0 19437-3 0 9992 +2 32953 82.5016 255.2637 0018473 337.4011 22.6254 12.43097149552157 +PRISM +1 33493U 09002B 20205.54697303 -.00000232 00000-0 -14490-4 0 9990 +2 33493 098.1459 147.3402 0013868 300.2588 059.7259 14.97080078625108 +NOAA-19 +1 33591U 09005A 20205.50755824 .00000045 00000-0 49882-4 0 9994 +2 33591 099.1950 211.7928 0013559 339.0908 020.9706 14.12422910590229 +TISAT-1 +1 36799U 10035E 20205.46591106 .00000070 00000-0 13220-4 0 9993 +2 36799 098.1969 017.1279 0011573 206.0777 153.9858 14.91385196544493 +JUGNU +1 37839U 11058B 20205.32416598 .00000283 00000-0 91403-5 0 9997 +2 37839 019.9621 065.2289 0018917 064.0053 090.5863 14.12683648453866 +SRMSAT +1 37841U 11058D 20205.52554921 .00000291 00000-0 14658-4 0 9990 +2 37841 019.9717 129.0823 0011702 279.9391 239.6367 14.10663849453263 +AO-71 +1 37854U 11061E 20205.27559990 .00000224 00000-0 19585-4 0 9991 +2 37854 101.7025 315.0073 0157964 315.2736 043.5827 15.07350319476878 +HRBE +1 37855U 11061F 20205.51032102 .00000467 00000-0 31138-4 0 9997 +2 37855 101.7155 312.5043 0170570 327.9286 031.1636 15.06378008476639 +HORYU-2 +1 38340U 12025D 20205.41408090 .00000095 00000-0 21839-4 0 9994 +2 38340 098.2782 259.8162 0010107 288.4033 071.6077 14.75869868440262 +RS-40 +1 38735U 12041C 20205.44127441 -.00000001 00000-0 -76417-4 0 9992 +2 38735 082.4765 338.2208 0017737 084.7917 275.5186 12.42580069362324 +BEESAT-3 +1 39135U 13015F 20205.33944540 .00000386 00000-0 28422-4 0 9991 +2 39135 064.8661 185.5116 0035092 238.2947 121.4757 15.18238969400660 +BEESAT-2 +1 39136U 13015G 20205.40155950 .00000597 00000-0 39173-4 0 9998 +2 39136 064.8700 190.4055 0032797 275.9491 083.7897 15.17626985400576 +ZACUBE-1 +1 39417U 13066B 20205.43700858 .00000126 00000-0 22133-4 0 9998 +2 39417 097.5654 201.4597 0059382 158.4507 201.9226 14.81293310360369 +TRITON-1 +1 39427U 13066M 20205.60316316 .00000142 00000-0 30852-4 0 9995 +2 39427 97.7281 164.5287 0112794 323.1413 36.2077 14.68022664357150 +GOMX-1 +1 39430U 13066Q 20205.73203554 .00000080 00000-0 23105-4 0 9996 +2 39430 97.7931 142.0716 0152340 70.4281 291.3299 14.59413327355091 +LO-74 +1 39440U 13066AA 20205.48658594 .00000106 00000-0 21921-4 0 9990 +2 39440 097.6327 186.0017 0078939 222.4429 137.0660 14.76029328357897 +AO-73 +1 39444U 13066AE 20205.48155549 .00000138 00000-0 23090-4 0 9990 +2 39444 097.5595 203.7520 0058704 150.3764 210.0797 14.82149958358705 +SPROUT +1 39770U 14029E 20205.73428285 .00000286 00000-0 37372-4 0 9992 +2 39770 97.8992 311.8630 0008223 200.4306 159.6607 14.87795534334450 +DUCHIFAT-1 +1 40021U 14033M 20205.58806216 .00000102 00000-0 16189-4 0 9995 +2 40021 097.9426 137.0478 0013103 161.7390 198.4301 14.90932851331275 +NANOSATCBR1 +1 40024U 14033Q 20205.36254825 .00000210 00000-0 27634-4 0 9994 +2 40024 097.9271 133.0849 0012289 166.9442 193.2096 14.90098362331109 +DTUSAT-2 +1 40030U 14033W 20205.51132517 .00000122 00000-0 19059-4 0 9995 +2 40030 097.9022 127.2056 0011939 169.5327 190.6141 14.88733310330373 +EO-80 +1 40032U 14033Y 20205.53144536 .00000162 00000-0 23331-4 0 9995 +2 40032 097.9028 127.2282 0011846 170.4984 189.6459 14.88682670330359 +ANTELSAT +1 40034U 14033AA 20205.57708138 .00000123 00000-0 25593-4 0 9994 +2 40034 097.7109 059.5332 0057205 241.4385 118.1060 14.74274519327204 +VELOX-1 +1 40057U 14034E 20205.85830774 .00000145 00000-0 27861-4 0 9997 +2 40057 98.2854 343.8310 0011564 35.6507 324.5471 14.77894604327018 +DAURIA DX 1 +1 40071U 14037C 20205.78877970 .00000043 00000-0 13128-4 0 9995 +2 40071 98.4613 26.2010 0009031 28.2637 331.9056 14.81376985326636 +HODOYOSHI-1 +1 40299U 14070B 20205.83081944 .00000287 00000-0 14641-4 0 9999 +2 40299 97.3219 281.7225 0014565 70.3815 24.3856 15.24106814317358 +CHUBUSAT-1 +1 40300U 14070C 20205.15839519 .00000409 00000-0 20469-4 0 9997 +2 40300 097.2861 273.2498 0021429 086.8389 331.5572 15.22551507316949 +QSAT-EOS +1 40301U 14070D 20205.82807583 .00001013 00000-0 40549-4 0 9991 +2 40301 97.2925 279.4397 0026537 61.5432 48.3122 15.27046701317485 +FIREBIRD FU3 +1 40377U 15003B 20205.46627495 .00001338 00000-0 54896-4 0 9993 +2 40377 099.0928 273.0386 0123345 193.3195 166.4771 15.20155754302785 +FIREBIRD FU4 +1 40378U 15003C 20205.45015229 .00001370 00000-0 56073-4 0 9994 +2 40378 099.0932 273.1202 0123528 193.2414 166.5565 15.20171981302787 +GRIFEX +1 40379U 15003D 20205.44122126 .00000694 00000-0 33394-4 0 9998 +2 40379 099.0997 264.8181 0131962 219.0910 140.0727 15.16481293302301 +NO-84 +1 40654U 15025D 20204.22206522 .00004832 00000-0 60959-4 0 9878 +2 40654 54.9859 140.3057 0111018 278.8097 80.0381 15.54823615174433 +DEORBITSAIL +1 40719U 15032E 20205.40613910 .00000232 00000-0 39987-4 0 9992 +2 40719 097.8660 093.1557 0017895 090.9218 269.4043 14.77029558271408 +NUDT-PHONESAT +1 40900U 15049B 20205.83182961 .00001162 00000-0 50555-4 0 9993 +2 40900 97.4304 216.4706 0011535 208.3631 277.5125 15.24223660268732 +XW-2A +1 40903U 15049E 20205.82417135 .00001131 00000-0 27358-4 0 9990 +2 40903 97.2856 254.7988 0014452 126.6950 353.6365 15.43198013272088 +XW-2C +1 40906U 15049H 20205.81710884 .00000337 00000-0 20935-4 0 9990 +2 40906 97.4768 206.6295 0013139 245.4906 237.8367 15.16110423267767 +XW-2D +1 40907U 15049J 20205.80532584 .00000503 00000-0 29357-4 0 9991 +2 40907 97.4751 206.3308 0012375 242.9385 241.0505 15.16349327267786 +LILACSAT-2 +1 40908U 15049K 20205.86293035 .00000394 00000-0 25224-4 0 9990 +2 40908 97.4910 204.6896 0014188 254.4145 223.1681 15.14066583267507 +XW-2E +1 40909U 15049L 20205.85935510 .00000576 00000-0 31184-4 0 9995 +2 40909 97.4629 209.9237 0012074 231.0399 248.5850 15.18491756268054 +XW-2F +1 40910U 15049M 20205.82245547 .00000525 00000-0 29126-4 0 9995 +2 40910 97.4672 208.9775 0013107 230.4377 253.4973 15.18000296267850 +XW-2B +1 40911U 15049N 20205.85623936 .00000404 00000-0 24322-4 0 9990 +2 40911 97.4765 207.0792 0012394 243.2579 236.2996 15.16273694267683 +DCBB +1 40912U 15049P 20205.82538285 .00000616 00000-0 31383-4 0 9990 +2 40912 97.4476 213.1643 0013869 205.6466 278.6964 15.20401261268247 +TW-1C +1 40926U 15051B 20205.84301096 .00014843 00000-0 14021-3 0 9994 +2 40926 97.0810 257.8832 0003672 319.6342 94.2736 15.67104559272723 +TW-1A +1 40928U 15051D 20205.86186432 .00001820 00000-0 43413-4 0 9992 +2 40928 97.1070 232.8043 0012142 59.8223 65.0759 15.42773795270988 +IO-86 +1 40931U 15052B 20205.55158481 .00000491 00000-0 -20793-4 0 9996 +2 40931 6.0001 77.9747 0013154 65.8919 294.2576 14.76637028260602 +LQSat +1 40958U 15057A 20205.45759116 .00000013 00000-0 96319-5 0 9998 +2 40958 097.8505 267.6554 0018965 038.1879 322.0668 14.73125173257805 +ATHENOXAT-1 +1 41168U 15077C 20205.52731633 .00001402 00000-0 37410-4 0 9995 +2 41168 14.9875 156.7280 0011327 270.2143 89.6880 15.14434011254822 +ChubuSat-2 +1 41338U 16012B 20205.42877092 .00000227 00000-0 10894-4 0 9994 +2 41338 031.0033 117.7381 0013654 113.7151 246.4918 15.00307573243146 +ChubuSat-3 +1 41339U 16012C 20205.81862535 .00000195 00000-0 83736-5 0 9994 +2 41339 31.0116 112.8537 0013237 124.7673 235.4211 15.00470875243203 +Horyu-4 +1 41340U 16012D 20205.39676283 .00000312 00000-0 16826-4 0 9998 +2 41340 031.0054 102.8826 0013892 146.3909 213.7610 15.01521205243280 +OUFTI-1 +1 41458U 16025C 20205.40697818 .00001336 00000-0 69701-4 0 9998 +2 41458 098.1082 317.8911 0164632 088.7137 273.2943 15.06965870232899 +e-st@r-II +1 41459U 16025D 20205.72880789 .00001427 00000-0 74832-4 0 9997 +2 41459 98.1075 317.6139 0165826 89.8807 272.1451 15.06520665232907 +AAUSAT4 +1 41460U 16025E 20205.74369817 .00000903 00000-0 47520-4 0 9997 +2 41460 98.1081 320.0921 0154881 78.0716 283.7842 15.08868641233118 +LO-87 +1 41557U 16033B 20205.78860906 .00000722 00000-0 29056-4 0 9995 +2 41557 97.4042 295.7784 0012405 325.3972 34.6459 15.28087507231320 +NuSat2 +1 41558U 16033C 20205.77219471 .00000793 00000-0 29817-4 0 9993 +2 41558 97.4100 298.2011 0011354 322.4642 37.5804 15.30080270231443 +Lapan A3 +1 41603U 16040E 20205.81850139 .00000040 00000-0 49684-5 0 9999 +2 41603 97.3067 258.2194 0015115 76.5954 34.5690 15.19851338226661 +Swayam +1 41607U 16040J 20205.43771714 .00001000 00000-0 43665-4 0 9991 +2 41607 097.3151 263.9562 0014635 064.0569 296.2175 15.24322431226906 +Pratham +1 41783U 16059A 20205.58270910 .00000029 00000-0 14766-4 0 9994 +2 41783 098.0139 260.0219 0033097 200.2181 159.7713 14.63064923204165 +AlSat 1N +1 41789U 16059G 20205.77398241 .00000030 00000-0 14603-4 0 9991 +2 41789 98.0184 263.1117 0028195 186.2932 173.7915 14.64330698204348 +ScatSat +1 41790U 16059H 20205.74033693 .00000003 00000-0 11703-4 0 9995 +2 41790 98.1589 244.9426 0005876 157.5201 202.6251 14.50923237202481 +TY-1 +1 41844U 16066D 20205.85948096 .00000437 00000-0 20424-4 0 9998 +2 41844 97.4022 213.6194 0013826 210.6777 269.6857 15.24898782205816 +Pegasus-1 +1 41846U 16066F 20205.40816853 .00000177 00000-0 36233-4 0 9992 +2 41846 098.6589 255.8356 0367905 126.0549 237.5315 14.37789825194139 +CAS-2T +1 41847U 16066G 20205.38803661 .00000048 00000-0 16836-4 0 9997 +2 41847 098.6513 256.2616 0366713 121.7816 241.9644 14.38079262194587 +EO-88 +1 42017U 17008BX 20205.14267572 .00000969 00000-0 39796-4 0 9995 +2 42017 097.3580 272.1825 0006040 179.8307 180.2935 15.26576860190992 +CAS-4B +1 42759U 17034B 20205.80161740 .00000002 00000-0 13585-4 0 9996 +2 42759 43.0165 187.3453 0012087 264.4542 163.7427 15.09846113171461 +CAS-4A +1 42761U 17034D 20205.81063678 -.00000004 00000-0 13235-4 0 9996 +2 42761 43.0161 186.5688 0012532 265.5932 165.1010 15.09924853171463 +UCLSat +1 42765U 17036A 20205.41136249 .00000721 00000-0 33017-4 0 9998 +2 42765 097.2983 258.6837 0009505 257.3821 102.6354 15.23588952172054 +NIUSat +1 42766U 17036B 20205.56890043 .00000567 00000-0 27955-4 0 9996 +2 42766 097.2977 256.2089 0013744 251.0037 108.9710 15.21770945171182 +LituanicaSAT 2 +1 42768U 17036D 20205.57198470 .00001277 00000-0 55207-4 0 9994 +2 42768 097.3040 258.8697 0012946 245.3674 114.6216 15.24180585171346 +Aalto 1 +1 42775U 17036L 20205.41843489 .00000463 00000-0 23316-4 0 9994 +2 42775 97.2957 256.4058 0012151 250.7117 109.2805 15.21884161171145 +URSA MAIOR +1 42776U 17036M 20205.40337666 .00000514 00000-0 25409-4 0 9991 +2 42776 97.2969 256.6912 0011963 250.3439 109.6507 15.22070939171158 +Max Valier Sat +1 42778U 17036P 20205.42106858 .00000564 00000-0 27122-4 0 9991 +2 42778 097.3024 258.0582 0010470 253.0928 106.9161 15.22670617171208 +Pegasus +1 42784U 17036V 20205.57539709 .00000696 00000-0 32256-4 0 9999 +2 42784 097.2987 258.5182 0010093 258.0878 101.9227 15.23276551171278 +NUDATSat +1 42787U 17036Y 20205.86352007 .00001100 00000-0 47396-4 0 9990 +2 42787 97.3038 260.2789 0010056 261.5043 98.5055 15.24616625171242 +SUCHAI 1 +1 42788U 17036Z 20205.12680586 .00000816 00000-0 36716-4 0 9993 +2 42788 097.2996 258.7036 0009628 257.7334 102.2826 15.23837275171317 +SKCUBE +1 42789U 17036AA 20205.37366140 .00000782 00000-0 35468-4 0 9993 +2 42789 097.2990 258.7854 0009517 257.1148 102.9026 15.23674808171268 +VZLUSAT 1 +1 42790U 17036AB 20205.39342192 .00001061 00000-0 45844-4 0 9998 +2 42790 097.3016 259.8154 0009027 253.8012 106.2233 15.24600465171327 +VENTA 1 +1 42791U 17036AC 20205.41381997 .00000781 00000-0 35429-4 0 9994 +2 42791 097.2988 258.8649 0009185 257.4840 102.5370 15.23655912171267 +Robusta 1B +1 42792U 17036AD 20205.58565344 .00000828 00000-0 37187-4 0 9998 +2 42792 097.2993 259.2543 0009099 256.5097 103.5127 15.23866961171326 +D-SAT +1 42794U 17036AF 20205.54061570 -.00000062 00000-0 21266-6 0 9992 +2 42794 097.4913 236.4073 0124648 244.2377 114.5936 14.91293918168078 +TechnoSat +1 42829U 17042E 20205.58733643 -.00000041 00000-0 11777-5 0 9991 +2 42829 97.5154 85.6619 0014655 158.4166 201.7674 14.91112937164674 +QIKCOM-1 +1 42983U 98067NF 20205.78260054 .00002458 00000-0 33837-4 0 9994 +2 42983 51.6388 122.3365 0003522 182.3935 177.7042 15.61786240155968 +AO-91 +1 43017U 17073E 20205.58510516 .00000254 00000-0 25825-4 0 9990 +2 43017 097.7208 116.4271 0255496 292.8077 064.6331 14.78976100144508 +EcAMSat +1 43019U 98067NG 20205.80730132 .00005413 00000-0 55737-4 0 9994 +2 43019 51.6407 106.8359 0003636 170.6137 189.4927 15.66692305238496 +PICSAT +1 43132U 18004X 20205.41608019 .00000814 00000-0 36048-4 0 9992 +2 43132 097.4458 276.5354 0007879 290.6254 069.4138 15.24486430140534 +AO-92 +1 43137U 18004AC 20205.46156682 .00000629 00000-0 28781-4 0 9995 +2 43137 097.4442 276.3770 0007535 293.3747 066.6697 15.24177647140534 +TianYi 2 +1 43155U 18008A 20205.82227146 .00000131 00000-0 11423-4 0 9996 +2 43155 97.4452 273.9843 0018368 27.9023 82.1100 15.11672297138416 +Zhou Enlai +1 43156U 18008B 20205.86368828 .00000847 00000-0 54054-4 0 9995 +2 43156 97.4505 273.8712 0015374 27.8403 83.2361 15.11226626138372 +TianYi 6 +1 43158U 18008D 20205.41963140 .00000075 00000-0 82956-5 0 9992 +2 43158 97.4426 272.4503 0014711 27.4144 31.6792 15.10752992138252 +S-Net G +1 43186U 18014G 20205.74798241 .00000311 00000-0 32160-4 0 9998 +2 43186 97.6911 112.9949 0012521 102.0551 258.2074 14.96820986135120 +S-Net H +1 43187U 18014H 20205.48041093 .00000280 00000-0 29455-4 0 9994 +2 43187 097.6908 112.7092 0012504 102.7831 257.4789 14.96820535135082 +S-Net J +1 43188U 18014J 20205.54713396 .00000275 00000-0 29061-4 0 9991 +2 43188 097.6911 112.8058 0012510 102.6872 257.5749 14.96820368135093 +S-Net K +1 43189U 18014K 20205.48072173 .00000293 00000-0 30604-4 0 9991 +2 43189 097.6908 112.7046 0012503 102.7835 257.4784 14.96819772133631 +FMN 1 +1 43192U 18015A 20205.86339676 .00001000 00000-0 42028-4 0 9992 +2 43192 97.4477 335.1869 0014731 326.2843 134.8656 15.25718324137459 +Shaonian Xing +1 43199U 18015H 20205.79537346 .00000740 00000-0 31720-4 0 9992 +2 43199 97.4269 333.2959 0015928 336.7042 165.1737 15.25849859137501 +UBAKUSAT +1 43467U 98067NQ 20205.42473346 .00020631 00000-0 12773-3 0 9991 +2 43467 051.6347 096.3796 0001681 150.9727 209.1367 15.77047720125780 +EnduroSat One +1 43551U 98067NZ 20205.40642279 .00049198 00000-0 20786-3 0 9998 +2 43551 051.6321 091.6610 0002502 206.0705 154.0172 15.84890997116075 +EQUISat +1 43552U 98067PA 20205.32745821 .00021696 00000-0 14060-3 0 9998 +2 43552 051.6327 104.0947 0003009 217.2146 142.8645 15.75964004115867 +UiTMSat 1 +1 43589U 98067PD 20205.78437715 .00029359 00000-0 16121-3 0 9992 +2 43589 51.6336 98.6951 0002017 235.2973 124.7839 15.79507002111715 +Maya 1 +1 43590U 98067PE 20205.08131385 .00033185 00000-0 18197-3 0 9998 +2 43590 051.6292 102.2273 0002020 220.1788 139.9064 15.79469225111530 +Bhutan 1 +1 43591U 98067PF 20205.42938374 .00032291 00000-0 17549-3 0 9997 +2 43591 051.6348 100.1558 0002134 234.5102 125.5701 15.79681964111592 +SiriusSat 1 +1 43595U 98067PG 20205.29575710 .00024249 00000-0 15252-3 0 9990 +2 43595 051.6281 106.7118 0001721 169.7949 190.3086 15.76572609110671 +SiriusSat 2 +1 43596U 98067PH 20205.29672366 .00024304 00000-0 15362-3 0 9990 +2 43596 051.6274 107.5446 0001834 171.0669 189.0363 15.76458010110668 +Tanusha-3 +1 43597U 98067PJ 20205.77311978 .00099818 14905-4 30160-3 0 9991 +2 43597 51.6255 87.8597 0002495 190.1515 169.9442 15.92094678110963 +SurfSat +1 43614U 18070B 20205.55201470 .00001684 00000-0 43262-4 0 9997 +2 43614 093.0225 169.5118 0014446 186.9613 173.1443 15.39325004104038 +CP-7 DAVE +1 43615U 18070C 20205.39189216 .00001603 00000-0 41374-4 0 9996 +2 43615 093.0227 169.4339 0014598 187.3366 172.7677 15.39171615104001 +ELFIN-B +1 43616U 18070D 20205.53009018 .00002492 00000-0 61317-4 0 9990 +2 43616 093.0189 169.4454 0014957 187.9360 172.1661 15.40584905104072 +ELFIN-A +1 43617U 18070E 20205.49398101 .00002633 00000-0 64374-4 0 9993 +2 43617 93.0242 169.9724 0014479 184.1173 175.9965 15.40779199104077 +STARS-Me Mother +1 43640U 98067PQ 20205.47704419 .00009020 00000-0 89978-4 0 9998 +2 43640 051.6348 125.3818 0003977 156.5998 203.5179 15.66499506102374 +CubeBel 1 +1 43666U 18083E 20205.83016590 .00000543 00000-0 29752-4 0 9997 +2 43666 97.4868 231.9335 0013568 229.5820 305.4597 15.18315718 96138 +Changshagaoxin +1 43669U 18083H 20205.81583023 .00000416 00000-0 24229-4 0 9991 +2 43669 97.4751 230.0006 0009665 220.6284 139.4229 15.17335672 96043 +Ten-Koh +1 43677U 18084G 20205.27621836 .00000148 00000-0 21105-4 0 9998 +2 43677 097.8868 322.2594 0016984 044.3052 315.9522 14.90299085094274 +PO-101 +1 43678U 18084H 20205.83256534 .00000286 00000-0 34124-4 0 9998 +2 43678 97.8889 324.2426 0011165 61.9714 298.2650 14.91641631 94443 +IRVINE 01 +1 43693U 18088D 20205.56500242 .00001765 00000-0 73055-4 0 9996 +2 43693 085.0334 053.1047 0018551 151.5645 208.6614 15.22994912094348 +QO-100 +1 43700U 18090A 20205.81074764 .00000138 00000-0 00000 0 0 9999 +2 43700 0.0135 78.4654 0001377 75.0957 106.0655 1.00271180 6313 +Reaktor Hello World +1 43743U 18096AA 20205.45960633 .00000740 00000-0 30209-4 0 9999 +2 43743 097.4199 279.1505 0017880 006.5255 353.6213 15.27476597091891 +MinXSS-2 +1 43758U 18099A 20205.19048562 -.00000007 00000-0 45369-5 0 9998 +2 43758 097.7048 276.5461 0016937 072.1913 288.1154 14.95688422089290 +AO-95 +1 43770U 18099N 20205.45062244 -.00000157 00000-0 -90964-5 0 9992 +2 43770 097.7042 276.2014 0016041 078.6027 281.6994 14.95008435089292 +RANGE-B +1 43772U 18099Q 20205.46625602 .00000323 00000-0 34524-4 0 9990 +2 43772 097.7110 276.7671 0015498 067.4076 292.8783 14.95201105089298 +RANGE-A +1 43773U 18099R 20205.44186626 -.00000260 00000-0 -18515-4 0 9991 +2 43773 97.6985 275.8063 0014966 66.9424 293.3373 14.94982915 89287 +MOVE-II +1 43780U 18099Y 20205.45650442 .00000073 00000-0 11780-4 0 9999 +2 43780 097.7046 276.4420 0014924 076.7074 283.5810 14.95428932089295 +SNUSat 2 +1 43782U 18099AA 20205.47237433 .00000455 00000-0 46427-4 0 9994 +2 43782 097.7039 276.4474 0014123 067.1603 293.1108 14.95273894089305 +SnugLite +1 43784U 18099AC 20205.23764903 -.00000129 00000-0 -64697-5 0 9997 +2 43784 097.7007 276.0330 0016622 073.9692 286.3358 14.95376332089287 +ITASat 1 +1 43786U 18099AE 20205.43942134 -.00000183 00000-0 -11392-4 0 9998 +2 43786 097.7061 276.6357 0016698 072.5581 287.7464 14.95346615089317 +EAGLET 1 +1 43790U 18099AJ 20205.42229465 .00000534 00000-0 52974-4 0 9996 +2 43790 097.7051 276.8896 0015158 077.1888 283.1025 14.95726619089029 +ESEO +1 43792U 18099AL 20205.43536732 -.00000160 00000-0 -92204-5 0 9995 +2 43792 097.7024 276.7087 0014858 073.8957 286.3899 14.95610398089084 +CSIM +1 43793U 18099AM 20205.46887846 .00000487 00000-0 48396-4 0 9996 +2 43793 097.7016 276.7464 0014395 072.6428 287.6366 14.96079876089074 +Astrocast 0.1 +1 43798U 18099AS 20205.47482278 .00000429 00000-0 43479-4 0 9995 +2 43798 097.7044 277.0471 0013696 059.3640 300.8930 14.95884566089336 +JO-97 +1 43803U 18099AX 20205.44965984 -.00000194 00000-0 -12267-4 0 9991 +2 43803 097.7019 276.4562 0016554 072.9158 287.3874 14.95525410089314 +Suomi 100 +1 43804U 18099AY 20205.45077091 -.00000184 00000-0 -11396-4 0 9997 +2 43804 097.7015 276.4441 0016623 073.0697 287.2345 14.95512984089329 +Al Farabi 2 +1 43805U 18099AZ 20205.82345394 .00000537 00000-0 53404-4 0 9999 +2 43805 97.7027 276.9044 0016849 72.1918 288.1140 14.95640340 89380 +PWSat 2 +1 43814U 18099BJ 20205.51026775 .00018110 00000-0 10030-2 0 9996 +2 43814 097.7917 287.0062 0007675 097.2537 262.9566 15.13855503089172 +CHOMPTT +1 43855U 18104G 20205.44248245 .00000691 00000-0 27579-4 0 9991 +2 43855 085.0393 151.4039 0015134 281.5041 078.4502 15.23021712089000 +ISAT +1 43879U 18111D 20205.81127430 .00000325 00000-0 33826-4 0 9994 +2 43879 97.6992 112.6543 0014430 119.5776 240.6886 14.96259819 83914 +UWE-4 +1 43880U 18111E 20205.51827508 -.00000290 00000-0 -20419-4 0 9993 +2 43880 097.7013 112.6544 0013459 120.1090 240.1467 14.96524170085882 +Sparrow +1 43881U 18111F 20205.49956932 .00000662 00000-0 63208-4 0 9999 +2 43881 097.7018 112.7135 0013977 118.5414 241.7216 14.96555731083885 +Lume 1 +1 43908U 18111AJ 20205.52940937 .00000718 00000-0 31341-4 0 9996 +2 43908 097.2622 104.3977 0021888 020.2877 339.9226 15.25094602087528 +FO-98 +1 43933U 19003B 20205.41542191 .00000488 00000-0 24109-4 0 9991 +2 43933 097.2275 253.7727 0019509 113.2038 247.1256 15.22152827084005 +FO-99 +1 43937U 19003F 20205.39790837 .00000893 00000-0 38868-4 0 9991 +2 43937 97.2237 255.0995 0025810 97.2722 263.1451 15.24454059 84113 +Delphini 1 +1 44030U 98067PW 20205.49625256 .00012954 00000-0 12296-3 0 9993 +2 44030 051.6340 131.5132 0002578 204.9486 155.1386 15.67281166084164 +MYSat 1 +1 44045U 18092F 20205.34771450 .00001123 00000-0 41467-4 0 9990 +2 44045 51.6393 227.9816 0011730 93.4928 266.7397 15.36810378 80806 +AstroCast 0.2 +1 44083U 19018F 20205.12954235 .00000411 00000-0 21244-4 0 9991 +2 44083 97.4188 265.6776 0014471 52.1921 308.0623 15.21644008 72804 +AISTechSat 3 +1 44103U 19018AB 20205.83317677 .00000444 00000-0 21706-4 0 9994 +2 44103 97.4065 266.5632 0014934 63.6129 47.7896 15.23209335 72972 +AISat 1 +1 44104U 19018AC 20205.44322269 .00000667 00000-0 23688-4 0 9993 +2 44104 097.4622 275.3403 0059773 085.3133 275.4931 15.31109560073319 +Raavana-1 +1 44329U 98067QE 20205.55757326 .00006691 00000-0 92599-4 0 9991 +2 44329 051.6393 153.0797 0006041 130.4824 229.6695 15.58429636062631 +Uguisu +1 44330U 98067QF 20205.57212847 .00006932 00000-0 96022-4 0 9992 +2 44330 051.6368 153.1641 0006067 129.8747 230.2780 15.58335742062613 +NepaliSat-1 +1 44331U 98067QG 20205.80605813 .00006996 00000-0 96447-4 0 9999 +2 44331 51.6370 151.7287 0006051 134.0403 226.1088 15.58448333 62668 +Prox-1 +1 44339U 19036A 20205.46126050 .00000637 00000-0 10123-3 0 9991 +2 44339 023.9990 245.3083 0010717 181.6789 178.3667 14.53043511057375 +Oculus-ASR +1 44348U 19036K 20205.52254985 .00008650 00000-0 12639-3 0 9994 +2 44348 028.5168 146.6512 0365540 332.6926 025.4874 15.02894762059237 +Armadillo +1 44352U 19036P 20205.53651945 .00012843 00000-0 18784-3 0 9993 +2 44352 028.5320 141.3342 0352503 340.4709 018.2675 15.05800232059237 +NO-104 +1 44354U 19036R 20205.49635254 .00009236 00000-0 13287-3 0 9990 +2 44354 028.5311 143.8240 0362337 336.0992 022.3152 15.03930893059257 +NO-103 +1 44355U 19036S 20205.50415309 .00019591 00000-0 27187-3 0 9999 +2 44355 028.5307 133.1309 0339455 353.4812 006.1439 15.09726916059365 +CP9 +1 44360U 19036X 20205.47090108 .00034516 -54950-5 38796-3 0 9998 +2 44360 028.5126 116.3652 0319130 021.6371 339.7382 15.17496844059406 +Move-IIb +1 44398U 19038N 20205.61187477 .00000764 00000-0 47547-4 0 9997 +2 44398 097.5381 166.3871 0025499 007.0407 353.1176 15.12381452058047 +SONATE +1 44400U 19038Q 20205.52305604 .00000335 00000-0 23242-4 0 9995 +2 44400 097.5422 166.3124 0025412 005.9460 354.2067 15.11983499058026 +BeeSat 9 +1 44412U 19038AC 20205.39667260 .00000524 00000-0 33889-4 0 9990 +2 44412 097.5406 166.2849 0023116 012.1889 347.9896 15.12343380057701 +JAISAT-1 +1 44419U 19038F 20205.47162688 .00000527 00000-0 33597-4 0 9999 +2 44419 097.5407 166.6506 0021956 011.1163 349.0548 15.12827022058042 +LightSail-2 +1 44420U 19036AC 20205.58261540 .00004208 00000-0 89014-3 0 9992 +2 44420 024.0077 239.4682 0015723 151.5015 208.6339 14.55944020055595 +Taurus 1 +1 44530U 19059C 20205.72719039 -.00000134 00000-0 -25010-4 0 9999 +2 44530 98.5696 287.1629 0016264 58.3948 301.8840 14.45522133 45588 +MO-106 +1 44830U 19084G 20205.42305970 .00061424 00000-0 29126-3 0 9990 +2 44830 096.9669 075.0044 0024513 099.6213 260.7827 15.82329609036131 +TRSI-Sat +1 44831U 19084H 20205.43789870 .00059307 00000-0 28647-3 0 9991 +2 44831 096.9685 075.0102 0024660 098.5952 261.8113 15.81934411036149 +MO-105 +1 44832U 19084J 20205.88723664 .00073985 38050-5 32269-3 0 9994 +2 44832 96.9679 75.7375 0022476 96.8109 263.5720 15.84438943 36224 +Duchifat 3 +1 44854U 19089C 20205.79564063 .00000123 00000-0 16395-4 0 9995 +2 44854 36.9687 243.5763 0009275 351.8569 8.2027 14.99086585 33758 +OPS-SAT +1 44878U 19092F 20205.48573856 .00000644 00000-0 37451-4 0 9995 +2 44878 97.4694 28.1472 0012859 227.3880 132.6269 15.15533483 32991 +TO-108 +1 44881U 19093C 20205.73218291 -.00000014 00000-0 50358-5 0 9991 +2 44881 97.9577 281.5377 0013636 280.5699 79.3981 14.81415247 32067 +FloripaSat 1 +1 44885U 19093G 20205.71500990 .00000127 00000-0 22783-4 0 9997 +2 44885 97.9579 281.6980 0013458 292.4616 67.5172 14.82049513 32079 +RS-44 +1 44909U 19096E 20205.47929147 .00000025 00000-0 49105-4 0 9993 +2 44909 82.5237 331.3732 0218205 142.0797 219.5901 12.79708164 26791 +SwampSat-2 +1 45115U 19071E 20205.52068798 .00005227 00000-0 15844-3 0 9999 +2 45115 051.6403 187.7865 0011882 188.7122 171.3656 15.35784117026669 +HO-107 +1 45119U 19071J 20205.23691989 .00001011 00000-0 42068-4 0 9991 +2 45119 051.6426 190.3696 0012130 180.6330 179.4639 15.33659399026615 +Phoenix +1 45258U 98067RB 20205.46387143 .00002752 00000-0 54182-4 0 9999 +2 45258 051.6409 167.4488 0006663 112.4296 247.7400 15.51083091024064 +AztechSat-1 +1 45261U 98067RE 20205.59248712 .00005157 00000-0 90958-4 0 9998 +2 45261 051.6407 166.0651 0008062 128.6825 231.4887 15.52225906024125 +QARMAN +1 45263U 98067RG 20205.45050279 .00004297 00000-0 78998-4 0 9998 +2 45263 051.6409 167.3643 0007633 125.1234 235.0472 15.51514197024125 +Quetzal 1 +1 45598U 98067RL 20205.28635027 .00003955 00000-0 75559-4 0 9990 +2 45598 051.6413 169.2666 0002331 209.4301 150.6557 15.50638518013350 +BY70-2 +1 45857U 20042B 20205.85121738 .00000558 00000-0 88013-4 0 9993 +2 45857 98.0141 278.7088 0011417 182.8013 177.3130 14.76218525 3052