Сейчас куда не глянь, везде используют 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. Это позволит нам обмениваться информацией с компьютером. Дальше я использовал модуль согласования уровней 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 | Усилитель звуковой частоты | PAM8403 | 1 | Поиск в магазине Отрон | ||
IC2 | Модуль FM радио | RDA5807 | 1 | Поиск в магазине Отрон | ||
VR1 | Стабилизатор напряжения | XC6206P332 | 1 | Поиск в магазине Отрон | ||
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)
Прикрепленные файлы:
- Радио на Ардуино и настройкой через ПК.rar (15 Кб)
- Driver_CH340_CH341SER.zip (188 Кб)
Комментарии (45) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
Что касается Gauss, ну, пусть "дурдуино", но никак не понимаю, что - мысля дальше "тупого" приёма никак? И, это при навеске на управу 328-й меги...(!!!). Про "траурный, похоронный" интерфейс управляющей программы скорбно умолчу (грешно о покойнике...). Понимаю, что это типа "проба пера" в Винде, но реализация, мягко выражаясь на 2 с "-". НедалЁко Вы ушли от прежнего... А "шелезяки" позволяют, да просто кричат!!!
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
Короче ответ на вопрос выше - нельзя
До этого заливал скетч простой установки частоты приема, настройка на городскую вещалку, само собой заработало. А с этой программой не работает
[Автор]
Может быть просто не тот порт выбирали после нажатия кнопки "скан" для выбора порта и его открытия? При этом к этому порту не должно ничего быть подключено, типа arduino ide или прочего
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 врятли причина
[Автор]
[Автор]
[Автор]
[Автор]
В любом случае какой бы не был переходник usb-uart, данные должны идти, хотя именно с 341 не сталкивался
Понятия не имею куда копать - ардуинами только баловался, тонкостей особо не знаю с ними
[Автор]
Почти как оригинал.
Ссылка на GitHub