Распространение радиоволн в помещении
作者
贡献者
using Statistics
# ==========================================
# МОДЕЛЬ РАСПРОСТРАНЕНИЯ Wi-Fi
# ==========================================
Nx = 240
Ny = 180
# ==========================================
# ЧАСТОТЫ
# ==========================================
freq24 = 2.4e9
freq5 = 5.0e9
# ==========================================
# МОЩНОСТЬ РОУТЕРА
# ==========================================
Pt = 20.0
# ==========================================
# РОУТЕР
# ==========================================
router_x = 120
router_y = 90
# ==========================================
# КАРТЫ ПОТЕРЬ
# ==========================================
loss24 = zeros(Float64, Nx, Ny)
loss5 = zeros(Float64, Nx, Ny)
# ==========================================
# СТЕНЫ
# ==========================================
loss24[5:8, 5:175] .= 12
loss5[5:8, 5:175] .= 18
loss24[232:235, 5:175] .= 12
loss5[232:235, 5:175] .= 18
loss24[5:235, 5:8] .= 12
loss5[5:235, 5:8] .= 18
loss24[5:235, 172:175] .= 12
loss5[5:235, 172:175] .= 18
# ==========================================
# ДИВАН
# ==========================================
loss24[35:90, 25:55] .= 2
loss5[35:90, 25:55] .= 4
# ==========================================
# СТОЛ
# ==========================================
loss24[100:135, 70:100] .= 1
loss5[100:135, 70:100] .= 2
# ==========================================
# СТЕЛЛАЖ
# ==========================================
loss24[180:205, 35:120] .= 5
loss5[180:205, 35:120] .= 8
# ==========================================
# ТЕЛЕВИЗОР
# ==========================================
loss24[188:193, 143:160] .= -5
loss5[188:193, 143:160] .= -8
# ==========================================
# ТОЧКИ ИЗМЕРЕНИЯ
# ==========================================
points = [
(40,40),
(110,80),
(120,90),
(190,70),
(190,150)
]
# ==========================================
# ВЫВОД
# ==========================================
println("========================================")
println("РАСЧЁТ Wi-Fi СИГНАЛА")
println("========================================")
for (x,y) in points
# Расстояние
d = sqrt(
(x - router_x)^2 +
(y - router_y)^2
)
d = max(d, 1.0)
# FSPL
fspl24 =
20 * log10(d) +
20 * log10(freq24 / 1e6) +
32.44
fspl5 =
20 * log10(d) +
20 * log10(freq5 / 1e6) +
32.44
# Потери материалов
material24 = loss24[x,y]
material5 = loss5[x,y]
# Отражения
reflection24 =
4 * sin(0.03 * d)
reflection5 =
6 * sin(0.05 * d)
# RSSI
rssi24 =
Pt -
fspl24 -
material24 +
reflection24
rssi5 =
Pt -
fspl5 -
material5 +
reflection5
# Мощность в ваттах
power24_w =
10 ^ ((rssi24 - 30) / 10)
power5_w =
10 ^ ((rssi5 - 30) / 10)
# ======================================
# РЕЗУЛЬТАТЫ
# ======================================
println("----------------------------------------")
println("Точка: ($x, $y)")
println("----------------------------------------")
println("Расстояние от роутера до приёмника: ",
round(d, digits=2), " м")
println("")
println("2.4 GHz")
println("Уровень сигнала, который получил приёмник(FSPL): ",
round(fspl24, digits=2), " dB")
println("Потери материалов: ",
round(material24, digits=2), " dB")
println("Отражение: ",
round(reflection24, digits=2), " dB")
println("Потери сигнала при распространении в свободном пространстве(RSSI): ",
round(rssi24, digits=2), " dBm")
println("Мощность: ",
round(power24_w, sigdigits=4), " W")
println("")
println("5 GHz")
println("FSУровень сигнала, который получил приёмник(FSPL)PL: ",
round(fspl5, digits=2), " dB")
println("Потери материалов: ",
round(material5, digits=2), " dB")
println("Отражение: ",
round(reflection5, digits=2), " dB")
println("Потери сигнала при распространении в свободном пространстве(RSSI): ",
round(rssi5, digits=2), " dBm")
println("Мощность: ",
round(power5_w, sigdigits=4), " W")
end
println("========================================")
println("РАСЧЁТ ЗАВЕРШЁН")