Простой АМ/ЧМ радиоприёмник с феноменальной чувствительностью

от автора

Эта скромная маленькая плата питается от двух пальчиковых батареек и невыгодно отличается от других распространённых разновидностей подобных радиоконструкторов тем, что выдаёт монофонический звук. Однако чувствительность у данного приёмника просто потрясающая.

Он успешно ловит сигналы далёкой средневолновой радиостанции на крошечную магнитную антенну, что мы услышим на видео. Причём это происходит в помещении с очень плохими условиями радиоприёма. Местные ультракоротковолновые станции также слышно хорошо, в той же комнате, на провод наушников в качестве антенны.

И это далеко не всё, на что способна дешёвая программируемая микросхема KT0936M, о которой я расскажу много интересных подробностей.

Регенеративный приёмник

Существует множество вариантов реализации высокочувствительных радиоприёмников. Например, для приёма далёкой китайской станции в помещении средневолновому рефлексному регенератору достаточно всего одного транзистора с высоким коэффициентом передачи тока, и это при маленькой ферритовой антенне!


Схема однотранзисторной кремниевой версии приёмника «My little radio»

Однако сегодня такие экстравагантные схемы строят только энтузиасты, и этому есть несколько причин.

Во-первых, отсутствует функция автоматической подстройки частоты (АПЧ), из-за чего настройка на волну принимаемой радиостанции сбивается при изменении температуры, влажности, вследствие вибраций и иных причин.

Данный недостаток особенно заметен на ультракоротких волнах, у приёмников с аналоговой настройкой посредством конденсатора переменной ёмкости без верньера. По этой причине после сборки радиоконструктора CF210SP получается всего-навсего детская игрушка, хотя это супергетеродин на хорошей микросхеме CD9088CB.

Во-вторых, неправильно настроенные регенераторы способны засорять эфир. Ведь регенеративный приёмник — это, по сути, передатчик, питание и положительная обратная связь (ПОС) в котором намеренно ослаблены.

При отсутствии входного сигнала в заданной полосе частот регенератор «молчит». Но стоит сигналу появиться, и он значительно усиливается. Благодаря ПОС, повышается добротность входного колебательного контура. Соответственно, регенеративный радиоприёмник обладает высокой избирательностью (селективностью).

Прекрасным (в смысле поучительности) примером трансивера — приёмопередатчика, в котором один и тот же однотранзисторный генератор Колпитца работает на приём и на передачу, является детская рация из конструктора YX986.


Комплект из двух детских радиопереговорных устройств YX986

Третий недостаток регенератора напрямую связан со вторым. Регенеративный приёмник — это не та схема, которая проявит все свои лучшие качества сразу при первом включении. После сборки такой прибор необходимо наладить при помощи подстроечных резисторов, конденсаторов, а иногда и прибегая к подбору номиналов и замене компонентов.

Крупносерийный выпуск таких устройств, не отвечающих критерию Алана Блюмлейна, является экономически нецелесообразным. Поэтому приёмники прямого усиления уступили место супергетеродинам.

«Правильная электронная схема не должна требовать наладки на производстве и подстройки при эксплуатации». А. Блюмлейн

С другой стороны, супергетеродин тоже необходимо налаживать, причём эта наладка сложнее, чем в случае регенератора. Однако процесс фабричной настройки супергетеродина гораздо более предсказуем и линеен.

То есть научно обоснован, технически целесообразен и экономически выгоден. Меньшая роль интуиции, человеческого фактора и «танцев с бубном» и больше возможностей автоматизации.

Достоинства супергетеродина

Чем же настолько хорош супергетеродин? Дело в том, что все его фильтры промежуточной частоты точно настроены на эту самую частоту, одну единственную. Причём можно использовать не только LC-фильтры — колебательные контуры, состоящие из катушки индуктивности и конденсатора, но и электромеханические резонаторыкварцы и пьезокерамику.

Электромеханические резонаторы очень стабильны, обладают высочайшей добротностью и, соответственно, обеспечивают прекрасную селективность и постоянство настройки приёмника на несущую частоту радиостанции.

Пьезокерамические фильтры промежуточной частоты используются в приёмниках из конструкторов FM7303, ZX2043, ZX251 и Tecsun 2P3. Все эти аппараты — супергетеродины и проявили себя очень хорошо.

Герой сегодняшнего рассказа также снабжён аналоговой ручкой настройки и имеет на борту электромеханический резонатор. Но это часовой кварц на 32768 герц, потому что приёмник — цифровой.


Внешний вид радиоприёмника DIY-3B

Программно определяемая радиосистема

ПОР или SDR (англ. software-defined radio) — это радиоприёмник или передатчик, использующий вместо аналоговых фильтров цифровые.

То есть в простейшем случае мы можем оцифровать сигнал с приёмной антенны, выделить цифровыми фильтрами передачу нужной радиостанции, демодулировать её, после чего преобразовать получившийся аудиосигнал в аналоговый формат и воспроизвести через громкоговорители или наушники.

В реальности перед аналогово-цифровым преобразователем (АЦП) необходим антенный предусилитель. Также не помешает полосовой фильтр, пропускающий на вход предусилителя высокочастотные сигналы только требуемых диапазонов.

Чтобы обрабатывать сигналы радиочастоты, требуются очень быстрые цифровые сигнальные процессоры. Однако SDR-приёмник можно построить по супергетеродинной схеме, где цифровая фильтрация осуществляется на промежуточной частоте, гораздо более низкой, чем частота радиосигнала.

Что находится внутри микросхемы?

Именно на таком принципе основана работа микросхемы KT0936M, содержащей все необходимые узлы программно определяемого радиоприёмника.


Структура микросхемы KT0936M

Аббревиатурами «IN» (inputs) обозначены входы:

Радиотракт каждого из двух входных каналов — амплитудной и частотной модуляции — состоит из следующих функциональных узлов:

Приёмник прямого преобразования

Следующая часть схемы на первый взгляд может показаться странной. VCOгенератор, управляемый напряжением (ГУН, voltage controlled oscillator) — это, очевидно, гетеродин. Но почему у каждого из радиотрактов целых два аналоговых умножителя, обозначенных крестиком в кружке? И зачем целых два ADC — аналого-цифровых преобразователя (analog to digital converter, АЦП)?

Дело в том, что смесители данного радиоприёмника представляют собой квадратурные фазовые детекторы, знакомые нам по транзисторному УКВ ЧМ супергетеродину. И это значит, что перед нами приёмник прямого преобразования с нулевой промежуточной частотой. Или «очень низкой ПЧ», как иногда пишут.

Далее идут цифровой сигнальный процессор (Digital Signal Processor), ЦАП (DAC, digital to analog converter) и двухтактный оконечный усилитель аудиосигнала класса AB. А управляет всем микроконтроллерMCU (microcontroller unit).

Именно благодаря очень низкой промежуточной частоте цифровые фильтры удалось реализовать внутри дешёвой медленной микросхемы. Теперь нам предстоит разобраться, как ею пользоваться.

Схема приёмника

Для чего предназначены первый, второй и третий выводы микросхемы, мы уже знаем.

Далее идут выводы земель:

  • 4 — радиочастотная RFGND;
  • 5 — цифровая DVSS;
  • 13 — аналоговая выходного аудиосигнала AVSS.

Выводы плюса питания цифровой и аналоговой части также раздельные — соответственно, шестой DVDD и двенадцатый AVDD. Микросхема рассчитана на работу в диапазоне напряжений питания от 2.1 до 3.6 вольт. Максимальный потребляемый ток составляет 30 миллиампер.

Восьмой вывод микросхемы TUNING предназначен для индикатора настройки — светодиода D2, рабочий ток которого ограничивается резистором R3.

Девятый вывод CH подключён к бегунку потенциометра L3-A, при помощи которого осуществляется настройка на волну принимаемой радиостанции. Диапазон возможных напряжений на этом входе — от нуля до плюса питания.

Двенадцатый вывод A_OUT служит выходом монофонического аудиосигнала. Подстроечный резистор V1 служит регулятором громкости, а постоянный резистор R5 — ограничителем громкости.

Выводы 14 (X1) и 15 (X0) используются для подключения часового кварцевого резонатора Y1. Конденсаторы C14 и C15 задействованы в стандартной схеме «обвязки» кварца.

Вывод с номером 10 SPAN предназначается для переключения поддиапазонов с помощью резисторов 1%-ной точности. Сопротивление верхнего плеча R7 делителя напряжения питания VDD должно равняться 10 килоомам.

Номинал нижнего плеча позволяет выбрать один из десяти радиовещательных диапазонов на ультракоротких, средних и длинных волнах:

  1. FM1, 63.4 Ом: 87 — 108.5 МГц, шаг 50 кГц (CCIR, используемый в России, Европе и США);
  2. FM2, 237 Ом: 75.5 — 108.5 МГц, шаг 100 кГц (японский диапазон);
  3. FM3, 412 Ом: 63.5 — 108.5 МГц, шаг 100 кГц (расширенный диапазон CCIR + OIRT);
  4. FM4, 604 Ом: 69.5 — 108.5 МГц, шаг 100 кГц;
  5. MW1, 787 Ом: 513 — 1629 кГц, шаг 1 или 9 кГц (обычный СВ диапазон);
  6. MW2, 1 кОм: 513 — 1719 кГц, шаг 1 или 9 кГц (североамериканский и австралийский расширенный СВ диапазон);
  7. MW3, 1.18 кОм: 510 — 1630 кГц, шаг 10 кГц;
  8. MW4, 1.4 кОм: 510 — 1720 кГц, шаг 10 кГц;
  9. LW1, 1.62 кОм: 150 — 282 кГц, шаг 1 кГц; (обычный ДВ диапазон)
  10. LW2, 1.87 кОм: 150 — 516 кГц, шаг 1 кГц (североамериканский расширенный ДВ диапазон).

Также доступны целых 50 коротковолновых поддиапазонов с шагом 5 килогерц.

  1. SW1, 2.1 кОм: 2.95 — 13.05 МГц;
  2. SW2, 2.37 кОм: 12.95 — 23.05 МГц;
  3. SW3, 2.61 кОм: 7.95 — 18.05 МГц;
  4. SW4, 2.87 кОм: 2.2 — 3.5 МГц;
  5. SW5, 3.16 кОм: 3.5 — 4.25 МГц;
  6. SW6, 3.48 кОм: 4.3 — 5.6 МГц;
  7. SW7, 3.74 кОм: 5.55 — 6.6 МГц;
  8. SW8, 4.12 кОм: 6.78 — 7.8 МГц;
  9. SW9, 4.42 кОм: 9.15 — 10.3 МГц;
  10. SW10, 4.75 кОм: 11.1 — 12.4 МГц;
  11. SW11, 5.23 кОм: 13 — 14.3 МГц;
  12. SW12, 5.62 кОм: 14.85 — 16 МГц;
  13. SW13, 6.04 кОм: 17.05 — 18.3 МГц;
  14. SW14, 6.49 кОм: 21.15 — 22.3 МГц;
  15. SW15, 6.81 кОм: 2.25 — 10.05 МГц;
  16. SW16, 7.32 кОм: 2.3 — 2.49 МГц;
  17. SW17, 7.87 кОм: 3.2 — 7.6 МГц;
  18. SW18, 8.45 кОм: 3.2 — 3.4 МГц;
  19. SW19, 9.09 кОм: 3.15 — 10.05 МГц;
  20. SW20, 9.76 кОм: 3.9 — 4 МГц;
  21. SW21, 10.2 кОм: 3.65 — 12.55 МГц;
  22. SW22, 11 кОм: 4.75 — 5.06 МГц;
  23. SW23, 11.8 кОм: 3.9 — 7.5 МГц;
  24. SW24, 12.7 кОм: 5.6 — 6.4 МГц;
  25. SW25, 13.7 кОм: 5.55 — 22.05 МГц;
  26. SW26, 14.7 кОм: 5.95 — 6.2 МГц;
  27. SW27, 15.4 кОм: 5.75 — 12.15 МГц;
  28. SW28, 16.9 кОм: 6.8 — 7.6 МГц;
  29. SW29, 17.8 кОм: 5.9 — 9.5 МГц;
  30. SW30, 19.1 кОм: 7.1 — 7.6 МГц;
  31. SW31, 21 кОм: 5.85 — 18.05 МГц;
  32. SW32, 22.6 кОм: 9.2 — 10 МГц;
  33. SW33, 24.3 кОм: 6.95 — 16.05 МГц;
  34. SW34, 26.7 кОм: 11.45 — 12.25 МГц;
  35. SW35, 28.7 кОм: 6.95 — 23.05 МГц;
  36. SW36, 31.6 кОм: 11.6 — 12.2 МГц;
  37. SW37, 34.8 кОм: 8.95 — 16.05 МГц;
  38. SW38, 38.3 кОм: 13.4 — 14.2 МГц;
  39. SW39, 42.2 кОм: 8.95 — 22.05 МГц;
  40. SW40, 47.5 кОм: 13.57 — 13.87 МГц;
  41. SW41, 53.6 кОм: 9.45 — 18.05 МГц;
  42. SW42, 61.9 кОм: 15 — 15.9 МГц;
  43. SW43, 71.5 кОм: 9.95 — 16.05 МГц;
  44. SW44, 84.5 кОм: 17.1 — 18 МГц;
  45. SW45, 102 кОм: 9.95 — 22.05 МГц;
  46. SW46, 127 кОм: 17.48 — 17.9 МГц;
  47. SW47, 169 кОм: 12.95 — 18.05 МГц;
  48. SW48, 243 кОм: 21.2 — 22 МГц;
  49. SW49, 422 кОм: 17.95 — 28.55 МГц;
  50. SW50, 1000 кОм: 21.45 — 21.85 МГц.

