Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
b4fa20a
Update Ukrainian translation of author page
distribtech Oct 6, 2025
139d2de
Merge pull request #1 from distribtech/codex/update-ukrainian-transla…
distribtech Oct 6, 2025
06d8bb1
Add ukrainian template
distribtech Oct 6, 2025
def188a
Update Ukrainian homepage structure
distribtech Oct 6, 2025
89acb79
Merge pull request #2 from distribtech/codex/update-ukrainian-transla…
distribtech Oct 6, 2025
30396fe
Update index-ukraine.rst
distribtech Oct 6, 2025
b9a1baf
Add to ukrainian index new chapters.
mrbloom Oct 6, 2025
364f665
Add not translated chapters to ukraine translation
mrbloom Oct 6, 2025
03f30e7
Translate Ukrainian bladeRF guide
distribtech Oct 6, 2025
f86f127
Merge pull request #3 from distribtech/codex/translate-content-ukrain…
distribtech Oct 6, 2025
cc46e43
Translate 2D beamforming chapter to Ukrainian
distribtech Oct 6, 2025
fff7c8b
Merge pull request #4 from distribtech/codex/translate-content-ukrain…
distribtech Oct 6, 2025
d42d11b
Translate HackRF One chapter to Ukrainian
distribtech Oct 6, 2025
0e471b6
Merge pull request #5 from distribtech/codex/translate-content-ukrain…
distribtech Oct 6, 2025
c345163
Translate cyclostationary chapter into Ukrainian
distribtech Oct 6, 2025
cdd6370
Merge pull request #6 from distribtech/codex/translate-content-ukrain…
distribtech Oct 6, 2025
e784ee1
Translate PyQt chapter to Ukrainian
distribtech Oct 6, 2025
9fc7710
Merge pull request #7 from distribtech/codex/translate-content-ukrain…
distribtech Oct 6, 2025
22a1021
change index
mrbloom Oct 7, 2025
d309093
Merge branch 'master' of https://github.com/distribtech/PySDR
mrbloom Oct 7, 2025
51b3559
change index
mrbloom Oct 8, 2025
90062c7
Complete Ukrainian translation of RDS chapter
distribtech Oct 8, 2025
088a331
Merge pull request #8 from distribtech/codex/complete-ukrainian-trans…
distribtech Oct 8, 2025
7416437
Update Ukrainian Phaser chapter
distribtech Oct 8, 2025
ce0dedb
Merge pull request #9 from distribtech/codex/update-ukrainian-transla…
distribtech Oct 8, 2025
66f00e6
Update Ukrainian PlutoSDR chapter
distribtech Oct 8, 2025
79f6fe7
Merge pull request #10 from distribtech/codex/update-ukrainian-transl…
distribtech Oct 8, 2025
7c00191
Add Ukrainian translation for RTL-SDR chapter
distribtech Oct 8, 2025
6bd1ad0
Merge pull request #11 from distribtech/codex/add-rtlsdr.rst-translat…
distribtech Oct 8, 2025
ce16460
!!!! ITS JUST TEST THE READDOCS !!!!
mrbloom Oct 8, 2025
cad0232
Merge branch 'master' of https://github.com/distribtech/PySDR
mrbloom Oct 8, 2025
19998cd
!!!! ITS JUST TEST THE READDOCS 2 !!!!
mrbloom Oct 8, 2025
f2b27fc
!!!! ITS JUST TEST THE READDOCS 3 !!!!
mrbloom Oct 8, 2025
0cd3e26
!!!! REMOVE READDOCS !!!!
mrbloom Oct 8, 2025
21efe1a
Update Ukrainian beamforming taxonomy caption
distribtech Oct 8, 2025
8fe6e64
Merge pull request #12 from distribtech/codex/update-translation-in-d…
distribtech Oct 8, 2025
440f1ae
Update Ukrainian IQ files translation
distribtech Oct 8, 2025
fc31347
Merge pull request #13 from distribtech/codex/update-translation-in-i…
distribtech Oct 8, 2025
170508b
Make translation links configurable via base URL
distribtech Oct 8, 2025
39858ac
Merge pull request #14 from distribtech/codex/investigate-ukrainian-t…
distribtech Oct 8, 2025
506344d
Update Ukrainian beamforming taxonomy caption
distribtech Oct 8, 2025
a71c6c0
Update Ukrainian IQ files translation
distribtech Oct 8, 2025
222aa8b
Update frequency_domain.rst
mrbloom Oct 10, 2025
f3d8629
Update Ukrainian intro translation
distribtech Oct 10, 2025
4b77733
Merge pull request #15 from distribtech/codex/update-translation-in-c…
mrbloom Oct 10, 2025
437808d
Merge branch 'master-ukraine'
mrbloom Dec 1, 2025
2654d6a
merged with eng version of book
mrbloom Dec 1, 2025
44da305
Merge pull request #16 from 777arc/master
distribtech Dec 9, 2025
b8e3995
translation of term cyclostaionary
mrbloom Dec 9, 2025
d67f419
Refine description of cyclostationary signal processing
distribtech Dec 9, 2025
67eaef5
cyclostationary statistic translation
mrbloom Dec 9, 2025
e00ec63
Grammatical and stylistic errors
distribtech Dec 9, 2025
fdecef0
Phaser translation
distribtech Dec 9, 2025
f450148
new person
distribtech Dec 11, 2025
482a122
freq domain
distribtech Dec 11, 2025
ec31b86
frequency domain
distribtech Dec 11, 2025
202dba2
frequency domain
distribtech Dec 11, 2025
c392394
frequency domain
distribtech Dec 11, 2025
1389aeb
freqquency domain
distribtech Dec 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/build-and-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ concurrency:
jobs:
# Single deploy job since we're just deploying
deploy:
env:
PYSDR_BASEURL: https://distribtech.github.io/PySDR/
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/build-and-spell-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ on: [pull_request]

jobs:
job1:
env:
PYSDR_BASEURL: https://distribtech.github.io/PySDR/
runs-on: ubuntu-latest
steps:
- name: Checkout Code
Expand Down
42 changes: 21 additions & 21 deletions content-ukraine/cyclostationary.rst

Large diffs are not rendered by default.

108 changes: 66 additions & 42 deletions content-ukraine/frequency_domain.rst

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions content-ukraine/intro.rst
Original file line number Diff line number Diff line change
Expand Up @@ -88,5 +88,6 @@ textbook <https://www.analog.com/en/education/education-library/software-defined
- `mrbloom <https://github.com/mrbloom>`_ за `переклад PySDR українською <https://pysdr.org/ukraine/index-ukraine.html>`_
- `Yimin Zhao <https://github.com/doctormin>`_ за `переклад PySDR спрощеною китайською <https://pysdr.org/zh/index-zh.html>`_
- `Eduardo Chancay <https://github.com/edulchan>`_ за `переклад PySDR іспанською <https://pysdr.org/es/index-es.html>`_
- John Marcovici

А також усім прихильникам `PySDR Patreon <https://www.patreon.com/PySDR>`_!
20 changes: 10 additions & 10 deletions content-ukraine/phaser.rst
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
Phaser - це одна плата, що містить фазовану антенну решітку та низку інших компонентів, до якої з одного боку підключено Raspberry Pi, а з іншого боку - Pluto. Високорівнева блок-схема показана нижче. Деякі моменти, на які слід звернути увагу:

1. Хоча це виглядає як 32-елементний двовимірний масив, насправді це 8-елементний одновимірний масив
2. Використовуються обидва канали прийому на Плутоні (другий канал використовує роз'єм u.FL)
3. LO на борту використовується для перетворення прийнятого сигналу з частоти близько 10,25 ГГц до частоти близько 2 ГГц, щоб Плутон міг його прийняти
4. Кожен ADAR1000 має чотири фазообертачі з регульованим коефіцієнтом підсилення, і всі чотири канали підсумовуються перед відправкою на Плутон
2. Використовуються обидва канали прийому на Pluto (другий канал використовує роз'єм u.FL)
3. LO на борту використовується для перетворення прийнятого сигналу з частоти близько 10,25 ГГц до частоти близько 2 ГГц, щоб Pluto міг його прийняти
4. Кожен ADAR1000 має чотири фазообертачі з регульованим коефіцієнтом підсилення, і всі чотири канали підсумовуються перед відправкою на Pluto
5. Фазообертач по суті містить два "підмасиви", кожен з яких містить чотири канали
6. Нижче не показані GPIO і послідовні сигнали від Raspberry Pi, які використовуються для керування різними компонентами фазообертача

Expand All @@ -35,7 +35,7 @@ Phaser - це одна плата, що містить фазовану анте
:align: center
:alt: Компоненти фазера (CN0566), включаючи ADF4159, LTC5548, ADAR1000

Наразі проігноруємо передавальну частину фазоінвертора, оскільки в цій главі ми використовуватимемо пристрій HB100 лише як тестовий передавач. ADF4159 - це синтезатор частоти, який виробляє тон з частотою до 13 ГГц, який ми називаємо локальним генератором або LO. Цей ЛО подається на мікшер LTC5548, який може здійснювати як висхідне, так і низхідне перетворення, хоча ми використовуватимемо його для низхідного перетворення. Для низхідного перетворення він приймає сигнал LO, а також сигнал в діапазоні від 2 до 14 ГГц, і перемножує їх разом, що призводить до зсуву частоти. Результуючий сигнал може бути в діапазоні від постійного струму до 6 ГГц, хоча ми націлені на частоту близько 2 ГГц. ADAR1000 - це 4-канальний аналоговий формувач променя, тому Фазер використовує два з них. Аналоговий формувач променя має незалежно регульовані фазові перемикачі і коефіцієнт підсилення для кожного каналу, що дозволяє затримувати в часі і послаблювати кожен канал перед підсумовуванням в аналоговому діапазоні (в результаті чого виходить один канал). На фазообертачі кожен ADAR1000 виводить сигнал, який перетворюється вниз, а потім приймається Плутоном. Використовуючи Raspberry Pi, ми можемо контролювати фазу і посилення всіх восьми каналів в реальному часі, щоб виконувати формування променя. У нас також є можливість виконувати двоканальне цифрове формування променя/обробку масивів, що обговорюється в наступному розділі.
Наразі проігноруємо передавальну частину фазоінвертора, оскільки в цій главі ми використовуватимемо пристрій HB100 лише як тестовий передавач. ADF4159 - це синтезатор частоти, який виробляє тон з частотою до 13 ГГц, який ми називаємо локальним генератором або LO. Цей ЛО подається на мікшер LTC5548, який може здійснювати як висхідне, так і низхідне перетворення, хоча ми використовуватимемо його для низхідного перетворення. Для низхідного перетворення він приймає сигнал LO, а також сигнал в діапазоні від 2 до 14 ГГц, і перемножує їх разом, що призводить до зсуву частоти. Результуючий сигнал може бути в діапазоні від постійного струму до 6 ГГц, хоча ми націлені на частоту близько 2 ГГц. ADAR1000 - це 4-канальний аналоговий формувач променя, тому Фазер використовує два з них. Аналоговий формувач променя має незалежно регульовані фазові перемикачі і коефіцієнт підсилення для кожного каналу, що дозволяє затримувати в часі і послаблювати кожен канал перед підсумовуванням в аналоговому діапазоні (в результаті чого виходить один канал). На фазообертачі кожен ADAR1000 виводить сигнал, який перетворюється вниз, а потім приймається Pluto. Використовуючи Raspberry Pi, ми можемо контролювати фазу і посилення всіх восьми каналів в реальному часі, щоб виконувати формування променя. У нас також є можливість виконувати двоканальне цифрове формування променя/обробку масивів, що описано в наступному розділі.

Для тих, хто цікавиться, нижче наведено дещо детальнішу блок-схему.

Expand All @@ -62,7 +62,7 @@ Phaser - це одна плата, що містить фазовану анте
Встановлення програмного забезпечення
***************************************

Після завантаження в Raspberry Pi за допомогою образу попередньої збірки, використовуючи стандартний користувач/пароль аналог/аналог, рекомендується виконати наступні кроки:
Після завантаження в Raspberry Pi за допомогою образу попередньої збірки, використовуючи стандартний користувач/пароль analog/analog, рекомендується виконати наступні кроки:

.. code-block:: bash

Expand All @@ -86,14 +86,14 @@ Phaser - це одна плата, що містить фазовану анте

HB100, що постачається з Phaser, - це недорогий доплерівський радарний модуль, який ми будемо використовувати як тестовий передавач, оскільки він передає безперервний тон на частоті близько 10 ГГц. Він працює від 2 батарейок типу АА або від настільного джерела живлення 3 В, і коли він увімкнений, на ньому світиться яскравий червоний світлодіод.

Оскільки HB100 є недорогим і використовує дешеві радіочастотні компоненти, його частота передачі варіюється від одиниці до одиниці, понад сотні МГц, що є діапазоном, який перевищує найвищу пропускну здатність, яку ми можемо отримати, використовуючи Плутон (56 МГц). Тому, щоб переконатися, що ми налаштували наш Pluto і понижуючий перетворювач таким чином, щоб завжди отримувати сигнал HB100, ми повинні визначити частоту передачі HB100. Це робиться за допомогою прикладної програми від Analog Devices, яка виконує розгортку частоти і обчислює ШПФ, шукаючи пік. Переконайтеся, що ваш HB100 увімкнений і знаходиться в безпосередній близькості від Phaser, а потім запустіть утиліту з..:
Оскільки HB100 є недорогим і використовує дешеві радіочастотні компоненти, його частота передачі варіюється від зразка до зразка, на понад сотні МГц, такий розкид по частоті перевищує діапазон найвищої пропускну здатність, яку можно отримати від Pluto (56 МГц). Тому, щоб переконатися, що ми налаштували наш Pluto і понижуючий перетворювач таким чином, щоб завжди отримувати сигнал HB100, ми повинні визначити частоту передачі HB100. Це робиться за допомогою прикладної програми від Analog Devices, яка виконує розгортку частоти і обчислює ШПФ, шукаючи пік. Переконайтеся, що ваш HB100 увімкнений і знаходиться в безпосередній близькості від Phaser, а потім запустіть утиліту з..:

.. code-block:: bash

cd ~/pyadi-iio/examples/phaser
python phaser_find_hb100.py

Він повинен створити файл з назвою hb100_freq_val.pkl у тій самій директорії. Цей файл містить частоту передачі HB100 в Гц (мариновану, тому її не можна переглянути у відкритому вигляді), яку ми будемо використовувати на наступному кроці.
Він повинен створити файл з назвою hb100_freq_val.pkl у тій самій директорії. Цей файл містить частоту передачі HB100 в Гц (у двійковому формфті, тому її не можна переглянути у відкритому вигляді). Цю частоту ми будемо використовувати на наступному кроці.

************************
Калібрування
Expand Down Expand Up @@ -190,16 +190,16 @@ Phaser на Python
sdr.rx_hardwaregain_chan0 = 10 # дБ, 0 - найнижчий коефіцієнт підсилення. HB100 досить гучний
sdr.rx_hardwaregain_chan1 = 10 # dB

sdr.rx_lo = int(2.2e9) # Плутон налаштується на цю частоту
sdr.rx_lo = int(2.2e9) # Pluto налаштується на цю частоту

# Налаштуйте PLL фазоінвертора (ADF4159 на борту) на пониження частоти HB100 до 2.2 ГГц плюс невеликий зсув
offset = 1000000 # додаємо невелике довільне зміщення, щоб ми не були прямо на 0 Гц, де є стрибок постійного струму
phaser.lo = int(signal_freq + sdr.rx_lo - offset)

Отримання семплів з Плутона
Отримання семплів з Plutoа
################################

На цьому етапі фазер і Плутон налаштовані і готові до роботи. Тепер ми можемо почати отримувати дані з Плутона. Давайте візьмемо один пакет з 1024 відліків, а потім зробимо ШПФ кожного з двох каналів.
На цьому етапі фазер і Pluto налаштовані і готові до роботи. Тепер ми можемо почати отримувати дані з Plutoа. Давайте візьмемо один пакет з 1024 відліків, а потім зробимо ШПФ кожного з двох каналів.

.. code-block:: python

Expand Down