- FM-радио Общее рабочее
- Необходимые компоненты
- Ресивер RDA5807
- Усилитель звука
- Принципиальная схема FM-приемника Arduino
- Расшифровка кода радио Arduino FM
- Работа Arduino FM Radio
Сегодня почти все используют свои мобильные телефоны для прослушивания музыки, новостей, подкастов и т. Д. Но не так давно мы все зависели от местных FM-радио, чтобы получать последние новости и песни, постепенно эти радио теряют популярность, но в чрезвычайных ситуациях, когда Интернет не работает, радиостанции играют важную роль в передаче информации пользователям. Радиосигналы всегда присутствуют в эфире (которые транслируются станциями), и все, что нам нужно, это схема FM-приемника, чтобы улавливать эти радиосигналы и передавать их в аудиосигналы. В наших предыдущих уроках мы также создали несколько других FM-передатчиков и приемников, которые перечислены ниже.
- FM-передатчик Raspberry Pi
- Радиоприемник FM Raspberry Pi
- Схема FM-передатчика
- Схема FM-передатчика без индуктора
В этом уроке мы собираемся построить FM-приемник Arduino и добавить его в наш проектный арсенал. Мы будем использовать микросхему FM-приемника RDA5807 с Arduino и запрограммировать ее так, чтобы воспроизводить любую FM-радиостанцию, которую пользователь может настроить с помощью потенциометра. Мы также будем использовать аудиоусилитель вместе со схемой для управления выходной громкостью нашего Arduino FM-радио, звучит интересно, не так ли? Итак, приступим.
FM-радио Общее рабочее
Радиостанции преобразуют электрические сигналы в радиосигналы, и эти сигналы необходимо модулировать перед передачей через антенну. Существует два метода модуляции сигнала, а именно AM и FM. Как следует из названия, амплитудная модуляция (AM) модулирует амплитуду перед передачей сигнала, тогда как при частотной модуляции (FM) частота сигнала модулируется перед передачей через антенну. На радиостанциях они используют частотную модуляцию для модуляции сигнала, а затем передают данные. Теперь все, что нам нужно построить, это приемник, который можно настроить на определенные частоты и принимать эти сигналы, а затем преобразовывать эти электрические сигналы в звуковые. Мы собираемся использоватьМодуль FM-приемника RDA5807 в этом проекте, который упрощает нашу схему.
Необходимые компоненты
- Ардуино Нано
- Ресивер RDA5807
- Усилитель звука
- Соединительные провода
- Горшок - 100К
- Perf Board
Ресивер RDA5807
RDA5807 - это однокристальный FM- радиотюнер с полностью интегрированным синтезатором. Модуль поддерживает всемирную полосу частот от 50 до 115 МГц, регулировку громкости и отключение звука, программируемое снятие акцента (50/75 мкс), индикатор мощности принимаемого сигнала и SNR, кварцевый генератор 32,768 кГц, цифровую автоматическую регулировку усиления и т. Д. На рис. блок-схема тюнера RDA5807M.
Он имеет цифровую архитектуру с низкой ПЧ и включает малошумящий усилитель (LNA), который поддерживает диапазон FM-вещания (от 50 до 115 МГц), программируемый регулятор усиления (PGA), аналого-цифровой преобразователь высокого разрешения и высококачественные цифро-аналоговые преобразователи (ЦАП). Ограничитель предотвращает перегрузку и ограничивает количество продуктов интермодуляции, создаваемых соседними каналами. PGA усиливает выходной сигнал микшера и затем оцифровывает его с помощью АЦП. Ядро DSP управляет выбором канала, FM-демодуляцией, стереофоническим MPX-декодером и выходным аудиосигналом. RDA5807 Цоколевка диаграмма для IC приводится ниже.
Модуль работает на источник питания 1,8 - 3,3. При переходе в состояние покоя и выборе интерфейса управления модуль сбрасывается, когда VIO находится в состоянии включения питания, а также поддерживает мягкий сброс с помощью триггера бита 1 с 0 на 1 адреса 02H. Модуль использует связь I2C для связи с MCU, и интерфейс начинается с условия запуска, байта команды и байтов данных. RDA5807 имеет 13 16-битных регистров, каждый из которых выполняет определенную функцию. Адреса регистров начинаются с 00H, присвоенного идентификатору чипа, и заканчиваются 0FH. Во всех 13 регистрах некоторые биты зарезервированы, а некоторые - для чтения / записи. Каждый регистр выполняет такие задачи, как изменение громкости, изменение каналов и т. Д. В зависимости от назначенных им битов.
Мы не можем напрямую использовать модуль при подключении его к цепи, так как контакты замыкаются. Итак, я использовал перфорированную плату и несколько штыревых контактов и припаял каждый штырь модуля к каждому штыревому контакту, как показано на рисунке ниже.
Усилитель звука
Аудиоусилитель - это электронное устройство, которое усиливает маломощные электронные аудиосигналы до уровня, достаточного для управления громкоговорителями или наушниками. Мы построили простой аудиоусилитель с использованием LM386, схема для него показана ниже, и вы также можете проверить ссылку, чтобы узнать больше об этой схеме, а также проверьте другие схемы аудиоусилителя.
Принципиальная схема FM-приемника Arduino
Мы использовали два потенциометра для настройки диапазона FM и регулировки громкости аудиоусилителя. Чтобы изменить громкость, вы можете изменить потенциометр, который подключен между 1 и 8- м контактами LM386, или потенциометр, подключенный к контакту 3 LM386. На рисунке ниже показана полная принципиальная схема Arduino FM Radio.
Я немного изменил усилитель. Вместо двух потенциометров в усилителе я использовал только один. Я поменял местами потенциометр, который используется для изменения усиления, на резистор. Итак, теперь в нашем проекте есть два потенциометра: один для настройки, а другой - для изменения громкости. Потенциометр, который используется для настройки канала, подключен к Arduino nano. Центральный контакт потенциометра подключен к контакту A0 Arduino nano, а любой из оставшихся двух контактов подключен к 5V, а другой - к GND. Другой горшок используется для регулировки громкости радио и подключается, как показано на рис.
Выводы A4 и A5 Arduino подключены к выводам SDA и SCL RDA5807M. имейте в виду, что модуль приемника работает только от 3,3 В. Итак, подключите вывод 3v3 Nano к выводу VCC модуля приемника. После того, как подключения были установлены, моя настройка выглядела так
Расшифровка кода радио Arduino FM
Код инициализирует модуль приемника, а затем устанавливает канал с заданной частотой. Когда значение, считываемое nano на выводе A0, изменяется (путем изменения потенциометра), частота изменяется, что, в свою очередь, меняет канал. Полный код приведен в конце страницы.
Мы начинаем нашу программу с добавления необходимой библиотеки проводов для связи с RDA5807. Затем в переменной «канал» устанавливаем значение канала. Каждый раз, когда радио запускается, оно автоматически настраивается на этот канал.
#включают
Затем мы загрузим байты в каждый регистр на нашей RDA5807 IC, чтобы установить нашу первоначальную конфигурацию. На этом этапе мы перезагружаем приемник.
uint8_t boot_config = {/ * регистр 0x02 * / 0b11000001, 0b00000011, / * регистр 0x03 * / 0b00000000, 0b00000000, / * регистр 0x04 * / 0b00001010, 0b00000000, / * регистр 0x05 * / 0b10001000, 0b000011x11, / * 0b00000000, 0b00000000, / * регистр 0x07 * / 0b01000010, 0b00000010,};
После того, как мы перезагрузили устройство, мы можем настроить его. Для настройки канала нам нужно запрограммировать только первые 4 байта. Эта часть кода изменит канал на желаемую частоту. В I2C сначала мы начинаем передачу, записываем или читаем данные, а затем завершаем передачу. В этой ИС приемника нам не нужно указывать адрес, поскольку в таблице данных четко указано, что интерфейс I2C имеет фиксированный начальный регистр, то есть 0x02h для операции записи и 0x0Ah для операции чтения.
uint8_t tune_config = {/ * регистр 0x02 * / 0b11000000, 0b00000001, / * регистр 0x03 * / (канал >> 2), ((канал & 0b11) << 6) - 0b00010000};
При настройке мы инициализируем конфигурацию загрузки (сброс), а затем настраиваемся на канал, записывая байты конфигурации настройки в RDA5807M.
void setup () {Serial.begin (9600); pinMode (A0, ВХОД); / * Подключение к FM-тюнеру RDA5807M: * / Wire.begin (); Wire.beginTransmission (RDA5807M_ADDRESS); Wire.write (boot_config, BOOT_CONFIG_LEN); Wire.endTransmission (); Wire.beginTransmission (RDA5807M_ADDRESS); Wire.write (tune_config, TUNE_CONFIG_LEN); Wire.endTransmission (); }
При использовании потенциометра для настройки на частоту я столкнулся с проблемой. Значения, считываемые выводом A0, непостоянны. Слышен шум желаемого значения. Я использовал керамический конденсатор 0,1 мкФ, подключенный между A0 и GND, хотя шум был минимизирован, он не до желаемого уровня. Итак, мне пришлось внести некоторые изменения в код. Сначала я записал показания, на которые влияет шум. Я обнаружил, что максимальное значение шума равно 10. Поэтому я написал программу таким образом, что она будет учитывать новое значение только в том случае, если разница между новым значением и старым значением того же вывода больше 10. а затем настраивается на нужный канал.
void loop () {int channel1 = 187, avg = 0, newA; статический int oldA = 0; int результат = 0; newA = analogRead (A0); если ((newA - oldA)> 10 - (oldA - newA)> 10) {Serial.println (newA); если (newA! = oldA) {канал = channel1 + (newA / 10); myChangeChannel (канал); oldA = newA; }}} // конец цикла
Эта функция используется для установки байтов в массиве tune_config, а затем передает данные на IC RDA5807M по протоколу I2C.
void myChangeChannel (int channel) {/ * void, если ничего не возвращается, иначе int * / tune_config = (channel >> 2); tune_config = ((канал & 0b11) << 6) - 0b00010000; Wire.begin (); Wire.beginTransmission (RDA5807M_ADDRESS); Wire.write (tune_config, TUNE_CONFIG_LEN); Wire.endTransmission (); }
Работа Arduino FM Radio
Когда модуль включен, наш код сбрасывает RDA5807-M IC и устанавливает его на канал желаемого пользователя (Примечание: эта частота принимается в качестве базовой частоты, с которой частота будет увеличиваться). При изменении потенциометра (подключенного к A0) значения, считываемые Arduino Nano, изменяются. Если разница между новым и старым значением больше 10, наш код будет учитывать это новое значение. Канал изменяется в зависимости от изменения нового значения от старого. Увеличение или уменьшение громкости зависит от потенциометра, который подключен между контактом 3 и GND.
По окончании сборки и программирования у вас будет собственное FM-радио. Полное описание работы FM-радио можно найти в видео по ссылке внизу этой страницы. Надеюсь, вам понравился проект и вы узнали что-то полезное. Если у вас есть какие-либо вопросы по поводу запуска этого проекта, вы можете оставить их в разделе комментариев или воспользоваться нашими форумами для получения другой технической помощи.