Реклама ⓘ
Главная » Arduino
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Радио на 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

Сразу стоит отметить, что по желанию схему можно минимизировать, но об этом чуть позже. В основе схемы заложена плата 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 Ватт. По качеству звучания достаточно неплох. Цепь усилителя звуковой частоты построена в соответствии с даташитом. Кроме того, уже готовый модуль можно приобрести (как на фото) и использовать при построении подобных схем. Модуль собран по такой же схеме.

Переменные резисторы 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 для настройки станций, видео работы устройства.

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
Плата Arduino
Arduino Nano 3.0
1 Поиск в магазине ОтронВ блокнот
IC1 Усилитель звуковой частотыPAM84031 Поиск в магазине ОтронВ блокнот
IC2 Модуль FM радиоRDA58071 Поиск в магазине ОтронВ блокнот
VR1 Стабилизатор напряженияXC6206P3321 Поиск в магазине ОтронВ блокнот
T1, T2 MOSFET-транзистор
2N7002
2 Поиск в магазине ОтронВ блокнот
R1-R6 Резистор
10 кОм
6 Поиск в магазине ОтронВ блокнот
R7, R8 Подстроечный резистор10 кОм2 Поиск в магазине ОтронВ блокнот
C1, C3-C5 Конденсатор1 мкФ4 Поиск в магазине ОтронВ блокнот
C2, C8, C10 Конденсатор100 нФ3 Поиск в магазине ОтронВ блокнот
C6, C7 Конденсатор470 нФ2 Поиск в магазине ОтронВ блокнот
C9, C11 Конденсатор10 мкФ2 Поиск в магазине ОтронВ блокнот
Ls1, Ls2 Динамик8 Ом2 1 ВтПоиск в магазине ОтронВ блокнот
VD1, VD2 Диод Шоттки
SS14
2 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

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

Теги:

Опубликована: Изменена: 27.10.2015 0 6
Я собрал 0 3
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 3 чел.

Комментарии (45) | Я собрал (0) | Подписаться

0
халил #
За конструктивную особенность не скажу, а вот впервые увидел, что выходной сигнал закорачивался. Регуляторы громкости вообще финиш.
Ответить
0
dimaris #
Ну может так было удобней и красивей схему рисовать, регулятор громкости есть и регулирует же однако...
Ответить
0
kip96 #
Вот так и китайцы говорят, когда нам откравенное г продают. При таком раскладе RDA надо жменю покупать было.
Ответить
0

[Автор]
Gauss #
Согласен, что регулятор не очень красивый, вопрос с этой стороны решаем резисторами ом на 47 с выходов модуля
Ответить
0
EGOR #
Поменять местами подключение выводов R7, R8 средний и нижний по схеме, нелогичней?
Ответить
0

[Автор]
Gauss #
Вот именно, что вариантов масса - как удобно, как нравится, как кому логичней
Ответить
0
EGOR #
Правильный всего один. Выход НЧ радиоприемного модуля нагружается на полное сопротивление переменного резистора R7, R8, со среднего вывода которого, в свою очередь, снимается необходимый уровень сигнала и подается на вход усилителя. А так, у вас регулятор тембра какой-то получился.
Ответить
0

[Автор]
Gauss #
Вы правы больше, конечно, чем я, хотя и так, и так регулирует - если все же смущает это, исправлю в схеме
Ответить
0
EGOR #
Тогда и диоды добавь на схеме, параллельно сток-исток транзисторов Т1, Т2. Я понимаю, что эти диоды интегрированы в сам транзистор, но схема без них не читается. Смотришь, и не понимаешь, как это работает, а с диодами сразу все на места становится.
Ответить
0

[Автор]
Gauss #
Как скажешь. Хотя достаточно странно добавлять элементы в схему чисто для читаемости
Ответить
0
EGOR #
Без этих диодов схема согласования уровней вообще не может работать. А принципиальная схема нужна, при всем прочем, что бы раскрыть принцип работы. Ну и поскольку в твоей схеме эти диоды играют важную роль, было бы логично показать их наличие на принципиальной схеме. Я бы даже в описании указал на то, что транзистор должен быть с диодом, на случай подбора замены. Так что, ничего "странного", и не "чисто для читаемости", а для ясности. Не надо думать, что это наезд там и прочее, нет, это просто совет. Ведь, очевидные для тебя вещи, не являются очевидными для других, согласись.
Ответить
0

[Автор]
Gauss #
Да нет, я даже рад с адекватным человеком обсудить все, принять советы. Я про подбор элементов тоже подумал, но посмотрел даташиты на все полевики, что мне приходилось паять. Все без исключения имеют такой диод, возможно, смысл если только кто-то решит использовать старые элементы или что-то из отечественной линейки (не вкурсе по отечественным)
Ответить
0
Виталий #
Было бы очень хорошо, если бы был еще и исходник на visual studio
Ответить
0

[Автор]
Gauss #
А для чего?
Ответить
0
tzzz #
А можно динамики на 4 Ом использовать?
Ответить
-1
Halex #
Да это стандартная нагрузка для PAM8403. Именно при ЕЙ он развивает 3W на канал. Но (!!!), не забудьте , что по версии Gauss вся "кухня" запитана по USB, а усилки класса D, хоть и суперэкономны, но в пике тоже "кушать хоЧУт". Соизмеряйтесь с параметрами конкретного USB конкретного Вашего питальника USB.
Что касается Gauss, ну, пусть "дурдуино", но никак не понимаю, что - мысля дальше "тупого" приёма никак? И, это при навеске на управу 328-й меги...(!!!). Про "траурный, похоронный" интерфейс управляющей программы скорбно умолчу (грешно о покойнике...). Понимаю, что это типа "проба пера" в Винде, но реализация, мягко выражаясь на 2 с "-". НедалЁко Вы ушли от прежнего... А "шелезяки" позволяют, да просто кричат!!!
Ответить
0
Tig #
Слова человека, который ничего не собрал кроме "ведра помидоров и теперь ими хвастается и разбрасывается". В отличии от вас Gauss хотя бы помогает всегда, а без мелких недочетов в схеме разбираться не интересно (тогда думаешь и соображаешь, что лучше так и так). А фантики и бантики вешайте сами себе, если вы любитель этой ерунды.
Ответить
0

[Автор]
Gauss #
Можно, если использовать внешний источник питания достаточной мощности вместо USB
Ответить
0
Tig #
Идея интересная, можно и на курсовую взять
Ответить
0

[Автор]
Gauss #
Да хоть на диплом
Ответить
0
#
Можно ли сделать так, чтобы при пропадании сигнала радио из эфира/ Ардуино давал какой-либо гудок на динамик?
Ответить
0

[Автор]
Gauss #
Интересный вопрос, на любой из частот теоретически может быть волна, если с заданной частот волна пропадает, то это можно определить только на слух, не помну каких-то таких функций в модуле
Ответить
0

[Автор]
Gauss #
Если только не определять по RSSI - уровню принимаемого сигнала
Ответить
0
Big.Orca #
Да, именно по уровню сигнала. В RDA5807 нет такого выхода?
Ответить
0

[Автор]
Gauss #
Есть внутренний регистр RSSI
Ответить
0
Yury316 #
Посмотрел даташит, у внутреннего регистра нет внешнего выхода. А если добавить по аудиовыходу компаратор?
Ответить
0

[Автор]
Gauss #
Ну конечно нету, это просто регистр, данные нужно обработать и выводить через вывод МК
Ответить
0
Алекс #
Можно ли переделать программу, чтобы выйти немного за фм диапазон до 119Мгц?
Ответить
0

[Автор]
Gauss #
Support worldwide frequency band: 50 -115 MHz
Ответить
0
Кирилл #
А можно взять радио модуль на tea5767?
Ответить
0

[Автор]
Gauss #
Сравни даташиты на них, если регистры такие же, то - да, а если нет, то - нет
Ответить
0
Кирилл #
Как понять "регистры"?
Ответить
0

[Автор]
Gauss #
В даташите информация такая... там описываются возможные функции и настройки, которые можно программировать
Короче ответ на вопрос выше - нельзя
Ответить
0
irobot #
Собрал по упрощенной схеме, ардуино нано плюс модуль радио, залил скетч, запустил прогу управляющую, выбрал порт. Нажал открыть и тишина, сканирование не работает, в порт ничего не пришло, открывал терминал в нем смотрел, что нано посылает.
До этого заливал скетч простой установки частоты приема, настройка на городскую вещалку, само собой заработало. А с этой программой не работает
Ответить
0

[Автор]
Gauss #
А нано ничего и не посылает, он принимает
Может быть просто не тот порт выбирали после нажатия кнопки "скан" для выбора порта и его открытия? При этом к этому порту не должно ничего быть подключено, типа arduino ide или прочего
Ответить
0
irobon #
// читаем полученные данные по uart
if (Serial.available() > 0) {
while (Serial.available()) {
ch[0] = Serial.read(); //13
ch[1] = Serial.read(); //10
ch[2] = Serial.read(); // сотни
ch[3] = Serial.read(); // десятки
ch[4] = Serial.read(); // единицы
ch[5] = Serial.read(); //10

}

// переставим полезные данные, чтобы преобразовать в строку
ch[0] = ch[1];
ch[1] = ch[2];
ch[2] = ch[3];
ch[3] = 0;
ch[4] = 0;
ch[5] = 0;

String str(ch);

// преобразуем строку в число
n = str.toInt();

// выводим результат
Serial.write(n);
SetFreq(n);
EEPROM.write(address, n);

if (n < 210) {
digitalWrite(13, HIGH);
}
if (n > 210) {
digitalWrite(13, LOW);
}
//Serial.write(n);
delay(40);
}

}
Вот кусок кода который при приходе символа передает данные в порт. Пробовал через терминал, лабуду выдает в порт. При настройке управляющей программы выбирал порт на котором ардуино, нажимал батон открыть. Само собой IDE была закрыта, чтобы порт был свободен
Ответить
0

[Автор]
Gauss #
Собрал по-новой схему, прога шлет данные от 0 до 210 (это частота настройки: это число + 870 получаем частоту, умноженную на 10), ардуина принимает, единственно что-то я не поймал ни одной станции шипит и шипит, момент переключения частоты четко прослеживается по звуку шипения
Странно, конечно, что ни одной станции не поймал... У вас так же или совсем молчит и не инициализируется?
новые версии IDE врятли причина
Отредактирован 17.10.2016 22:43
Ответить
0

[Автор]
Gauss #
Странно обложили - даже на заводское радио поймал сейчас только одну волну и ту с помехами
Ответить
0

[Автор]
Gauss #
Интересно вообще получается, даже радио в машине очень плохо ловит в некоторых точках района теперь, в том числе и возле дома
Ответить
0

[Автор]
Gauss #
Да, это БП регистратора шумит на всю бортсеть - импульсные источники, особенно дешевые для радио схем не подходят - нужно или от аккумулятора, или от нормального бп питать
Ответить
0
irobot #
Нет никакой реакции из окна программы. Когда без программы запускаю терминал, в порт ничего не идет. Может дело в том что конвертер usb на ch341?
Ответить
0

[Автор]
Gauss #
Да не будет ничего просто так идти в терминал - сами же код смотрели - если что-то пришло в ардуину, то только тогда будет ответ
В любом случае какой бы не был переходник usb-uart, данные должны идти, хотя именно с 341 не сталкивался
Понятия не имею куда копать - ардуинами только баловался, тонкостей особо не знаю с ними
Ответить
0
Юрий #
Собирал более простые приемники - сильная радиопомеха от цифровой части. Даже в Москве не слышны самые интересные станции, например 105.0 МГц. В Вашей схеме не понятно, как бороться.
Ответить
0

[Автор]
Gauss #
Запитаться от не шумящего источника напряжения и будет все нормално
Ответить
0
oZGeek #
Вот кому надо, сама программа (код) для этой схемы, только на Java. Из минусов: нету сканера портов, есть погрешность. Может когда-то доделаю по уму, но сейчас есть то что есть.

Почти как оригинал.

Ссылка на GitHub
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Arduino UNO
Arduino UNO
Ручной фен 450 Вт с регулировкой температуры Discovery V8
вверх