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

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Дополнительные устройства (http://pccar.ru/forumdisplay.php?f=177)
-   -   JoyCon Exr + ARDUINO (http://pccar.ru/showthread.php?t=19011)

Andrey_61 14.04.2013 13:17

JoyCon Exr + ARDUINO
 
Задумал я соединить эти два девайса.

по моей задумке arduino обрабатывает все сигналы с резистивных кнопок, энкодера, возможно ИК пульта(этот пункт пока под сомнением), и имитирует нажатие кнопок на JoyConе.

Нафига, почему не использовать просто JoyCon?
1. При нажатии на любую кнопку планшет будет просыпаться, меня это не устраивает.
2. Хочу отдельную обработку коротких и длинных нажатий.
3. Различная реакция на поворот энкодера в зависимости от того нажата КЭ(кнопка энкодера) или нет.
4. Пробуждение планшета только по нажатию КЭ

На данный момент заказан JoyCon и имеется Arduino nano v5.
Написан скетчик со следующим алгоритмом.

- при включении зажигания включаем планшет (выводим из сна)
- при выключении зажигания выключаем (отправляем в сон) через 3 секунды. Если в течении этих трех секунд опять включили зажигание или нажали КЭ то выключение отменяется.
- при выключении зажигания плавно тухнет индикатор питания.
- если планшет включен, не важно есть зажигание или нет длинное нажатие на КЭ выключает планшет.
- если планшет выключен то короткое нажатие на КЭ включает планшет
- отдельно обрабатываются вращения энкодера с нажатой и отжатой КЭ
- нажатие КЭ при включенном планшете: короткое --> enter, длинное --> POWER OFF, при выключенном планшете --> POWER ON


В общем если кому нибудь кроме меня интересна такая связка то выложу схему и исходники (как все допишу и отлажу).
Ну и готов выслушать конструктивные замечания и предложения по реализации.

p.s. была мысль на arduino реализовать hid клавиатуру, но на nano эта конструкция работала нестабильно, а покупать более мощную желания не было, поэтому решил отказаться в пользу более промышленного решения.

macau 14.04.2013 14:23

конечно выкладывай, интересно как реализован енкодер

Kamik 14.04.2013 15:30

:yes4: выкладывай, очень интересно

Andrey_61 14.04.2013 16:02

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

Алгоритм думаю такой.

________________________лево___|__право__|верх|_низ
короткое нажатие_____________________________
длинное нажатие______PrewTrtack__NextTrack__Esk__Menu

_____________________
вращение влево__|__вращение вправо
кн. энкодера отжата_________vol+________________vol-
кн. энкодера нажата________HOME_____________Alt+Tab



еще думаю, прикручивать туда ик пульт или нет. В предидущей магнитоле он 99 % времени валялся в бардачке.

macau 14.04.2013 19:08

нажатие+поворот в движении оче неудобно

Andrey_61 14.04.2013 19:42

Цитата:

Сообщение от macau (Сообщение 255450)
нажатие+поворот в движении оче неудобно

Это если надо долго крутить, а у меня против часовой один щелчок, по часовой 4-5 щелчков (сколько там одновременно может быть запущенно приложений)

Andrey_61 18.04.2013 00:02

За пару вечеров наваял скетчик для ARDUINO

В качестве энкодера использовал 8- позиционный джойстик RKJXT1E12001, он хоть и 8-ми позиционный, но по нему можно отслеживать 16 положений, хотя это скорее не фича, а баг связанный с миниатюрными размерами, так же при каждом нажатии стика срабатывает еще и центральная кнопка энкодера, что тоже добавило проблем при написании алгоритма.

Вот небольшое видео как это работает
http://youtu.be/2x4QndwLlCE

Alex-NN 19.04.2013 00:44

Автор начал очень полезное дело! Надеюсь в итоге в ветке появится схема и скетч.

Andrey_61 19.04.2013 10:35

Цитата:

Сообщение от Alex-NN (Сообщение 256009)
Автор начал очень полезное дело! Надеюсь в итоге в ветке появится схема и скетч.

Как только приедет Joycon и все это заработает вместе, сразу же выложу и схему и скетч.

P.s. если кому нибудь попадались нормальные джойстики с энкодерами кидайте сюда ссылки. т.к. у меня есть подозрение что мой 8-ми позиционный будет не очень удобен в управлении.

macau 19.04.2013 11:02

от уравления зеркалами не пойдет? они обычно не вырвиглазны и удобны

Andrey_61 19.04.2013 11:45

Цитата:

Сообщение от macau (Сообщение 256029)
от уравления зеркалами не пойдет? они обычно не вырвиглазны и удобны

а это идея, и теоретически с помощью холодной сварки его можно сростить с энкодером

macau 19.04.2013 14:55

кстати как реализован саспенд ардуины? или она не засыпает? сколько потребление вхолостую?

Andrey_61 19.04.2013 15:18

Цитата:

Сообщение от macau (Сообщение 256063)
кстати как реализован саспенд ардуины? или она не засыпает? сколько потребление вхолостую?

Что такое саспенд, судя по контексту спящий режим?

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

Кстати по выключению. Я планирую уводить планшет в сон и таскером выключать все радиоинтерфейсы(основные потребители).
Но если мне кто нибудь подскажет как можно выключить планшет с кнопки, минуя вызов диалогового окна, то можно реализовать следующую схему, при выключении зажигания планшет слипится, а через 1-2-3 часа выключается полностью, соответственно при коротких остановках планшет будет просыпаться мгновенно, + еще и все что было запущенно сразу начинает работать, а при длительных стоянках он не будет вхолостую сажать аккум(хотя при его потреблении меня этот вопрос не сильно волнует, но все равно не по фэншую). Сейчас подобный алгорит у меня на виндовом кар пс, при выключении зажигания сон, а через какое то время гибернация, разница лишь в том что у androida нет режима гибернации и при включении придется в ручную запускать все программы.


P.s для очень длительных стоянок, например приехал на море и на 10 дней бросил машину можно предусмотреть хардварный выключатель со скрытой установкой, у меня машина так долго редко простаивает поэтому напрягать не будет.

macau 19.04.2013 16:27

у меня нано в3, в холостом режиме жрет около 80ма, что много. вот по этому мануалу http://donalmorrissey.blogspot.ru/20...leep-part.html удолось снизить потребление в спячке до 14ма.
выключение на киндле я организовал подпаявшесь к кнопке питания. там при подаче низкого уровня 200-500мс хватает чтоб эмулировть короткое нажатие: https://github.com/tmpdo/tiggo_mmcu/...u/nano_mcu.ino там этот кусок закомменчен

alexvtk 19.04.2013 18:45

Цитата:

Сообщение от Andrey_61 (Сообщение 256065)
Что такое саспенд, судя по контексту спящий режим?

Кстати по выключению. Я планирую уводить планшет в сон и таскером выключать все радиоинтерфейсы(основные потребители).
Но если мне кто нибудь подскажет как можно выключить планшет с кнопки, минуя вызов диалогового окна, то можно реализовать следующую схему, при выключении зажигания планшет слипится, а через 1-2-3 часа выключается полностью, соответственно при коротких остановках планшет будет просыпаться мгновенно, + еще и все что было запущенно сразу начинает работать, а при длительных стоянках он не будет вхолостую сажать аккум(хотя при его потреблении меня этот вопрос не сильно волнует, но все равно не по фэншую).

Тем же Таскером и сделайте. В качестве плагина Таскер воспринимает это. Использую и нет проблем.

Andrey_61 19.04.2013 20:05

Цитата:

Сообщение от alexvtk (Сообщение 256087)
Тем же Таскером и сделайте. В качестве плагина Таскер воспринимает это. Использую и нет проблем.

Я правильно понимаю,что с помощью этой утилитки можно выключить планшет, через например 1 час нахождения в спящем режиме? (я просто еще не углублялся в изучение таскера, поэтому периодически задаю такие вопросы.)

Andrey_61 19.04.2013 20:17

Цитата:

Сообщение от macau (Сообщение 256073)
у меня нано в3, в холостом режиме жрет около 80ма, что много. вот по этому мануалу http://donalmorrissey.blogspot.ru/20...leep-part.html удолось снизить потребление в спячке до 14ма.
выключение на киндле я организовал подпаявшесь к кнопке питания. там при подаче низкого уровня 200-500мс хватает чтоб эмулировть короткое нажатие: https://github.com/tmpdo/tiggo_mmcu/...u/nano_mcu.ino там этот кусок закомменчен

Сейчас нечем померить потребление, вернее есть чем, но ардуина запитана через usb, как будет под рукой БП что бы подать внешнее питание поиграюсь с энергосбережением, хотя по мне так 80 мА для автомобильного аккума как слону дробинка, у меня регик запитан постоянно, жрет что то около 200 мА, проблем с аккумулятором даже зимой никогда не было, а если и начнутся, так это акум надо менять.

macau 19.04.2013 20:21

Цитата:

Сообщение от Andrey_61 (Сообщение 256093)
Сейчас нечем померить потребление, вернее есть чем, но ардуина запитана через usb, как будет под рукой БП что бы подать внешнее питание поиграюсь с энергосбережением, хотя по мне так 80 мА для автомобильного аккума как слону дробинка, у меня регик запитан постоянно, жрет что то около 200 мА, проблем с аккумулятором даже зимой никогда не было, а если и начнутся, так это акум надо менять.

что-то я про 80 загнул. http://pccar.ru/showthread.php?t=18872&page=3 тут у меня все 200. конечно, возможно кот не оптимизирован, но в любом случае, в спячке оно почти ничего не потребляет

Andrey_61 19.04.2013 21:13

Цитата:

Сообщение от macau (Сообщение 256094)
что-то я про 80 загнул. http://pccar.ru/showthread.php?t=18872&page=3 тут у меня все 200. конечно, возможно кот не оптимизирован, но в любом случае, в спячке оно почти ничего не потребляет

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

Но думаю что оптимизацией процесов я займусь после того как подружу ее с joycon-ом.

Кстати если в теме есть владельцы Joycon-ов, посмотрите, как там сделана подтяжка на + 5в. каналов резистивных кнопок. Есть возможность выдрать этот резистор, или используется внутренний резистор контроллера?

Andrey_61 19.04.2013 21:19

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

macau 19.04.2013 23:10

Цитата:

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

вообще там 4 варианта пробуждения: через событие на уарт, через прерывание, через таймер и через пса. для меня уарт не самый удобный вариант, я пробовал через прерывание. в режиме сна в ардуине все процессы останавливаются
http://2.bp.blogspot.com/_9WOJMofzxU.../Picture+1.png
, так что сначала надо ее пробудить(в нано как раз 2 ноги отвечают за нужные прерывания, так что без труда можно повесить и кнопку и асс) а потом уже крутить код. интеррупты так же удобны тем, что можно настроить их либо на изменение уровня в любую сторону, либо как триггер

Andrey_61 20.04.2013 00:27

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

Andrey_61 29.07.2013 00:26

Есть у кого нибудь в arduino leonardo?
Пытаюсь сделать из него контроллер, надо кое что протестить, а у меня сейчас нексуса(подойдет в принципе любой девайс на андроиде) под рукой нет.

Andrey_61 01.08.2013 17:19

В связи с тем что у меня теперь опять есть нексус решил довести проект до ума

От связки JoyCon Exr + ARDUINO решил отказаться в пользу Arduino Leonardo.

На данный момент она умеет представляться HID клавиатурой.
Работает следующий функционал.

Джойстик
________________________лево___|__право__|верх|_низ
короткое нажатие_____________________________
длинное нажатие______PrewTrtack__NextTrack__Esk__Menu

Энкодер
_____________________вращение влево__|__вращение вправо
кн. энкодера отжата_________vol+________________vol-
кн. энкодера нажата_____________________

чуть позже прикручу ИК пульт и продублирую все команды с него.
На данный момент есть несколько вопросов
1. Как выключить планшет(совсем) минуя меню выключения.
2. в винде если нажать ALT+TAB появится список приложений, дальше удерживая ALT можно колесиком мыши листать как вперед по списку, так и назад, в андроиде эта фича не срабатывает, нужны идеи как можно повторить данный функционал. А то ALT+TAB можно листать приложения только вперед.

На выходных постараюсь снять видюху как все это работает.

Andrey_61 15.01.2014 15:35

Проект получил развитие немного в другом направлении, вместо Arduino Nano+ JoyCon используется Arduino Leonardo, но начальная идея (контроль питания и управление) полностью сохранена, подробности можно посмотреть в моем проекте

Sangreal 03.03.2014 20:22

Где же обещанное видео?


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

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