"Народний" Трансивер на базі ESP32-A1S
-
- Повідомлень: 54
- З нами з: Суб вересня 17, 2022 7:59 am
- Позивний: UR1CDH
- Has thanked: 1 time
- Been thanked: 2 times
"Народний" Трансивер на базі ESP32-A1S
Доброго дня шановні. Пропоную розглянути питання проектування трансивера на базі ESP32-A1S. Нажаль особисто не маю достатньо знань в напрямку DSP. Можливо хто кине тапком в сторону доступної літератури. Тема буде доповнюватися.
-
- Повідомлень: 54
- З нами з: Суб вересня 17, 2022 7:59 am
- Позивний: UR1CDH
- Has thanked: 1 time
- Been thanked: 2 times
Re: "Народний" Трансивер на базі ESP32-A1S
За основу взяв uSDX, в загальному вигляді схема аналогічна, тільки замість Atmega 328p, підключив esp32. На даний момент реалізував управління синтезатором. Розвів плати ФНЧ і ДПФ на КВ, 6м, 2м. За основу їх взяв схеми трансивера PICaSTAR. Кілька днів тому замовив ESP32-A1S той що з звуковим кодеком на борту. Є заготовки так званого "водопаду". Поки все в зародковому стані. На макетах і на папері. В планах знайти і замовити синтезатор SI5351B-GM або аналогічний з 4 незалежними виходами. Спочатку думав про 5351 на 3 виводи, та щось воно мені не подобається. Квадратурний модулятор працює на х4 частоті, а сішка того не видасть. Є думка використати 2 виходи синтезатора, генерувати на них однакову частоту з зсувом фази на 90 градусів. Тоді можна використати частоту без множника, тим самим отримати можливість приймати на частоті до 160мгц. 2 виходи що залишаються, використати при роботі на передачу. Приймальна частина в загальному виглядає так. З входу антени сигнал поступає на блок ДПФ+аттенюатор, звідти на квадратурний модулятор, отримані сигнали I,Q на підсилювач. З виходу підсилювача на вхід кодека.
-
- Повідомлень: 54
- З нами з: Суб вересня 17, 2022 7:59 am
- Позивний: UR1CDH
- Has thanked: 1 time
- Been thanked: 2 times
Re: "Народний" Трансивер на базі ESP32-A1S
З проблем з якими я особисто стикнувся це відсутність поглиблених знань в області цифрової обробки сигналів. В загальному вигляді особисто я це бачу так. З входу кодека отриманий сигнал проходить вибірку даних. Отримані данні пропускаємо через перетворення Фур'є. Значення після перетворення пропускаємо через цифровий фільтр, тим самим обмежуємо смугу пропускання. Отримані значення через зворотнє перетворення відновлюємо до звукового сигналу і подаємо на вихід кодека, звідти на динамік.
-
- Повідомлень: 54
- З нами з: Суб вересня 17, 2022 7:59 am
- Позивний: UR1CDH
- Has thanked: 1 time
- Been thanked: 2 times
Re: "Народний" Трансивер на базі ESP32-A1S
Можливо хто має лінки на літературу, поділіться будь ласка. Десь моє все з університету пішло по руках
-
- Повідомлень: 814
- З нами з: Пон вересня 12, 2022 1:04 pm
- Has thanked: 43 times
- Been thanked: 294 times
Re: "Народний" Трансивер на базі ESP32-A1S
Si5351 без жодних проблем генерує частоту до 225МГц. Ділимо її на 4 і отримуємо 56МГц - це максимальна частота приймача. Можна генерувати на 5351 одразу дві частоти у квадратурі, але даташит не гарантує генерацію нижче 4МГц. На практиці генерація зривається десь нижче 2.5МГц. Тобто 160м викреслюємо.
З 4ма виводами сішка вам не до чого - нормально працює звичайна на 3 виходу.
Я дуже рекомендую "A Software-Defined Radio for the masses" від Gerald Youngblood, K5SDR
https://sites.google.com/site/thesdrins ... the-Masses
Це мабуть єдиний детальний опис того як працює SDR. Свого часу на основі цих статей я повністю з нуля розробив програму для SDR. Там усе з прикладами коду на VisualBasic.
Стосовно DSP взагалі дуже зрозуміло все описано у The Scientist and Engineer's Guide to Digital Signal Processing By Steven W. Smith. Можна завантажити наприклад тут усю книгу або по розділам на офсайті https://www.dspguide.com/pdfbook.htm
Далі, ESP32 має чудову бібліотеку для DSP https://docs.espressif.com/projects/esp ... index.html
Для обробки семплов з кодеку вам потрібно створити потік який читає данні з I2S, опрацьовує їх, та відправляє назад до I2S
В ESP32 є підтримка FreeRTOS https://docs.espressif.com/projects/esp ... ertos.html
Для I2S я рекомендую пошукати приклад full duplex у гуглі та гітхабі. У себе я використовую кодек WM8731 і мій код вам не підійде.
Для роботи з кодом я рекомендую ставити VisualStudio Code + PlatformIO. Проект створювати з Espressif Arduino framework.
Для початку я думаю досить
З 4ма виводами сішка вам не до чого - нормально працює звичайна на 3 виходу.
Я дуже рекомендую "A Software-Defined Radio for the masses" від Gerald Youngblood, K5SDR
https://sites.google.com/site/thesdrins ... the-Masses
Це мабуть єдиний детальний опис того як працює SDR. Свого часу на основі цих статей я повністю з нуля розробив програму для SDR. Там усе з прикладами коду на VisualBasic.
Стосовно DSP взагалі дуже зрозуміло все описано у The Scientist and Engineer's Guide to Digital Signal Processing By Steven W. Smith. Можна завантажити наприклад тут усю книгу або по розділам на офсайті https://www.dspguide.com/pdfbook.htm
Далі, ESP32 має чудову бібліотеку для DSP https://docs.espressif.com/projects/esp ... index.html
Для обробки семплов з кодеку вам потрібно створити потік який читає данні з I2S, опрацьовує їх, та відправляє назад до I2S
В ESP32 є підтримка FreeRTOS https://docs.espressif.com/projects/esp ... ertos.html
Для I2S я рекомендую пошукати приклад full duplex у гуглі та гітхабі. У себе я використовую кодек WM8731 і мій код вам не підійде.
Для роботи з кодом я рекомендую ставити VisualStudio Code + PlatformIO. Проект створювати з Espressif Arduino framework.
Для початку я думаю досить
-
- Повідомлень: 54
- З нами з: Суб вересня 17, 2022 7:59 am
- Позивний: UR1CDH
- Has thanked: 1 time
- Been thanked: 2 times
Re: "Народний" Трансивер на базі ESP32-A1S
UR5FFR писав: ↑Пон вересня 19, 2022 6:31 pm Si5351 без жодних проблем генерує частоту до 225МГц. Ділимо її на 4 і отримуємо 56МГц - це максимальна частота приймача. Можна генерувати на 5351 одразу дві частоти у квадратурі, але даташит не гарантує генерацію нижче 4МГц. На практиці генерація зривається десь нижче 2.5МГц. Тобто 160м викреслюємо.
З 4ма виводами сішка вам не до чого - нормально працює звичайна на 3 виходу.
майже всі з моїх знайомих говорять що 160 вже на грані вимирання...
як варіант обдумати можливість перемикання з парної квадратурної на одинарну х4.
Дякую за лінки. босить інформативні та корисні посиланняюUR5FFR писав: ↑Пон вересня 19, 2022 6:31 pm Я дуже рекомендую "A Software-Defined Radio for the masses" від Gerald Youngblood, K5SDR
https://sites.google.com/site/thesdrins ... the-Masses
Це мабуть єдиний детальний опис того як працює SDR. Свого часу на основі цих статей я повністю з нуля розробив програму для SDR. Там усе з прикладами коду на VisualBasic.
Стосовно DSP взагалі дуже зрозуміло все описано у The Scientist and Engineer's Guide to Digital Signal Processing By Steven W. Smith. Можна завантажити наприклад тут усю книгу або по розділам на офсайті https://www.dspguide.com/pdfbook.htm
Далі, ESP32 має чудову бібліотеку для DSP https://docs.espressif.com/projects/esp ... index.html
Для обробки семплов з кодеку вам потрібно створити потік який читає данні з I2S, опрацьовує їх, та відправляє назад до I2S
В ESP32 є підтримка FreeRTOS https://docs.espressif.com/projects/esp ... ertos.html
Для I2S я рекомендую пошукати приклад full duplex у гуглі та гітхабі. У себе я використовую кодек WM8731 і мій код вам не підійде.
Саме такою збіркою й користуюсь вже кілька років. після Anduino ide набагато зручніше працювати над різними проектами і платформами в одній програмі
-
- Повідомлень: 54
- З нами з: Суб вересня 17, 2022 7:59 am
- Позивний: UR1CDH
- Has thanked: 1 time
- Been thanked: 2 times
Re: "Народний" Трансивер на базі ESP32-A1S
https://www.qsl.net/py2ohh/trx/si5351qu ... ature.htmlUR5FFR писав: ↑Пон вересня 19, 2022 6:31 pm Si5351 без жодних проблем генерує частоту до 225МГц. Ділимо її на 4 і отримуємо 56МГц - це максимальна частота приймача. Можна генерувати на 5351 одразу дві частоти у квадратурі, але даташит не гарантує генерацію нижче 4МГц. На практиці генерація зривається десь нижче 2.5МГц. Тобто 160м викреслюємо.
З 4ма виводами сішка вам не до чого - нормально працює звичайна на 3 виходу.
https://gist.github.com/la3pna/258a6f309f1482bd165b
Лінк. в людини вдалось отримати частоти від 333кгц до 220 мгц. Наскільки я розумію він проводить маніпуляції з базовим генератором, змінюючи базову тактову частоту... в квадратурному генераторі верхня межа 110мгц... незнаю кому те потрібно.
2.5 мгц\4 = 750 кгц в теорії можна навіть середні хвилі слухати).
-
- Повідомлень: 54
- З нами з: Суб вересня 17, 2022 7:59 am
- Позивний: UR1CDH
- Has thanked: 1 time
- Been thanked: 2 times
Re: "Народний" Трансивер на базі ESP32-A1S
SDR трансивер отримує сигнал через квадратурний демодулятор. так і на передачу також працює через квадратурний сигнал. питання. що оптимальніше. використати 1 вихід синтезатора на х4 частоті для прийому, 1 вихід синтезатора на х4 частоті для передачі. або 2 виходи синтезатора з квадратурним сигналом на прийом, і 1 вихід на х4 частоті на передачу?
-
- Повідомлень: 814
- З нами з: Пон вересня 12, 2022 1:04 pm
- Has thanked: 43 times
- Been thanked: 294 times
Re: "Народний" Трансивер на базі ESP32-A1S
Якщо ви уважно читали мій аналіз архітектур то то я там навів недоліки тракту з квадратурними каналами. Основна проблема це розбалансування каналів по амплітуді та фазі. І якщо амплітудний баланс легко виправити, то з фазовим є проблеми.
Квадратурний формувач на 74LVC74 має велику похибку яка зростає із зростанням частоти. Краще тут веде себе 74LVC574 (тут можна почитати детальніше). Але навіть 74LVC574 має похибку на частоті 30МГц. Тому усі нормальні приймачі мають у себе блок корекції амплітудно-фазовогу дисбалансу. І це не примітивні алгоритми, бо фазовий дисбаланс залежить від частоти не тільки прийому, а й на панорамі.
Si5351 теж не є ідеальним джерелом квадратури. Але даташит не визначає ії похибку.
Якщо ми прийняли рішення що коригуємо дисбаланс програмно то не має різниці з якою похибкою працює наш тракт - це зовсім не принципово. Я бачив як алгоритм повністю компенсує дисбаланс до 10-20 градусів по фазі. І це все дуже добре працює у приймачі. А от у передавачі ми маємо проблему бо ми не можемо компенсувати дисбаланс.
Тому перевірене рішення - 74LVC574. Якщо є змога та час на експерименти, то можна попробувати взяти сигнал напряму з SI5351
Квадратурний формувач на 74LVC74 має велику похибку яка зростає із зростанням частоти. Краще тут веде себе 74LVC574 (тут можна почитати детальніше). Але навіть 74LVC574 має похибку на частоті 30МГц. Тому усі нормальні приймачі мають у себе блок корекції амплітудно-фазовогу дисбалансу. І це не примітивні алгоритми, бо фазовий дисбаланс залежить від частоти не тільки прийому, а й на панорамі.
Si5351 теж не є ідеальним джерелом квадратури. Але даташит не визначає ії похибку.
Якщо ми прийняли рішення що коригуємо дисбаланс програмно то не має різниці з якою похибкою працює наш тракт - це зовсім не принципово. Я бачив як алгоритм повністю компенсує дисбаланс до 10-20 градусів по фазі. І це все дуже добре працює у приймачі. А от у передавачі ми маємо проблему бо ми не можемо компенсувати дисбаланс.
Тому перевірене рішення - 74LVC574. Якщо є змога та час на експерименти, то можна попробувати взяти сигнал напряму з SI5351