Захотелось мне разобраться с FM модулями на базе RDA5807 с целью выжать из них по максимуму возможностей.
У меня уже есть пара проектов, в которых они используются. Но из-за специфики проектов, особенно ampcontrol, приходится искусственно ограничивать их функционал. Потому что, когда поддерживаются 5-6 разных FM-тюнеров, сложно продумать всё так, чтобы из каждого выжимать по максимуму. Приходится ограничиваться некими базовыми вещами вроде настройки на определённую станцию. Хорошо ещё, если удаётся из тюнера достать некоторые данные вроде уровня сигнала, стереоиндикации и т.п. О вещах вроде автосканирования уже и речи не идёт.
Поэтому один из поддерживаемых тюнеров, RDA5807, не раскрывает всего своего потенциала.
Вот я и решил попробовать сделать отдельный проект чисто под него. Хотя, если честно, с точки зрения архитектуры есть задел и на другие тюнеры.
Коль скоро тюнер умеет RDS, в качестве дисплея взят мелкий недорогой OLED дисплей на SSD1306.
За пару выходных был написан код на базе уже имеющихся наработок и получилось что-то уже более-менее работающее, пусть пока и в виде россыпи модулей и проводов.
Основная идея - получить карманный радиоприёмник, но умеющий показывать RDS.
Что уже реализовано:
- Собственно приём станций;
- Приём информации RDS;
- Поиск станции вверх и вниз;
- Регулировка громкости;
- Запоминание последних параметров при выключении;
- Уход дисплея и МК в режим сна при отсутствии нажатий в течение 10 секунд (тюнер продолжает играть);
- Уход всей системы в сон по длительному нажатию кнопки питания.
Что планируется:
- Ручной поиск;
- Автопоиск по всему диапазону;
- Расширение поддержки RDS.
На данный момент в плане RDS поддерживается:
- поле PS (8 символов, обычно - название станции, но иногда в нём станции прокручивают и другую информацию)
- (?) поле TEXT. (64 символа). Тут я не уверен, потому что у меня условия приёма плохие, и те станции, что там что-то передают у меня не очень хорошо принимаются. Поэтому нужно тестирование на стороне
Ещё в RDS может передаваться и текущее время, и кое-какая другая информация, но тут я уже не уверен, что в Минске кто-то вообще это передаёт.
Тут на сайте уже было несколько статей и устройств на базе RDA5807, но всё там как-то не очень. Во-первых, авторы с какого-то перепугу не делятся исходниками, во вторых, с RDS тоже особо никто не заморачивается. Поэтому этот проект задуман именно как полностью открытый - как в плане исходников, так и новых идей к реализации.
В общем, если кого заинтересовало, вот базовая схема:
Ну а исходники у меня, как водится, на гитхабе: https://github.com/WiseLord/oledfm
Скомпилировать их самостоятельно не должно быть проблемой (как и прочие мои проекты), но, если что, обращайтесь.
В любом случае, буду пока выкладывать файлы прошивок на Dropbox.