PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Radio (http://pccar.ru/forumdisplay.php?f=193)
-   -   Еще один вариант FM радио. (http://pccar.ru/showthread.php?t=20819)

Ursus 30.05.2014 23:03

Еще один вариант FM радио.
 
Конструктор от мастер кит MP1090S или MP1090. Можно также использовать что нибудь типа tea5767 но на этом чипе мне не удалось достичь приемлемого качества приема.
Подключаем радио к ардуине. Ардуиной управляем радио по i2c, а андроидом управляем ардуиной по Serial. Звук пойдет мимо андроида непосредственно на усилитель, но у некоторых чипов есть регулировка громкости звука. У tea5767 нет.

Интерфейс у меня нарисован таскером. Связь между ардуино и таскером немного модифицированная программа Arduino Uno Communicator.

Вот небольшая демонстрация работы. Извините за качество видео и особенно звука. Поздно. Не мог громко включить. Мне казалось, что радио слышно хорошо, а на самом деле не очень.


А в качестве бонуса вся эта система дает возможность управлять планшетом с пульта.

Daniel 30.05.2014 23:51

Задумка интересная, только проверить бы еще, как будет прием в машине при движении.

Звук можно и в аудио инпут звуковой карты вывести, программа для этого есть в ветке про радио. Если качество приема в автомобиле будет достойным, можно будет и наш интерфейс прикрутить, тогда совсем бюджетно получится.

А учитывая то, что через ардуино можно легко реализовать резистивные кнопки, пульт ДУ, энкодер, да и "мозги" для блока питания, то вообще песня получается. Правда только для тех, кто понимает в программировании хотя бы на уровне школьной программы.

Shino Kuyo 31.05.2014 14:41

так так так
подпишусь
радио нужно :)

cherkasoff 31.05.2014 16:44

У меня Tasker не хочет принимать extra.DATA от Uno Communicator. Как у вас это реализовано?

Ursus 31.05.2014 20:06

Нормально таскер эктсрасы принимает. Доступны в задаче как локальные переменные. Имена экстрасов преобразовываются:
в нижний регистр,
точки заменяются на "_"
и т.д.
Более подробно в документации

С Uno Communicator проблема в другом он шлет поток байтов. Не строк а именно байтов. без начала и без конца. Я его немножко доработал чтобы слал строки и кусками до конца строки. И чтобы работал в фоне, но так ка для меня java как для эскимоса древнегреческий, то сделал это абы-как. Было бы здорово, если бы кто-то умеющий программить под андроид довел эту софтинку до ума.

cherkasoff 31.05.2014 20:10

Цитата:

Сообщение от Ursus (Сообщение 298601)
Нормально таскер эктсрасы принимает. Доступны в задаче как локальные переменные. Имена экстрасов преобразовываются:
в нижний регистр,
точки заменяются на "_"
и т.д.
Более подробно в документации

Переменная доступна, но в ней содержится какая-то херня. Ардуино отправляет serial.printl(1), а в переменной каких-то 8 символов.
Может покажете скетч Ардуино и скрипт Таскера для примера?

Ursus 31.05.2014 20:19

Кстати говоря. Ардуиной не обязательно управлять по шлангу. Mожно и через bluetooth. Для этого можно использовать amarino делает то же что и Uno Communicator, но по bluetooth. Есть api
Работает со строками. Имеет встроенный терминал и некое подобие обработок событий. В передаваемые строки добавляет в начало свои символы. Нужно иметь это в виду при обработке на ардуино.
Программа хорошая но немного сыроватая. Бывает крашится. Бывает отваливается. Мне не удалось получить список подключенных устройств. Т.е. из таскера не понять подключен ты к ардуине или нет.

Ursus 31.05.2014 20:27

Цитата:

Сообщение от cherkasoff (Сообщение 298602)
Переменная доступна, но в ней содержится какая-то херня. Ардуино отправляет serial.printl(1), а в переменной каких-то 8 символов.
Может покажете скетч Ардуино и скрипт Таскера для примера?

Вот из-за этого и пришлось дорабатывать Communicator.

Вот доработанные сорцы, apk там тоже есть. Может кто-нибудь до ума доведет...

cherkasoff 31.05.2014 21:47

Цитата:

Сообщение от Ursus (Сообщение 298605)
Вот из-за этого и пришлось дорабатывать Communicator.

Вот доработанные сорцы, apk там тоже есть. Может кто-нибудь до ума доведет...

А с доработанной хитрость какая-то есть? Потому как у меня с ней то же самое показывает что и недоработанная.

Ursus 31.05.2014 22:09

Да вроде нет хитрости никакой. А точно приложение обновил? Иконка в строке уведмлений появилась?
А по поводу 8 симолов - это 4 байта.
дай угадаю: 00 01 0A 0D? ага?
2 байта на тип int, + перевод строки + возврат каретки

cherkasoff 31.05.2014 22:52

Цитата:

Сообщение от Ursus (Сообщение 298620)
Да вроде нет хитрости никакой. А точно приложение обновил? Иконка в строке уведмлений появилась?
А по поводу 8 симолов - это 4 байта.
дай угадаю: 00 01 0A 0D? ага?
2 байта на тип int, + перевод строки + возврат каретки

Нет. Сделал по получению интента задачу Flash с текстом %primavera_arduino_intent_extra_data, так оно показывает строку [B@42a3db38 или что-то типа того. Причем часть [B@4 - постоянная, а остальное меняется, хотя Arduino всегда отправляет 1.

Точно обновил, иконка появилась.

Ursus 01.06.2014 06:00

А ведь я обманул. Хитрость то есть. Я добавил дополнительную экстру
primavera.arduino.intent.extra.string
данные нужно брать с нее.
Т.е. в таскере это будет
%primavera_arduino_intent_extra_string

cherkasoff 01.06.2014 11:52

Цитата:

Сообщение от Ursus (Сообщение 298660)
А ведь я обманул. Хитрость то есть. Я добавил дополнительную экстру
primavera.arduino.intent.extra.string
данные нужно брать с нее.
Т.е. в таскере это будет
%primavera_arduino_intent_extra_string

Во, так работает! Спасибо! :)
А для передачи в Arduino используете так как в документации написано или тоже допилили что-то?

Ursus 01.06.2014 12:13

как в документации

Denkos 01.06.2014 12:33

Цитата:

Сообщение от Ursus (Сообщение 298668)
как в документации

Не опробоваи еще на практике, что то на столе не очень прием.

Ursus 01.06.2014 13:15

не опробовал. В моем месте так же и обычное радио ловит, да еще вместо антенны был кусок провода на столе.

pokertk 02.06.2014 05:04

Цитата:

Сообщение от Ursus (Сообщение 298529)
Конструктор от мастер кит MP1090S или MP1090. Можно также использовать что нибудь типа tea5767 но на этом чипе мне не удалось достичь приемлемого качества приема.
Подключаем радио к ардуине. Ардуиной управляем радио по i2c, а андроидом управляем ардуиной по Serial. Звук пойдет мимо андроида непосредственно на усилитель, но у некоторых чипов есть регулировка громкости звука. У tea5767 нет.

Интерфейс у меня нарисован таскером. Связь между ардуино и таскером немного модифицированная программа Arduino Uno Communicator.

Вот небольшая демонстрация работы. Извините за качество видео и особенно звука. Поздно. Не мог громко включить. Мне казалось, что радио слышно хорошо, а на самом деле не очень.

А в качестве бонуса вся эта система дает возможность управлять планшетом с пульта.

А можно чуть подробнее про коммуникацию по usbserial?
Уже неделю бьюсь - отправлять в порт на Mega2560 могу только силами USB Serial Monitor Lite, остальные терминалы не могут до Меги достучаться. А тут еще и Таскер прикручен - предел мечтаний для меня.

Модифицированную Arduino Uno Communicator установил, соединение до Mega2560 прошло.
Можно поподробнее, что именно в Tasks Tasker'a добавить, для отправки по serial "0" или "1" ?

Ursus 02.06.2014 06:17

Собрал все в кучу. Примерка и качество приема

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 со строкой переданной из ардуино.
Профиль будет отрабатывать при каждом приеме данных из ардуино.

macau 02.06.2014 11:32

а зачем весь этот огород если тем же таскером можно читать-писать данные напрямую, из serial-устройства.

Ursus 02.06.2014 11:36

Цитата:

Сообщение от macau (Сообщение 298747)
а зачем весь этот огород если тем же таскером можно читать-писать данные напрямую, из serial-устройства.

Во как! А с этого момента можно поподробней? Как таскером писать-читать напрямую в Serial устройство? С удовольствием откажусь от огорода.

macau 02.06.2014 13:04

обычные чтение\запись файла. /dev/tty* в линуксе же устройства-файлы ;)

Ursus 02.06.2014 13:15

Да вот не монтируется оно в tty. По крайней мере далеко не на всех планшетах. И в этом гемор большой.

pokertk 02.06.2014 13:21

Цитата:

Сообщение от Ursus (Сообщение 298761)
Да вот не монтируется оно в tty. По крайней мере далеко не на всех планшетах. И в этом гемор большой.

А не в том ли дело, что на большинстве таблеток из коробки USB-OTG, вместо USB-Host?

Поначалу тоже устройство не определялось как положено.
Помогло приложение USB Host Check
Софтина под рутом модифицировала android.hardware.usb.host и handheld_core_hardware.xml.
После OTG превратился в Host и стало возможно достучаться до Arduino, и пообщаться с ней через терминал.

Ursus 02.06.2014 13:44

pokertk скорее всего так и есть. Про USB Host Check я не знал.
Кроме того непосредственная работа с файлом не очень удобна в плане чтения. Нужно постоянно мониторить файл (тобишь крутить что-то в цикле) а тут пришел интент - выполнил задачу. Не пришел - не выполнил.

macau 02.06.2014 14:33

вы в какуюто пердь полезли. как по вашему работают usb-gps? там обычный сериал. ядро увидело устройство-выставили нужные права на файл, скорость порта и вперед. какие-то костыли, подпорки у вас. зачем так жить?

Ursus 02.06.2014 14:49

Без понятия как работает usb-gps. Но сильно подозреваю, что зависит от программы которая с ним работает. Могу только сказать, что далеко не каждое устройство монтируется в андроиде как serial, а android работает с ним через свой api, а не через linux устройство.
Я 2 недели протрахался пытаясь запустить arduino serial устройство. И у меня ничего не вышло. И никто ничего толком не смог подсказать. Планшет, правда, был не нексус, а устройство на MTK 6577. Если расскажете что нужно сделать, чтобы ардуино увиделся на нем Serial, буду прям очень рад.

macau 02.06.2014 15:09

не стоит так категорично утверждать ;) вот для начала нужно понять как ондроед работает с устройствами и почитать соответствующие топики на этом форуме. тогда не придется в пустую трать столько часов своей жизни.

pokertk 02.06.2014 15:31

Цитата:

Сообщение от macau (Сообщение 298786)
не стоит так категорично утверждать ;) вот для начала нужно понять как ондроед работает с устройствами и почитать соответствующие топики на этом форуме. тогда не придется в пустую трать столько часов своей жизни.

Дроид из коробки с устройствами работает на уровне модуля в ядре. Нет модуля - нет устройства.

Цитата:

Сообщение от Ursus (Сообщение 298782)
Планшет, правда, был не нексус, а устройство на MTK 6577. Если расскажете что нужно сделать, чтобы ардуино увиделся на нем Serial, буду прям очень рад.

Думается, что в MTK6577 нет OTG.
Что за модель планшета? Банально флешку видит?

macau 02.06.2014 15:47

Цитата:

Сообщение от pokertk (Сообщение 298791)
Нет модуля - нет устройства.

как показала практика-для pl2303 это не критично ;)

pokertk 02.06.2014 16:05

Цитата:

Сообщение от macau (Сообщение 298794)
как показала практика-для pl2303 это не критично ;)

Это не только для profilic'a не критично. При условии рута, полноценного USB-Host и поддержки в программе требуемого чипа, отсылать и получать данные с устройства возможно.

Arduino Uno Communicator с маркета принимает данные, но как и положено ему в виде байтов
Доработанное приложение пишет System Ready! но принимать данные с дуины отказывается, пишет "Use END_ on end message"

macau 02.06.2014 16:25

и тут мы возвращаемся в венду и тащим в систему всякий глючный скам. при том что есть штатные средства

pokertk 02.06.2014 16:37

Цитата:

Сообщение от macau (Сообщение 298747)
а зачем весь этот огород если тем же таскером можно читать-писать данные напрямую, из serial-устройства.

А можно увидеть пример скрипта таскера для отправки в Serial?

Цитата:

Сообщение от macau (Сообщение 298801)
и тут мы возвращаемся в венду и тащим в систему всякий глючный скам. при том что есть штатные средства

Это еще нормально. Связка sl4a + python-for-android + кучка библиотек и выполнение скрипта вызовом из Tasker'a - вот где огород, а интенты веСЧь!

Ursus 02.06.2014 17:13

Цитата:

Сообщение от pokertk (Сообщение 298803)
А можно увидеть пример скрипта таскера для отправки в Serial?

Отправить как раз проблем нет echo чей-то > /dev/ttyХзКакой

Гораздо интересней увидеть реализацию чтения.
Или бесконечный цикл + ждать рулит?

macau 02.06.2014 19:15

таскер разве не умеет читать файл?
если нет то shell cat /dev/tty*

s.m. 02.06.2014 19:51

брррр, сколько всего написали. если сильно надо - можно попробовать отправлять -принимать через шелл-скрипты, это гораздо более кошернее.
один скрипт содержит что типа

echo что-то > /dev/ttyUSBX

второй по циклу читает из этого /dev/ttyUSBx и что-то делает в зависимости от того, что принято.

но вообще я каждый раз удивляюсь, на что способны люди, лишь бы не изучить пару книг по жаве-андроиду и написать все по-человечески.

там открыли файл - записали-прочитали и нарисовали на экране. все. никаких таскеров, левых скриптов и прочей мути.

Ursus 05.06.2014 06:01

УРААА! Радио доделал. Очень доволен качеством приема. Радио ловит ощутимо лучше на ту же самую недоантенну чем дешевая магнитола, которая стояла ранее. Теперь можно озаботиться установкой нормальной антенны.
Кому интересно, можете посмотреть, как это выглядит в живую.

Shino Kuyo 05.06.2014 08:05

АГОНЬ

kristal0211 05.06.2014 08:30

Отлично, ещё бы связать с этой программой, тогда вообще шикарно будет и недорого.
Надеюсь Daniel поспособствует этому.

Ursus 05.06.2014 08:35

К тому же если писать программу с нуля, можно отказаться от костылей в виде Uno Communicatora. Жаль, что у меня скилл "java программист" не прокачан.
А в программе Daniel есть intent api?

Timur PERM 08.06.2014 08:23

Может по потробнее развернете тему �� для малопонятных...многие будут очень признательны. А так решение действительно классное


Часовой пояс GMT +4, время: 00:19.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot