├── MathLabScripts ├── FullSatelliteSimulation.m ├── ModulationofPackets.m ├── Non_Step_Satellite_Network.m └── Satellite_Connection_Simulation_Chart.m ├── README.md ├── SimulacionCisco.pkt └── UniverseSandboxSimulationVideos ├── RedSatelitalSistemaSolar.webm └── RedSatelitalTierra.webm /MathLabScripts/FullSatelliteSimulation.m: -------------------------------------------------------------------------------- 1 | % Create satellite communication scenario 2 | sc = satelliteScenario; 3 | 4 | % General parameters 5 | simulationDuration = hours(24); % Simulation duration 6 | sc.StopTime = datetime("now") + simulationDuration; 7 | 8 | % --- GEO ORBIT --- 9 | % GEO orbital parameters 10 | semiMajorAxisGEO = 42164e3; % GEO semi-major axis (Earth radius + altitude) 11 | eccentricityGEO = 0; % Circular orbit 12 | inclinationGEO = 0; % Equatorial orbit 13 | raanGEO = 0; % Right Ascension of the Ascending Node 14 | argumentOfPeriapsisGEO = 0; % Argument of periapsis 15 | trueAnomalyGEO = 0; % Initial true anomaly 16 | 17 | % Create satellite in GEO 18 | geoSat = satellite(sc, semiMajorAxisGEO, eccentricityGEO, ... 19 | inclinationGEO, raanGEO, argumentOfPeriapsisGEO, trueAnomalyGEO, ... 20 | "Name", "GEO Sat"); 21 | 22 | % --- LEO ORBIT --- 23 | % LEO orbital parameters 24 | semiMajorAxisLEO = 7000e3; % LEO semi-major axis (Earth radius + altitude) 25 | eccentricityLEO = 0; % Circular orbit 26 | inclinationLEO = 98; % Polar inclination 27 | argumentOfPeriapsisLEO = 0; % Argument of periapsis 28 | 29 | % Constellation parameters 30 | numPlanesLEO = 20; % Number of orbital planes 31 | satellitesPerPlane = 10; % Satellites per orbital plane 32 | totalLEOSatellites = numPlanesLEO * satellitesPerPlane; % Total satellites 33 | planeSeparation = 360 / numPlanesLEO; % Plane separation in degrees 34 | satelliteSeparation = 360 / satellitesPerPlane; % Satellite separation within the plane 35 | 36 | % Create satellites in stepped constellation 37 | for plane = 0:numPlanesLEO-1 38 | raanLEO = plane * planeSeparation; % RAAN for each plane 39 | for sat = 0:satellitesPerPlane-1 40 | trueAnomalyLEO = sat * satelliteSeparation; % Offset within the plane 41 | leoSat = satellite(sc, semiMajorAxisLEO, eccentricityLEO, ... 42 | inclinationLEO, raanLEO, argumentOfPeriapsisLEO, trueAnomalyLEO, ... 43 | "Name", sprintf("LEO Sat %d-%d", plane+1, sat+1)); 44 | end 45 | end 46 | 47 | % --- GROUND STATIONS --- 48 | % Station in Bogotá (main uplink) 49 | latitudeBogota = 4.7110; 50 | longitudeBogota = -74.0721; 51 | altitudeBogota = 0; 52 | gsBogota = groundStation(sc, "Name", "Bogota Station", ... 53 | "Latitude", latitudeBogota, "Longitude", longitudeBogota, "Altitude", altitudeBogota); 54 | 55 | % Station in Riohacha (uplink for La Guajira) 56 | latitudeRiohacha = 11.535458; 57 | longitudeRiohacha = -72.922254; 58 | altitudeRiohacha = 0; 59 | gsRiohacha = groundStation(sc, "Name", "Riohacha Station", ... 60 | "Latitude", latitudeRiohacha, "Longitude", longitudeRiohacha, "Altitude", altitudeRiohacha); 61 | 62 | % Station in Leticia (uplink for Amazonas) 63 | latitudeLeticia = -4.2150; 64 | longitudeLeticia = -69.9406; 65 | altitudeLeticia = 0; 66 | gsLeticia = groundStation(sc, "Name", "Leticia Station", ... 67 | "Latitude", latitudeLeticia, "Longitude", longitudeLeticia, "Altitude", altitudeLeticia); 68 | 69 | % Station in Mitú (uplink for Vaupés and jungle areas) 70 | latitudeMitu = 1.1983; 71 | longitudeMitu = -70.1730; 72 | altitudeMitu = 0; 73 | gsMitu = groundStation(sc, "Name", "Mitu Station", ... 74 | "Latitude", latitudeMitu, "Longitude", longitudeMitu, "Altitude", altitudeMitu); 75 | 76 | % Station in San Andrés (uplink for the archipelago) 77 | latitudeSanAndres = 12.5847; 78 | longitudeSanAndres = -81.7006; 79 | altitudeSanAndres = 0; 80 | gsSanAndres = groundStation(sc, "Name", "San Andres Station", ... 81 | "Latitude", latitudeSanAndres, "Longitude", longitudeSanAndres, "Altitude", altitudeSanAndres); 82 | 83 | % Station in Pasto (uplink for Nariño and southern regions) 84 | latitudePasto = 1.2136; 85 | longitudePasto = -77.2811; 86 | altitudePasto = 0; 87 | gsPasto = groundStation(sc, "Name", "Pasto Station", ... 88 | "Latitude", latitudePasto, "Longitude", longitudePasto, "Altitude", altitudePasto); 89 | 90 | % Station in Villavicencio (uplink for Llanos Orientales) 91 | latitudeVillavicencio = 4.1420; 92 | longitudeVillavicencio = -73.6266; 93 | altitudeVillavicencio = 0; 94 | gsVillavicencio = groundStation(sc, "Name", "Villavicencio Station", ... 95 | "Latitude", latitudeVillavicencio, "Longitude", longitudeVillavicencio, "Altitude", altitudeVillavicencio); 96 | 97 | % Station in Quibdó (uplink for Chocó and Pacific region) 98 | latitudeQuibdo = 5.6919; 99 | longitudeQuibdo = -76.6584; 100 | altitudeQuibdo = 0; 101 | gsQuibdo = groundStation(sc, "Name", "Quibdo Station", ... 102 | "Latitude", latitudeQuibdo, "Longitude", longitudeQuibdo, "Altitude", altitudeQuibdo); 103 | 104 | % --- Download Link Points (rural areas) --- 105 | % Region: La Guajira 106 | latitudeGuajiraDL = 11.709312; 107 | longitudeGuajiraDL = -72.261161; 108 | altitudeGuajiraDL = 0; 109 | gsGuajiraDL = groundStation(sc, "Name", "Guajira Download Link", ... 110 | "Latitude", latitudeGuajiraDL, "Longitude", longitudeGuajiraDL, "Altitude", altitudeGuajiraDL); 111 | 112 | % Region: Amazonas 113 | latitudeAmazonasDL = -3.7534; 114 | longitudeAmazonasDL = -70.2563; 115 | altitudeAmazonasDL = 0; 116 | gsAmazonasDL = groundStation(sc, "Name", "Amazonas Download Link", ... 117 | "Latitude", latitudeAmazonasDL, "Longitude", longitudeAmazonasDL, "Altitude", altitudeAmazonasDL); 118 | 119 | % Region: Chocó 120 | latitudeChocoDL = 5.3000; 121 | longitudeChocoDL = -76.8000; 122 | altitudeChocoDL = 0; 123 | gsChocoDL = groundStation(sc, "Name", "Choco Download Link", ... 124 | "Latitude", latitudeChocoDL, "Longitude", longitudeChocoDL, "Altitude", altitudeChocoDL); 125 | 126 | % Region: Vaupés 127 | latitudeVaupesDL = -0.8607; 128 | longitudeVaupesDL = -70.9300; 129 | altitudeVaupesDL = 0; 130 | gsVaupesDL = groundStation(sc, "Name", "Vaupes Download Link", ... 131 | "Latitude", latitudeVaupesDL, "Longitude", longitudeVaupesDL, "Altitude", altitudeVaupesDL); 132 | 133 | % Region: Putumayo 134 | latitudePutumayoDL = -1.1520; 135 | longitudePutumayoDL = -76.6500; 136 | altitudePutumayoDL = 0; 137 | gsPutumayoDL = groundStation(sc, "Name", "Putumayo Download Link", ... 138 | "Latitude", latitudePutumayoDL, "Longitude", longitudePutumayoDL, "Altitude", altitudePutumayoDL); 139 | 140 | % Region: Vichada 141 | latitudeVichadaDL = 4.7087; 142 | longitudeVichadaDL = -69.7591; 143 | altitudeVichadaDL = 0; 144 | gsVichadaDL = groundStation(sc, "Name", "Vichada Download Link", ... 145 | "Latitude", latitudeVichadaDL, "Longitude", longitudeVichadaDL, "Altitude", altitudeVichadaDL); 146 | 147 | % Region: Guainía 148 | latitudeGuainiaDL = 2.5701; 149 | longitudeGuainiaDL = -68.3000; 150 | altitudeGuainiaDL = 0; 151 | gsGuainiaDL = groundStation(sc, "Name", "Guainia Download Link", ... 152 | "Latitude", latitudeGuainiaDL, "Longitude", longitudeGuainiaDL, "Altitude", altitudeGuainiaDL); 153 | 154 | % --- VISUALIZATION --- 155 | % Visualize the scenario with satellites and stations 156 | satelliteScenarioViewer(sc); 157 | 158 | % Display satellite information 159 | disp("Satellites created:"); 160 | disp(sc.Satellites); 161 | 162 | % Display ground station information 163 | disp("Ground stations:"); 164 | disp(sc.GroundStations); 165 | 166 | -------------------------------------------------------------------------------- /MathLabScripts/ModulationofPackets.m: -------------------------------------------------------------------------------- 1 | % Simulation Parameters 2 | fs = 10000; % Sampling frequency (in Hz) 3 | f_carrier_upload = 2000; % Carrier frequency for the upload link (in Hz) 4 | f_carrier_download = 1000; % Carrier frequency for the download link (in Hz) 5 | f_message = 50; % Message signal frequency (in Hz) 6 | t = 0:1/fs:0.2; % Simulation time for a packet (0.2 seconds) 7 | 8 | % Message signal (representing a data packet) 9 | message_signal = sin(2*pi*f_message*t); 10 | 11 | % Amplitude Modulation (AM) for each link 12 | am_signal_upload = (1 + 0.5 * message_signal) .* cos(2*pi*f_carrier_upload*t); 13 | am_signal_download = (1 + 0.5 * message_signal) .* cos(2*pi*f_carrier_download*t); 14 | 15 | % Plot the modulated signal for both links 16 | figure; 17 | 18 | % Upload link 19 | subplot(3, 1, 1); 20 | plot(t, am_signal_upload, 'b'); 21 | title('Upload Link: AM Modulated Signal'); 22 | xlabel('Time (s)'); 23 | ylabel('Amplitude'); 24 | grid on; 25 | 26 | % Download link 27 | subplot(3, 1, 2); 28 | plot(t, am_signal_download, 'g'); 29 | title('Download Link: AM Modulated Signal'); 30 | xlabel('Time (s)'); 31 | ylabel('Amplitude'); 32 | grid on; 33 | 34 | % Simulate the transmission of 10 packets with latency 35 | subplot(3, 1, 3); 36 | hold on; 37 | title('Packet Transmission'); 38 | xlabel('Time (s)'); 39 | ylabel('Amplitude'); 40 | grid on; 41 | 42 | n_packets = 10; % Number of packets 43 | avg_latency = 0.1; % Average latency between packets (in seconds) 44 | 45 | for i = 1:n_packets 46 | % Send packet from Upload Link to satellite 47 | plot(t + (i-1)*avg_latency, am_signal_upload, 'r'); 48 | pause(0.2); % Simulate upload transmission latency 49 | 50 | % Send packet from satellite to Download Link 51 | plot(t + (i-1)*avg_latency + 0.1, am_signal_download, 'k'); 52 | pause(0.2); % Simulate download reception latency 53 | end 54 | 55 | hold off; 56 | -------------------------------------------------------------------------------- /MathLabScripts/Non_Step_Satellite_Network.m: -------------------------------------------------------------------------------- 1 | % Create the satellite communication scenario 2 | sc = satelliteScenario; 3 | 4 | % General parameters 5 | simulationDuration = hours(24); % Simulation duration (24 hours) 6 | sc.StopTime = datetime("now") + simulationDuration; 7 | 8 | % --- GEO ORBIT --- 9 | % GEO orbital parameters 10 | semiMajorAxisGEO = 42164e3; % Semi-major axis for GEO (Earth radius + altitude) 11 | eccentricityGEO = 0; % Circular orbit 12 | inclinationGEO = 0; % Equatorial orbit 13 | raanGEO = 0; % Right ascension of the ascending node 14 | argumentOfPeriapsisGEO = 0; % Argument of perigee 15 | trueAnomalyGEO = 0; % Initial true anomaly 16 | 17 | % Create GEO satellite 18 | geoSat = satellite(sc, semiMajorAxisGEO, eccentricityGEO, ... 19 | inclinationGEO, raanGEO, argumentOfPeriapsisGEO, trueAnomalyGEO, ... 20 | "Name", "GEO Sat"); 21 | 22 | % --- LEO ORBIT --- 23 | % LEO orbital parameters 24 | semiMajorAxisLEO = 7000e3; % Semi-major axis for LEO (Earth radius + altitude) 25 | eccentricityLEO = 0; % Circular orbit 26 | inclinationLEO = 98; % Polar inclination 27 | raanLEO = 0; % Right ascension of the ascending node 28 | argumentOfPeriapsisLEO = 0; % Argument of perigee 29 | trueAnomalyLEO = 0; % Initial true anomaly 30 | 31 | % Create LEO satellites (example constellation) 32 | numLEOSatellites = 10; % Number of satellites in the constellation 33 | for i = 0:numLEOSatellites-1 34 | raanLEO = i * (360 / numLEOSatellites); % Distribute satellites evenly in orbit 35 | leoSat = satellite(sc, semiMajorAxisLEO, eccentricityLEO, ... 36 | inclinationLEO, raanLEO, argumentOfPeriapsisLEO, trueAnomalyLEO, ... 37 | "Name", sprintf("LEO Sat %d", i+1)); 38 | end 39 | 40 | % --- GROUND STATIONS --- 41 | % Ground station in Bogotá (main uplink) 42 | latitudeBogota = 4.7110; 43 | longitudeBogota = -74.0721; 44 | altitudeBogota = 0; 45 | gsBogota = groundStation(sc, "Name", "Bogota Station", ... 46 | "Latitude", latitudeBogota, "Longitude", longitudeBogota, "Altitude", altitudeBogota); 47 | 48 | % Ground station in Riohacha (uplink for La Guajira) 49 | latitudeRiohacha = 11.5447; 50 | longitudeRiohacha = -72.9075; 51 | altitudeRiohacha = 0; 52 | gsRiohacha = groundStation(sc, "Name", "Riohacha Station", ... 53 | "Latitude", latitudeRiohacha, "Longitude", longitudeRiohacha, "Altitude", altitudeRiohacha); 54 | 55 | % Ground station in Leticia (uplink for the Amazon) 56 | latitudeLeticia = -4.2150; 57 | longitudeLeticia = -69.9406; 58 | altitudeLeticia = 0; 59 | gsLeticia = groundStation(sc, "Name", "Leticia Station", ... 60 | "Latitude", latitudeLeticia, "Longitude", longitudeLeticia, "Altitude", altitudeLeticia); 61 | 62 | % --- VISUALIZATION --- 63 | % Visualize the scenario with satellites and ground stations 64 | satelliteScenarioViewer(sc); 65 | 66 | % Display satellite information 67 | disp("Satellites created:"); 68 | disp(sc.Satellites); 69 | 70 | % Display ground station information 71 | disp("Ground stations:"); 72 | disp(sc.GroundStations); 73 | -------------------------------------------------------------------------------- /MathLabScripts/Satellite_Connection_Simulation_Chart.m: -------------------------------------------------------------------------------- 1 | % Definition of geographic coordinates for Bogotá (latitude and longitude) 2 | lat_bogota = 4.7110; % Latitude of Bogotá (in degrees) 3 | lon_bogota = -74.0721; % Longitude of Bogotá (in degrees) 4 | 5 | % Geographic coordinates for Uribia (download) 6 | lat_uribia = 11.6833; % Latitude of Uribia (in degrees) 7 | lon_uribia = -72.2042; % Longitude of Uribia (in degrees) 8 | 9 | % Parameters of the LEO satellite 10 | altitude_satellite = 600; % Altitude in km 11 | lat_satellite = 5.0; % Latitude of the satellite over Colombia (approximate) 12 | lon_satellite = -74.0; % Longitude of the satellite over Colombia (approximate) 13 | 14 | % Earth's radius (in km) 15 | radius_earth = 6371; 16 | 17 | % Convert geographic coordinates to radians 18 | lat_bogota_rad = deg2rad(lat_bogota); 19 | lon_bogota_rad = deg2rad(lon_bogota); 20 | lat_uribia_rad = deg2rad(lat_uribia); 21 | lon_uribia_rad = deg2rad(lon_uribia); 22 | lat_satellite_rad = deg2rad(lat_satellite); 23 | lon_satellite_rad = deg2rad(lon_satellite); 24 | 25 | % Cartesian coordinates 26 | % Bogotá 27 | x_bogota = radius_earth * cos(lat_bogota_rad) * cos(lon_bogota_rad); 28 | y_bogota = radius_earth * cos(lat_bogota_rad) * sin(lon_bogota_rad); 29 | z_bogota = radius_earth * sin(lat_bogota_rad); 30 | 31 | % Uribia 32 | x_uribia = radius_earth * cos(lat_uribia_rad) * cos(lon_uribia_rad); 33 | y_uribia = radius_earth * cos(lat_uribia_rad) * sin(lon_uribia_rad); 34 | z_uribia = radius_earth * sin(lat_uribia_rad); 35 | 36 | % Satellite 37 | x_satellite = (radius_earth + altitude_satellite) * cos(lat_satellite_rad) * cos(lon_satellite_rad); 38 | y_satellite = (radius_earth + altitude_satellite) * cos(lat_satellite_rad) * sin(lon_satellite_rad); 39 | z_satellite = (radius_earth + altitude_satellite) * sin(lat_satellite_rad); 40 | 41 | % Plot Earth with satellite's orbit 42 | figure; 43 | hold on; 44 | 45 | % Create Earth sphere with no color, just the border 46 | [earth_x, earth_y, earth_z] = sphere(100); 47 | surf(earth_x * radius_earth, earth_y * radius_earth, earth_z * radius_earth, 'FaceColor', 'none', 'EdgeColor', [0.5 0.5 0.5]); 48 | 49 | % Plot satellite's orbit as a dashed line 50 | theta = linspace(0, 2*pi, 200); % Angle for the orbit 51 | x_orbit = (radius_earth + altitude_satellite) * cos(theta); 52 | y_orbit = (radius_earth + altitude_satellite) * sin(theta); 53 | z_orbit = zeros(size(theta)); % Assuming orbit in the equatorial plane 54 | plot3(x_orbit, y_orbit, z_orbit, 'k--', 'LineWidth', 1.5); 55 | 56 | % Plot communication links (upload and download) 57 | plot3([x_bogota, x_satellite], [y_bogota, y_satellite], [z_bogota, z_satellite], 'r-', 'LineWidth', 2); % Upload 58 | plot3([x_satellite, x_uribia], [y_satellite, y_uribia], [z_satellite, z_uribia], 'b-', 'LineWidth', 2); % Download 59 | 60 | % Plot positions 61 | plot3(x_bogota, y_bogota, z_bogota, 'go', 'MarkerFaceColor', 'g'); % Bogotá (upload link) 62 | plot3(x_uribia, y_uribia, z_uribia, 'mo', 'MarkerFaceColor', 'm'); % Uribia (download link) 63 | plot3(x_satellite, y_satellite, z_satellite, 'ko', 'MarkerFaceColor', 'k'); % Satellite 64 | 65 | % Labels and configuration 66 | title('Satellite in Orbit over Colombia with Communication Links'); 67 | xlabel('X (km)'); 68 | ylabel('Y (km)'); 69 | zlabel('Z (km)'); 70 | legend('Earth (Silhouette)', 'Satellite Orbit', 'Upload Link', 'Download Link', ... 71 | 'Bogotá (Base Station)', 'Uribia (Download Station)', 'Satellite'); 72 | grid on; 73 | axis equal; 74 | hold off; 75 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SatelliteNetworkSim 2 | 3 | A simulation tool designed to model, analyze, and optimize satellite networks. This repository provides algorithms and tools for simulating satellite constellations, inter-satellite communications, and ground station interactions. Ideal for researchers, engineers, and enthusiasts in the fields of aerospace, telecommunications, and network design. 4 | 5 | ## Context 6 | This project addresses the challenge of designing a satellite network to provide connectivity to the most disconnected regions of Colombia, such as La Guajira, Amazonas, and others. The goal is to explore how satellite networks can bridge the digital divide in these underserved areas. 7 | 8 | ## Approach 9 | We consider terrestrial satellite networks focusing on GEO (Geostationary Earth Orbit) and LEO (Low Earth Orbit) constellations. For simplicity, this simulation does not account for Earth's rotation but provides a baseline model for network design and performance analysis. 10 | 11 | ## Simulation 12 | The initial simulation was conducted using Universe Sandbox, establishing the first parameters for building the satellite network model. These include: 13 | - Defining orbital parameters for GEO and LEO satellites. 14 | - Positioning satellites to maximize coverage over target regions. 15 | - Simulating basic communication links and analyzing potential coverage gaps. 16 | 17 | 18 | 19 | Here is the simulation of the satellite network without Earth's rotation: 20 | 21 |

22 | Satellite Network Simulation 23 |

24 | 25 | 26 | 27 | ## Simulation with Earth's Rotation 28 | 29 | The following image represents the simulation considering Earth's rotation within the solar system: 30 | 31 |

32 | Simulation with Earth's Rotation 33 |

34 | 35 | 36 | ## Accessing the Simulation Videos 37 | 38 | If you'd like to view the videos of the simulations, you can download them directly from the repository. The video files are located in the following path: 39 | 40 | `UniverseSandboxSimulationVideos/` 41 | 42 | Make sure to download the files to your local device to play them. 43 | 44 | 45 | ## MATLAB Scripts 46 | 47 | To perform advanced simulations of satellite networks, the **Satellite Communications Toolbox** in MATLAB was used. Below is a description of the key script and its functionality: 48 | 49 | ### Script: `Satellite_Connection_Simulation_Chart.m` 50 | This script represents the connection that should exist globally between: 51 | - A **base station** located in Bogotá, Colombia. 52 | - A **satellite** in a LEO orbit at an altitude between 500 km and 2000 km. 53 | - A **downlink location**, in this case, Uribia, a region in Colombia with a high need for connectivity. 54 | 55 | The simulation aims to illustrate the communication links between these three key points and analyze the potential for establishing a reliable connection. 56 | 57 | ### Output Visualization 58 | The following image illustrates what the MATLAB script `Satellite_Connection_Simulation_Chart.m` should generate: 59 | 60 |

