Носимое FM-радио в стиле часов с сенсорным экраном
Носимое FM-радио в стиле часов с сенсорным экраном
Радио остается одним из самых живучих и незаменимых средств связи, сохраняя свою актуальность и по сей день. Его эволюция – от больших, громоздких устройств к компактным, портативным формам – была поразительной. Это устройство продолжает эту эволюцию, создавая один из самых маленьких носимых и портативных FM-радиоприемников на сегодняшний день.
Были разработаны две инновационные версии: носимое FM-радио в виде часов и еще одна, достаточно компактная, чтобы поместиться в наушнике. Версия в виде часов построена на базе IndusBoard Coin V2 диаметром всего 3 см.
Он оснащен круглым LCD GC9A01 диаметром 3 см с сенсорным интерфейсом, работающим от микросхемы сенсорного драйвера CST816S, как показано на рис. 1. Необходимые компоненты for для сборки устройства перечислены в таблице спецификации.
Рис. 1. Авторский прототип for — портативного FM-радиоприемника в виде часов
Вторая версия предназначена для работы в качестве компактного FM-радио, размещенного непосредственно в наушнике. Прототип этой версии скоро будет описан в другой статье.
Цель этих разработок — сделать FM-радио как можно меньшим и удобным для ношения, независимо от того, интегрировано ли оно в наушник или легко встроено в IndusBoard. Для достижения последнего был выбран FM-стерео радиомодуль RDA5807M.
В этой статье описывается конструкция компактного FM-радиоприемника с сенсорным дисплеем. В следующей статье мы рассмотрим вторую версию, которая помещается в наушник.
Для начала необходимо установить несколько основных библиотек через диспетчер библиотек Arduino, доступный из меню инструментов. К ним относятся: `TFT_eSPI` for управление дисплеем, `CST816S` for управление сенсорным экраном, `RDA5807M` for функция FM-радио и `TimeLib` for управление функциями часов.
Рис. 2: Конфигурация for отображается в файле User_Setup.h библиотеки TFT_espi
После установки библиотек необходимо настроить библиотеку `TFT_eSPI` для поддержки дисплея GC9A01. Для этого необходимо перейти в папку «Документы», открыть каталог Arduino, получить доступ к папке «Библиотеки» и найти в ней папку «TFT_eSPI». Внутри него необходимо открыть файл `User_Setup.h` и раскомментировать строку, соответствующую отображению GC9A01. Затем контакты SPI необходимо настроить в соответствии с настройками IndusBoard.
Можно использовать любые доступные контакты на плате. В этом case контакты 21, 1, 3, 4, 5, 6, 7, 8 и 9 использовались for для дисплея и сенсорного интерфейса. Эти определения контактов должны быть правильно отражены в коде. На рис. 2 показана конфигурация for, отображаемая в файле User_Setup.h библиотеки TFT_eSPI.
Рис. 3. Фрагмент кода for, устанавливающий контакты for сенсорного драйвера
В исходный код сначала включаются необходимые библиотеки, а затем устанавливается for драйвер сенсорного экрана. Затем создается базовый пользовательский интерфейс (UI) for FM-радио с тремя кнопками: воспроизведение/пауза и двумя for переключения каналов.
Код отслеживает координаты касания, чтобы определить, какая кнопка нажата, и выполняет соответствующее действие, например изменение частоты FM или переключение воспроизведения и паузы.
Схема и работа
Рис. 5 показана принципиальная схема миниатюрного ФМ-устройства. Он построен на базе GC9A01 (MOD1), IndusBoard Coin V2 (MOD2), сенсорного экрана CST816, стереорадиомодуля RDA5807M FM, двух динамиков (SP1 и SP2), Li-Po батареи 3,7 В и нескольких других компонентов.
Рис. 5: Принципиальная схема
Сенсорный дисплей и FM-радио используют связь по протоколу I²C for, что позволяет подключать их либо к одному и тому же порту I²C на плате IndusBoard Coin, либо к разным портам. Для простоты в этой настройке используются разные порты. Выводы SDA и SCL for сенсорного дисплея определены в коде и подключены соответственно, как показано на схеме. Драйвер сенсорного экрана использует аппаратные контакты I²C 8 и 9. Сам дисплей использует SPI и подключается к контактам SPI IndusBoard, как определено ранее в файле UserSetup.
IndusBoard Coin V2 обеспечивает питание 3,3 В через контакт VIN или 3 В, который питает дисплей GC9A01, сенсорный контроллер CST816S и FM-радиомодуль RDA5807M. Общее заземление (GND) используется всеми компонентами для обеспечения правильной работы.
Строительство
Для вывода звука FM к разъему аудиовыхода динамика можно подключить аудиоразъем или динамик. Рекомендуется использовать аудиоразъем, позволяющий использовать наушники или динамик по своему усмотрению. В этом устройстве использован динамик со встроенным усилителем. Оба динамика (SP1 и SP2) подключены к контактам LOUT и ROUT RDA5807M для обеспечения вывода стереозвука.
Для сборки этого компактного носимого FM-устройства компоненты припаиваются к задней стороне IndusBoard Coin V2, while, дисплей GC9A01 устанавливается поверх платы for, обеспечивая хорошую видимость.
Процесс пайки начинается с подготовки IndusBoard Coin V2. Необходимые контакты обозначены на схеме. К ним относятся такие контакты, как 3V, GND, TX, RX и цифровые контакты с 1 по 44. Плату следует очистить, чтобы избежать проблем с пайкой.
FM-модуль RDA5807M и сенсорный контроллер CST816S припаяны к задней части платы для экономии места.
Для FM-модуля RDA5807M контакт 5 (SCLK) подключен к контакту 5 (SCL) IndusBoard, контакт while 4 (SDIO) подключен к контакту 6 (SDA). Контакт 2 (GND) подключен к любому доступному контакту заземления, например контакту 1, а контакт 7 (VDD) подключен к контакту 3 В, например for, контакту 2. Контакты 9 (LOUT) и 10 (ROUT) припаяны непосредственно к динамикам (SP1 и SP2) для включения вывода стереозвука. Небольшой антенный провод подсоединяется к контакту 3 (FMIN) и фиксируется для обеспечения эффективного приема сигнала.
Для сенсорного контроллера CST816S контакт 6 (SCL) припаян к контакту 5 IndusBoard, а контакт 5 (SDA) подключен к контакту 6, разделяя шину I²C с модулем FM. Контакт 4 (RST) подключен к контакту 4, а контакт 3 (INT) подключен к контакту 3 на плате IndusBoard. Заземление и питание подаются путем подключения контакта 2 (GND) к контакту заземления, а контакта 1 (VDD) к контакту 3 В. На рис. 6 показаны компоненты, паянные с помощью IndusBoard.
Рис. 6: Компоненты, паяные с помощью IndusBoard
Интеграция FPC
IndusBoard Coin также поддерживает и размещает собственную экосистему FPC. Пользовательские модули могут быть разработаны для беспрепятственной интеграции с использованием шины FPC. Например, можно разработать специальный FM-радиомодуль для подключения к IndusBoard Coin через разъем FPC. На рис. 7 показан двусторонний PCB проекта, а на рис. 8 – IndusBoard с разъемом FPC.
Рис. 7: PCB устройства
Тестирование
Чтобы протестировать устройство, подключите его к аккумулятору напряжением 3,3 В и выполните следующие проверки:
Рис. 4. Интерфейс FM-радио
Изменить FM-станцию с помощью кнопок
В интерфейсе отображаются три сенсорные кнопки:
• Предыдущая кнопка (слева, с координатами prevButtonX=60, prevButtonY=150): серый круг с левым треугольником и тонким прямоугольником
• Кнопка «Далее» (справа, с координатами nextButtonX=180, nextButtonY=150): серый круг с прямоугольным треугольником и тонким прямоугольником
• Проверьте предыдущую кнопку:
– Нажатие этой кнопки уменьшает частоту на 0,1 МГц (пример for с 87,5 МГц до 87,4 МГц)
– Если частота падает ниже 87,5 МГц, она возвращается к 108,0 МГц.
– Дисплей обновляется, показывая новую частоту (пример for, «87,4 МГц»)
• Проверьте кнопку «Далее»:
– При нажатии этой кнопки частота увеличивается на 0,1 МГц (пример for: с 87,4 МГц до 87,5 МГц)
– Если частота превышает 108,0 МГц, она возвращается к 87,5 МГц.
– Дисплей обновляется соответствующим образом.
Воспроизведение и пауза с помощью средней кнопки
Средняя кнопка — это кнопка воспроизведения/паузы (с координатами `playPauseButtonX=120`, `playPauseButtonY=150`) с радиусом 30 пикселей и эффектом градиента (пурпурное внешнее кольцо, фиолетовое внутреннее кольцо).
• Тестовое воспроизведение:
– Нажмите кнопку воспроизведения/паузы.
– Если радио приостановлено («isPlaying=false»), на кнопке отображается значок воспроизведения (треугольник). Нажатие на него включает звук RDA5807M и меняет значок на символ паузы (два прямоугольника).
– Если радио воспроизводится (`isPlaying=true`), на кнопке отображается значок паузы. Нажатие на него отключает звук RDA5807M и меняет значок на символ воспроизведения.
• Аудиовыход:
– Если RDA5807M обнаружен (обозначается зеленой точкой состояния), звук должен быть слышен через динамик, подключенный к контактам LOUT/ROUT RDA5807M, когда звук радиомодуля включен.
– Настройтесь на известную FM-станцию (между 87,5 и 108,0 МГц) с помощью кнопок «Предыдущий/Следующий» for очистите аудиовыход.
– Если RDA5807M не обнаружен (обозначается красной точкой состояния), устройство переключается в режим моделирования, обновляя пользовательский интерфейс без генерации звука.
Рис. 8: IndusBoard с разъемом FPC
Отладка и дополнительные проверки
• Использование последовательного монитора:
– Подключите IndusBoard к компьютеру через адаптер USB-последовательный порт (используя контакты TX/RX, доступен if).
– Проверьте сообщения for, такие как «RDA5807M обнаружен» или «RDA5807M не обнаружен, работает в режиме моделирования», чтобы подтвердить состояние радиомодуля.
– Отслеживание координат касания при нажатии кнопок (например, «Обнаружено касание – Raw (x, y): (1234, 567) Mapped (x, y): (89, 234)»).
• Точность касания:
– Если сенсорные кнопки не реагируют или работают неточно, соответствующим образом измените отображение координат в коде.
Вторая версия FM-радио, помещающаяся в наушник, скоро будет опубликована.
Все ссылки на книги и журналы, представлены на этом сайте, исключительно для ознакомления, авторские права на эти публикации принадлежат авторам книг и издательствам журналов!
Подробно тут! Жалоба