Цена:
Не так давно разработка устройств с применением микроконтроллеров представлялась чем-то невероятно сложным, доступным лишь техническим специалистам. Но за последние годы ситуация резко изменилась. Повышение доступности электронных компонентов и появление таких платформ как Ардуино способствовали популяризации данной темы. И сегодня практически любой желающий может собрать собственного робота, домашнюю метеостанцию, радиоприёмник или mp3 плеер. Огромное количество самых разнообразных проектов на базе микроконтроллеров представлено в интернете, и, казалось бы, в таких условиях уже сложно кого-то чем-то удивить.
Если вы ищете что-то действительно оригинальное и интересное, обратите внимание на модуль FM-радиопередатчика SI4713, с помощью которого можно создать FM радиостанцию. Только представьте себе: ваше собственное FM радио у вас дома. Неплохо звучит, не правда ли? Это может стать как интересным любительским проектом, так и послужить основой для входа в мир радиовещания.
Главный компонент данного модуля – микросхема Si4713 производства Silicon Labs – один из лучших FM передатчиков в своём классе. Данный модуль позволяет передавать не только стерео аудиосигнал, но и RDS данные, например, название радиостанции и песни.
Работой передатчика должен управлять микроконтроллер. Как минимум требуется настроить его на определённую частоту, на которой будет вестись вещание. Для этого Si4713 поддерживает три интерфейса, среди которых популярные I2C и SPI. Это позволяет подключать модуль к большинству микроконтроллеров, в том числе Ардуино и Raspberry Pi.
Для подключения источника аудиосигнала на модуле предусмотрен разъем mini-jack 3.5мм. Источником может служить аудиоплеер, компьютер или любое другое устройство c линейным аудиовыходом.
Передатчик Si4713 выполнен полностью по CMOS технологии, что обеспечивает его минимальное энергопотребление. Это первый передатчик, в состав которого входит функционал для определения мощности принимаемого сигнала – RPS (Receive Power Scan). Данный функционал позволяет найти оптимальную частоту для радиовещания. Кроме того в составе передатчика имеется DSP процессор, выполняющий обработку звука для получения оптимальных характеристик перед трансляцией сигнала. Это и другие технические решения, применённые в Si4713, позволяют добиться наилучшего качества звучания в принимающем устройстве. Более подробная информация о микросхеме Si4713 доступна в технической документации.
На плате модуля кроме микросхемы Si4713 располагаются: резонатор на 32.768 кГц, компоненты обвязки, регулятор напряжения на 3.3 В, от которого питается микросхема, и разъем mini-jack 3.5 для подключения источника аудио сигнала. Также на плате разведены следующие контакты:
Забегая вперёд, отметим, что для работы с модулем будет использоваться библиотека от Adafruit, в которой реализовано взаимодействие по I2C. Поэтому для подключения к Ардуино предлагается схема, рассчитанная именно на интерфейс I2C:
Выводы SCL и SDA модуля подключаются к соответствующим выводам Ардуино. Для Ардуино Уно это A5и A4 соответственно. Вход сброса RST может быть подключен к любому свободному выводу Ардуино, в данной схеме – к D12. И остаются входы питания Vin и GND, их подсоединяем к 5V и GND.
Линейный аудиосигнал, например, от mp3 плеера подаётся либо на входы Lin и Rin (общий провод – GND), либо через mini-jack разъем.
Для управления модулем Si4713 предусмотрен набор определённых команд, подаваемых микроконтроллером. Так, например, включение и выключение передатчика, настройка на нужную частоту, установка мощности передатчика – всё это осуществляется путём подачи соответствующих команд. Команды могут иметь аргументы. После получения команды передатчик возвращает ответ – результат её выполнения. И ещё одно понятие в рамках программирования Si4713 – это свойства – особый вид аргументов, применяемые для настройки передатчика, как правило, сразу после его включения. Перечень возможных команд и свойств приведён в технической документации. Руководство по их применению вы найдёте в документе AN332: Universal Programming Guide
Для быстрого начала работы с модулем Si4713 предпочтительнее использовать библиотеку. Ранее уже отмечалось, что планируется использование библиотеки от Adafruit, поэтому сейчас займёмся её установкой. Это может быть сделано с использованием менеджера библиотек: меню Скетч – Подключить библиотеку – Управлять библиотеками. В появившемся окне отфильтруем список доступных библиотек, введя в текстовом поле значение si4713. Единственная оставшаяся в списке библиотека – это искомая Adafruit Si4713 Library. Выделяем её и нажимаем «Установка»:
Если вы предпочитаете добавлять библиотеки вручную, то можете скачать её из репозитория https://github.com/adafruit/Adafruit-Si4713-Library и скопировать в каталог библиотек IDE Arduino.
С библиотекой Adafruit для модуля Si4713 идёт пример скетча, показывающий основные моменты работы с передатчиком. Перед заливкой его в Ардуино измените частоту на заведомо свободную. Для этого найдите в скетче строку
#define FMSTATION 10230 // 10230 == 102.30 MHz
и укажите в ней своё значение.
Теперь можно загрузить тестовый скетч в Ардуино, включить источник аудиосигнала и настроить любой радиоприёмник на заданную частоту для проверки работы модуля.
В скетче присутствует закомментированный фрагмент, использующий описанный ранее RPS функционал. Его назначение – поиск наиболее подходящей частоты для радиовещания. Если вы раскомментируете данный фрагмент и загрузите скетч в Ардуино, то увидите в мониторе порта подобный результат:
Высокие значения здесь (в данном случае 63 на частоте 96.3) говорят о занятости канала. Минимальные значения (33 для частоты 95.1) являются признаком свободной, оптимальной для радиовещания частоты. Вы можете просканировать диапазон для нахождения такой частоты и прописать её в скетче.
begin() – инициализация радиомодуля. С вызова этой функции должна начинаться работа с SI4713
setTXpower(txpwr) – установка мощности передатчика. Параметр txpwr может принимать значения от 88 до 115 (dBμV) или 0 для выключения передачи.
tuneFM(freq) – установка частоты для радиовещания. Чтобы, например, настроить передатчик на частоту 102.3, вызовите эту функцию с параметром freq равным 10230.
readTuneStatus() – данная функция обновляет значения переменных currFreq, currdBuV, currAntCap и currNoiseLevel объекта radio. Эти переменные содержат значения частоты, мощности передатчика, ёмкости варактора в цепи антенны и уровня шума. Ёмкость подбирается автоматически при каждом изменении частоты, чтобы обеспечить оптимальную мощность для данной антенны и частоты. Для получения значения уровня шума на текущей частоте необходимо сначала вызвать функцию readTuneMeasure.
readTuneMeasure(freq) – измерение уровня шума на заданной частоте. Для получения результата измерения необходимо вызвать функцию readTuneStatus, которая обновит значение currNoiseLevel объекта radio.
beginRDS() – инициализация RDS.
setRDSstation(psname) – установка названия радиостанции (значение Programme Service name в терминах RDS). Длина psname не должна превышать 8 символов
setRDSbuffer( buffer) – передача текста длиной до 32 символов, в котором может быть название трека, исполнителя или любая другая информация.
SI4713 имеет три вывода общего назначения, один из которых используется для подключения резонатора. Таким образом, в нашем распоряжении остаются два вывода (GPO1 и GPO2), к которым можно подключить, например, светодиоды для индикации работы передатчика. GPO1 и GPO2 могут находиться в высокоимпедансном состоянии или настроены на вывод HIGH или LOW.
setGPIOctrl(bitmask) – настройка выводов общего назначения. Значение битовой маски bitmask определяет режим работы каждого вывода: 0 – вывод находится в high-Z; 1 – вывод работает в режиме OUTPUT. Пример вызова:
setGPIOctrl((1<<2)); // переключить вывод GPO2 в режим OUTPUT
setGPIOctrl((1<<2) || (1<<1)); // переключить оба вывода в режим OUTPUT
setGPIO(bitmask) – установка значения HIGH или LOW на выводе общего назначения. Тот же принцип, что и для функции setGPIOctrl, например:
setGPIOctrl((1<<2) || (1<<1)); // установить значение HIGH на обоих выводах
setGPIOctrl(1<<2); // установить HIGH на GPO2 и LOW на GPO1
Дальнейшее развитие проекта зависит от вашей фантазии. Можно задействовать модуль SD карты для трансляции музыки с неё. Или подключить модуль со специализированным mp3 декодером, например, VS1053, что позволит транслировать потоковое аудио из сети. GSM модуль может использоваться для выбора трека через СМС или отправки текстовых сообщений для RDS. Вариантов просто масса!
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru