PDA

Просмотр полной версии : ВАЗ 2114 + планшет на Win 8.1


Kent5601
26.08.2015, 19:05
всем привет!
после ряда неудач решил не опускать руки и продолжить создание всеядного CarPC!

1) Был куплен 8-ми дюймовый планшет Prestigio MultiPad PMP880TD на Win 8.1
цена 4500 руб.
нашел в планшете 2 минуса!
первое это то что у него нет GPS
второе 16gb встроенной памяти это катастрофически МАЛО

2) переносной жесткий диск аж на целый таробайт)))):smile2:

3) присмотрел на aliexpress.com звуковую карту! про все функции писать не буду нужна она для избавления от магнитолы что бы звук пустить напрямую на усилители (в будущем)
https://pp.vk.me/c623424/v623424177/45d80/uSqn8EX2nDw.jpg

4) давно были куплены DC-DC преобразователь KIS-3R33S 2 штуки

1 для питания планшета
2 для питания хаба


5) хаб китайский дома нашел про него рассказывать не буду

6) купил еще ардуино леонардо

схема подключения питание планшета и периферии
https://pp.vk.me/c623424/v623424177/45da3/CS8aOa9jLpQ.jpg
модуль питания для планшета был переделан! выпаял резистор который управляет напряжением и припаян подстроечный резистор!
по поводу OTG
интересная ситуация у данного планшета! читал на 4пда что этот планшет может работать и без шнурка "отг"! если не подключать GND к ID то планшет будет видеть хаб с периферией и заряжаться! ЭТО ОЧЕНЬ СИЛЬНО ПОРАДОВАЛО!

схема подключения ардуино
ОГРОМНОЕ СПАСИБО РЕБЯТАМ lti1 И ВладимирC
потому что сам не разобрался как сделать включение через ардуино :dntknw:
ACC будет от сигнализации
https://pp.vk.me/c623424/v623424177/45dad/184dBkgtNlU.jpg
скетч от lti1 задумка ВладимирC
unsigned long currentTime;
unsigned long loopTime;
const int pin_enc_A = 2;
const int pin_enc_B = 3;
const int pin_pause = 4;
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev=0;
unsigned char pause;
//// реле
int ACC = 4; // D4 вход ACC
int Hub = 5; // D5 выход управления хабом
int Hall = 6; // D6 выход управления датчиком холла
int flagACC = 0;
unsigned long pauseTime = 0;
//кнопки
//****************** Здесь необходимо указать свои значения ***************

int analogPin=0; // пин для подключения кнопок, по умолчанию A0

int release_button = 0; // значение при отпущенных кнопках
int button_release_range = 50; // диапазон значения + - при отпущенных кнопках
int button_range = 10; // диапазон значения нажатых кнопок + -
int time_holding = 500; // время для удержания кнопок в миллисекундах
int time_tinkling = 10; // время исключающее дребезг контактов в миллисекундах
int vol_up = 288; // значение кнопки увеличить громкость
int vol_down = 333; // значение кнопки уменьшить громкость
int alt_tab = 469; // значение кнопки которая будет работать как Alt + Tab
int next = 595; // значение кнопки которая будет работать как Next при коротком нажатии и Fast Forward при удержании
int previous = 792; // значение кнопки которая будет работать как Previous при коротком нажатии и Rewind при удержании
int play_pause = 777; // значение кнопки которая будет работать как Play/Pause при коротком нажатии и Mute при удержании

//************************************************** ************************

int data;
unsigned long flag = 0;
unsigned long eventTime = 0;
unsigned long pauseMillis = 0;

void setup() {
pinMode(pin_enc_A, INPUT_PULLUP); // encoder 1
pinMode(pin_enc_B, INPUT_PULLUP); // encoder 2

currentTime = millis();
loopTime = currentTime;
Keyboard.begin();
//// кнопки
Serial.begin(9600);
////реле
pinMode(ACC, INPUT);
pinMode(Hub, OUTPUT);
pinMode(Hall, OUTPUT);
}

void loop() {
currentTime = millis();
if(currentTime >= (loopTime + 5)){ // проверяем каждые 5мс (200 Гц)
encoder_A = digitalRead(pin_enc_A); // считываем состояние выхода А энкодера
encoder_B = digitalRead(pin_enc_B); // считываем состояние выхода А энкодера
if((!encoder_A) && (encoder_A_prev)){ // если состояние изменилось с положительного к нулю
if(encoder_B)
{
// выход В в полож. сост., значит вращение по часовой стрелке
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press(KEY_LEFT_SHIFT);
Remote.increase();
delay(50);
Keyboard.releaseAll();
}
else {
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press(KEY_LEFT_SHIFT);
Remote.decrease();
delay(50);
Keyboard.releaseAll();
}
}
encoder_A_prev = encoder_A; // сохраняем значение А для следующего цикла
loopTime = currentTime;
}
//// кнопки
Serial.println(data);
data=analogRead(analogPin);
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 0)
{
eventTime=millis();
}

//********************** Громкость ************************************

if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= vol_up - button_range && data <= vol_up + button_range && flag == 0)
{
Remote.increase();
flag = 5;
delay(10);
Remote.clear();
}

if(millis()-eventTime>time_holding && data >= vol_up - button_range && data <= vol_up + button_range && flag == 5 || data >= vol_up - button_range && data <= vol_up + button_range && flag && flag == 3)
{
Remote.increase();
flag = 3;
Remote.clear();
delay(100);
}

if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= vol_down - button_range && data <= vol_down + button_range && flag == 0)
{
Remote.decrease();
flag = 6;
delay(10);
Remote.clear();
}

if(millis()-eventTime>time_holding && data >= vol_down - button_range && data <= vol_down + button_range && flag == 6 || data >= vol_down - button_range && data <= vol_down + button_range && flag == 3)
{
Remote.decrease();
flag = 3;
Remote.clear();
delay(100);
}

//********************** AltTab + Ещё что то ************************************

if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= alt_tab - button_range && data <= alt_tab + button_range)
{
flag = 1;
}

if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 1 && pauseMillis == 0)
{
Keyboard.press(KEY_LEFT_ALT );
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
flag = 0;
pauseMillis = millis();
}

if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 1 && pauseMillis != 0)
{
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
flag = 0;
pauseMillis = millis();
}

if(pauseMillis && millis()-pauseMillis >= 800 && data>=release_button - button_release_range && data<=release_button + button_release_range)
{
flag = 0;
pauseMillis = 0;
Keyboard.releaseAll();
}

if(millis()-eventTime>time_holding && data >= alt_tab - button_range && data <= alt_tab + button_range && flag == 1)
{
flag = 0;
}
//********************** Next и Fast Forward ************************************

if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= next - button_range && data <= next + button_range)
{
flag = 2;
}

if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 2)
{
Remote.next();
flag = 0;
delay(10);
Remote.clear();
}

if(millis()-eventTime>time_holding && data >= next - button_range && data <= next + button_range && flag == 2 || data >= next - button_range && data <= next + button_range && flag == 3)
{
Remote.forward();
flag = 3;
Remote.clear();
delay(100);
}
//********************** Previous и Rewind ************************************

if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= previous - button_range && data <= previous + button_range)
{
flag = 4;
}

if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 4)
{
Remote.previous();
flag = 0;
delay(10);
Remote.clear();
}

if(millis()-eventTime>time_holding && data >= previous - button_range && data <= previous + button_range && flag == 4 || data >= previous - button_range && data <= previous + button_range && flag == 3)
{
Remote.rewind();
flag = 3;
Remote.clear();
delay(100);
}

//********************** Play/pause + Mute ************************************

if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= play_pause - button_range && data <= play_pause + button_range)
{
flag = 7;
}

if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 7)
{
Remote.play_pause();
flag = 0;
delay(10);
Remote.clear();
}

if(millis()-eventTime>time_holding && data >= play_pause - button_range && data <= play_pause + button_range && flag == 7)
{
Remote.mute();
flag = 0;
delay(10);
Remote.clear();
}

if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 3 || data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 5 || data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 6)
{
flag = 0;
}
// ********** упровление питание **********
if (digitalRead(ACC)== HIGH && flagACC == 0)
{
digitalWrite(Hub, HIGH);
pauseTime = millis();
flagACC = 1;
}
if (millis()-pauseTime>=4000 && flagACC == 1) // пауза 2 секунды
{
digitalWrite(Hall, HIGH);
pauseTime = 0;
}

if (digitalRead(ACC)== LOW && flagACC == 1)
{
digitalWrite(Hall, LOW);
pauseTime = millis();
flagACC = 0;
}
if (millis()-pauseTime>=6000 && flagACC == 0) // пауза 10 минут
{
digitalWrite(Hub, LOW);
pauseTime = 0;
}
}

скорее всего пробной установкой в машину буду заниматься в на выходных!
куда монтировать пока думаю
может быть так
https://pp.vk.me/c622524/v622524177/2d325/3BYBCUVgxXc.jpg


НЕ СУДИТЕ СТРОГО Я НОВИЧОК В ЭТОМ ДЕЛЕ!!!

ВладимирC
26.08.2015, 19:36
По идее все должно работать. Правда могут возникнуть трудности со звуком, из-за отсутствия гальванической развязки в КИС. И я бы предусмотрел полное отключение питания на кисы после длительного простоя.

ВладимирC
26.08.2015, 19:43
Ага, нашел ошибку в скетче, не помню. что у леонардо на 0 пине, но точно не аналоговый пин. Измени int analogPin=0; на int analogPin=A0; ну и соответственно на него и подавай управление кнопками.

ВладимирC
26.08.2015, 19:52
И еще одна ошибка в схеме ардуино. Там где через "1 минуту вкл/ выкл срузу" по скетчу ( и у меня) не 1 минута, а 2 секунды, нужно лишь для того, чтобы планшет проснулся чуть позже хаба. Ну и надо понимать, что это реле не включает планшет, а своими нормально замкнутыми контактами всего лишь размыкает датчик холла. Есть ли он в твоем планшете - не в курсе, возможно придется пробуждать его как то по другому. А питание на планшет поступает постоянно, когда есть питание на DC-DC 12/5

sirota
26.08.2015, 20:41
первое это то что у него нет GPS

Это даже считаю плюсом, так как встроенный gps может плохо работать.

Вот у чела проблема (http://pccar.ru/showthread.php?t=23391) с такой же звуковухой...если есть к ней прога, то помоги ему.

Kent5601
26.08.2015, 20:46
Спасибо)) по питанию
Полное отключение будет с кнопки! Будут отключаться кис которы для планшета и ардуино!
По скетчу это я видел просто забыл исправить да это не страшно))) но спасибо)
Хола нет!!! Но он как ноутбук при подключении внешнего питания экран загорается а без питания подсветка гаснет и через минуту уходит в сон!))) мне это очень нравится!
Винду пере настраивал под себя!

Kent5601
26.08.2015, 20:55
Блин стремно((( свиду клевая!

mendisabal
28.08.2015, 15:53
надо было брать планшет с hdmi выходом ,прикупил бы цифровой усь и со звуком бы вопрос решил на всегда .

Kent5601
28.08.2015, 18:21
добавил энкодер

Kent5601
02.09.2015, 12:00
ребята нужна помощь! снял батарейку подключил модуль питания а планшет садится и выключается! ставил 3.8 вольт 55%. постепенно увеличивал не помогло поставил другой модуль на 5.2 вольт было 100% сел!!!!!! что делать?????????????

OKLiK
02.09.2015, 12:13
Я лично сделал 4,2в = 100% в моем случае. По выключению планшета, контроллер управления снимает питание с контроллера аккумулятора тем самым происходит полный сброс на заводские установки контроллера и при включение планшета, контроллер управления снова подает питание на контроллер аккумулятора и система загружается всегда 100% зарядом.
Заряда до 20% мне хватает на часов 9, потом просто выключаю и включаю, снова 100%. Другого способа не нашел, поскольку вся это фигня контролируется на уровне биоса. Ну если только сделать эмулятор контроллера аккумулятора, но времени у меня этим заниматься, нету :)

Kent5601
02.09.2015, 14:57
а как тогда режим сна сделать????? как сделать чтоб он включался??? я пробовал подавать на юсб питание он сам не включается!

OKLiK
02.09.2015, 16:04
Я в сон не вгоняю его, а выключаю полностью, чтобы не разряжать аккумулятор авто, загружается он быстро. Включаю кнопкой через контроллер управления который давит на кнопку планшета.

Kent5601
02.09.2015, 16:08
я на деюсь это не секрет как он нажимает и при каких условиях??? по можешь с разработкой???

OKLiK
02.09.2015, 19:00
Секретов нет.
Условий пока нет, после первого проекта, понял что не стоит включать комп в машине по АСС и запуску двигателя, есть моменты когда это не нужно. Поэтому использую пока только кнопку без фиксации и включаю планшет когда нужно, уже на автомате все :)

Контроллер управления управляет кнопкой включения планшета, подает питание на контроллер аккумулятора, подает питание на усб хаб, ну и на усилитель. Контролирует питание +5в у усб разъема в режиме отг.
Включаю кнопкой контроллера:
- подаем питание на контроллер аккумулятора.
- нажимаем кнопку планшета 3.7сек.
- ждем когда на усб появится +5в. (если не появилось, то делаем сброс планшета - ресет и на начало)
- отпускаем кнопку планшета.
- включаем реле усб-хаб.
- через 10 секунд включаем реле усилителя.

Выключение кнопкой:
- нажимаем кнопку планшета 1,5 сек. (в винде ставим условие выключать питание).
- выключаем реле усилителя.
- ждем когда пропадет +5в на усб. (если за 3 минут не пропало, продолжаем дальше, не ждем)
- выключаем реле усб-хаба.
- снимаем питание с контроллера аккумулятора.

Ждем нового включения кнопкой, вот и все пока..

Kent5601
02.09.2015, 19:03
а что за контроллер? ардуино???

OKLiK
02.09.2015, 19:08
Не хочу обидеть тебя и других, но я не поклонник этого г...а для ло..в, только все свое с нуля.
Вот схема:

Kent5601
02.09.2015, 19:13
я новичок в этом деле! и мне не легко это дается а то г...но которое для л...ов в программировании проще!!! вот и все))) спасибо за объяснение! а есть фотки ка ты рамку делал??7 если есть кинь в личку!

OKLiK
02.09.2015, 19:15
Ссылка на то, что есть в подписе "Проект 2"

Kent5601
02.10.2015, 15:05
всем привет! долго всё это собиралось и додумывалось :dntknw:!
даже не знаю с чего и начать!:be:
начну с планшета!!!!
Prestigio MultiPad PMP880TD (https://yadi.sk/i/Lbqak7vajTzf7)

выпаян разъем micro USB
подумав понял что он мне будет мешать при установке планшета в торпеду автомобиля. подпаял провода без функции OTG. выяснил что разъем на этом планшете полноценный USB как на ПК.
выпаяна батарейка в место нее контролер на кисе!
вырезаны отверстия на задней крышке планшета для охлаждения (греется чутка. мне это не понравилось)!
установлен кулер 12 вольт и подключен к питанию планшета! работают в тандеме!
выведены провода для включения планшета
http://cs622926.vk.me/v622926177/44073/vmSh--14mEw.jpghttp://cs622926.vk.me/v622926177/4407c/Tc0xLUmRZ_U.jpghttp://cs622926.vk.me/v622926177/44085/kzT5zKCnwT0.jpghttp://cs622926.vk.me/v622926177/4408e/cQP_UAqF5ZY.jpghttp://cs622926.vk.me/v622926177/44097/2P0sWQEQk54.jpghttp://cs622926.vk.me/v622926177/44060/7r36ntgSAJQ.jpghttp://cs622926.vk.me/v622926177/4406a/ZrodXz583D0.jpg




теперь о блоке управления системой "БУС"

корпус от БП для ПК
Arduino Leonardo - заведует вкл/выкл и управлением планшета

2 реле на включение планшета по этой схеме http://cs622926.vk.me/v622926177/44171/T8gNi94ehwo.jpg
выключается он по другому! в скетче прописано при пропадании АСС зажать кнопку F3! в самом же планшете создан файл "завершения работы" + быстрый вызов F3 текстовый документ можете почитать!! (https://yadi.sk/i/5GXeBLrujU3VH)
еще 2 реле отвечают за сигнал АСС такая же схема как выше только одно 12 вольт а второе 5 вольт, в скетче написано что 2-ое реле всегда отключено и включается на пол секунды только при включении ардуины!

управлять планшетом бет джостик вместо мышки, энкодер для регулировки звука и 4 кнопки:
вперед
назад
пауза
альт+таб
скетч (https://yadi.sk/i/Z2CmLW0LjU4v3) от lti1

http://cs622926.vk.me/v622926177/440a0/Z6HbbLNeaDE.jpghttp://cs622926.vk.me/v622926177/440a9/U31fGhQOrzI.jpghttp://cs622926.vk.me/v622926177/440b2/qO_z9-t4YLw.jpghttp://cs622926.vk.me/v622926177/440bb/7N6_6PpDkKw.jpghttp://cs622926.vk.me/v622926177/440c4/Fo5DY5j-fTc.jpghttp://cs622926.vk.me/v622926177/440cd/1BBWwlRFBHg.jpghttp://cs622926.vk.me/v622926177/440d6/Ii9ncgufIYQ.jpghttp://cs622926.vk.me/v622926177/440df/DlW2HkQf6ZI.jpghttp://cs622926.vk.me/v622926177/440e8/dhHx9yM92O4.jpghttp://cs622926.vk.me/v622926177/440f1/28fMKqhs5gk.jpghttp://cs622926.vk.me/v622926177/440fb/Ihbc2WI4hYk.jpghttp://cs622926.vk.me/v622926177/44105/70Rg4O3C14o.jpghttp://cs622926.vk.me/v622926177/44105/70Rg4O3C14o.jpghttp://cs622926.vk.me/v622926177/44117/LVgtjuCIl-M.jpghttp://cs622926.vk.me/v622926177/44120/DUQtIcnG7CY.jpghttp://cs622926.vk.me/v622926177/44129/ByaulHfX710.jpg

вроде все! установлю это все в машину посмотрим как поработает потом еще что нибудь напишу!
не пинайте за кучу запутанных проводов! если нормально будет работать на нарисую плату!
ну и нудно же фотки сюда вставлять(((

artem-slk
08.10.2015, 17:03
Подскажи по настройкам VAC и AudioMulch а то что то не получается.

Kent5601
08.10.2015, 18:51
Подскажи по настройкам VAC и AudioMulch а то что то не получается.

ты про что??

artem-slk
08.10.2015, 18:55
Как у тебя построена поканалка