61 | MATLAB Simulation Output 62 |

63 | 64 | 65 | 66 | ### Script: `ModulationofPackets.m` 67 | In this script, we simulate the process of packet transmission from different base stations to the satellite. The script demonstrates how the satellite receives and processes these packets, with a live simulator that allows you to choose the number of packets to send and the desired latency percentage. 68 | 69 | It is important to note that if the latency is high, the packets will be fragmented before transmission. This feature simulates the real-world challenges of communication in satellite networks, where high latency can affect packet integrity and transmission efficiency. 70 | 71 | ### Output Visualization 72 | The following image illustrates what the script `ModulationofPackets.m` would show: 73 | 74 |

75 | Packet Modulation Simulation 76 |

77 | 78 | 79 | ### Script: `Non_Step_Satellite_Network.m` 80 | In this script, we simulate a satellite network within the solar system, where a non-stepped network is implemented. In this setup, there are no time offsets between satellites in the LEO orbit. Additionally, a GEO orbit is constructed to ensure that one satellite is always present, though it comes with high latency of up to 600 ms. This setup poses a risk for potential failures in the LEO constellation, as a single failure could impact the entire network. 81 | 82 | ### Output Visualization 83 | The following image represents the simulation setup described above: 84 | 85 |

86 | Non-Stepped Satellite Network Simulation 87 |

88 | 89 | 90 | ### Script: `FullSatelliteSimulation.m` 91 | This script represents the complete satellite simulation, where the time offset between satellites is considered. The goal is to ensure that at least one satellite is always present in the LEO constellation over Colombia. 92 | 93 | In the script, you can modify the number of orbits and the number of satellites per orbit to customize the simulation. This flexibility allows you to test different configurations and observe how they affect satellite coverage and connectivity. 94 | 95 | ### Station Simulation in Colombia 96 | The following image shows the stations built in Colombia, simulating the regions covered by the satellite network: 97 | 98 |

99 | Colombia Stations Simulation 100 |

101 | 102 | ### Real-Time Satellite Movement Simulation 103 | Additionally, the script allows you to interact with the real-time satellite movement simulator. You can adjust parameters and watch the satellites' movements in real time to better understand their trajectory and coverage. 104 | 105 | The following image represents the full view of the real-time simulator: 106 | 107 |

108 | Full Satellite Simulator View 109 |

110 | 111 | 112 | ## Cisco Packet Tracer Simulation 113 | 114 | Now we move to the simulation performed in **Cisco Packet Tracer**, where a satellite network is simulated in a more simplified manner. As there are no satellites in the Cisco configuration, we simulated the satellite's functionality using a **tablet device**. In this simulation, the satellite's role is represented by the tablet, which connects through a **Base Station** with an **Access Point** for data upload. Following that, a **download link antenna** (using 3G/4G technology) facilitates the download process. 115 | 116 | The configuration ensures that a connection is established in the **Guajira region**, an example territory where this simulation was set up. The network provides connectivity to areas such as **Albania**, **Barrancas**, and **Uribia**, allowing users in these locations to have access to reliable internet. Although the simulation is based on the Guajira region, it can be replicated in any territory with similar infrastructure. 117 | 118 | ### Cisco Packet Tracer Script: `SimulacionCisco.pkt` 119 | The simulation file for this setup is named `SimulacionCisco.pkt`. 120 | 121 | ### Cisco Packet Tracer Simulation Image 122 | The following image shows the setup and simulation performed in Cisco Packet Tracer: 123 | 124 |

125 | Cisco Packet Tracer Simulation 126 |

127 | 128 | ## Final Remarks 129 | 130 | This project demonstrates the simulation of satellite networks, using both MATLAB and Cisco Packet Tracer for creating various network configurations and understanding the communication flow between satellites and ground stations. Through different simulations, we explored scenarios with varying latencies, network configurations, and real-time movement of satellites, with a particular focus on providing connectivity to remote regions of Colombia, like the Guajira. 131 | 132 | ## Recommendations 133 | 134 | - **Scalability:** When testing larger networks, consider adjusting the number of satellites and orbits. This will help you analyze how the network behaves as more satellites are added. 135 | - **Latency Impact:** Be mindful of the latency in satellite communications, especially in high-latency configurations. This can affect the performance of the network, especially in real-time applications. 136 | - **Geographic Adaptability:** While this simulation focused on the Guajira region, similar configurations can be applied to any remote or under-connected region around the world. 137 | - **Testing Real-World Scenarios:** You can modify the number of satellite links, add redundancy in the network, or change parameters like packet loss or fragmentation based on the simulation results to reflect real-world conditions more accurately. 138 | 139 | ## Author 140 | 141 | This project was developed by **xrl3y**. 142 | 143 | 144 | 145 | 146 | -------------------------------------------------------------------------------- /SimulacionCisco.pkt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xrl3y/SatelliteNetworkSim/40fe981ef707a6d529a0a6c00125ea7d043d16d4/SimulacionCisco.pkt -------------------------------------------------------------------------------- /UniverseSandboxSimulationVideos/RedSatelitalSistemaSolar.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xrl3y/SatelliteNetworkSim/40fe981ef707a6d529a0a6c00125ea7d043d16d4/UniverseSandboxSimulationVideos/RedSatelitalSistemaSolar.webm -------------------------------------------------------------------------------- /UniverseSandboxSimulationVideos/RedSatelitalTierra.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xrl3y/SatelliteNetworkSim/40fe981ef707a6d529a0a6c00125ea7d043d16d4/UniverseSandboxSimulationVideos/RedSatelitalTierra.webm --------------------------------------------------------------------------------