Номиналы резисторов R1 и R4 означают, соответственно, УКВ ЧМ диапазон FM1 87 — 108.5 МГц и средневолновый MW1 513 — 1629 кГц.

Коммутация радиочастотных трактов

Если бы в нашем приёмнике были коротковолновые диапазоны, то потребовалось бы подавать сигнал со штыревой антенны на вход тракта амплитудной модуляции.

В девятидиапазонном приёмнике из радиоконструктора ZX2043 этой цели служит второй гетеродин на транзисторе Q5, а вся коммутация осуществляется механическим движковым переключателем SS-49D01 на 9 позиций и 4 контактных группы (4P9T).


Принципиальная схема радиоприёмника ZX2043

А у микросхемы KT0936M для автоматической электронной коммутации радиочастотных каналов предназначается вывод 7 RFSW. Если напряжением на входе 10 выбран средневолновый, длинноволновый или ультракоротковолновый диапазон, то на выходе 7 будет логическая единица. А в случае коротковолнового — логический ноль.

Типовая схема мультиплексора радиочастотных входов показана на рисунке. В КВ режиме на базу транзистора Q1 c резистивного делителя напряжения R3R2 подаётся положительное смещение, и каскад с общим эмиттером усиливает сигнал коротковолнового диапазона с магнитной антенны.

Образец схемы коротковолнового предусилителя из документации к микросхеме KT0936M

УКВ сигнал задерживается дросселем L1, а КВ сигнал не пропускается на ЧМ вход конденсатором С4.

Транзистор Q2 подключён по схеме эмиттерного повторителя. Такой каскад с общим коллектором не усиливает переменного напряжения, зато имеет высокое входное и низкое выходное сопротивление.

Диод Шоттки D2 в коротковолновом режиме открыт, так как его анод подтянут к плюсу питания через резистор R19, а катод — к земле через R11. Диод D6 также открыт, заземляя по переменному току инвертирующий АМ вход AMINN через конденсатор С14.

Индуктивное сопротивление средневолновой магнитной антенны E2 переменному напряжению КВ диапазона велико, так что она не мешает поступлению коротковолнового сигнала на вход микросхемы.

Транзистор в режиме насыщения

Когда выбран CВ, ДВ или УКВ диапазон, резисторы R2 и R3 становятся соединёнными не последовательно, а параллельно. То есть база транзистора Q1 оказывается подключённой к плюсу питания через резистор сопротивлением 1/(1/100 + 1/100) = 50 кОм.

Чтобы понять, что происходит с биполярным транзистором S9018 при таких условиях, следует заглянуть в его документацию. Нас интересуют три параметра: напряжение база-эмиттер Vbe(sat), статический коэффициент передачи тока в каскаде с общим эмиттером hfe и напряжение насыщения коллектор-эмиттер Vce(sat).


Фрагмент справочного листка к транзистору S9018 от Unisonic Technologies Co., LTD

Два параметра указаны в таблице, а третий — на графике.


Графики из справочного листка к транзистору S9018 от Unisonic Technologies Co., LTD

Итак, при 3 вольтах питания, 700 милливольтах на базе и 100 милливольтах на коллекторе Q1 получаем 2.3 вольта на параллельно соединённых резисторах R2 и R3.

Ток базы Q1 cоставит 2300 мВ / 50 кОм = 46 мкА. При среднем для данного типа транзисторов статическом коэффициенте усиления по току, равном 100, это может обеспечить ток коллектора 4.6 мА.

Но тогда на резисторе коллекторной нагрузки R4 номиналом 1 килоом падало бы 4.6 вольта. А у нас питание 3 вольта минус напряжение база-эмиттер 0.09 В. То есть на R4 будет падать 2.91 В, и коллекторный ток Q1 составит 2.91 мА.

Режим работы транзистора, при котором коллекторный ток ниже произведения тока базы на коэффициент передачи тока, называется режимом насыщения, или ключевым режимом.

При этом падение напряжения между коллектором и эмиттером, а следовательно, и выделение тепла на кристалле транзистора, является минимальным. Поэтому такой режим является наилучшим для силовых переключателей.

Однако усиливать слабый радиочастотный сигнал со штыревой антенны в режиме насыщения транзистор Q1 не будет. Итак, при логической единице на выводе 7 RFSW микросхемы KT0936M коротковолновый антенный предусилитель не функционирует.

Также закрыты оба диода Шоттки, благодаря чему шумы предусилителя не поступают на дифференциальный вход тракта амплитудной модуляции.

Продвинутый функционал

Вывод 11 AM_FM имеет внутреннюю подтяжку к плюсу питания резистором на 47 килоом. Если подтянуть его к земле, то это заглушит аудиовыход.

Однако это лишь одна из функций данного вывода микросхемы, активированная по умолчанию. KT0936M — это весьма продвинутый электронный компонент с микроконтроллером на борту, и его можно программировать.

Интегрированная радиосистема не содержит встроенного перезаписываемого ПЗУ. Вместо этого, она предоставляет возможность подключить внешнее ЭСППЗУ (EEPROM) AT24C02. Для этого требуется всего-навсего соединить выводы микросхем двумя проводами.


Cхема подключения ЭСППЗУ из документации к микросхеме KT0936M

При включении питания KT0936M проверяет наличие AT24C02. И если последняя присутствует, то микроконтроллер запишет в свои регистры содержимое ЭСППЗУ.

Управляющие регистры

  • Адреса с 0x04 по 0x07 относятся к регистрам, задающим делители частоты ФАПЧ PLLCFG0 — PLLCFG3.
  • 0x08 — 0x0A (SYSCLK_CFG0 — SYSCLK_CFG2) — это регистры, определяющие системную тактовую частоту.

Четвёртый бит регистра XTALCFG по адресу 0x0D RCLK_EN конфигурирует тактовый генератор: 0 (по умолчанию) — кварцевый резонатор, 1 — внешнее тактирование.


Cхема подключения внешнего тактового генератора из документации к микросхеме KT0936M

Биты 4:0 регистра RXCFG1 с адресом 0x0F устанавливают общий уровень выходного аудиосигнала: 0b11111 — полная громкость, 0b00000 — звук выключен.

0x18 BANDCFG2 определяет шаг настройки на ультракоротких и средних волнах:

  • 7:6 для FM2: 0b00 = 200 кГц (США, Европа), 0b01 = 100 кГц (Европа, Япония), 0b1x = 50 кГц;
  • 5:4 для FM1: 0b00 = 200 кГц, 0b01 = 100 кГц, 0b1x = 50 кГц;
  • 3:2 для MW2 и LW2: 0b00 = 1 кГц, 0b01 = 9 кГц, 0b1x = 10 кГц;
  • 1:0 для MW1: 0b00 = 1 кГц, 0b01 = 9 кГц, 0b1x = 10 кГц.

Биты 4:0 регистра 0x18 BANDCFG3 задают шаг настройки для коротковолнового диапазона: 0b00 = 1 кГц, 0b01 = 5 кГц, 0b10 = 9 кГц, 0b11 = 10 кГц.

Регистр 0x28 SOUNDCFG хранит в битах 5:4 настройку подъёма усиления на частоте 70 герц: 0b00 = 0 дБ, 0b01 = 9.4 дБ, 0b10 = 13.3 дБ, 0b11 = 18.2 дБ. Это актуально для дешёвых наушников и маленьких громкоговорителей карманных приёмников.

Биты 6:4 регистра DSPCFG0 по адресу 0x2A управляют громкостью УКВ ЧМ: 0b000 — полная, 0b111 — аттенюация на 8.5 дБ.

Регистр 0x30 DSPCFG6 отвечает за смещение показателя уровня принимаемого УКВ ЧМ сигнала (RSSI). Настройки хранятся в битах 4:0. 0b10000 = -16 дБ, 0b11111 = -1 дБ, 0b00000 = 0 дБ, 0b00001 = 1 дБ, 0b01111 = 15 дБ. Регистр 0x63 AMDSP1 — то же самое, но для АМ сигнала.

Биты 3:0 регистра 0x38 SW_CFG0 задают предусиление в коротковолновом диапазоне: 0b0000 = 6 дБ, 0b0010 = 0 дБ, 0b1000 = -18 дБ. На средних и длинных волнах за это же отвечают биты 7:4 регистра 0x62 AMDSP0.

Биты 2:0 AMDSP0 определяют ширину полосы пропускания цифрового фильтра настройки на частоту радиостанции для всех АМ диапазонов: 0b000 = 1.2 кГц, 0b001 = 2.4 кГц, 0b010 = 3.6 кГц, 0b011 = 4.8 кГц, 0b100 = 6.0 кГц.

В битах 3:0 регистра 0x39 AMDSP7 записана выходная громкость на коротких волнах: 0b1111 = 0 дБ, 0b0000 = -7.5 дБ. По адресу 0x69 находится то же самое, но для средних и длинных волн.

Регистр 0x4E ANACFG конфигурирует выход аудиосигнала:

  • биты 5:4 задают время глушения аудиовыхода при включении: 0b00 = 250 мс, 0b01 = 500 мс, 0b10 = 750 мс, 0b11 = 1 с;
  • биты 2:0 определяют постоянное напряжение смещения аудиовыхода: 0b000 = 0.85 В, 0b111 = 1.6 В. Данный параметр должен равняться половине напряжения питания радиоприёмника.

Биты 6:4 регистра 0x4F GPIOCFG0 определяют функции вывода 11 AM_FM:

  • 0b001 — обработка нажатий резистивной клавиатуры для выбора поддиапазона;
  • 0b010 — переключение поддиапазонов по изменению логического уровня;
  • 0b011 — глушение аудиовыхода (по умолчанию).

В битах 1:0 регистра GPIOCFG2 по адресу 0x51 находится конфигурация входа 9 CH. По умолчанию 0b10 — настройка на волну радиостанции переменным резистором. 0b10 отключает эту функцию. Тогда приёмник «ловит» только предустановленные частоты из нижеследующих регистров.

Предустановка частот

Регистры 0x90 FM1_LOW_CHAN0 и 0x91 FM1_LOW_CHAN1 содержат слово, задающее нижнюю границу диапазона FM1. 0x280 = 32 МГц, 0x898 = 110 МГц. Значение по умолчанию 0x06CC = 87 МГц.

0x94 FM2_LOW_CHAN0 и 0x95 FM2_LOW_CHAN1 — то же самое для диапазона FM2. По умолчанию 0x05E6 = 75.5 МГц.

0x92 FM1_CHAN_NUM0 и 0x93 FM1_CHAN_NUM1 — число ступеней настройки в диапазоне FM1. 0x96 и 0x97 — то же для FM2.

Далее с 0x99 до 0xDB идут регистры всех остальных поддиапазонов. Итак, с помощью микросхемы ЕСППЗУ можно создать приёмник с нужным набором диапазонов и фиксированных настроек.

Испытания и перспективы

Видео на платформе NUUM

Видео на платформе Youtube

Даже в минималистичном варианте приёмник на KT0936M показал себя очень хорошо. В дальнейшем планирую дополнить его антеннами — рамочной и штыревой, а также коротковолновым предусилителем.

Соответственно, нужно будет расширить переключатель поддиапазонов. Это можно реализовать как механически, так и посредством микроконтроллера со встроенным ЦАП.

Переменному резистору настройки напрашивается верньер или хотя бы ручка большого диаметра. Также можно использовать многооборотный потенциометр со шкалой.

НЛО прилетело и оставило здесь промокод для читателей нашего блога:
15% на заказ любого VDS (кроме тарифа Прогрев) — HABRFIRSTVDS


ссылка на оригинал статьи https://habr.com/ru/articles/843504/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *