![]() |
Еще один вариант FM радио.
Конструктор от мастер кит MP1090S или MP1090. Можно также использовать что нибудь типа tea5767 но на этом чипе мне не удалось достичь приемлемого качества приема.
Подключаем радио к ардуине. Ардуиной управляем радио по i2c, а андроидом управляем ардуиной по Serial. Звук пойдет мимо андроида непосредственно на усилитель, но у некоторых чипов есть регулировка громкости звука. У tea5767 нет. Интерфейс у меня нарисован таскером. Связь между ардуино и таскером немного модифицированная программа Arduino Uno Communicator. Вот небольшая демонстрация работы. Извините за качество видео и особенно звука. Поздно. Не мог громко включить. Мне казалось, что радио слышно хорошо, а на самом деле не очень. А в качестве бонуса вся эта система дает возможность управлять планшетом с пульта. |
Задумка интересная, только проверить бы еще, как будет прием в машине при движении.
Звук можно и в аудио инпут звуковой карты вывести, программа для этого есть в ветке про радио. Если качество приема в автомобиле будет достойным, можно будет и наш интерфейс прикрутить, тогда совсем бюджетно получится. А учитывая то, что через ардуино можно легко реализовать резистивные кнопки, пульт ДУ, энкодер, да и "мозги" для блока питания, то вообще песня получается. Правда только для тех, кто понимает в программировании хотя бы на уровне школьной программы. |
так так так
подпишусь радио нужно :) |
У меня Tasker не хочет принимать extra.DATA от Uno Communicator. Как у вас это реализовано?
|
Нормально таскер эктсрасы принимает. Доступны в задаче как локальные переменные. Имена экстрасов преобразовываются:
в нижний регистр, точки заменяются на "_" и т.д. Более подробно в документации С Uno Communicator проблема в другом он шлет поток байтов. Не строк а именно байтов. без начала и без конца. Я его немножко доработал чтобы слал строки и кусками до конца строки. И чтобы работал в фоне, но так ка для меня java как для эскимоса древнегреческий, то сделал это абы-как. Было бы здорово, если бы кто-то умеющий программить под андроид довел эту софтинку до ума. |
Цитата:
Может покажете скетч Ардуино и скрипт Таскера для примера? |
Кстати говоря. Ардуиной не обязательно управлять по шлангу. Mожно и через bluetooth. Для этого можно использовать amarino делает то же что и Uno Communicator, но по bluetooth. Есть api
Работает со строками. Имеет встроенный терминал и некое подобие обработок событий. В передаваемые строки добавляет в начало свои символы. Нужно иметь это в виду при обработке на ардуино. Программа хорошая но немного сыроватая. Бывает крашится. Бывает отваливается. Мне не удалось получить список подключенных устройств. Т.е. из таскера не понять подключен ты к ардуине или нет. |
Цитата:
Вот доработанные сорцы, apk там тоже есть. Может кто-нибудь до ума доведет... |
Цитата:
|
Да вроде нет хитрости никакой. А точно приложение обновил? Иконка в строке уведмлений появилась?
А по поводу 8 симолов - это 4 байта. дай угадаю: 00 01 0A 0D? ага? 2 байта на тип int, + перевод строки + возврат каретки |
Цитата:
Точно обновил, иконка появилась. |
А ведь я обманул. Хитрость то есть. Я добавил дополнительную экстру
primavera.arduino.intent.extra.string данные нужно брать с нее. Т.е. в таскере это будет %primavera_arduino_intent_extra_string |
Цитата:
А для передачи в Arduino используете так как в документации написано или тоже допилили что-то? |
как в документации
|
Цитата:
|
не опробовал. В моем месте так же и обычное радио ловит, да еще вместо антенны был кусок провода на столе.
|
Цитата:
Уже неделю бьюсь - отправлять в порт на Mega2560 могу только силами USB Serial Monitor Lite, остальные терминалы не могут до Меги достучаться. А тут еще и Таскер прикручен - предел мечтаний для меня. Модифицированную Arduino Uno Communicator установил, соединение до Mega2560 прошло. Можно поподробнее, что именно в Tasks Tasker'a добавить, для отправки по serial "0" или "1" ? |
Собрал все в кучу. Примерка и качество приема
pokertk обмен происходит с помощью механизма интентов для того чтобы отправить сообщение на ардуино нужно отправить интент с 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-устройства.
|
Цитата:
|
обычные чтение\запись файла. /dev/tty* в линуксе же устройства-файлы ;)
|
Да вот не монтируется оно в tty. По крайней мере далеко не на всех планшетах. И в этом гемор большой.
|
Цитата:
Поначалу тоже устройство не определялось как положено. Помогло приложение USB Host Check Софтина под рутом модифицировала 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, буду прям очень рад. |
не стоит так категорично утверждать ;) вот для начала нужно понять как ондроед работает с устройствами и почитать соответствующие топики на этом форуме. тогда не придется в пустую трать столько часов своей жизни.
|
Цитата:
Цитата:
Что за модель планшета? Банально флешку видит? |
Цитата:
|
Цитата:
Arduino Uno Communicator с маркета принимает данные, но как и положено ему в виде байтов Доработанное приложение пишет System Ready! но принимать данные с дуины отказывается, пишет "Use END_ on end message" |
и тут мы возвращаемся в венду и тащим в систему всякий глючный скам. при том что есть штатные средства
|
Цитата:
Цитата:
|
Цитата:
Гораздо интересней увидеть реализацию чтения. Или бесконечный цикл + ждать рулит? |
таскер разве не умеет читать файл?
если нет то shell cat /dev/tty* |
брррр, сколько всего написали. если сильно надо - можно попробовать отправлять -принимать через шелл-скрипты, это гораздо более кошернее.
один скрипт содержит что типа echo что-то > /dev/ttyUSBX второй по циклу читает из этого /dev/ttyUSBx и что-то делает в зависимости от того, что принято. но вообще я каждый раз удивляюсь, на что способны люди, лишь бы не изучить пару книг по жаве-андроиду и написать все по-человечески. там открыли файл - записали-прочитали и нарисовали на экране. все. никаких таскеров, левых скриптов и прочей мути. |
УРААА! Радио доделал. Очень доволен качеством приема. Радио ловит ощутимо лучше на ту же самую недоантенну чем дешевая магнитола, которая стояла ранее. Теперь можно озаботиться установкой нормальной антенны.
Кому интересно, можете посмотреть, как это выглядит в живую. |
АГОНЬ
|
Отлично, ещё бы связать с этой программой, тогда вообще шикарно будет и недорого.
Надеюсь Daniel поспособствует этому. |
К тому же если писать программу с нуля, можно отказаться от костылей в виде Uno Communicatora. Жаль, что у меня скилл "java программист" не прокачан.
А в программе Daniel есть intent api? |
Может по потробнее развернете тему для малопонятных...многие будут очень признательны. А так решение действительно классное
|
Часовой пояс GMT +4, время: 10:32. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot