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

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Рабочий журнал (http://pccar.ru/forumdisplay.php?f=25)
-   -   ВАЗ 2114 + планшет на Win 8.1 (http://pccar.ru/showthread.php?t=23393)

Kent5601 26.08.2015 19:05

ВАЗ 2114 + планшет на Win 8.1
 
всем привет!
после ряда неудач решил не опускать руки и продолжить создание всеядного CarPC!

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

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

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

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

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

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

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


схема подключения ардуино
ОГРОМНОЕ СПАСИБО РЕБЯТАМ lti1 И ВладимирC
потому что сам не разобрался как сделать включение через ардуино :dntknw:
ACC будет от сигнализации
https://pp.vk.me/c623424/v623424177/...84dBkgtNlU.jpg
скетч от lti1 задумка ВладимирC
PHP код:

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_AINPUT_PULLUP); // encoder 1 
  
pinMode(pin_enc_BINPUT_PULLUP); // encoder 2 
  
  
currentTime millis(); 
  
loopTime currentTime;  
  
Keyboard.begin(); 
  
//// кнопки
  
Serial.begin(9600);
  
////реле
  
pinMode(ACCINPUT); 
  
pinMode(HubOUTPUT); 
  
pinMode(HallOUTPUT);

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

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

   
digitalWrite(HubLOW); 
   
pauseTime 0
   } 


скорее всего пробной установкой в машину буду заниматься в на выходных!
куда монтировать пока думаю
может быть так
https://pp.vk.me/c622524/v622524177/...BYBCUVgxXc.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 может плохо работать.

Вот у чела проблема с такой же звуковухой...если есть к ней прога, то помоги ему.

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% сел!!!!!! что делать?????????????


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

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