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

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > AndroidCar > Питание

Результаты опроса: Писать ли про развитие проекта, или пофиг, есть свой и работает.
Пиши дальше 201 96.17%
Не пиши, лучше займись чем нибудь (другим) полезным. 8 3.83%
Голосовавшие: 209. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы
Старый 24.09.2015, 00:45   #61
oleg707
Гуру
 
Аватар для oleg707
 
Регистрация: 16.04.2014
Возраст: 34
Город: Gdynia
Регион: другой - для добавления сообщить ab
Машина: Ford Escape
Сообщений: 2,190
oleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond repute
Question

покритикуйте новый скетч, еще не заливал в машину.
Тут СПОЙЛЕРЫ есть на форуме?!

// ver23.09.2249
//D8 pin - (PLANSHpin pin)(выход 5в логический) (выключает питание планшета!(R13-R14))
//D7 pin - самозапитка (AKB pin) (выход 5в логический)


/*ноги ардуины*/
int PLANSHpin = 8; //управление на выключатель питания БАТАРЕИ планшета через управляющую ногу ss\sd1
//0 = нет питания; 1 = есть питание ( БАТАРЕИ планшета)
int AKBpin = 7; //управление транзюком самозапитки блока питания VT2
//1 = есть самозапитка; 0 = нет самозапитки
int OTGpin = 10; //управление транзюком OTG VT3
//1 = есть масса на OTG; 0 = нет массы на OTG
int SLEEPpin = 11; //управление транзюком сна VT4 (на датчик холла))
//1 = потух экран(есть масса на пине сна); 0 = штатная работа планшета (нет массы на пине сна)
int POGOpin = 9; //управление транзюком питания +5V (VT5) на пого пин, чтоб планшет думал, что идет зарядка
//1 = нет 5V на POGO; 0 = есть 5V на POGO
int REMpin = 12; // //управление транзюком VT7 и через него VT6 = выход сигнала REM (+12v) НЕ АКТИВИРОВАЛ В СКЕТЧЕ, на плате распаяно.
//0 = нет 12В на выходе REM; 1 = есть 12В на выходе REM

/*логические переменные, используемые в коде*/
int flagACC = 0; //признак включенного зажигания
int flagAKB = 0; // признак заряженной батареи
int flagHALL = 0; //флаг отработки морга экрана при холодном старте( flagHALL = 1 экран можно включать и выключать, датчик холла на планшете инициализировался)
/*счётчики времени*/
unsigned long eventTime = 0;
unsigned long pauseTimeACC = 0;
unsigned long pauseTimeAKB = 0;
unsigned long pauseTimeHALL = 120000; // время паузы перед морганием экрана (для датчика холла)(равен времени загрузки планшета плюс секунд 10-20)= 2мин

void setup()
{
// put your setup code here, to run once:
pinMode(PLANSHpin, OUTPUT);
pinMode(AKBpin, OUTPUT);
pinMode(OTGpin, OUTPUT);
pinMode(SLEEPpin, OUTPUT);
pinMode(POGOpin, OUTPUT);
pinMode(13, OUTPUT); //светодиодик на плате ардуины
analogReference(INTERNAL); //перевод напряжения делителя на внутреннее значение 1,1В ( для повышения точности замера Uacc и Uakb)
// Serial.begin(1200);
}


void loop()
{
int Uacc = analogRead (A7); //Читаем напругу с делителя R10-R11
int Uakb = analogRead (A6); //Читаем напругу с делителя R2-R3
float U_acc_real = Uacc * (1.1 / 1023.0*17.2); //Вычисляем реальное напряжение +ACC на входе делителя (A7) 17.2=поправка на погрешность делителя. обкатывать только на реальном питании от 12В! при питании от ЮСБ 5,0В плавают
float U_akb_real = Uakb * (1.1 / 1023.0*17.1); //Вычисляем реальное напряжение +30 на входе делителя (A6)
//Serial.print("U_akb_real = ");Serial.println(U_akb_real);
//Serial.print("U_acc_real = ");Serial.println(U_acc_real);

// кусок кода ниже нужен для того, чтобы при включении и сразу выключении ACC при полностью выключенном планшете(холодный старт) экран мог тухнуть по сигналу датчика холла.
if (millis()>pauseTimeHALL && flagHALL == 0) //проверка отсчета при холодном старте
{flagHALL = 1;}
// if (flagHALL == 0 && flagACC == 1){flagHALL = 1;} // надо ли этот кусок кода тут?! Я ХЗ, пусть будет. но скорее не надо.




// блок ACC
if (U_acc_real>= 12 && flagACC == 0 && flagAKB == 1) //проверка напруги АСС и АКБ при флаге ACC = 0
{

flagACC = 1; //ВКлючили зажигание
pauseTimeACC = millis();
//сразу после включения зажигания даём минус на Y-OTG и плюс +5V на POGO или USB.
digitalWrite(OTGpin, 1); //включаем минус на Y-OTG (8 pin PW1) (включается хаб? и звуковая карта)
digitalWrite(POGOpin, 0); //включаем +5V (3 pin PW1 = POGO) нужно для распознавания планшетом признака зарядки. ( можно подавать на +5В USB кабеля (для тимуровской прошивки или если не используется датчик холла)

}
if (millis()-pauseTimeACC>=2000 && flagACC == 1) // пауза 2c после включения ACC и потом делать следующ(пока включено ACC):
{
digitalWrite(SLEEPpin, 0); //вЫключаем минус на упр SLEEP (7 pin PW1) = включаем экран
// REM УПРАВЛЕНИЕ РАСКОММЕНТИТЬ и протестировать
//digitalWrite(REMpin, 1); // даем + на управление VT7, тот дает минус на управление VT6, а VT6 выдаёт +12V на выход (PW1 - 13 pin))

pauseTimeACC = 0;
}

if (U_acc_real< 12 && flagACC == 1)
{
flagACC = 0; //Выключили зажигание
pauseTimeACC = millis();
pauseTimeAKB = millis(); // сброс времени для отсчета отключения самозапитки



// REM УПРАВЛЕНИЕ РАСКОММЕНТИТЬ и протестировать
//digitalWrite(REMpin, 0); // даем - на управление VT7, тот убирает за счет подтяжки R24 минус на управление VT6, а VT6 убирает +12V на выход (PW1 - 13 pin))
}

if (millis()-pauseTimeACC>=4000 && flagACC == 0) //пауза 4c после вЫключения ACC и потом делать следующ:
{

digitalWrite(OTGpin, 0); //вЫключаем минус на Y-OTG (8 pin PW1)
digitalWrite(POGOpin, 1); //вЫключаем +5V (3 pin PW1 = POGO)
pauseTimeACC = 0;
if (flagHALL==1){digitalWrite(SLEEPpin, 1);} else {digitalWrite(SLEEPpin, 0);} //включаем минус на SLEEP (7 pin PW1)при этом тухнет экран (если прошло 2 минуты с момента включения ардуины)
}




// .. блок АКБ
if (U_akb_real>=12 && flagAKB == 0) //проверка +30 и флага акб
{
digitalWrite(AKBpin, 1); // включаем самозапитку

digitalWrite(PLANSHpin, 1); //включаем питание на батарею планшета (ss\sd1)
flagAKB = 1;
}
if (U_akb_real<12 && flagAKB == 1) // ситуация, когда сел при работе ардуины аккумулятор
{
flagAKB = 0;

}

if (millis()-pauseTimeAKB>=6000 && flagAKB == 0) // если севший аакумулятор
{ // пауза 6c
digitalWrite(PLANSHpin, 0); //вЫключаем питание на батарею планшета (ss\sd1)
digitalWrite(AKBpin, 0); //выключаем AKBpin, при этом пропадает питание через полевик на KIW, система ПОЛНОСТЬЮ обесточивается
delay (3000); // задержка для аппаратного выключения
}

if (flagAKB == 1 && flagACC == 0) //ситуация, когда норм акб и давно выключили зажигание (ACC)
{
if (millis()-pauseTimeAKB>=10800000 && flagAKB == 1) // если давно выключили ACC
{ // пауза (3600000 - 60мин) (60000 - 1 мин)(10800000=3ч)
digitalWrite(AKBpin, 0); //выключаем AKBpin, при этом пропадает питание через полевик на KIW, система ПОЛНОСТЬЮ обесточивается
digitalWrite(PLANSHpin, 0); //вЫключаем питание на батарею планшета (ss\sd1)
delay (3000); // задержка для аппаратного выключения
}
}

if (flagAKB ==0 ){digitalWrite(13, 0);} else {digitalWrite(13, 1);}; // индикация напруги батареи на ардуинине.

}
oleg707 вне форума   Ответить с цитированием
Старый 24.09.2015, 16:41   #62
oleg707
Гуру
 
Аватар для oleg707
 
Регистрация: 16.04.2014
Возраст: 34
Город: Gdynia
Регион: другой - для добавления сообщить ab
Машина: Ford Escape
Сообщений: 2,190
oleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond repute
По умолчанию

залил этот скетч, понравилось. Стало стабильнее отрабатывать тушение экрана по датчику холла, если вставить и сразу вынять ключ.
УТОЧНЕНИЕ 20,10,2015

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

задержка 1,5 сек перед включением проца. Мне понравилось, плата блока питания отзывается сразу, как пришла

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

Для этого запускаем среду разработки ардуины, в меню ФАЙЛ -> образцы-> ArduinoISP. ИНСТРУМЕНТЫ-

>программатор->AVRISP mkII. Выбрать порт, плату и процессор ( у меня MEGA 2560).
Заливаем скетч в мегу. Теперь она будет у нас ISP программатором.
Отключаем MEGу. В настройках выбираем порт, плату и процессор нашего блока питания ( NANO. 328). Открываем

наш скетч от блока питания (NANO_23.09_serial_control.ino).

Железо подключается так: В юсб компа втыкаем нашу мегу (которая щас isp-программатор). К меге подключаем НАНУ

(по схеме в скетче AVRISP mkII). Если всё правильно, на нане включится светодиод питания и станет исполнятся

залитая программа.
В среде разработке ардуины ФАЙЛ -> загрузить с помощью прграмматора.


дальше - больше. Наигрался я с ардуиной, и решил попробовать залить HEX напрямую. Сразу скажу - не стало загрузчика, пропала задержка 1,5 сек перед включением проца. Мне понравилось, плата блока питания отзывается сразу, как пришла напруга, практически мгновенно.
Пишу тут, чтоб самому не забыть ))
для начала превращаем свободную ардуину ( у меня MEGA 2560) в программатор.

Для этого запускаем среду разработки ардуины, в меню ФАЙЛ -> образцы-> ArduinoISP. ИНСТРУМЕНТЫ->программатор->AVRISP mkII. Выбрать порт, плату и процессор ( у меня MEGA 2560).
Заливаем скетч в мегу. Теперь она будет у нас ISP программатором.
Отключаем MEGу. В настройках выбираем порт, плату и процессор нашего блока питания ( NANO. 328). Открываем наш скетч от блока питания (NANO_23.09_serial_control.ino). Заливаем в НАНу. (саму нану можно не подключать, но желательно проверить работоспособность БП на машине). (В настройках среды ардуины поставить ВСЕ галки, кроме внешнего редактора).
внизу пошла техническая инфа. нас интересует последняя белая строчка
D:\777\soft\arduino\hardware\tools\avr/bin/avrdude -CD:\777\soft\arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500v2 -Pusb -Uflash:w:c:\Temp\build4913313151507408812.tmp/NANO_23.09_serial_control.cpp.hex:i

Открываем папку \Temp\build4913313151507408812.tmp (поиском можно) и видим там КУЧУ файлов. Я все утянул на всякий, но нам нужен NANO_23.09_serial_control.cpp.hex
Итак, мы заимели HEX файл прошивки. Теперь задача запихнуть его в процессор (мегу 328p) без загрузчика.
Стандартной средой ардуины у меня не получилось ( или плохо старался), эта кака пыталась прошить мегу. Поэтому была использована программка SinaProg версии 2,1. (программер AVRISP, порт, 19200) devise ATmega328P.

Железо подключается так: В юсб компа втыкаем нашу мегу (которая щас isp-программатор). К меге подключаем НАНУ (по схеме в скетче AVRISP mkII). Если всё правильно, на нане включится светодиод питания и станет исполнятся залитая программа.
Открываем вверху HEX файл, указываем путь к тому, который мы добыли (NANO_23.09_serial_control.cpp.hex). И во вкладке Flash жамкаем Progam. ждём пока зальётся, и жмём verify. Отключаем.


Остается проверить результат на машине.

Arduino Uno (программатор)
5V → Vcc
GND → GND
D11 → MOSI
D12 → MISO
D13 → SCK
D10 → Reset

Arduino Nano (ICSP разъём)
Pin1 (MISO) ← D12 Pin2 (Vcc) ← 5V
Pin3 (SCK) ← D13 Pin4 (MOSI) ← D11
Pin5 (Reset) ← D10 Pin6 (GND) ← GND
Миниатюры
Нажмите на изображение для увеличения
Название: DSC_0138.jpg
Просмотров: 193
Размер:	223.6 Кб
ID:	41103  
Вложения
Тип файла: rar NANO_23.09_serial_control.rar (17.1 Кб, 82 просмотров)

Последний раз редактировалось oleg707; 20.10.2015 в 23:32. Причина: вложил фотку и архив с прошивкой
oleg707 вне форума   Ответить с цитированием
Старый 26.09.2015, 17:33   #63
laytya
Старший Пользователь
 
Регистрация: 30.07.2011
Город: Новосибирск
Регион: 54
Машина: Honda Civic Ferio
Сообщений: 361
laytya is a glorious beacon of lightlaytya is a glorious beacon of lightlaytya is a glorious beacon of lightlaytya is a glorious beacon of lightlaytya is a glorious beacon of lightlaytya is a glorious beacon of light
По умолчанию

ну ты блин даешь, целую ардуину на это извел... а есть ведь просто кристалы типа аттини... на худой конец, ардуино про мини...
laytya вне форума   Ответить с цитированием
Старый 26.09.2015, 17:41   #64
Denkos
Гуру
 
Регистрация: 21.01.2010
Город: Новосибирск
Регион: 54
Сообщений: 2,559
Denkos is a glorious beacon of lightDenkos is a glorious beacon of lightDenkos is a glorious beacon of lightDenkos is a glorious beacon of lightDenkos is a glorious beacon of lightDenkos is a glorious beacon of light
По умолчанию

Цитата:
Сообщение от laytya Посмотреть сообщение
ну ты блин даешь, целую ардуину на это извел... а есть ведь просто кристалы типа аттини... на худой конец, ардуино про мини...
Тоже читаю эту эпопею и задаюсь вопросом, зачем!
Denkos вне форума   Ответить с цитированием
Старый 26.09.2015, 18:12   #65
oleg707
Гуру
 
Аватар для oleg707
 
Регистрация: 16.04.2014
Возраст: 34
Город: Gdynia
Регион: другой - для добавления сообщить ab
Машина: Ford Escape
Сообщений: 2,190
oleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond repute
Smile

Цитата:
Сообщение от Denkos Посмотреть сообщение
Тоже читаю эту эпопею и задаюсь вопросом, зачем!
1 лёгкость вхождения в процессоры. ( а я их уже основательно забыл)
2 повторяемость - легко повторить проект
3 лёгкость перепрограммирования -всунул юсб, поменял значения, тайминги, залил. Настроить поведение можно ЛЮБОЕ.
4 цена - стоимость ардуины на Китае 1,5 бакса за НАНУ (а это разъём мини юсб, усб-уарт, кварц, атмега328p + плата). Стоимость той же атмеги 8 почти бакс. Андуина тупо дешевле.
5 расширяемость- у меня ещё куча ног прикрутить дополнительный функционал. (Типа измерения питания 5 в на планшет)

6 уже почти подошёл к 4 версии блока питания на спец- драйверах с контролем тока, температуры и прочими плюшками. Там уже и буду лепить на чистой атмеге.
oleg707 вне форума   Ответить с цитированием
Старый 26.09.2015, 20:01   #66
laytya
Старший Пользователь
 
Регистрация: 30.07.2011
Город: Новосибирск
Регион: 54
Машина: Honda Civic Ferio
Сообщений: 361
laytya is a glorious beacon of lightlaytya is a glorious beacon of lightlaytya is a glorious beacon of lightlaytya is a glorious beacon of lightlaytya is a glorious beacon of lightlaytya is a glorious beacon of light
По умолчанию

только нафига оно нада? контроль с планшета и прочее? снимать ставить...

возможно только из-за самообразования, реально нада так - настроил 1 раз, поставил - все пашет, и не лезешь туда больше.

для задач БП достаточно тиньки 45ой =)
laytya вне форума   Ответить с цитированием
Старый 26.09.2015, 21:53   #67
oleg707
Гуру
 
Аватар для oleg707
 
Регистрация: 16.04.2014
Возраст: 34
Город: Gdynia
Регион: другой - для добавления сообщить ab
Машина: Ford Escape
Сообщений: 2,190
oleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond repute
Lightbulb просто мысли вслух и самоанализ

Цитата:
Сообщение от laytya Посмотреть сообщение
только нафига оно нада? контроль с планшета и прочее? снимать ставить...

возможно только из-за самообразования, реально нада так - настроил 1 раз, поставил - все пашет, и не лезешь туда больше.

для задач БП достаточно тиньки 45ой =)
мне мало 45 тиньки ) как вариант ATtiny2313.
На момент начала проекта я не видел ни одного проекта без рэле ( у нас какой век на дворе?)
самообразование однозначно никто не отменял, а то так у меня блок питания прекрасно и долго работал и без ардуины-проца(аппаратно), а вся эта конструкция пришла на замену обычного зарядного 5в-2А в прикуриватель на ПОГО пины.

реально так - я сел в машину, вставил ключ - система запустилась из сна (либо загрузилась). Заглушил - система пошла спать( около часа сейчас). Через час самоотрубилась. Если батарея ниже 12 вольт - самоотрубилась.

Если не лезть в дебри и не искать идеала - оно просто работает.Уже дооолго работает.

ANRU вон вообще хочет, чтоб БП запускался при снятии машины с сигналки ( и это уже возможно у меня, только у провод от центрального замка протянуть). Каждому своё.
Вот тут и нужна ардуина - не каждый потянет атмел студио сходу. Как мне править логику работы под себя прикажете? А если только HEX файл выложен?
Ардуину воткнул в усб, поравил тайминги под себя (или вообще программу переписал), кнопку нажал - скетч залил -> пользуйся.

Проект задумывался как альтернатива блокам на рэле. ( а рэле на проц напрямую цеплять нельзя, там токи попалить его могут, не говоря про обратное напряжение ( скачёк до 140 вольт запросто, надо ставить диод параллельно обмотке). Поэтому надо ставить транзистор и диод для рэле, или просто диод для слаботочного. Тогда смысл в рэле, если мы всё равно пихаем транзистор?
Я не увидел ни одного(!) грамотного решения блока питания. Начиная от схемы и заканчивая компоновкой деталей. Да что говорить, даже защиты от короткого замыкания или перенапряжения я не видел. На робкое упоминание, что так нельзя - авторитетно заявляется, что у всех так работает. Это в машине то .
Я понимаю, что для многих это игрушка в машине, но она никак не должна мешать машине работать.

Мой БП далёк от идеала, многие идеи я взял с этого форума, многие идеи по практическому построению нагло спёр из автомобильного хэндсфрии ( прямо с деталями и взял), многое - авторские наработки.

Сначала даже писать не хотел, а потом... решил поделиться с форумом, который мне много дал. Хотя сейчас энтузиазм тратить время на форум упал почти полностью.
oleg707 вне форума   Ответить с цитированием
Старый 27.09.2015, 13:27   #68
oledv
Старший Пользователь
 
Регистрация: 25.04.2012
Возраст: 43
Город: Оленегорск
Регион: 51
Машина: Pontiac Vibe GT 2.4 2009
Сообщений: 104
oledv is just really niceoledv is just really niceoledv is just really niceoledv is just really nice
По умолчанию

Цитата:
Сообщение от oleg707 Посмотреть сообщение
На момент начала проекта я не видел ни одного проекта без рэле ( у нас какой век на дворе?)
Плохо ищите, приведу в пример ancc, если поищите его проекты будите приятно удивлены).
oledv вне форума   Ответить с цитированием
Старый 27.09.2015, 16:23   #69
oleg707
Гуру
 
Аватар для oleg707
 
Регистрация: 16.04.2014
Возраст: 34
Город: Gdynia
Регион: другой - для добавления сообщить ab
Машина: Ford Escape
Сообщений: 2,190
oleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от oledv Посмотреть сообщение
Плохо ищите, приведу в пример ancc, если поищите его проекты будите приятно удивлены).
Опять поискал, видимо плохо, хотя ancc и молоток, схемы блока питания на планшет-андроид у него я не нашел. Может подскажете?
oleg707 вне форума   Ответить с цитированием
Старый 03.10.2015, 17:59   #70
vladj
Гуру
 
Аватар для vladj
 
Регистрация: 03.05.2011
Возраст: 67
Город: Верещагино
Регион: 59
Машина: Toyota-Echo
Сообщений: 1,960
vladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от oleg707 Посмотреть сообщение
Заглушил - система пошла спать
А если заглушил и ушел в магазин посмотреть железки, а жена в это время смотрит видеоклипы...
ну что-бы не скучала меня дожидаясь ?
__________________
DN2800MT, DDR3-4Gb, SSD -30 Gb, Lilliput FA1000 - по HDMI, Win-8 .
vladj вне форума   Ответить с цитированием
Ответ

Метки
arduino, nexus7, блок питания, блок питания планшета


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



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


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