Трансивер своими руками на ардуино

Добавил пользователь Cypher
Обновлено: 04.10.2024

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

ВЧ сигнал оцифровывается высокоскоростной микросхемой АЦП, и подаётся на FPGA процессор.
В нём происходит DDC/DUC преобразование (цифровое смещение частоты вниз или вверх по спектру) - по аналогии с приёмником прямого преобразования.
I и Q квадратурные сигналы, полученные в ходе преобразований, поступают на микропроцессор STM32.
В нём происходит фильтрация, (де)модуляция и вывод звука на аудио-кодек/USB. Также он обрабатывает весь пользовательский интерфейс.
При передаче процесс происходит в обратном порядке, только в конце цепочки стоит ЦАП, преобразующий цифровой сигнал обратно в аналоговый ВЧ.

  • Частоты приёма: 0 MHz - 750 MHz
  • Частоты передачи: 0 MHz - 160 MHz
  • Мощность TX (QRP версия): 7W+ (HF), 5W (VHF)
  • Мощность TX (QRP++ DB5AT версия): 20W (HF), 7W (VHF)
  • Мощность TX (RU4PN версия): 100W (HF), 50W+ (VHF)
  • Два Антенных входа
  • Виды модуляции (TX/RX): CW, LSB, USB, AM, FM, WFM, DIGI
  • МШУ(LNA) и Предусилитель
  • Регулируемый аттенюатор на 0-31дБ
  • Два антенных входа
  • Полосовые фильтры
  • Динамический диапазон АЦП (16 бит) ~100дБ
  • Напряжение питания: 13.8в (защита от перенапряжения и смены полярности)
  • Потребляемый ток при приёме: ~0.7А (3'2 QRP), 1.1A (7' BIG)
  • Потребляемый ток при передаче: ~2.5А+ (QRP), 15A+ (BIG)

При соотношении сигнал-шум 10dB, LNA включен, ATT, LPF, BPF выключены

Сборка и прошивка

Платы заказывал в китайском сервисе JLCPCB, они и их схемы находятся в папке Scheme.
После сборки необходимо прошить FPGA и STM32 микросхемы.
Прошивка STM32 производится через Keil или по USB шнурку в DFU Mode (скриптом STM32/FLASH.bat). Либо через отладочный шнурок ST-LINK v2. Во время прошивки надо держать зажатой кнопку питания.
Прошивка FPGA происходит через программу Quartus шнурком USB-Blaster.
Правильно собранный аппарат отладки не требует, но при возникновении проблем первым делом надо проверить наличие тактовых сигналов:
90 ножка FGPA и тактовый вход АЦП - 122.88мГц, PC9 ножка STM32 - 12.288мГц, PB10 ножка STM32 - 48кГц.
При необходимости, откалибровать трансивер через соответствующее меню
WiFi модуль ESP-01 должен иметь свежую прошивку с SDK 3.0.4 и выше, и AT командами 1.7.4 и новее
Поддерживаются дисплеи ILI9481, ILI9486, HX8357B, HX8357C, ST7796S, RA8875+GT911

  • RF Power - Мощность передачи, %
  • Channel Mode - Канальный режим работы (для LPD/PMR и подобных)
  • Band Map - Карта диапазонов, автоматически переключает моду в зависимости от частоты
  • AutoGainer - Автоматическое управление ATT/PREAMP в зависимости от уровня сигнала на АЦП
  • RF Filters - Управление аппаратными фильтрами (LPF/HPF/BPF)
  • Two Signal tune - Двухсигнальный генератор в режиме TUNE (1+2кГц)
  • Shift Interval - Диапазон расстройки SHIFT (+-)
  • Split Interval - Диапазон расстройки SPLIT (+-)
  • TRX Samplerate - Максимальная ширина панорамы в модах CW/SSB/NFM/DIGI и др.
  • FM Samplerate - Максимальная ширина панорамы в моде NFM/WFM
  • Freq Step - Шаг перестройки частоты основным энкодером
  • Freq Step FAST - Шаг перестройки частоты основным энкодером в режиме FAST
  • Freq Step ENC2 - Шаг перестройки частоты основным доп. энкодером
  • Freq Step ENC2 FAST - Шаг перестройки частоты основным доп. энкодером в режиме FAST
  • CW Freq Step divider - Делитель шага перестройки частоты для CW моды
  • Encoder Accelerate - Ускорение энкодера на больших оборотах
  • Att step, dB - Шаг перестройки аттенюатора
  • DEBUG Type - Вывод отладочной и служебной информации в USB/UART порты
  • Input Type - Выбор аудио входа (микрофон, линейный вход, USB)
  • Callsign - Позывной пользователя
  • Locator - QTH локатор пользователя
  • Transverter Enable - Включить управление внешним трансвертером
  • Transverter Offset, mHz - Смещение частоты внешнего трансвертера, мГц
  • IF Gain, dB - Усиление ПЧ
  • AGC Gain target, LKFS - Максимальное усиление AGC (максимальная громкость при включенном АРУ)
  • Mic Gain - Усиление микрофона
  • Mic Boost - +20db аппаратного усиления микрофона
  • DNR xxx - Подстройка цифрового шумоподавителя
  • SSB HPF Pass - Частота среза ФВЧ при работе в SSB
  • SSB LPF Pass - Частота среза ФНЧ при работе в SSB
  • CW LPF Pass - Частота среза ФНЧ при работе в CW
  • DIGI LPF Pass - Частота среза ФНЧ при работе в DIGI
  • FM LPF Pass - Частота среза ФНЧ при работе в FM
  • Squelch - SSB/FM Шумодав
  • FM Squelch level - Уровень шумодава FM
  • MIC EQ xxx - Уровни эквалайзера микрофона
  • MIC Reverber - Ревербератор микрофона
  • RX EQ xxx - Уровни эквалайзера приёмника
  • RX AGC Speed - Скорость срабатывания АРУ (автоматического регулятора уровня сигнала) на приём (больше-быстрее)
  • RX AGC Max gain - Максимальный уровень усиления при работе AРУ, дБ
  • RX AGC Hold time - Время перед отпусканием усиления АРУ в пиках сигнала, мс
  • TX Compressor Speed - Скорость срабатывания АРУ/компрессора на передачу (больше-быстрее)
  • TX Compressor MaxGain - Максимальное усиление для компрессора
  • Beeper - Звук нажатия клавиш
  • CTCSS Frequency - Частота передачи CTCSS субтона для FM
  • SelfHear Volume - Регулировка громкости самоконтроля относительно общей громкости трансивера
  • WFM Stereo - Выбор между моно и стерео декодером WFM
  • CW Key timeout - Время до остановки режима передачи после отпускания ключа
  • CW Pitch - Отстройка генератора приёма от частоты передачи
  • CW Self Hear - Самоконтроль CW (слышно нажатие ключа)
  • CW Keyer - Автоматический ключ
  • CW Keyer WPM - Скорость ключа, WPM
  • CW Gauss filter - Использовать фильтр с распределением Гаусса (для CW), принимает только пик в центре полосы
  • CW DotToDash Rate - Соотношение длинны тире к точке
  • CW Iambic Keyer - Режим ямбического ключа
  • CW Key Invert - Инвертировать точку/тире на ключе
  • CW PTT Type - Режим перехода на передачу CW: от ключа или от сигнала PTT
  • FFT Zoom - Приближение спектра FFT
  • FFT Zoom CW - Приближение спектра FFT для CW моды
  • LCD Brightness - Управление яркостью экрана (не для всех дисплеев)
  • LCD Sleep Timeout - Время бездействия, перед тем как снизится яркость экрана, сек (0 - фукнция отключена)
  • Color Theme - Выбор темы цветового оформления (0 - черная, 1 - белая, 2 - черная с цветными цифрами)
  • Layout Theme - Выбор темы оформления интерфейса (0 - по умолчанию)
  • FFT Speed - Скорость отображения FFT и водопада
  • FFT Automatic - Автоматическая подстройка шкалы FFT
  • FFT Sensitivity - Верхний уровень чувствительности автоподстройки FFT (чем меньше - тем сигналы контрастней, 30 - выравнивание по сильнейшему сигналу)
  • FFT Manual Bottom, dBm - Нижний порог чувствительности FFT при ручной настройке
  • FFT Manual Top, dBm - Верхний порог чувствительности FFT при ручной настройке
  • FFT Height - Пропорциональная высота отображения FFT и водопада
  • FFT Style - Стиль FFT: 1(градиент), 2(заливка), 3(точки), 4(контур)
  • FFT Color - Цвета FFT и водопада: 1(синий -> желтый -> красный), 2(чёрный -> желтый -> красный), 3(чёрный -> желтый -> зеленый), 4(чёрный -> красный), 5(чёрный -> зеленый), 6(чёрный -> синий), 7(чёрный -> белый)
  • FFT Freq Grid - Сетка на FFT и водопаде: 1(нет сетки), 2(сетка на FFT), 3(сетка на FFT и водопаде), 4(сетка на водопаде)
  • FFT dBm Grid - Сетка мощности сигнала на FFT
  • FFT Background - Градиентный фон за спектром
  • FFT Lens - Режим линзы (увеличения центра спектра)
  • FFT Hold Peaks - Отображать пики сигнала на спектре
  • FFT 3D Mode - Режим 3D FFT 3D (0 - выкл, 1 - линии, 2 - пиксели)
  • FFT Enabled - Включение водопада и FFT
  • WTF Moving - Смещение водопада вместе с изменением частоты
  • FFT Compressor - Сжимать пики при перегрузке FFT
  • FFT Averaging - Уровень усреднения всплесков FFT
  • FFT Window - Выбор окна FFT (1-Dolph–Chebyshev 2-Blackman-Harris 3-Nutall 4-Blackman-Nutall 5-Hann 6-Hamming 7-No window)
  • FFT DXCluster - Отображать данные из кластера поверх спектра
  • FFT DXCluster Azimuth - Добавить данные об азимуте к DX-кластеру
  • FFT DXCluster Timeout - Таймаут отображаемых спотов из DX-кластера в минутах
  • Show Sec VFO - Отображать положение второго VFO на спектре
  • CW Decoder - Программный декодер CW приёма
  • RDS Decoder - Включить RDS декодер для WFM моды
  • RTTY Speed - Скорость данных для RTTY декодера
  • RTTY Shift - Разнос сигналов в полосе RTTY
  • RTTY Freq - Центральная частота декодирования RTTY
  • RTTY StopBits - RTTY стоп-биты
  • RTTY InvertBits - Инверсия битов RTTY
  • ADC Driver - Включение предусилителя-драйвера АЦП
  • ADC Preamp - Включение предусилителя, встроенного в АЦП
  • ADC Dither - Включение дизеринга АЦП для приёма слабых сигналов
  • ADC Randomizer - Включение шифрования цифровой линии АЦП
  • ADC Shutdown - Выключение АЦП
  • WIFI Enabled - Включение WiFi модуля (нужен перезапуск)
  • WIFI Network - Выбор точки доступа WiFi
  • WIFI Network Pass - Установка пароля для точки доступа WiFi
  • WIFI Timezone - Временная зона (для обновления времени через интернет)
  • WIFI CAT Server - Сервер для приёма CAT команд по WIFI
  • WIFI Update ESP firmware - Запуск автообновления прошивки ESP-01 через интернет (если доступно)
  • USB SD Card Reader - Режим SD картридера по USB
  • Export Settings - Экспорт настроек и калибровок на SD карту
  • Import Settings - Импорт настроек и калибровок с SD карты
  • Format SD card - Форматирование SD карты

Calibration [появляется при долгом нажатии кнопки MENU в меню настроек]

Данный синтезатор построен на базе синтезатора частот от трансивера UBITX_V5, по другому она называется RADUINO.

Отличие заключаются в следующем:

1. Изменен контроллер на Arduino Pro Mini (в оригинале Arduino Nano)

2. Изменена схема, а именно добавлены ключики для управления релле ДПФ и усилителя мощности.

3. Изменена прошивка синтезатора, отключен выход 45МГц и перестроен второй выход на ПЧ 8.864МГц (LSB) и 8.867(USB), можно изменять в скетче прошивки, ниже раскажу где. Позже допишу менюшку чтобы можно было указывать ПЧ непосредственно через трансивер.

Принципиальная схема синтезатора (скажу сразу рисовальщик никудышний, но постарался описать все как есть).


Как видим, схема не отличается высокой сложностью и состоит и собственно самого контроллера Arduino Pro Mini (Можно использовать и Nano, Uno), микросхемой синтезатора частот Si5351, а также обвязки для формирования напряжений +5V для Arduino и +3,3V для питания Si5351.

Также на плате присутсвуют Транзисторы для переключения ДПФ построенных на базе BC817 и S8550, данное схемное решение была выбрано из того что находилось под рукой, вместо транзисторных сборок вполне можно использовать микросхему K155ID10 или же её зарубежный аналог 74LS145, но так как данных микросхем у меня небыло сделал вот так, как нарисовано по схеме.

На схеме и на плате, можно также обратить внимание на два разьема IC1 и IC2 для подключения дисплеев.

В этом синтезаторе можно подключить дисплее следующих типов по шине I2C LCD1602, LCD2004, а также можно подключить 2 дисплея LCD1602 (взамен 2004 или если вам информации на LCD1602 покажется мелкая), вот для этого и разрисовал 2 разьема.

Печатная плата в формате lay6

Ниже по ссылке выкладываю плату синтезатора частот, Вы также можете ее редактировать на свой вкус.


Также вы можете скачать его с моего GIT репозитария Ссылка

Настройка синтезатора

1. Чуть позже когда буду возле трансивера, напишу мануал как и где настраивать.

Сборка прошивки из исходных кодов.

Для сборки прошивки нам понадобится:

1. Arduino IDE, скачать можно с официального сайта

2. Плата Arduino Pro Mini (с переходником на USB) либо же другая плата Arduino если вы решили модифицировать под себя.

3. Исходники, которые вы можете скачать выше по ссылкам.

4. Ну и хорошее настроение =)

И так поехали:

1. Запускаем Arduino IDE по ярлыку который у Вас должен появится на рабочем столе после установки.


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


3. По умолчанию частот в прошивке записана 8.864 для LSB и 8.867 для USB, вы же можете поменять данные параметры во вкладке ubitx_20 и параметр SECOND_OSC_LSB и SECOND_OSC_USB, на свои (если ПЧ отличается от моей).


4. Во вкладке ubitx.h вы можете выбрать тип используемого дисплея будь-то LCD1602 или же LCD2004, также возможна работа с цветными дисплеями NEXTION (Так как таких у меня нет в наличии, подтвердить немогу)


5. После всех правок нажимаем кнопочку проверить (отмеченная красным кружком на картинке) и начнется процесс компиляции.


6. Если все хорошо, и небыло допущенно ошибок внизу вы увидите сколько использовано места, значит можно подключать Вашу Arduino и прошивать, не забыв при этом выбрать тип платы, и порт на котором она висит.

Вот блок схема данного трансивера, но это не самая свежая, сейчас есть некоторые изменения, но это наверное не так уже важно

block.jpg


Так же есть схема , это одна из первых схем. Собирать по ней не рекомендую, в ней есть ошибки:

QCX-SSB.jpg

ПО итогу получается вот такой вот наборчик.. но я на этом не остановился,в процессе модернизаций получилось аж 3 версии данного трансивера, и скоро появится 4я версия.)

Но я не совсем любитель QRP и решил сразу на базе данного трансивера сделать более -менее полный трансивер.
Кочечно же был спроектирован корпус, стандартного "мини" размера, с возможностью установки вообще всего что только можно.
Материал- конструкционная сталь 1мм.

3424 (1).jpg
IMG_20210713_233422.jpg
IMG_20210713_233820.jpg
IMG_20210713_233827.jpg
IMG_20210713_233829.jpg

В процессе испытаний основной платы, было принято решение поставить полосовик, следовательно нужно было испытать "диспенсер" PCA9555. Потому что в отличии от оригинальной версии 3х диапазонного полосовика мной было решено использовать обычные РЕЛЕ (очень много купил и они не понадобились, надо рассовывать). Все заработало и далее я заказал кольца Амидон у Кемеровского поставщика. Кольца как всегда пришли в срок , на данный момент собрал 3 диапазона 20-40-80.

Идея радиоприемника на одной микросхеме выглядит довольно увлекательной. Такая возможность интересна особенно мне, потому что, честно говоря, я завидую людям, обладающим навыками в аналоговой схемотехнике, необходимыми для создания радиоприемника. Когда я просматривал литературу на эту тему, я наткнулся на микросхемы от Silicon Labs. Моё внимание привлекла одна из этих микросхем, Si4844-A10. Этот приемник может работать в AM сигналом в диапазонах СВ/КВ и FM сигналом в диапазоне УКВ и предназначен для работы с микропроцессором и компонентами управления, при этом потребуется лишь небольшая антенна. Я не мог удержаться.

Справочные документы

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

Основная схема

Схема радиоприемника

Схема радиоприемника

На рисунке 1 представлена основная схема радиоприемника, взятая и адаптированная из технического описания Silicon Labs Si4844 и рекомендаций по применению. Для приема в диапазоне КВ я использовал ферритовую антенну от старого портативного приемника. Q1 – усилитель для СВ/УКВ, здесь я так же использовал телескопическую антенну от старого приемника. Стоит заметить, что руководство по проектированию, приведенное выше, дает несколько альтернатив и различные подходы к антеннам.

Возможно, наиболее сложная часть сборки – это работа с микросхемой в корпусе SSOP-24. Если у вас нет опыта работы с SMD микросхемами, возможно, самым простым способом будет использование переходной платы. У меня была переходная плата SSOP-28; немного пайки, и с микросхемой стало можно работать, как с микросхемой в DIP корпусе. Другими потенциально трудными компонентами для работы является пара из ферритового фильтра (бусинки) и конденсатора. Эти компоненты также можно припаять на переходную плату, чтобы работать с ними как с DIL элементом.

SMD компоненты, припаянные на переходные платы
SMD компоненты, припаянные на переходные платы

Список компонентов основной схемы
КомпонентОписание
B1Ферритовый фильтр (бусинка) 2,5 кОм (100 МГц)
C1,C2,C5Неполярный конденсатор 4,7 мкФ
C3,C4Конденсатор 22 пФ
C6,C7,C9Конденсатор 0,1 мкФ
C8Неполярный конденсатор 47 мкФ
C10,C11Конденсатор 0,47 мкФ
C12,C14Конденсатор 33 нФ
C13Конденсатор 33 пФ
C15Конденсатор 10 пФ
IC1Радиоприемник Si4844-A10
Q1NPN транзистор SS9018
R1, R2Резистор 2,2 кОм
R3Резистор 1 кОм
R4,R7Резистор 100 кОм
R5Резистор 10 Ом
R6Резистор 120 кОм
R8Резистор 100 Ом
L1Индуктивность 270 нГн
VR1Линейный потенциометр 100кОм
Y1Кварцевый резонатор 32,768 кГц
ANT1Ферритовая антенна
ANT2Телескопическая/штыревая антенна

Подключение Arduino

Подключение Arduino к Si4844-A10
Arduino (3.3 В)Si4844-A10
A5/SCLSCLK
A4/SDASDIO
D2INT
D12RST

Тестирование основной схемы

Когда у вас будет собранная на макетной плате схема, подключенные к ней Arduino и аудиоколонки со встроенным усилителем, вы сможете запустить тестовую программу, которая приведена в архиве в конце статьи (Si4844_Quick_Test.ino). Эта программа выполняет простой тест, который включает питание устройства, устанавливает диапазон FM (УКВ) и предоставляет информацию о версии микросхемы. Если всё пройдет хорошо, вы сможете настроить частоту радиоприемника, повернув ручку VR1, увидите частоту, динамически отображаемую на экране и, конечно, услышите то, что выдает радиоприемник.

Скриншот экрана с результатами вывода тестовой программы

Скриншот экрана с результатами вывода тестовой программы

Если основная схема и ее подключение к Arduino работают, то можно собирать полноценный радиоприемник.

Программирование Arduino

Микросхема Si в этом проекте является ведомым устройство I2C, имеющим фиксированный адрес 0x11; при этом ведущим устройством (мастером) является плата Arduino. Однако скорость обмена информацией по I2C у этой микросхемы относительно медленная: максимальная поддерживаемая скорость 50 кГц. Кроме того, во время процедуры включения питания скорость не должна превышать 10 кГц. Чтобы удовлетворить эти требования, мы должны явно установить у Arduino скорость I2C, которая, как правило, слишком велика для Si4844-A10. К счастью, благодаря большому количеству документации по функциям I2C Arduino, мы можем легко выполнить необходимые изменения.

В принципе, скорость I2C для наших целей определяется в программном обеспечении Arduino двумя переменными. Эти переменные – это TWBR и TWSR . Биты 0 и 1 TWSR управляют предделителем, который работает со значением TWBR для установки скорости I2C. Скорость (тактовая частота) передачи по I2C рассчитывается по формуле:

Частота = Тактовая частота процессора / (16 + (2 * ( TWBR ) * (предделитель))

Arduino Pro mini 3,3В работает на частоте 8 МГц. Чтобы установить скорость I2C на 10 кГц, мы используем значение TWBR 98 и установим предделитель в значение 4 (путем установки в 1 только бита 0 TWSR ). Таким образом,

8 000 000 / (16 + (2 * 98 * 4 )) = 10 000 или 10 кГц

Чтобы установить скорость I2C на 50 кГц, мы используем значение TWBR 18 и установим предделитель в значение 4 (путем установки в 1 только бита 0 TWSR ). Таким образом,

8 000 000 / (16 + (2 * 18 * 4)) = 50 000 или 50 кГц

Для более подробной информации смотрите документацию библиотеки Wire для Arduino. Суть в том, что мы можем выполнить изменение скорости I2C всего парой строк кода, что вы можете увидеть в тестовой программе.

Программирование Si4844-A10

По сути, Arduino посылает команды микросхеме радиоприемника по шине I2C, затем микросхема выполняет запрошенные действия и возвращает информацию о состоянии. Микросхема Si может работать в нескольких режимах, что позволяет настроить в ней точную частоту и нужные параметры. В этом проекте мы используем чип Si4844-A10 в режиме, который принимает предварительно определенные (или стандартные) диапазоны радиочастот с параметрами по умолчанию. Этот режим был выбран потому, что он легко дает доступ к базовому функционалу и при этом предлагает определенную степень настройки.

В данном проекте программное обеспечение будет обеспечивать доступ ко всем стандартным диапазонам, а также к управлению основными параметрами, включая изменение режима (AM/FM/SW), громкость, тон и отключение звука.

Добавление клавиатуры

Для управления радиоприемником нам необходимо устройство ввода. Для наших целей достаточно простой мембранной клавиатуры. Их легко подключить к Arduino. Ниже приведена иллюстрация назначения выводов клавиатуры (где строки, а где столбцы), которую использовал я, вы должны убедиться, что ваша клавиатура аналогична.

Простая мембранная клавиатура
Простая мембранная клавиатура

Подключение клавиатуры к Arduino
КлавиатураArduino
Строка 1D8
Строка 2D9
Строка 3D10
Строка 4D11
Столбец 1D13
Столбец 2D14
Столбец 3D15

В программном обеспечении я использовал библиотеку от Марка Стэнли и Александра Бревига, которая выпущена под лицензией GNU General Public License. Для проекта мы сопоставим функции с кнопками, как показано ниже.

Назначение кнопок для управления радиоприемником

Назначение кнопок для управления радиоприемником

Назначение кнопок клавиатуры:

  • AM: переключить в режим AM (средние волны), диапазон 22;
  • FM: переключить в режим FM (ультракороткие волны), диапазон 8;
  • SW: переключить в режим SW (короткие волны), диапазон 31.

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

Добавление дисплея

Теперь, когда у нас есть устройство ввода, нам необходима возможность отображать настройки радиоприемника. Я не смог придумать ничего лучше, чем использовать дисплей от старых мобильных телефонов Nokia 5110/3310.

Дисплей Nokia 5110/3310

Дисплей Nokia 5110/3310

При работе с этим дисплеем необходимо учитывать два важных момента. Во-первых, существует несколько разновидностей этих дисплеев, и у них могут быть разные распиновки. Вы должны проверить распиновку на своем дисплее, убедиться, что он на самом деле работает от 3,3 В, и проверить правильность подключения к Arduino Pro Mini. Во-вторых, поскольку все входы/выходы Arduino используют напряжение 3,3 В, мне не пришлось использовать понижающие резисторы, которые вы обычно видите, когда эти дисплеи используются 5-вольтовыми платами Arduino, например, Uno.

В программе я решил использовать библиотеку LCD5110_Basic, которая быстра и очень проста в использовании.

На рисунке ниже показан заполненный данными дисплей радиоприемника.

Дисплей Nokia 5110/3310 при использовании в радиоприемнике

Дисплей Nokia 5110/3310 при использовании в радиоприемнике (на скриншоте некорректно показаны единицы измерения частоты mHz, в прошивке это исправлено MHz)

Начиная с левого верхнего угла, мы показываем:

  • строка 1 – режим (AM/FM/SW) и номер диапазона;
  • строка 2 – частотный диапазон;
  • строка 3 – уровни громкости и баса/тембра;
  • строка 4 – текущая частота (МГц или кГц);
  • строка 1 – индикаторы стерео (только для FM) и выключения звука (если активно).

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

Собранный радиоприемник

Ниже представлен собранный на макетной плате проект радиоприемника – возможно, не такой аккуратный, каким мог бы быть (хорошо, здесь полный бардак), но полностью рабочий. Конечно, качество его работы можно улучшить только с помощью окончательной сборки.

Макет радиоприемника на Arduino

Макет радиоприемника на Arduino

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

Я был очень впечатлен качеством приема с учетом того, что это просто макет. В FM всё очень хорошо. На средних волнах тоже всё нормально, и я смог принять довольно много сигналов на коротких волнах. Тем не менее, качество приема может быть улучшено за счет использования нормальных антенн.

Заключение

Это был сложный и приятный проект. Я определенно поражен микросхемой Si4844-A10 и ее возможностями. Этот проект только слегка затронул её функционал и может послужить основой чего-то для более сложного.

Читайте также: