«

»

Распечатать Запись

Радио на 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, было решено создать небольшой проект, а именно радио с управлением через персональный компьютер. В итоге родилась схема, по которой собираем устройство:0Сразу стоит отметить, что по желанию схему можно минимизировать, но об этом чуть позже. В основе схемы заложена плата Arduino Nano 3.0.  На ней же имеется микроконтроллер само собой и интерфейс USB для подключения к компьютеру на основе микросхемы CH340. Это позволит нам обмениваться информацией с компьютером. Дальше я использовал модуль согласования уровней I2C для безопасной работы с модулем радио RDA5807M, который работает от напряжения 3 (3,3) вольта. На модуле согласования уровней I2C помимо транзисторов расположен стабилизатор напряжения на 3,3 вольта, поэтому на схеме этот стабилизатор также присутствует. Другим вариантом может быть использование просто транзисторов для согласования уровней, либо применить специализированную микросхему, например PCA9517 или аналогичные. Тогда стабилизатор напряжения VR1 можно исключить из схемы, а напряжение 3,3 вольта брать от платы Arduino. Резисторы R3, R4 и R5, R6 необходимы для корректной работы интерфейса I2C, образуя высокий уровень на линиях передачи данных. Номинал можно варьировать в разумных пределах. Как это хорошо видно, в качестве FM тюнера используется модуль на основе RDA5807M.

Здесь, как минимум в моем случае в городских условиях (много шума от бытовых приборов, бетонные стены и так далее), необходима антенна достаточной длинны, чтобы сигнал принимался более уверенно, кроме того такую антенну желательно расположить ближе к окну, например, чтобы сигнал ловился наименее заглушенный. Звуковой выход модуля радио соединяется с усилителем звуковой частоты на микросхеме PAM8403. Это усилитель D-класса, мощность до 3 Ватт. По качеству звучания достаточно неплох. Цепь усилителя звуковой частоты построена в соответствии с даташитом. Кроме того, уже готовый модуль можно приобрести (как на фото) и использовать при построении подобных схем. Модуль собран по такой же схеме.1Переменные резисторы R7 и R8 регулируют уровень громкости, желательно использовать вообще один сдвоенный резистор. Динамики лучше всего использовать сопротивлением не менее 8 Ом, чтобы не перегружать USB порт компьютера или ноутбука. При нагрузке в 8 Ом, согласно даташиту, выходная мощность составит 1,4 – 1,8 Вт, что укладывается в стандартную мощность USB порта. Хотя на этот счет можно возразить тем, что современные компьютеры давно вышли из рамок 500 мА на порт и могут выдавать больше на самом деле. При подключении динамиков сопротивлением 4 Ом выходная мощность составит 2,5 – 3,2 Вт, что при учете потребления всей схемы не уложится в 500 мА.2Схема собрана на безпаечной плате с применением модулей (шилдов):34При сборке макета из-за отсутствия второго динамика использовался только один правый канал аудио и соответственно один переменный резистор для регулировки звука.

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

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

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

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

Прикрепленные файлы:

cxem.net

Постоянная ссылка на это сообщение: http://meandr.org/archives/29071

2 комментария

  1. mefi73

    В какой программе можно создать такую схему? Proteus и Splan делают какие то безликие схемы.

    1. Aleksej

      Почему же, в Splan такую можно нарисовать.

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