Arduino fm-радио: создание приемника своими руками

Создаем FM-радио на основе платы Arduino Pro Mini

В этом уроке мы создадим своими руками FM-радио на основе платы Arduino Pro Mini в стиле ар-деко с самого начала.

Введение

Мы собираемся создать FM-радиоприемник в стиле ар-деко. Дизайн этого радио основан на впечатляющем радиоприемнике AWA 1935 года. Можно найти фото этого старого радио в Интернете. Дизайн этого радио очень красивый, так что сделать свой радиоприемник в аналогичном стиле – отличный вызов. Ушел ровно месяц на то, чтобы реализовать такой проект с нуля, но повторить результат теперь каждый сможет буквально за один день.

В уроке используется ЖК-дисплей Nokia 5110 для отображения частоты, которую мы слушаем. Используется поворотный регулятор для изменения частоты и другая ручка для увеличения или уменьшения громкости. На фото выше видно, что на ЖК-дисплее FM-радио Ардуино используется шрифт в стиле ар-деко. Кроме того, если мы прослушиваем одну и ту же радиостанцию ​​более 5 минут, радиостанция автоматически сохранит ее в памяти, поэтому при следующем включении радиостанции она автоматически настроится на частоту, которую мы использовали ранее. Радио также имеет встроенную литиевую батарею и соответствующее зарядное устройство, поэтому оно может работать от батарей в течение нескольких дней.

Качество звука проекта довольно хорошее. Используется небольшой динамик 3 Вт с усилителем малой мощности. Радио звучит хорошо, а выглядит еще лучше. Давайте теперь посмотрим, какие детали нужны для создания этого проекта.

Шаг 1. Собираем все комплектующие

Нам понадобится много деталей, чтобы сделать этот проект. Если вы новичок в Arduino, сначала постарайтесь сделать несколько более простых проектов (посмотрите наши уроки), потому что это продвинутый проект и есть много вещей, которые могут быть непонятны или пойти не так.

Итак, нам понадобятся следующие части:

  • Arduino Pro Mini
  • Программатор FTDI
  • Модуль FM-радио TEA5767 FM 76-108MHZ
  • Динамик 3 Вт
  • Модуль усилителя PAM8403
  • Поворотный регулятор
  • ЖК-дисплей Nokia 5110
  • Аккумуляторная батарея, шилд Wemos
  • Аккумулятор 18650
  • Держатель батареи 18650
  • Переключатель
  • Макетная плата 5×7 CM
  • Провода
  • Сетка

Общая стоимость проекта может получиться в районе $22.

Шаг 2. Электроника

Прежде всего, начнем с электронике, которая является основой нашего радио Ардуино. Сейчас используется Arduino Nano, но позже мы будем использовать Arduino Pro Mini для более низкого энергопотребления. Схема всех наших соединений:

Далее, как и в любом проекте (не только радио) мы собираем все детали вместе и тестируем до того, как поместим всё в корпус.

Если мы включим проект, то увидим, что на дисплее Nokia в течение нескольких секунд отображается заставка, а затем радиостанция загружает из памяти EEPROM предыдущую радиостанцию, которую мы слушали. Мы можем изменить частоту и громкость соответственными ручками. Проект работает нормально. Теперь нужно сделать проект меньше по размеру, чтобы уместить его в корпус. Для этого мы собираемся использовать Arduino Pro Mini. Плата очень маленькая по размеру, а также предлагает более низкое энергопотребление. Мы также собираемся использовать маленькую макетную плату для пайки некоторых компонентов на ней. Но перед этим нужно разработать корпус в Fusion 360 – бесплатное, но чрезвычайно мощное программное обеспечение.

Шаг 3. Проектирование корпуса

Поскольку мы собираемся спроектировать сложный корпус и собираемся использовать множество деталей, мы сначала должны смоделировать каждую деталь в Fusion 360. Таким образом, мы будем уверены, что каждая деталь будет идеально подходить и корпус достаточный, чтобы вместить все внутри. Ушло около недели, чтобы научиться моделировать детали в Fusion 360, а затем смоделировать всё остальное. Еще неделя ушла на разработку корпуса в Fusion 360. Скачать все файлы вы можете ниже:

Результат того стоил. Дизайн выглядит фантастически, а все детали отлично располагаются внутри корпуса. Еще одна интересная особенность, которую предлагает Fusion 360 – это возможность создавать высококачественные рендеры вашего дизайна с использованием различных материалов и видеть, как проект будет выглядеть в реальности.

Шаг 4. Печатаем корпус

Проект состоит из 7 частей. Сначала печатаем мелкие детали. Последняя – большая часть корпуса, оказалась сложной для печати. По какой-то причине сопло забивалось каждый раз, когда предпринимались попытки её распечатать. Пришлось перепробовать множество настроек, меняя скорость, отвод, высоту слоя, температуру. Ничего не получалось. Было заменено сопло на 0,5 мм. Тогда же возник вопрос – можно ли возобновить печать неисправной детали после замены забитого сопла? После поиска в Интернете обнаружилось, что это возможно.

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

Шаг 5. Собираем всё вместе

Следующим шагом была задача сжатия электроники, чтобы она поместилась в корпусе. Поскольку уже были смоделированы все детали в Fusion 360, то была уверенность, что это не сложно реализовать. На фото выше и на схеме на одном из предыдущих шагов видно, что каждая деталь имеет свое специфическое положение в корпусе.

Все комплектующие нашего FM-радио Ардуино спаяны согласно схеме, которая была приложена выше. Сначала паяется Arduino Pro Mini и загружается в неё код, используя программатор FTDI. Следующий шаг – создание источника питания для схемы. Использовался аккумуляторный шилд Wemos, очень удобный, который может заряжать аккумулятор 18650 и повышать его напряжение до 5 В. Снимаем разъем аккумулятора с шилда и припаиваем провода от разъема аккумулятора 18650. Далее припаиваем переключатель к выходу 5V.

Затем паяем все остальные детали одну за другой. Это примерно на пару часов работы. На этот раз не используется аудиокабель на аудиовыходе радиомодуля FM, но вместо этого припаиваются провода внизу платы. Сигнал теперь может идти в усилитель для усиления. Также добавляем конденсатор 330 мкФ к шине питания на макетной плате. Это дополнение уменьшило шум на радиосигнале. После того, как все пайки будут сделаны, можно протестировать проект.

Последний пункт этого шага – собрать всё вместе, части корпуса и части электроники. Сначала приклеиваем решетку радиоприемника, а затем приклеиваем сетку. После клеим дисплей обычным клеем, а динамик горячим клеем. Далее горячим клеем закрепляем держатель батареи, выключатель и зарядное устройство. Затем модуль усилителя, поворотный энкодер и, наконец, макетную плату.

Шаг 6. Код для FM-радио

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

Скопировать или скачать код FM-радио Arduino вы можете ниже:

Основная идея такова: если вал поворотного энкодера изменил положение и оставался в одном и том же положении более 1 секунды, нам нужно установить эту частоту для модуля FM-радио.

Радиомодулю FM требуется около 1 секунды, чтобы настроиться на новую частоту. Мы не можем изменять частоту при каждом изменении поворотного энкодера, потому что таким образом изменение частоты будет очень медленным. Когда новая частота установлена на модуле, мы подсчитываем, сколько секунд прошло с момента установки частоты. Если время превышает 5-минутную отметку, мы сохраняем эту частоту в памяти EEPROM.

Итоговый результат

Нам очень повезло, что мы живем в эпоху, когда мы сами можем сделать все, что захотим. У нас есть инструменты и ресурсы для создания всего, что мы хотим, в течение нескольких недель и при низких затратах. Конечный результат стоит времени и усилий, которые вы вложили в него. Вы потратите много часов на этот проект, но узнаете много нового, получите драгоценный опыт и наработаете навыки и уверенность для создания еще более классных проектов.

Конечно, этот проект не идеален. Прием не очень хороший с той антенной, которая была использована. Если вы подключаете USB-кабель к порту зарядки, он действует как антенна и значительно улучшает прием. Кроме того, даже несмотря на то, что код проекта поддерживает кнопку поворотного регулятора для включения или выключения подсветки дисплея, мы не использовали эту функцию, потому что случайно приклеили поворотный регулятор так, чтобы кнопка не могла быть нажата. Конечно, есть много вещей, которые можно улучшить, но в целом проект получился очень познавательным.

FM радио на модуле RDA5708 и Ардуино

Очень простой и тем не менее качественный цифровой FM радиоприёмник можно собрать на китайском модуле RDA5807M и в качестве управления этим модулем и вывода различной информации на ЖК дисплей будет использоваться Arduino. Кроме самого приёма станций модуль умеет получать цифровую информацию RDS от этих станций.

Цифровой радомодуль RDA5807, представляет собой крохотную плату с маленькой микросхемой с 10-тью ножками и кварцем и при своём маленьком размере обеспечивает качественный, чистый приём в диапазоне частот 76 – 108 МГц в стерео режиме, также он имеет цифровую шину I2C по которой общается с микроконтроллером и передаёт данные RDS.

FM радио на модуле RDA5807 и Ардуино

Несколько справочных данных о модуле RDA5807:

  • Поддерживаемый диапазон частот: 50 – 115 МГц;
  • Шаг перестройки: 100 КГц, 200 КГц, 50 КГц и 25 КГц;
  • Потребляемый ток: 20 mA при напряжении 3В;
  • Поддержка цифровых данных формата RDS/RBDS;
  • Напряжение питания от 1.8 до 3.3В.

Для того чтобы сделать FM приёмник нам понадобится:

  • Модуль FM радиоприёмника RDA5807M;
  • Плата Arduino Uno;
  • Дисплейный модуль с дисплеем от Nokia 5110;
  • 3 тактовые кнопки;
  • 3 резистора на 10к;
  • Макетная плата с проводками;
  • Гнездо для наушников;
  • Наушники.

Собираем ФМ приёмник на модуле RDA5807m по этой схеме:

FM радио на модуле RDA5807 и Ардуино

FM радио на модуле RDA5807 и Ардуино

FM радио на модуле RDA5807 и Ардуино

Наушники подключаем по такой схеме:

FM радио на модуле RDA5807 и Ардуино

Подключаем Ардуино USB кабелем к компьютеру и заливаем этот скетч (или вторую версию) — RDA5807_fmradio_3buttons_ver0.ino.

Во второй версии скетча я добавил возможность сохранять значение текущей частоты и шага перестройки в памяти EEPROM — RDA5807_fmradio_3buttons_ver1.ino.

FM радио на модуле RDA5807 и Ардуино

FM радио на модуле RDA5807 и Ардуино

FM радио на модуле RDA5807 и Ардуино

FM радио на модуле RDA5807 и Ардуино

На дисплее вы можете увидеть:

  • Уровень сигнала;
  • В каком режиме идёт приём, стерео или моно;
  • То, что вы можете выбрать кнопками: автопоиск, информация о станции, ручной поиск и громкость;
  • Информация RDS (статические и прокручивающие тексты).

FM радио на модуле RDA5807 и Ардуино

Всё, такой вот несложный и функциональный FM радиоприёмник на модуле RDA5807 и Ардуино получился за короткое время. Вы можете поместить всё в красивый корпус, добавить по желанию усилитель и динамик и получится отличный приёмник с качественным звуком.

Радио на Arduino

Сейчас куда не глянь, везде используют Arduino. Так как эта область мне интересна уже некоторое время, решил все же освоить эту платформу. Для этой цели отлично подошла плата Arduino Nano, а именно версии 3.0 (на основе микроконтроллера Atmega328p) – действительно очень небольшой размер. Удивили кварцевые резонаторы на плате размером 1 мм х 3 мм, причем уже с конденсаторами небольшой емкости. Плату заказывал из Китая с преобразователем USB – UART на микросхеме CH340. Этот вариант более дешевый, чем по сравнению с FT232, но никаких проблем я не вижу, только другие драйвера необходимо устанавливать – специальные для CH340 / 341. В остальном все полностью идентично оригинальным платам Arduino.

Итак, для работы с Arduino нам необходимо установить софт Arduino, посредством которого можно написать код прошивки (прошивка для Arduino называется скетч) и там же в одно нажатие загрузить ее в микроконтроллер. Прошивка происходит через UART (для чего и нужен USB – UART преобразователь), это особенность платформы Arduino, что позволяет без программатора записывать скетчи. На самом деле удобно, а еще достаточно быстро. В целом Arduino у меня создало впечатление того, что это все абсолютно то же самое, что и просто AVR микроконтроллеры, только все переназвано и представлено в другой форме. К слову скетчи компилируются при помощи все того же священного GCC, хотя язык написания программ слегка видоизменен, это уже как бы не Си, но все подчиняется законам языка программирования Си, Си++. Интерфейс софта крайне минималистичен, работает шустро, свои функции выполняет хорошо, а больше и не нужно.

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

Сразу стоит отметить, что по желанию схему можно минимизировать, но об этом чуть позже. В основе схемы заложена плата Arduino Nano 3.0. На ней же имеется микроконтроллер само собой и интерфейс USB для подключения к компьютеру на основе микросхемы CH340. Это позволит нам обмениваться информацией с компьютером. Дальше я использовал модуль согласования уровней I 2 C для безопасной работы с модулем радио RDA5807M, который работает от напряжения 3 (3,3) вольта. На модуле согласования уровней I 2 C помимо транзисторов расположен стабилизатор напряжения на 3,3 вольта, поэтому на схеме этот стабилизатор также присутствует. Другим вариантом может быть использование просто транзисторов для согласования уровней, либо применить специализированную микросхему, например PCA9517 или аналогичные. Тогда стабилизатор напряжения VR1 можно исключить из схемы, а напряжение 3,3 вольта брать от платы Arduino. Резисторы R3, R4 и R5, R6 необходимы для корректной работы интерфейса I2C, образуя высокий уровень на линиях передачи данных. Номинал можно варьировать в разумных пределах. Как это хорошо видно, в качестве FM тюнера используется модуль на основе RDA5807M. Здесь, как минимум в моем случае в городских условиях (много шума от бытовых приборов, бетонные стены и так далее), необходима антенна достаточной длинны, чтобы сигнал принимался более уверенно, кроме того такую антенну желательно расположить ближе к окну, например, чтобы сигнал ловился наименее заглушенный. Звуковой выход модуля радио соединяется с усилителем звуковой частоты на микросхеме PAM8403. Это усилитель D-класса, мощность до 3 Ватт. По качеству звучания достаточно неплох. Цепь усилителя звуковой частоты построена в соответствии с даташитом. Кроме того, уже готовый модуль можно приобрести (как на фото) и использовать при построении подобных схем. Модуль собран по такой же схеме.

Переменные резисторы R7 и R8 регулируют уровень громкости, желательно использовать вообще один сдвоенный резистор. Динамики лучше всего использовать сопротивлением не менее 8 Ом, чтобы не перегружать USB порт компьютера или ноутбука. При нагрузке в 8 Ом, согласно даташиту, выходная мощность составит 1,4 – 1,8 Вт, что укладывается в стандартную мощность USB порта. Хотя на этот счет можно возразить тем, что современные компьютеры давно вышли из рамок 500 мА на порт и могут выдавать больше на самом деле. При подключении динамиков сопротивлением 4 Ом выходная мощность составит 2,5 – 3,2 Вт, что при учете потребления всей схемы не уложится в 500 мА.

Схема собрана на безпаечной плате с применением модулей (шилдов):

При сборке макета из-за отсутствия второго динамика использовался только один правый канал аудио и соответственно один переменный резистор для регулировки звука.

Раз уж схема настраивается посредством софта на компьютере, то и усилитель с динамиками можно выбросить из схемы и подключать либо напрямую к колонкам, либо через аудио разъем подключиться к входу аудио аудиокарты компьютера (обычно это вход для микрофона) и в настройках разрешить выводить звук на колонки. Можно выбрать любой, удобный для вас способ получения звука от радио. В случае, если подключать к колонкам, резисторы, регулирующие громкость R7 и R8, также можно исключить, так как громкость регулируется либо на самих колонках, либо через Windows. Третий вариант это регулировка уровня громкости через настройки радио модуля, но пока что этой функции нет в софте.

Софт, необходимый для поиска станций радио (скачать можно в конце статьи):

С платой Arduino соединяется через USB – UART преобразователь (он уже является частью платы Arduino).

В программке соответственно присутствуют настройки выбора COM порта. Поиск станций осуществляется ползунком. Данные по UART передаются в виде номера канала для модуля радио. Получив эти данные, Arduino сохраняет последний полученный канал радио в память EEPROM и при следующем включении используются параметры, сохраненные в энергонезависимой памяти микроконтроллера. То есть можно один раз настроить через компьютер на любимую станцию (если вдруг вы любитель послушать радио) и включать уже без него – последняя станция будет всегда сохранена. Программа написана на C# в Visual Studio при помощи Windows Forms.

В данной разработке не преследовалось целей сделать что-то супер функциональное, это скорее некоторый опыт работы на основе Arduino со всеми вытекающими последствиями.

К статье прилагается скетч для Arduino, программа FM для настройки станций, видео работы устройства.

Сообщества › Электронные Поделки › Блог › продолжение Ардуино радио(повторенный проект)

уменьшаю кол-во проводов…и делаем плату питания и заряда…АКБ от планшета 3,8 вольта 2500 мампер, для заряда и подачи 5 вольт использовал готовые китай модули проверены временем. пока все навесу.в скором времени закреплю все на деревянную подставку…от корпуса отказался…нормально все равное его не сделать…без ЧПУ

пробовал повторить на про мини…не хочет работать…скорее всего из за модуля фм-ему нужно именно 3.3 вольта на про мини его нет.

Смотрите также

Комментарии 43

1. Куска текстолита могло хватить на изготовление целого шилда — как то не рационально использовал.
2. Корпус не обязательно делать на ЧПУ — при должной усидчивости, можно и руками сделать очень даже качественно.
А так, молодец.

Есть полный список команд от приемника?

Не в коде ардуины совсем нет желания ковыряться.

А ссылки на модуль зарядки не осталось?

Можно более подробно что это такое? Неужели это просто радиоприемник?

просто радио приемник…с выводом инфы на монитор, и у правлением им полностью 3-мя кнопками

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

это не конечный варик…хотелось бы допилить его и сделать в деревянном корпусе под старину

а можно список используемых материалов

Корпус удобно делать их ПВХ пластика мягкого. Таблички рекламщики на них делают. Режеться канцелярским ножом, клеится суперклеем.

спс за идею.буду знать

Материал мягкий- режется как масло, клеится великолепно.
За 15-20 минут любой корпус с окошками (из слюды от упаковок).
И подписывать легко — продавливаеться даже шариковой ручкой.

надо попробовать…а где его приобрести?

У нас на предприятии таблички (пожарные и по ОТ) и стенды из него. Заказываем в рекламных фирмах. Их сча как грязи.
Можно и в нете -называется “ПВХ листовой вспененный (3-4мм)”
Можно на aliexpress.com
Write Foarm PVC sheet plastic. Стоит около 7-9 баков за 2 листа 200-300 мм.

надо попробовать…а где его приобрести?

У нас в нете — 1м2 — 7 баков

pro mini можно запитать от 3.3 вольт

и? я тоже пробовал у меня работает даже на 16 мгц pro mini.
если так не запускается то можно попробовать поставить кристал 8мгц и перепрошить его как 8mhz pro mini через среду ардуино.
у меня работает и с 16mhz

можешь накидать простую схему как ты сделал на про мини? я чет не могу догнать…весь вечер убил чтоб заставить радио работать от про мини

не не могу. я радио не делал. у меня другой был проект и там я использовал батарейное питание. но nokia 5100 там был в одной из ранних версий.

можешь накидать простую схему как ты сделал на про мини? я чет не могу догнать…весь вечер убил чтоб заставить радио работать от про мини

и кстати резистор там на подстветке какой? может у него номинал слишком большой когда перешел на 3.3 в.

резистор подстроечник…подсветка не причем…на дисплее тупо символы не появляются

можешь накидать простую схему как ты сделал на про мини? я чет не могу догнать…весь вечер убил чтоб заставить радио работать от про мини

здесь какой-то пример. arduino-diy.com/arduino-g…-displey-84×48-Nokia-5110
можно его отдельно попробовать. я всегда так делаю. по отдельности отлаживаю как модули взаимодействую а потом их объединяю.

да уже не буду ничего менять…хотел на промини сделать для экономии места. когда хотел изготовить в корпусе…для дощечьки я думаю и уно пойдет…

pro mini можно запитать от 3.3 вольт

модуль тупо шипел…не издавая признаков жизни…а экрану видимо не хватало 3.3 и он тупо не включился

а что за модули?

радио и усилитель. 5100 вроде должен от 3.3 вольт работать.

должен…но не пашет…я весь вечер убил…оставалось только сделать понижение напруги с 5 на 3.3, через ams 1117 3/3 вольта…но я этого не захотел

Китайцы все гораздо проще делают, когда нужно одновременно и 5 и 3.3! )

Они ставят диод или пару, и в итоге из 5 вольт получается примерно 3.3 ))

Ведь на диодах падает напряжение, а на постоянный ток они никак не влияют.

А еще некоторые извращаются, задействовав PWM — ведь с PWM выхода Arduino можно программно получить 3.3 среднее напряжение, не знаю правда насколько это корректно для приемника а не для простой лампочки или моторчика.

Это все довольно интересно и развлекает не один вечер! )

Источники:

http://bestdiy.ru/fm-radio-na-module-rda5708-i-arduino.html

http://cxem.net/arduino/arduino171.php

http://www.drive2.ru/c/459665955350465305/

http://3d-diy.ru/wiki/arduino-datchiki/giroskop-i-akselerometr-gy521-mpu6050/

Ссылка на основную публикацию