Просмотр полной версии : Еще один вариант FM радио.
Конструктор от мастер кит MP1090S (http://www.masterkit.ru/main/set.php?code_id=1184274) или MP1090 (http://www.masterkit.ru/main/set.php?code_id=1140174). Можно также использовать что нибудь типа tea5767 (http://www.aliexpress.com/wholesale?SearchText=tea5767&catId=400103&initiative_id=AS_20140530094415) но на этом чипе мне не удалось достичь приемлемого качества приема.
Подключаем радио к ардуине. Ардуиной управляем радио по i2c, а андроидом управляем ардуиной по Serial. Звук пойдет мимо андроида непосредственно на усилитель, но у некоторых чипов есть регулировка громкости звука. У tea5767 нет.
Интерфейс у меня нарисован таскером (https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&hl=ru). Связь между ардуино и таскером немного модифицированная программа Arduino Uno Communicator (https://play.google.com/store/apps/details?id=com.primavera.arduino.listener&hl=ru).
Вот (http://www.youtube.com/watch?v=FEwi0LcXyI4&feature=youtu.be) небольшая демонстрация работы. Извините за качество видео и особенно звука. Поздно. Не мог громко включить. Мне казалось, что радио слышно хорошо, а на самом деле не очень.
А в качестве бонуса вся эта система дает возможность управлять планшетом с пульта (http://youtu.be/ZxPzMzXP-Pw).
Задумка интересная, только проверить бы еще, как будет прием в машине при движении.
Звук можно и в аудио инпут звуковой карты вывести, программа для этого есть в ветке про радио. Если качество приема в автомобиле будет достойным, можно будет и наш интерфейс прикрутить, тогда совсем бюджетно получится.
А учитывая то, что через ардуино можно легко реализовать резистивные кнопки, пульт ДУ, энкодер, да и "мозги" для блока питания, то вообще песня получается. Правда только для тех, кто понимает в программировании хотя бы на уровне школьной программы.
Shino Kuyo
31.05.2014, 14:41
так так так
подпишусь
радио нужно :)
cherkasoff
31.05.2014, 16:44
У меня Tasker не хочет принимать extra.DATA от Uno Communicator. Как у вас это реализовано?
Нормально таскер эктсрасы принимает. Доступны в задаче как локальные переменные. Имена экстрасов преобразовываются:
в нижний регистр,
точки заменяются на "_"
и т.д.
Более подробно в документации (http://tasker.dinglisch.net/userguide/en/intents.html)
С Uno Communicator проблема в другом он шлет поток байтов. Не строк а именно байтов. без начала и без конца. Я его немножко доработал чтобы слал строки и кусками до конца строки. И чтобы работал в фоне, но так ка для меня java как для эскимоса древнегреческий, то сделал это абы-как. Было бы здорово, если бы кто-то умеющий программить под андроид довел эту софтинку до ума.
cherkasoff
31.05.2014, 20:10
Нормально таскер эктсрасы принимает. Доступны в задаче как локальные переменные. Имена экстрасов преобразовываются:
в нижний регистр,
точки заменяются на "_"
и т.д.
Более подробно в документации (http://tasker.dinglisch.net/userguide/en/intents.html)
Переменная доступна, но в ней содержится какая-то херня. Ардуино отправляет serial.printl(1), а в переменной каких-то 8 символов.
Может покажете скетч Ардуино и скрипт Таскера для примера?
Кстати говоря. Ардуиной не обязательно управлять по шлангу. Mожно и через bluetooth. Для этого можно использовать amarino (http://www.amarino-toolkit.net/) делает то же что и Uno Communicator, но по bluetooth. Есть api (http://www.amarino-toolkit.net/tl_files/doc/index.html)
Работает со строками. Имеет встроенный терминал и некое подобие обработок событий. В передаваемые строки добавляет в начало свои символы. Нужно иметь это в виду при обработке на ардуино.
Программа хорошая но немного сыроватая. Бывает крашится. Бывает отваливается. Мне не удалось получить список подключенных устройств. Т.е. из таскера не понять подключен ты к ардуине или нет.
Переменная доступна, но в ней содержится какая-то херня. Ардуино отправляет serial.printl(1), а в переменной каких-то 8 символов.
Может покажете скетч Ардуино и скрипт Таскера для примера?
Вот из-за этого и пришлось дорабатывать Communicator.
Вот (https://www.dropbox.com/s/tjvhtzabpxbyh8a/ArduinoCommunicatorActivity.zip) доработанные сорцы, apk там тоже есть. Может кто-нибудь до ума доведет...
cherkasoff
31.05.2014, 21:47
Вот из-за этого и пришлось дорабатывать Communicator.
Вот (https://www.dropbox.com/s/tjvhtzabpxbyh8a/ArduinoCommunicatorActivity.zip) доработанные сорцы, apk там тоже есть. Может кто-нибудь до ума доведет...
А с доработанной хитрость какая-то есть? Потому как у меня с ней то же самое показывает что и недоработанная.
Да вроде нет хитрости никакой. А точно приложение обновил? Иконка в строке уведмлений появилась?
А по поводу 8 симолов - это 4 байта.
дай угадаю: 00 01 0A 0D? ага?
2 байта на тип int, + перевод строки + возврат каретки
cherkasoff
31.05.2014, 22:52
Да вроде нет хитрости никакой. А точно приложение обновил? Иконка в строке уведмлений появилась?
А по поводу 8 симолов - это 4 байта.
дай угадаю: 00 01 0A 0D? ага?
2 байта на тип int, + перевод строки + возврат каретки
Нет. Сделал по получению интента задачу Flash с текстом %primavera_arduino_intent_extra_data, так оно показывает строку [B@42a3db38 или что-то типа того. Причем часть [B@4 - постоянная, а остальное меняется, хотя Arduino всегда отправляет 1.
Точно обновил, иконка появилась.
А ведь я обманул. Хитрость то есть. Я добавил дополнительную экстру
primavera.arduino.intent.extra.string
данные нужно брать с нее.
Т.е. в таскере это будет
%primavera_arduino_intent_extra_string
cherkasoff
01.06.2014, 11:52
А ведь я обманул. Хитрость то есть. Я добавил дополнительную экстру
primavera.arduino.intent.extra.string
данные нужно брать с нее.
Т.е. в таскере это будет
%primavera_arduino_intent_extra_string
Во, так работает! Спасибо! :)
А для передачи в Arduino используете так как в документации написано или тоже допилили что-то?
как в документации
Не опробоваи еще на практике, что то на столе не очень прием.
не опробовал. В моем месте так же и обычное радио ловит, да еще вместо антенны был кусок провода на столе.
Конструктор от мастер кит MP1090S (http://www.masterkit.ru/main/set.php?code_id=1184274) или MP1090 (http://www.masterkit.ru/main/set.php?code_id=1140174). Можно также использовать что нибудь типа tea5767 (http://www.aliexpress.com/wholesale?SearchText=tea5767&catId=400103&initiative_id=AS_20140530094415) но на этом чипе мне не удалось достичь приемлемого качества приема.
Подключаем радио к ардуине. Ардуиной управляем радио по i2c, а андроидом управляем ардуиной по Serial. Звук пойдет мимо андроида непосредственно на усилитель, но у некоторых чипов есть регулировка громкости звука. У tea5767 нет.
Интерфейс у меня нарисован таскером (https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&hl=ru). Связь между ардуино и таскером немного модифицированная программа Arduino Uno Communicator (https://play.google.com/store/apps/details?id=com.primavera.arduino.listener&hl=ru).
Вот (http://www.youtube.com/watch?v=FEwi0LcXyI4&feature=youtu.be) небольшая демонстрация работы. Извините за качество видео и особенно звука. Поздно. Не мог громко включить. Мне казалось, что радио слышно хорошо, а на самом деле не очень.
А в качестве бонуса вся эта система дает возможность управлять планшетом с пульта (http://youtu.be/ZxPzMzXP-Pw).
А можно чуть подробнее про коммуникацию по usbserial?
Уже неделю бьюсь - отправлять в порт на Mega2560 могу только силами USB Serial Monitor Lite, остальные терминалы не могут до Меги достучаться. А тут еще и Таскер прикручен - предел мечтаний для меня.
Модифицированную Arduino Uno Communicator установил, соединение до Mega2560 прошло.
Можно поподробнее, что именно в Tasks Tasker'a добавить, для отправки по serial "0" или "1" ?
Собрал все в кучу. Примерка (http://youtu.be/N2KEl3IlyfE)и качество приема
pokertk обмен происходит с помощью механизма интентов (http://developer.android.com/reference/android/content/Intent.html) для того чтобы отправить сообщение на ардуино нужно отправить интент с action primavera.arduino.intent.action.SEND_DATA. В него нужно добавить Extra (переменную с данными) primavera.arduino.intent.extra.DATA.
В таскере это можно сделать двумя способами
1. с помощью действия Разное Send Intent
там где действие будет: action primavera.arduino.intent.action.SEND_DATA
Там где extra: action primavera.arduino.intent.action.SEND_DATA:ВашаСтро ка
2. С помощью действия Скрипт-Run Shell
А там уже am broadcast -a action primavera.arduino.intent.action.SEND_DATA -e action primavera.arduino.intent.action.SEND_DATA "Ваша строка" (пишу по памяти, проверить негде). На прошивке от Тимура эта команда почему-то хочет выполняться только под рутом.
Я пользуюсь вторым вариантом.
Для получения данных с ардуино создаем профиль Событие - Система - Intent Recived. В действие пишем primavera.arduino.intent.action.DATA_RECEIVED
В задаче этого профиля вам будет доступна переменная %primavera_arduino_intent_extra_string со строкой переданной из ардуино.
Профиль будет отрабатывать при каждом приеме данных из ардуино.
а зачем весь этот огород если тем же таскером можно читать-писать данные напрямую, из serial-устройства.
а зачем весь этот огород если тем же таскером можно читать-писать данные напрямую, из serial-устройства.
Во как! А с этого момента можно поподробней? Как таскером писать-читать напрямую в Serial устройство? С удовольствием откажусь от огорода.
обычные чтение\запись файла. /dev/tty* в линуксе же устройства-файлы ;)
Да вот не монтируется оно в tty. По крайней мере далеко не на всех планшетах. И в этом гемор большой.
Да вот не монтируется оно в tty. По крайней мере далеко не на всех планшетах. И в этом гемор большой.
А не в том ли дело, что на большинстве таблеток из коробки USB-OTG, вместо USB-Host?
Поначалу тоже устройство не определялось как положено.
Помогло приложение USB Host Check (http://4pda.ru/pages/go/?u=http%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fd etails%3Fid%3Dorg.tauruslabs.usbhostcheck)
Софтина под рутом модифицировала android.hardware.usb.host и handheld_core_hardware.xml.
После OTG превратился в Host и стало возможно достучаться до Arduino, и пообщаться с ней через терминал.
pokertk скорее всего так и есть. Про USB Host Check я не знал.
Кроме того непосредственная работа с файлом не очень удобна в плане чтения. Нужно постоянно мониторить файл (тобишь крутить что-то в цикле) а тут пришел интент - выполнил задачу. Не пришел - не выполнил.
вы в какуюто пердь полезли. как по вашему работают usb-gps? там обычный сериал. ядро увидело устройство-выставили нужные права на файл, скорость порта и вперед. какие-то костыли, подпорки у вас. зачем так жить?
Без понятия как работает usb-gps. Но сильно подозреваю, что зависит от программы которая с ним работает. Могу только сказать, что далеко не каждое устройство монтируется в андроиде как serial, а android работает с ним через свой api, а не через linux устройство.
Я 2 недели протрахался пытаясь запустить arduino serial устройство. И у меня ничего не вышло. И никто ничего толком не смог подсказать. Планшет, правда, был не нексус, а устройство на MTK 6577. Если расскажете что нужно сделать, чтобы ардуино увиделся на нем Serial, буду прям очень рад.
не стоит так категорично утверждать ;) вот для начала нужно понять как ондроед работает с устройствами и почитать соответствующие топики на этом форуме. тогда не придется в пустую трать столько часов своей жизни.
не стоит так категорично утверждать ;) вот для начала нужно понять как ондроед работает с устройствами и почитать соответствующие топики на этом форуме. тогда не придется в пустую трать столько часов своей жизни.
Дроид из коробки с устройствами работает на уровне модуля в ядре. Нет модуля - нет устройства.
Планшет, правда, был не нексус, а устройство на MTK 6577. Если расскажете что нужно сделать, чтобы ардуино увиделся на нем Serial, буду прям очень рад.
Думается, что в MTK6577 нет OTG.
Что за модель планшета? Банально флешку видит?
Нет модуля - нет устройства.
как показала практика-для pl2303 это не критично ;)
как показала практика-для pl2303 это не критично ;)
Это не только для profilic'a не критично. При условии рута, полноценного USB-Host и поддержки в программе требуемого чипа, отсылать и получать данные с устройства возможно.
Arduino Uno Communicator (https://play.google.com/store/apps/details?id=com.primavera.arduino.listener) с маркета принимает данные, но как и положено ему в виде байтов
Доработанное приложение (https://www.dropbox.com/s/tjvhtzabpxbyh8a/ArduinoCommunicatorActivity.zip) пишет System Ready! но принимать данные с дуины отказывается, пишет "Use END_ on end message"
и тут мы возвращаемся в венду и тащим в систему всякий глючный скам. при том что есть штатные средства
а зачем весь этот огород если тем же таскером можно читать-писать данные напрямую, из serial-устройства.
А можно увидеть пример скрипта таскера для отправки в Serial?
и тут мы возвращаемся в венду и тащим в систему всякий глючный скам. при том что есть штатные средства
Это еще нормально. Связка sl4a + python-for-android + кучка библиотек и выполнение скрипта вызовом из Tasker'a - вот где огород, а интенты веСЧь!
А можно увидеть пример скрипта таскера для отправки в Serial?
Отправить как раз проблем нет echo чей-то > /dev/ttyХзКакой
Гораздо интересней увидеть реализацию чтения.
Или бесконечный цикл + ждать рулит?
таскер разве не умеет читать файл?
если нет то shell cat /dev/tty*
брррр, сколько всего написали. если сильно надо - можно попробовать отправлять -принимать через шелл-скрипты, это гораздо более кошернее.
один скрипт содержит что типа
echo что-то > /dev/ttyUSBX
второй по циклу читает из этого /dev/ttyUSBx и что-то делает в зависимости от того, что принято.
но вообще я каждый раз удивляюсь, на что способны люди, лишь бы не изучить пару книг по жаве-андроиду и написать все по-человечески.
там открыли файл - записали-прочитали и нарисовали на экране. все. никаких таскеров, левых скриптов и прочей мути.
УРААА! Радио доделал. Очень доволен качеством приема. Радио ловит ощутимо лучше на ту же самую недоантенну чем дешевая магнитола, которая стояла ранее. Теперь можно озаботиться установкой нормальной антенны.
Кому интересно, можете посмотреть, как это выглядит в живую (http://youtu.be/1mgvsDjrXbU).
Shino Kuyo
05.06.2014, 08:05
АГОНЬ
kristal0211
05.06.2014, 08:30
Отлично, ещё бы связать с этой программой (http://**************/androidsoft/radio), тогда вообще шикарно будет и недорого.
Надеюсь Daniel поспособствует этому.
К тому же если писать программу с нуля, можно отказаться от костылей в виде Uno Communicatora. Жаль, что у меня скилл "java программист" не прокачан.
А в программе Daniel есть intent api?
Timur PERM
08.06.2014, 08:23
Может по потробнее развернете тему для малопонятных...многие будут очень признательны. А так решение действительно классное
К тому же если писать программу с нуля, можно отказаться от костылей в виде Uno Communicatora. Жаль, что у меня скилл "java программист" не прокачан.
А в программе Daniel есть intent api?
А зачем intent api? Программа работает, как самостоятельное приложение со всеми функциями.
Чтобы адаптировать функционал программы под это радио, нужно кое-что понять:
Есть ли RDS?
Как организовать вывод звука?
Через вход usb-dac?
Осуществлять аппаратное микширование источников планшет/радио на входе в усилитель?
Как прием в движении? Уровень помех от телевышек, радаров и т.п.?
Программу можно будет адаптировать где-то к концу лета. Надо закончить текущие дела и отдохнуть. За это время нужно собрать всю информацию. Пока, конечно, сплошные костыли.
P.s.: Оффтоп - сейчас ковыряю рамку такую же, как на видео. Полочку, на которой у тебя стоит планшет, я спилил вровень, и на остаток спила одел уплотнитель от стеклопакета. В результате - нижняя кромка нексуса ушла заподлицо, а уплотнитель аккуратно повторил изгиб кромки рамки.
А зачем intent api? Программа работает, как самостоятельное приложение со всеми функциями.
Чтобы адаптировать функционал программы под это радио, нужно кое-что понять:
Есть ли RDS?
Как организовать вывод звука?
Через вход usb-dac?
Осуществлять аппаратное микширование источников планшет/радио на входе в усилитель?
Как прием в движении? Уровень помех от телевышек, радаров и т.п.?
Программу можно будет адаптировать где-то к концу лета. Надо закончить текущие дела и отдохнуть. За это время нужно собрать всю информацию. Пока, конечно, сплошные костыли.
P.s.: Оффтоп - сейчас ковыряю рамку такую же, как на видео. Полочку, на которой у тебя стоит планшет, я спилил вровень, и на остаток спила одел уплотнитель от стеклопакета. В результате - нижняя кромка нексуса ушла заподлицо, а уплотнитель аккуратно повторил изгиб кромки рамки.
intent api чтобы управлять таскером. Чтобы можно было прикрутить пульт ДУ или кнопки на руле. Чтобы можно было так же реализовать всплаывющие сообщения. Да мало ли еще для чего. Кроме того я вообще не хочу видеть никакую программу. Кто смотрел мои ролики, возможно обратили внимание на мою организацию интерфейса. Из одних и тех же экранных кнопок я управляю и плеером и ФМ радио и Интернет радио. Т.е. одна и та же кнопка ставит на паузу и интернет радио и плеер в зависимости от того, что сейчас играет. Одна и та же кнопка пролистывает трэк и переходит на следующую избранную станцию. Что позволяет создать действительно УДОБНЫЙ и ФУНКЦИОНАЛЬНЫЙ интерфейс, хоть и несколько неказистый. Это кстати к вопросу о "Красивой " оболочке (http://www.pccar.ru/showthread.php?t=18617) из соседней темы. Не хочу раздувать холивар, так что дальше в порядке офтопа и ИМХО.
Эти так называемые оболочки полная фигня. И вот почему.
Оболчку видно только первые 30 сек. после загрузки планшета. А у хорошей хозяйки вообще не видно, так как сразу после загрузки запускаются какие то полезные программы. Как по мне, так обычным начальным экраном CarPC должно быть приложение на котором видно окружающую дорожную обстановку. У меня это яндекс навигатор. А пялиться на логотип мазды или субару.... Ну не знаю...
Вся магия "красивости" заканчивается как только начинают использоваться приложения. Которые все сделаны в абсолютно разной стилистике и цветовой гамме.
Никак не решена проблема быстрого переключения между приложениями, запуска приложений и управления приложениями.
Отъедается здоровенный кусок экрана под никому не нужную нижнюю панель и экранные кнопки, в которые еще нужно умудриться попасть.
Создание этих "оболочек" отнимает у людей время, которое можно было бы потратить с пользой.
Офтоп закончил.
Теперь по пунктам.
В данном конкретном конструкторе RDS нет.
Как организовать вывод звука не знаю. У меня с радио идет на усилитель. Громкостью управляю самим чипом FM. Т.е. уровень громкости системы и ФМ независимы, хоть и управляются одними и теми же кнопками. А можно связать их и управлять сразу обоими. Когда мне не нужно радио, я отправляю приемник в StandBy, когда надо бужу. Проблем нет.
Прием как в обычной магнитоле. Лично я разницы не заметил, так же как влияния каких-то помех. В общем радио как радио. Нормальный чип. Нормальная обвязка. Как всегда решает антенна и питание. Но питание идет с ардуины, так что тут проблем нет.
В принципе, лично мне программа не очень нужна. То что сейчас у меня работает, вполне устраивает. Единственно, возможно, когда-нибудь доведу до ума Uno Communicator. Чтобы он не вылезал на передний план при подключении. В остальном все стабильно и хорошо.
Программа управляется с кнопок на руле, с клавиатуры, да с чего хочешь, т.к. она реагирует на мультимедиа клавиши, как штатный аудио плеер. В том числе, обрабатывает аудиофокус. В теме все описано. Таскер ей не нужен.
То, что тебе программа не нужна, это твой личный выбор, и его никто оспаривать не собирается. Просто, как я понял, народ хочет и бюджетно, и удобно. А одним приложением, функционал и интерфейс которого уже готов, можно убить этих двух зайцев. Нужно только переписать модуль обращения к устройству и заменить команды управления. Возможно, для большей универсальности, вырежем из кода audioloopback и снимать сигнал с радио придется отдельным каналом, не отправляя его в систему.
В общем, если желающие будут, программу перепишем под бюджет. Плохо, конечно, что нет RDS. :sad2: С ним было бы привлекательнее.
Вопрос по звуку: как ты подключил к усилителю одновременно планшет и радио? Собрал сумматор или просто спаял джеки между собой?
На самом деле на усилителе клемная колодка. Поэтому спаял джеки более близкий вариант. Еще рассматривал вариант коммутации через эту штуку (http://masterkit.ru/main/set.php?code_id=1203557), но как-то вроде не зачем...
А по поводу приложения я только за. Делай конечно. Дело благородное.
Maxim Droy
09.06.2014, 16:25
Судя по видео, качество не ахти, только пару станций. Я добивался такого качества на SDR-стике за 5 баксов. Когда будут тесты с нормальной антенной?
Вы про это (http://www.youtube.com/watch?v=1mgvsDjrXbU&feature=youtu.be) видео или которое в шапке? Вроде больше пары станций...
Maxim Droy
11.06.2014, 20:28
Вы про это (http://www.youtube.com/watch?v=1mgvsDjrXbU&feature=youtu.be) видео или которое в шапке? Вроде больше пары станций...
Да, про это. Я на sdr-стике добился такого качества (с шипением). Поэтому и хочется увидеть тест на нормальной антенне
Вы про это (http://www.youtube.com/watch?v=1mgvsDjrXbU&feature=youtu.be) видео или которое в шапке? Вроде больше пары станций...
Честно, молодец, главное работает. Сделали прекрасно, но не для всех.
А ещё меня буква "Р" приколола ( не в обиду), кого то напомнила))))
Maxim Droy
Цитата:
Сообщение от Ursus Посмотреть сообщение
Вы про это видео или которое в шапке? Вроде больше пары станций...
Да, про это. Я на sdr-стике добился такого качества (с шипением). Поэтому и хочется увидеть тест на нормальной антенне
То другой вариант, кому то он понравился, кому то нет. Чел поделился тем, что у него получилось и ЭТО ХОРОШО!!! Что есть люди, которые не думают о прибыли в карман, а выкладывают народу как- " ребята, у меня вышло... разбирайте!!! ))) Уважаю.
Вот,to Daniel, делают программу не потому что хочется, нравится, а личная выгода. Но делают её так, что любой юзер подумает, что для себя.
тоже не в обиду.
Shino Kuyo
11.06.2014, 23:55
Честно, молодец, главное работает. Сделали прекрасно, но не для всех.
А ещё меня буква "Р" приколола ( не в обиду), кого то напомнила))))
То другой вариант, кому то он понравился, кому то нет. Чел поделился тем, что у него получилось и ЭТО ХОРОШО!!! Что есть люди, которые не думают о прибыли в карман, а выкладывают народу как- " ребята, у меня вышло... разбирайте!!! ))) Уважаю.
Вот,to Daniel, делают программу не потому что хочется, нравится, а личная выгода. Но делают её так, что любой юзер подумает, что для себя.
тоже не в обиду.
воу воу, земляк, палехче!)))
за годный продукт нужно денег заплатить и это правильно.
а насч0т 'р' это перебрал слегонца:yes4:
воу воу, земляк, палехче!)))
за годный продукт нужно денег заплатить и это правильно.
а насч0т 'р' это перебрал слегонца:yes4:
Вот именно, " ЗА ГОДНЫЙ"!!!! Я не против, но когда весь pccar тестит...
Ну на счет.... думаю всё нормально. Просто я чел прямой, ну если кого обидел_ ИЗВИНЯЮСЬ!
Но думаю здесь люди адекватные.
И в обще, я высказал свое мнение! Ни кого не обижал!
Вот,to Daniel, делают программу не потому что хочется, нравится, а личная выгода. Но делают её так, что любой юзер подумает, что для себя.
тоже не в обиду.
Ух ты! Это, конечно, хорошо, что такое впечатление складывается, но выгода вся - это только оборудование. Денег мы не брали ни с производителя, ни с пользователя. Даже когда предлагали.
А этот вариант действительно интересный и по цене, и по реализации. Думаю, возьмемся адаптировать программу под это радио. Тогда возможность потестировать появится у большего количества пользователей.
To Ursus: автопоиск на этом радио реализуется?
Ух ты! Это, конечно, хорошо, что такое впечатление складывается, но выгода вся - это только оборудование. Денег мы не брали ни с производителя, ни с пользователя. Даже когда предлагали.
А этот вариант действительно интересный и по цене, и по реализации. Думаю, возьмемся адаптировать программу под это радио. Тогда возможность потестировать появится у большего количества пользователей.
To Ursus: автопоиск на этом радио реализуется?
Да реализуется. Только в стандартной мастеркитовской библиотеке этого нет. Рекомндую использовать эту (https://github.com/fabrikant/Si4703_FM_Tuner_Evaluation_Board) билиотеку. Это доработанная мной библиотека. Там есть и standby и mute и работа с RDS. Так как существуют аналоги (http://www.aliexpress.com/wholesale?SearchText=Si4703+arduino&catId=&initiative_id=SB_20140612180234) мастеркитовского конструктора с чипом поддерживающим RDS (Si4703 -есть RDS, Si4702 нет RDS). За основу взята моей библиотеки взята эта (https://github.com/sparkfun/Si4703_FM_Tuner_Evaluation_Board).
Есть еще нюанс касающийся именно конструктора (http://masterkit.ru/main/set.php?code_id=1184274) от мастеркит. По мастеркитовской инструкции радио не инициализируется ни с их родной библиотекой ни с альтарнативной. Там чип стоит хитрый, который умеет работать и по i2C и по 3-Wire, и инициализироваться может для каждого каждого протокола двумя способами да еще инициализация зависит от обвязки чипа.
Короче говоря для MP1090S (http://masterkit.ru/main/set.php?code_id=1184274) в дополнении к тому что написано в инструкции, нужно завести на цифровой пин ардуино - пин конструктора IN_SEN и во время инициализации устанавливать его в HIGH (3 дня жизни на это потратил).
Я у них на форуме отписался, обещали сказать программисту. На этом дело и кончилось.
Можно подробнее про работу с RDS?
Пытаюсь завести его на rda5807, которая почти si4702
Сырые данные получаю, а как извлечь из них что-то полезное пока не вкурил.
Можно в личку, чтобы не захламлять ветку.
Можно подробнее про работу с RDS?
Пытаюсь завести его на rda5807, которая почти si4702
Сырые данные получаю, а как извлечь из них что-то полезное пока не вкурил.
Можно в личку, чтобы не захламлять ветку.
На совсем понятно что значит почти si4702, а только в оригинальном si4702 нет RDS. Еще раз повторяю, RDS есть в чипе si4703. У меня радио тоже без RDS, но библиотека (https://github.com/fabrikant/Si4703_FM_Tuner_Evaluation_Board) по идее должна его поддерживать. Поддерживает или нет, проверить я по понятным причинам не могу.
А так нужно брать datasheet на ваш чип и смотреть что он может, какие протоколы поддерживает.
На совсем понятно что значит почти si4702, а только в оригинальном si4702 нет RDS. Еще раз повторяю, RDS есть в чипе si4703. У меня радио тоже без RDS, но библиотека (https://github.com/fabrikant/Si4703_FM_Tuner_Evaluation_Board) по идее должна его поддерживать. Поддерживает или нет, проверить я по понятным причинам не могу.
А так нужно брать datasheet на ваш чип и смотреть что он может, какие протоколы поддерживает.
rda5807 имеет несколько ревизий, которые руляться немного по-разному, одна из ревизий 1:1 si4702 по регистрам управления. С другой стороны, в либе для si4703 есть поддержка RDS. Но она тоже выдает только сырые данные, которые у меня уже есть в моем коде. Так вот, интересна часть, которая поток данных из микрухи приводит к удобоваримому текстовому виду для отображения на LCD / OLED / передачи через Serial.
В приведенным ссылках как раз этого и нет. У меня есть несколько исходников (для avr), где якобы есть вся обработка, но сходу я не вкурил, а на вдумчивое чтение особо нет времени. Поэтому и был вопрос, может есть ГОТОВЫЙ кусок кода для этого, который без напряга можно скопировать.
s.m. Покури ТУТ (http://catcatcat.d-lan.dp.ua/ukv-radiopriem-chast-2/). Если запустишь, то расскажешь о результатах. А то в моей деревне из 10 ФМ станций ни одна не вещает с РДС.
s.m. Покури ТУТ (http://catcatcat.d-lan.dp.ua/ukv-radiopriem-chast-2/). Если запустишь, то расскажешь о результатах. А то в моей деревне из 10 ФМ станций ни одна не вещает с РДС.
это я уже видел... но пока понимание не пришло. жду просветления :)
Установил на крышу пассивную антенну ATM BTO-204. Качество приема неудовлетворительное. Салонная антенна с усилителем принимает лучше. Попробую подключить усилитель. Отпишусь.
Можно подробнее про работу с RDS?
Пытаюсь завести его на rda5807.
Четыре байта получил, дальше разбирай
Почитай даташит на RDS (в аттач не получилось добавить)
https://drive.google.com/file/d/0B20_CqVSzaKgdTdWYTBQdkdZLVk/edit?usp=sharing
Спустя почти месяц докладываю.
Неудовлетворительное качество звучания было только из-за того, что у меня была неправильно подключена антенна.
После того как я подключил землю антенны к земле радио, сигнальный кабель к антенному входу, качество получилось просто супер. Велиоклепное качество. Выше всяких похвал.
Жаль что продолжалось это великолепие не долго... До первого включения двигателя... Выжгло само радио и усилитель. Земля антенны соединенна с массой авто. Дальше я думаю можно не продолжать.
Если новый усилитель купить не представляет проблем, то новое радио пришлось заказывать и ждать 10 дней.
Через 10 дней пришло радио. На этот раз подключил только сигнальный кабель. Землю антенны подключать не стал. Качество приема стало заметно хуже, но более чем приемлемое. По утверждению коллеги прием на это радио более качественный, чем на штатную голову его опеля астровича. В целом качество меня устроило более, сейчас в основном я слушаю именно эфирное радио. Так как его качество лучше чем интернет радио.
При всем при этом нарисовались две проблемы.
1.Так как и радио и звуковуха подключены к одному усилителю наблюдается эффект их взаимного глушения. И если у радио есть специальный бит, выставляя который в единицу можно добиться того, что радио не будет давить звуковуху, то звуковуха в любом случае давит радио.
Пока что решил проблемму релюшкой с двумя группами контактов, которым коммутирую звук. Управляется тем же самым ардуино. И огреб следующие негативные эффекты.
При переключении с радио на звуковуху и обратно слышится совсем не сексуальный пук.
При работе радио не слышно планшета. Сообщения навигатора и т.п. вещи пропадают. В принципе решаемо. Можно через logcat отлавливать нужные события и переключать реле на планшет. У кого-то на форуме я что-то подобное видел. Как бы не у myxa.. Но сам пока не заморачивался.
В следующей инкарнации системы планирую заменить релюшку на микросхему TDA8421 пук должен пропасть.
Лучше был бы какой-то микшер, но в схемотехнике я не секу, а готовых простых схем или микросхем мне не попадалось.
2. Радио работало нестабильно. Утром едешь на работу не работает. Едешь с работы - работает. Берешь домой, начинаешь тестировать. То работает, то не работает. Что я только не делал. Проверял все контакты десятки раз. Переписывал библиотеку раза 4. Инициализировал чип по разному (там чип хитрый его можно несколькими способами инициализировать). Ничего не помогает. В итоге оказалось... вы не поверите... я бы сам не поверил... чип бракованый. Стабильно работал только при температуре >+30С. При температуре 20-30С рабоатл не стабильно. Мог устанавливать частототу до 2-х минут. При температуре <+20C не работал вообще.
Причем слово не работал означает именно его неспособность установить частоту. На запросы по i2c отвечал быстро и стабильно при любой температуре. Предполагаю, что где-то внутри чипа повреждена дорожка и при достаточно высокой температруе от теплового расширения контакты замыкало, а при более низкой размыкало. Короче убил я на это дело неделю. Потом опять 10 дней пока замена приехала.
В общем сейчас нормальный чип, нормальное радио. В целом я доволен.
А да. Избаился от Arduino Uno Communicator. Теперь работаю с Arduino из таскера без дополнительных приблуд. Прямо через Serial порт.
Лучше был бы какой-то микшер, но в схемотехнике я не секу, а готовых простых схем или микросхем мне не попадалось.
Только микшер или сумматор. Хотя бы по такой схеме:
36744
Транзистор бери КП303А, на нем не наблюдалось (на осциллографе) заметных искажений при подаче 9-15ВВ. Ну, и один канал отрежешь, тебе же только 2 надо.
Tommy_Gun
12.08.2014, 11:05
А да. Избаился от Arduino Uno Communicator. Теперь работаю с Arduino из таскера без дополнительных приблуд. Прямо через Serial порт.
Можно поподробнее?
А у конденсаторов номинал какой? И судя по схеме громкость регулируется крутилочками, что не айс. Или потенциометры совсем выкинуть нафиг? Может кто-нибудь микруху знает с такими функциями и цифровым управлением.
Можно поподробнее?
Таки можно.
Понадобится планшет с полноценным USB хостом и рутом, busybox а так же Arduino c встроенным USB Serial портом.
Лично я проделывал все на Nexus 7 2012 и ардуино UNO R3. Способ гарантировано работает на прошивках от тимура и AutoDroid (http://forum.xda-developers.com/nexus-7/3g-development/rom-slim-kat-t2826317)
1. Проверяем (https://play.google.com/store/apps/details?id=org.tauruslabs.usbhostcheck&hl=ru) а в случае необходимости активируем USB host
2. Устанавливаем busybox (https://play.google.com/store/apps/details?id=stericson.busybox&hl=ru) (думаю все в курсе что нужно зайти в приложение и установить оттуда)
3.Подключаем Arduino к планшету и пытаемся найти его в устройствах. У меня это /dev/ttyACM2. У вас может быть какая-то другая цифра. Подключайте-отключайте и смотрите какое устройство появляется исчезает. Теоретически при перезагрузке номер устройства может поменяться и по правильному нужно его искать каждый раз скриптом. Но у меня этого не происходит и я не стал задрачиваться.
4. Самый главный шаг. Настраиваем Serial port
stty -F %ARDUINO_DEVICE_NAME cs8 9600 -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8 -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl noflsh -xcase -tostop -echoprt -echoctl -echoke
Вместо %ARDUINO_DEVICE_NAME имя вашего устройства. Выполнять надо каждый раз после подмонтирования устройства. Я делаю каждый раз при просыпании и норм.
5. А да. Забыл сказать. В ардуино в скетче скорость порта тоже должна быть 9600. Если у вас другое значение, то меняйте скорость в настройках порта п. 4.
6. Пишем сообщение в ардуино скриптом Shell.
echo "нужное сообщение" > %ARDUINO_DEVICE_NAME
7. Самое вкусное читаем из ардуино. Сразу говорю есть ограничение. В сообщениях от ардуино (в моей схеме подключения) нельзя использовать пробел. Хотя если как-то хитро заэкранировать его, то может и можно. Короче мне пробел не критичен и я не стал им морочиться. Итак.
Каждый раз после подмонтирования устройства и настройки порта см пункт 4. выполняем следующий скрипт.
(cat %ARDUINO_DEVICE_NAME | while read code; do am broadcast -a primavera.arduino.intent.action.DATA_RECEIVED -e primavera_arduino_intent_extra_string $code; done) < /dev/null > /dev/null 2>/dev/null &
Краткое описание работы скрипта. Запускается демон который висит в памяти и ждет сообщения в файл вашего устройства. При получении сообщения в систему шлется бродкаст интент с action primavera.arduino.intent.action.DATA_RECEIVED и переменной (extras) primavera_arduino_intent_extra_string d в которой содержится ваше сообщение.
Если вы до этого использовали Arduino Uno Communicator (который мной пропатченный) и у вас все работало, то больше ничего делать не нужно. Смело удаляем Arduino Uno Communicator и сообщения будут приходить так же как и раньше. Только стабильней.
Если нет, то в таскере заводим новый профиль. Событие-Система-Intent Received
В поле действие у вас будет primavera.arduino.intent.action.DATA_RECEIVED
Ну и соответсвенно в задаче, которая вызывается из этого профиля будет доступна локальная переменная primavera_arduino_intent_extra_stringс сообщением от arduino.
Собственно это все. Не забываем для всех скриптов ставить галочку Use Root. И менять %ARDUINO_DEVICE_NAME на ваше устройство.
А у конденсаторов номинал какой? И судя по схеме громкость регулируется крутилочками, что не айс. Или потенциометры совсем выкинуть нафиг? Может кто-нибудь микруху знает с такими функциями и цифровым управлением.
0.1uF пленочные 63В, резисторы берешь подстроечные и настраиваешь их один раз, чтобы выровнять уровни сигналов с планшета и радио. А вот регулировку громкости радио осуществляй через команды ардуино (вроде, у радио есть своя регулировка громкости). Если назначить на медиа-кнопки, то одновременно будет регулироваться системная громкость планшета и громкость радио (если, конечно, шаги регулировки совпадут).
И да, на схеме надо добавить один канал, а не убрать. Т.е. должно быть 4, а не 3. Стерео же.
Все таки нужно один канал убрать. Просто должно быть две таких схемы. По одной на каждый канал. Мне всё-таки стерео хочется, а не моно.
Все таки нужно один канал убрать. Просто должно быть две таких схемы. По одной на каждый канал. Мне всё-таки стерео хочется, а не моно.
Согласен, ступил. :yes4: Две двухканальных схемы.
Chubaka885
12.08.2014, 17:40
Лучше был бы какой-то микшер, но в схемотехнике я не секу, а готовых простых схем или микросхем мне не попадалось.
А что мешает прикрутить это (http://www.masterkit.ru/main/set.php?code_id=1203557). В том же мастер ките продается. И управлять ардуиной входами в зависимости от использования радио/планшет.
Единственный минус: при работе радио слышно только радио)))
А что мешает прикрутить это (http://www.masterkit.ru/main/set.php?code_id=1203557). В том же мастер ките продается. И управлять ардуиной входами в зависимости от использования радио/планшет.
Единственный минус: при работе радио слышно только радио)))
Да ничего не мешает. Я же писал про то что
В следующей инкарнации системы планирую заменить релюшку на микросхему TDA8421 это как раз та самая микросхема. Только мастеркитовцы хотят за нее 480 руб, а микросхема эта вместе с несколькими конденсаторами нужными для обвязки стоит ~130. Думаю слишком жирно им будет. Если для радио покупка как-то оправдана там поверхностный монтаж нужно плату травить, фен нужен и т.д. То тут все делается на обычной макетке за час времени. Ну может полтора. Короче нет смысла, а если учесть что заказывать и ждать нужно....
У меня еще китайское радио на подъезде. На чипе с RDS. Есть задумка блютус хэндсфри ко всему этому безобразию прикуртить. Короче эта коробочка останется как есть. Буду новую собирать. Следующую версию. Но это уже осенью...
Для коммутации может TDA7313 подойдет?
Для коммутации может TDA7313 подойдет?
Эта тоже подойдет. Для моей задачи те же яйца что TDA8421 и TDA8425. Только тут три стереовхода входа а не два и выводы на квадро, а не просто стерео. Но это тоже коммутатор, а не сумматор.
Ursus, а никакой софт для подмены сканкода клавиш клавиатуры и автоматизации действий при нажатии не пробовал?
Приехала сенсорная панель Lofree MT-100, работает как тачпад, нумпад, цифровая клава.
Ищу способ, чтобы нажатия на клавиши обрабатывались для выполнения определенных функций: громкость, плей/пауза, включения/выключения средств коммуникаций и т.д.
С помощью External Keyboard Helper (http://4pda.ru/forum/index.php?showtopic=357706) такое возможно, но ограничено списком возможностей приложения, что сильно меньше, чем у таскера.
Хочется нажатия клавиш привязать с событиям в таскере.
Изменить соответсвия сканкодов и функций можно в фалах /system/usr
keylayout и keychars. В том числе назначить клавишам мультимедийные функции. Если я правильно понял вопрос.
3.Подключаем Arduino к планшету и пытаемся найти его в устройствах. У меня это /dev/ttyACM2. У вас может быть какая-то другая цифра.
А если не появляется устройство в dev/tty*, есть сторонние пути?
ребят, а такой вопрос: безопасно ли подавать выход с платы как на рисунке (на основе si4703) на line in звуковой карты? я имею ввиду, там low level output, или все же нет? кто подключал, отзовитесь :)
спасибо.
http://i.ebayimg.com/00/s/NzUwWDc1MA==/z/YSYAAOSwGvhUBB3l/$_12.JPG
Нет никаких противопоказаний по подключению. Короче - можно!
Нет никаких противопоказаний по подключению. Короче - можно!
спасибо, буду заказывать и пробовать пристроить :)
Получил сегодня на почте Arduino Uno (http://www.aliexpress.com/snapshot/6292588624.html) и платку на Si4703 (http://www.aliexpress.com/snapshot/6291549654.html). Нашел эту ссылку (https://github.com/fabrikant/Si4703_FM_Tuner_Evaluation_Board/blob/master/README.md). А дальше сижу и туплю, Arduino первый раз в руках держу, пните плз где что почитать, чтобы хотя бы понять что куда подключать и какой синтаксис общения с ардуино из терминала.
add: насчет подключения платки и ардуины вкурил, в скетче в комментах есть:
Arduino : Si470x board
3.3V : VCC
GND : GND
A5 : SCLK
A4 : SDIO
D2 : RST
A0 : Trimpot (optional)
Look for serial output at 57600bps.
не вкурил пока синтаксис, как рулить платой с компа/планшета через ардуинку, что слать надо? понимаю что инфо собственно в скетче, но пока не догнало :( и пока еще ищу соединительные провода, заказывал их ранее, но очень хорошо прибрал, чтобы не потерять :)
Подключил пока на винде, поигрался управлением из монитора, работает, только на обычные наушники качество приема крайне ужасное, кто может сказать, к каким контактам на плате можно подкинуть пассивную (а лучше активную автомобильную) антенну для улучшения качества приема так, чтобы ничего не сгорело? схема платки есть тут (http://www.aliexpress.com/snapshot/6291549654.html)
Там где индуктивность и кондер с5 подключаются к массе разъема оторви и подключи к кондеру антенну.
Там где индуктивность и кондер с5 подключаются к массе разъема оторви и подключи к кондеру антенну.
Уточню, как у специалиста: индуктивность L1 нужно оставить для антенны, а массу для выхода звука взять с общей земли, или L1 оставить как есть, а антенну подпаять к C5, предварительно отсоединив от точки соединения с L1? Другими словами, L1 имеет значение для звука или для антенны?
Дроссель нужен для развязки по ВЧ. Антенну к С5(предварительно оторвать от разъема и дросселя), а дроссель можно выкинуть и поставить перемычку или оставить. Работать будет в любом случае.
Дроссель нужен для развязки по ВЧ. Антенну к С5(предварительно оторвать от разъема и дросселя), а дроссель можно выкинуть и поставить перемычку или оставить. Работать будет в любом случае.
Понял, спасибо.
Подскажите: Si4703, RDA5807M, TEA5767 - какой из них больше всего подходит для carpc? Сам пока играюсь с модулем на RDA типа такого (http://ru.aliexpress.com/item/FM-Stereo-Radio-RDA5807M-Wireless-Module-For-Arduino-RRD-102V2-0/32322511528.html), и этой (https://github.com/mathertel/Radio) библиотеки, так он дома, на кусок провода длинной 20 мм принимает треть фм станций в моем городе, значит в машине будут сплошные помехи? Или экранировка (например металлический корпус) спасет?
На деле они все для бытового применения. Залог уверенного приема НОРМАЛЬНАЯ антенна, а не кусок провода.
Для теста возьмите любую магнитолу и проведите этот же тест дома на этот же огрызок провода. Разница, думаю, будет не существенная.
Подскажите: Si4703, RDA5807M, TEA5767 - какой из них больше всего подходит для carpc? Сам пока играюсь с модулем на RDA типа такого (http://ru.aliexpress.com/item/FM-Stereo-Radio-RDA5807M-Wireless-Module-For-Arduino-RRD-102V2-0/32322511528.html), и этой (https://github.com/mathertel/Radio) библиотеки, так он дома, на кусок провода длинной 20 мм принимает треть фм станций в моем городе, значит в машине будут сплошные помехи? Или экранировка (например металлический корпус) спасет?
есть успехи? особенно интересует работа rds
есть успехи? особенно интересует работа rds
к сожалению протестировать rds негде-нет таких станций, а так все нормально работает, пока жду посылку с nexus 7, пробую на компе через ком порт и ардуино про мини, единственная проблема возникла-rda5807m работает от 3.3в, а у меня в наличии были только pro micro на 5в/16МГц
к сожалению протестировать rds негде-нет таких станций, а так все нормально работает, пока жду посылку с nexus 7, пробую на компе через ком порт и ардуино про мини, единственная проблема возникла-rda5807m работает от 3.3в, а у меня в наличии были только pro micro на 5в/16МГц
можно сделать сдвиг уровней по ноге tx у ардуины на паре резисторов, rx ардуины соединить напрямую с tx rda - все будет работать нормально. 3.3В взять с любого стабилизатора типа LM1117-3.3
а автопоиск нормально ловит?
можно сделать сдвиг уровней по ноге tx у ардуины на паре резисторов, rx ардуины соединить напрямую с tx rda - все будет работать нормально. 3.3В взять с любого стабилизатора типа LM1117-3.3
не силен в электронике, но мне сказали что для i2c на резисторах не пойдет. у себя делал на транзисторах 2n7000 и парочке резисторов по схеме с этого источника: http://www.hobbytronics.co.uk/mosfet-voltage-level-converter
з.ы. 5V=>3.3V получаю с помощью LP2950ACZ-3.3G
з.ы. №2: в RDA5807M как раз i2c, откуда rx/tx? o_O
з.ы. №2: в RDA5807M как раз i2c, откуда rx/tx? o_O
упс, ступил. Конечно же SDA / SCL
Astravod
30.05.2015, 11:53
Доброго времени суток! А кто нибудь пробовал подключать к Radxa fm модуль на si4731 через I2C?
Astravod
30.05.2015, 12:02
Почему нельзя сразу не подключить к I2C к плате, не используя ардуино?
nikopol70
05.10.2015, 13:46
Мп1905 в наших краях купить не удалось
Купил теа5767.
Подключил по мануалу к про микро (леонардо), залил тестовый скетч (взят с сайта ардуины в разделе данного модуля, настроен на одну частоту)... тишина... ни щелков ни треска ни шипения.
Сижу и туплю, или что то не дописано в мануале или теа5767 не рабочая.
На форуме ардуино посоветовали залить скетч i2c сканера и посмотреть видется модуль подключеный к ардуине. Залил, потестил, да видется, адрес устройства показывает.
Что и как делать дальше не понимаю, где искать косяк...
dreamwait
13.10.2017, 17:02
Есть сейчас аналоговое радио SONY (TYX-??). Все вроде отлично работает - но нет РДС... По сравнению с ней si4703 будет сильно отличаться? Приемники массовые - сравнивал кто? Интересует вариант не в городе, а при удалении - при слабом сигнале.
есть успехи? особенно интересует работа rds
А какие проблемы с RDS ? До боли все примитивно, чип у меня si4709, я не использую библиотек так как они урезаные и немного не правильные, проще мануал глянуть по чипу и RDS, все встанет на свои места.
https://www.silabs.com/documents/public/application-notes/AN243.pdf
Читаю 8 значное поле группа 0A и 64 значное поле группа 2A.
Вот старое видео https://yadi.sk/i/OdWArynw3PFJvE, сейчас все глаже.
Ну что после прочтения менуала разбрались с RDS ?
Если нет, могу скинуть функцию по чтению RDS. Только придется немного доработать под себя. Я регисты читаю по 8 бит, а не перевожу их в 16 как в библиотеке.
На ардуино и на stm все читает на ура.
Кстати можно еще время читать и статус привязки станции.
Прокатит на всех чипах пхожих
так как чтение регистров из чипа начинается с 0x0A и далее инкримент, читаю по 8 бит без сдвига для создания 16 битных регистров, читать все смысла нет, нужны только с 0x0A по 0x0F, то есть 6 по 16 бит или 12 по 8 бит.
бит RDSR не использую, так как читаю по прерыванию.
uint8_t Si4709_read[12];
#define RDSR Si4709_read[0x00] & 0x80 // 0x0A
#define RDS_0A Si4709_read[0x06] >> 3 == 0 // 0x0D
#define RDS_2A Si4709_read[0x06] >> 3 == 4 // 0x0D
#define RDS_0A_ID Si4709_read[0x07] & 0x03 // 0x0D
#define RDS_2A_ID Si4709_read[0x07] & 0x0F // 0x0D
#define RDS_C_h Si4709_read[0x08] // 0x0E
#define RDS_C_l Si4709_read[0x09] // 0x0E
#define RDS_D_h Si4709_read[0x0A] // 0x0F
#define RDS_D_l Si4709_read[0x0B] // 0x0F
uint8_t Si4709_write[8] = {0x40, 0x01, 0x00, 0x00, 0x98, 0x04, 0x00, 0x1D}; // начальная конфигурация
uint8_t rdsBuffer[9];
uint8_t rdsBuffer2[65];
uint8_t completed, flag, flag2, razmer;
uint16_t completed2;
void RDS(void) {
rdsBuffer[0] = 0x01;
rdsBuffer2[0] = 0x02;
READ_4709();
if (RDS_0A) {
if (rdsBuffer[(RDS_0A_ID) * 2 + 1] != RDS_D_h ||
rdsBuffer[(RDS_0A_ID) * 2 + 2] != RDS_D_l) {
rdsBuffer[(RDS_0A_ID) * 2 + 1] = RDS_D_h;
rdsBuffer[(RDS_0A_ID) * 2 + 2] = RDS_D_l;
completed = 0;
flag = 1;
}
completed |= 1 << (RDS_0A_ID);
if (completed == 0x0F && flag) {
CDC_Transmit_FS(rdsBuffer, 9);
flag = 0;
}
}
if (RDS_2A) {
if (rdsBuffer2[(RDS_2A_ID) * 4 + 1] != RDS_C_h ||
rdsBuffer2[(RDS_2A_ID) * 4 + 2] != RDS_C_l ||
rdsBuffer2[(RDS_2A_ID) * 4 + 3] != RDS_D_h ||
rdsBuffer2[(RDS_2A_ID) * 4 + 4] != RDS_D_l) {
rdsBuffer2[(RDS_2A_ID) * 4 + 1] = RDS_C_h;
rdsBuffer2[(RDS_2A_ID) * 4 + 2] = RDS_C_l;
rdsBuffer2[(RDS_2A_ID) * 4 + 3] = RDS_D_h;
rdsBuffer2[(RDS_2A_ID) * 4 + 4] = RDS_D_l;
completed2 = 0;
flag2 = 1;
}
completed2 |= 1 << (RDS_2A_ID);
if (completed2 == 0xFFFF && flag2) {
for (int i = 64; i > 0; i--) { // сокращаем размер пакета, убирая прбелы с конца
if (rdsBuffer2[i] != 0x20) {
razmer = i + 1;
break;
}
}
CDC_Transmit_FS(rdsBuffer2, razmer);
flag2 = 0;
}
}
HAL_Delay(40);
}
Все написаное только для чтения RDS.
http://pccar.ru/picture.php?albumid=222&pictureid=2290
как то так
Работает на vBulletin® версия 3.8.4. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot