Skip to main content

This is a Python package for the implementation of various equations of Free Space Optical Communication

Project description

Freesopy

A Python package for the implementation of various equations of Free Space Optical Communication


Freesopy is designed to simplify the implementation of various mathematical equations used in Free Space Optical Communication. It provides easy-to-use functions that can be integrated into your projects.

Usaage

You can import Freesopy as:

import freesopy as fso

Some General Equations

P_t: Transmitted power in mW
D_r: Receiver aperture diameter in meters
d: Distance between transmitter and receiver in meters
P_r: Received power in mW
L_p: Path loss in dB
N_0: Noise power spectral density in mW/Hz

Calculate Received Power

Power_received = fso.calculate_received_power(P_t, D_r, d)

Calculate Path Loss

Path_loss = fso.calculate_path_loss(P_t, P_r)

Calculate SNR

SNR = fso.calculate_snr(P_r, N_0)

Calculation of Losses

wl = wavelength
d= distance between transmitter and receiver
alpha= atmospheric attenuation coefficient
dt= diameter of transmitter antenna
dr = diameter of receiver antenna
pt = power total
pn = power of ambient noise
sigma_p = standard deviation of pointing error
sigma_s= standard deviation due to scintillation
gamma = initial intensity of optical beam
cn = refractive structure parameter
theta= angle of divergence
theta_mis = mismatch angle divergence


Attenuation Loss

attenuation_loss = fso.atmospheric_attenuation_loss(gamma, alpha, d)

Geometric Loss

geo_loss = fso.geometric_loss(dr, dt, d, wl, pt)

Misalignment Loss

misalignment_loss = fso.pointing_misalignment_loss(d, sigma_p, pt)

Atmospheric Turbulence

turbulence_loss = fso.atmospheric_turbulence(pt, cn, d, wl)

Polarising Loss Power

polarising_loss_power = fso.polarising_loss_power(pt, theta_mis)

Ambient Noise

ambient_noise = fso.ambient_noise(pt, pn)

Beam Divergence Loss

divergence_loss = fso.beam_divergence_loss(theta, d, pt)

Scintillation Loss

scintillation_loss = fso.scintillation_loss(sigma_s, pt)

General Graphs and Calculations

P_received : Received optical power (W)
responsivity : Responsivity of the photodetector (A/W)
T : Temperature (K)
B : Bandwidth (Hz)
R_load : Load resistance (Ohms)
I_photo : Photocurrent (A)
I_shot_squared : Shot noise squared (A^2)
I_thermal_squared : Thermal noise squared (A^2)
SNR : Signal-to-Noise Ratio (unitless)

SNR Calculations

I_photo = fso.calculate_photocurrent(P_received, responsivity)

I_thermal_squared = fso.calculate_thermal_noise(T, B, R_load)

I_shot_squared = fso.calculate_shot_noise(I_photo, B)

SNR = fso.calculate_SNR(I_photo, I_shot_squared, I_thermal_squared)

fso.plot_SNR(P_received, SNR)

Free Space Path Loss (FSPL)

f: Frequency (Hz)
d_range: Tuple defining the minimum and maximum distance in metres
num_points: Number of distance points to generate

fso.plot_fspl(f, d_range, num_points)

Divergence of Optical Beam

w_0: Initial beam waist (m)
lambda_light: Wavelength of the light (nm)
d_range: Tuple defining the minimum and maximum distance (meters)
num_points: Number of distance points to generate

fso.plot_beam_divergence(w_0, lambda_light, d_range, num_points)

Channel Modelling

Simulating the LOS channel gain

Parameters:

theta : (float) Semi-angle at half power (in degrees).
P_total : (float) Transmitted optical power by individual LED (in watts).
Adet : (float) Detector physical area of a PD (in square meters).
Ts : (float) Gain of an optical filter (default is 1 if no filter is used).
index : (float) Refractive index of a lens at a PD (default is 1.5 if no lens is used).
FOV : (float) Field of View of a receiver (in radians).
lx, ly, lz : (float) Room dimensions (in meters).
h : (float) Distance between the source and the receiver plane (in meters).
XT, YT : (float) Position of the LED (in meters).

fso.los_channel_gain(theta, P_total, Adet, Ts, index, FOV, lx, ly, lz, h, XT, YT)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

freesopy-1.0.7.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

freesopy-1.0.7-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file freesopy-1.0.7.tar.gz.

File metadata

  • Download URL: freesopy-1.0.7.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.1

File hashes

Hashes for freesopy-1.0.7.tar.gz
Algorithm Hash digest
SHA256 634819b760925e2f5b102a799e21a6962d995adc26363e5540bcb556f2944fcc
MD5 378a23aa9df91b14f649d83e98ad0319
BLAKE2b-256 886c20402a9b83129fe215247f075fef6d2b9d4f67805e655d67a69253776864

See more details on using hashes here.

File details

Details for the file freesopy-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: freesopy-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 5.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.1

File hashes

Hashes for freesopy-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 d68fc8f12f1bd39b78028b0dbe66e08f1d93f99aafd5cc340f138e6e7e8aae55
MD5 f0b58dbce66d2925196345978c102b82
BLAKE2b-256 f4242088c0885a82d56e59aa6c7b1bb41608e65928994d9ed0f505a666adc8d0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page