Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > CyberWrt

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.08.2015, 00:55   #131
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Модуль "CyberBot-3"

Два модуля роботов не могут вместе существовать
Драйвера можно не трогать, а модули роботов снесите
Установите заново cyberbot-3 и настройте его, настройки сохраните и перезапустите роутер
Admin вне форума   Ответить с цитированием
Старый 30.08.2015, 16:00   #132
elik745i
Senior Member
 
Регистрация: 07.01.2015
Адрес: Baku
Сообщений: 225
Вес репутации: 0
elik745i is an unknown quantity at this point
По умолчанию Re: Модуль "CyberBot-3"

Цитата:
Сообщение от Admin Посмотреть сообщение
Два модуля роботов не могут вместе существовать
Драйвера можно не трогать, а модули роботов снесите
Установите заново cyberbot-3 и настройте его, настройки сохраните и перезапустите роутер
понял, сейчас попробую...
elik745i вне форума   Ответить с цитированием
Старый 30.08.2015, 16:12   #133
elik745i
Senior Member
 
Регистрация: 07.01.2015
Адрес: Baku
Сообщений: 225
Вес репутации: 0
elik745i is an unknown quantity at this point
По умолчанию Re: Модуль "CyberBot-3"

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

Oтлично все заработало, теперь осталось придумать как прикрутить уровень заряда и второй датчик...не подскажете?

Последний раз редактировалось elik745i; 30.08.2015 в 16:21.
elik745i вне форума   Ответить с цитированием
Старый 30.08.2015, 21:38   #134
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Модуль "CyberBot-3"

Цитата:
теперь осталось придумать как прикрутить уровень заряда и второй датчик...не подскажете?
По умолчанию считываются состояния пинов А6 и А7
Можно к любому из них подключитьрезистивны й делитель для измерения напряжение
Admin вне форума   Ответить с цитированием
Старый 31.08.2015, 22:24   #135
elik745i
Senior Member
 
Регистрация: 07.01.2015
Адрес: Baku
Сообщений: 225
Вес репутации: 0
elik745i is an unknown quantity at this point
По умолчанию Re: Модуль "CyberBot-3"

Цитата:
Сообщение от Admin Посмотреть сообщение
По умолчанию считываются состояния пинов А6 и А7
Можно к любому из них подключитьрезистивны й делитель для измерения напряжение
все получилось, пришлось немного повозиться, понять как вы отсылали данные используя библиотеку саибер, так как я использую стандартные ардуино, но все получилось супер!
Если кому понадобится использовать стандартные функции ардуино с нестандартным роботом вот мой код:

Код:
/*
This sketch is for arduino nano/mini pro, 
to be used for building 2 motor wheeled robots,
equipped with 2 servo actuators for camera control, 
buzzer and lights. 
For more details please visit this article:
http://cyber-place.ru/showthread.php?t=1896&page=14
and for detailed instructions on how to build and circuit diagram:
http://www.voltrans.az/?p=1340

Updated: 3Sep2015 - added CyberBot3 support.
Author: Elik745i
Site: www.voltrans.az for cyber-place.ru
*/
#include <Servo.h>  // Подключаем библиотеку сервоприводов 

// // Подключаем H-Bridge HG7881
#define HG7881_A_IA 10  // D10 --> Motor A Input A --> MOTOR A +
#define HG7881_A_IB 9  // D9 --> Motor A Input B --> MOTOR A -
#define HG7881_B_IA 11 // D11 --> Motor B Input A --> MOTOR B +
#define HG7881_B_IB 12 // D12 --> Motor B Input B --> MOTOR B -
 
// functional connections
#define MOTOR_A_PWM HG7881_A_IA // Motor A PWM Speed
#define MOTOR_A_DIR HG7881_A_IB // Motor A Direction
#define MOTOR_B_PWM HG7881_B_IA // Motor B PWM Speed
#define MOTOR_B_DIR HG7881_B_IB // Motor B Direction
 
#define DIR_DELAY 100 // brief delay for abrupt motor changes

#define tiltServopin 7 //tilt servo attached to pin 7
#define panServopin 8 //pan servo attached to pin 8
#define serialReceive 13 //Serial Receive Message indicator LED
#define moveLed 4 //LED indicating tank movement
#define light 6 //
#define moveDelay 1000
#define moveDelayturn 100

Servo tiltServo;  
Servo panServo; 
int val1 = 90;
const int servoAngle = 20;
const int minAngle = 0;
const int maxAngle = 180;
int lightState=0;

void setup()
{
  Serial.begin( 57600 );
  pinMode(serialReceive,OUTPUT);
  pinMode(moveLed,OUTPUT);
  pinMode( MOTOR_A_DIR, OUTPUT );
  pinMode( MOTOR_A_PWM, OUTPUT );
  digitalWrite( MOTOR_A_DIR, LOW );
  digitalWrite( MOTOR_A_PWM, LOW );
  pinMode( MOTOR_B_DIR, OUTPUT );
  pinMode( MOTOR_B_PWM, OUTPUT );
  digitalWrite( MOTOR_B_DIR, LOW );
  digitalWrite( MOTOR_B_PWM, LOW );
 // delay(40000);  //wait for router to initialise
}
 
void loop()
{
   if (Serial.available()) //Еесли что то пришло  
        { 
    digitalWrite(serialReceive,HIGH);
    byte inByte = Serial.read();
   switch (inByte)  // Смотрим какая команда пришла  
    {  
     case 'x': // Остоновка робота 
        robot_stop();
        break;  
         
      case 'W': // Движение вперед 
        robot_go();         
        break;     
      case 'D': // Поворот вправо
        robot_right();
        break; 

      case 'A': //  Повопорт влево
       robot_left();
        break;  
         
      case 'S': // Движение назад
        robot_back();
        break;  
       
       case 'J': // Серво поднимается
                       if(val1<maxAngle){
                         tiltServo.attach(tiltServopin);               // attaches the servo on pin 2
                         for(int i=0;i<servoAngle;i++){                          
                         tiltServo.write(val1+i);           // sets the servo position according to the scaled value                           
                         delay(servoAngle);                          
                         }                          
                         val1=val1+servoAngle;                          
                         tiltServo.detach();                // detaches the servo on pin 2                          
                         }             
                         break;                       
       case 'U': // Серво опускается                         
                         if(val1>minAngle){
                         tiltServo.attach(tiltServopin);               // attaches the servo on pin 2
                         for(int i=0;i<servoAngle;i++){
                         tiltServo.write(val1-i);           // sets the servo position according to the scaled value 
                         delay(servoAngle);
                         }
                         val1=val1-servoAngle;
                         tiltServo.detach();                // detaches the servo on pin 2
                         }      
        break; 
               
        case 'K': // Серво поворачивается влево
                         panServo.attach(panServopin);               // attaches the servo on pin 2
                         panServo.write(180);           // sets the servo position according to the scaled value 
                         delay(200);
                         panServo.detach();                // detaches the servo on pin 2
       
        break;   
          
        case 'H': // Серво поворачивается вправо 
                         panServo.attach(panServopin);               // attaches the servo on pin 2
                         panServo.write(0);           // sets the servo position according to the scaled value 
                         delay(200);
                         panServo.detach();                // detaches the servo on pin 2
        break;    
          
         case 'B': //  Бластер  
         
        break;  
         
        case 'C': // Клаксон  
 
        break;  

           
       case ']': // запрос состояния аналоговых датчиков  
         sendAnalog();
         
        break; 

        case 'V': // Включить/Выключить фары 
       if (lightState==0){
       digitalWrite(light,HIGH);
      lightState=1;
       }else{
      digitalWrite(light,LOW);
      lightState=0;
       } 
        break;  
          
    }
digitalWrite(serialReceive,LOW);    
  }
 }

void robot_stop() 
{
        digitalWrite( MOTOR_A_DIR, LOW );
        digitalWrite( MOTOR_A_PWM, LOW );
        digitalWrite( MOTOR_B_DIR, LOW );
        digitalWrite( MOTOR_B_PWM, LOW );
        delay( DIR_DELAY );
}


void robot_go(){
  /*
        digitalWrite( MOTOR_A_DIR, LOW );
        digitalWrite( MOTOR_A_PWM, LOW );
        digitalWrite( MOTOR_B_DIR, LOW );
        digitalWrite( MOTOR_B_PWM, LOW );
        delay( DIR_DELAY );
        */
        digitalWrite( MOTOR_A_DIR, LOW ); // direction = forward
        digitalWrite( MOTOR_A_PWM, HIGH );
        digitalWrite( MOTOR_B_DIR, LOW ); // direction = forward
        digitalWrite( MOTOR_B_PWM, HIGH ); // PWM speed = slow
        delay(moveDelay);
}
void robot_back(){
  /*
        digitalWrite( MOTOR_A_DIR, LOW );
        digitalWrite( MOTOR_A_PWM, LOW );
        digitalWrite( MOTOR_B_DIR, LOW );
        digitalWrite( MOTOR_B_PWM, LOW );
        delay( DIR_DELAY );
        */
        // set the motor speed and direction
        digitalWrite( MOTOR_A_DIR, HIGH ); // direction = forward
        digitalWrite( MOTOR_A_PWM, LOW );
        digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward
        digitalWrite( MOTOR_B_PWM, LOW ); // PWM speed = slow
        delay(moveDelay);
}
void robot_left(){
  /*
        digitalWrite( MOTOR_A_DIR, LOW );
        digitalWrite( MOTOR_A_PWM, LOW );
        digitalWrite( MOTOR_B_DIR, LOW );
        digitalWrite( MOTOR_B_PWM, LOW );
        delay( DIR_DELAY );
        */
        // set the motor speed and direction
        digitalWrite( MOTOR_A_DIR, HIGH ); // direction = forward
        digitalWrite( MOTOR_A_PWM, LOW );
        digitalWrite( MOTOR_B_DIR, LOW ); // direction = forward
        digitalWrite( MOTOR_B_PWM, HIGH ); // PWM speed = fast
        delay(moveDelayturn);
}
void robot_right(){
  /*
        digitalWrite( MOTOR_A_DIR, LOW );
        digitalWrite( MOTOR_A_PWM, LOW );
        digitalWrite( MOTOR_B_DIR, LOW );
        digitalWrite( MOTOR_B_PWM, LOW );
        delay( DIR_DELAY );
        */
        // set the motor speed and direction
        digitalWrite( MOTOR_A_DIR, LOW ); // direction = forward
        digitalWrite( MOTOR_A_PWM, HIGH );
        digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward
        digitalWrite( MOTOR_B_PWM, LOW ); // PWM speed = slow
        delay(moveDelayturn); 
}

void sendAnalog(){
  int k = analogRead(A0);
  int f = analogRead(A1);
  Serial.write("{\"dat1\":\"");
  Serial.print(k);
  Serial.write("\",\"dat2\":\"");
  Serial.print(f);
  Serial.write("\"}");  
}

Последний раз редактировалось elik745i; 05.09.2015 в 12:22.
elik745i вне форума   Ответить с цитированием
Старый 04.09.2015, 11:21   #136
volter5000
Junior Member
 
Регистрация: 02.09.2015
Сообщений: 5
Вес репутации: 0
volter5000 is an unknown quantity at this point
По умолчанию Re: Модуль "CyberBot-3"

Доброго времени суток. На днях нашел шасси от игрушки типа танчик. На меге 16ой сделал контроль приводов, с терминала через FTDI переходник на W,S,A,D откликается, а с роутером подружить не смог. Роутер у меняDlink dir 300 b7. Я на нее сначала установил память на 8Мб, потом подрубил камеру и портанул cyberwrt. Все запускается, модуль устанавливается, картинка есть а управление не работает, на встроенном uart тишина. С консоли эхо от роутера приходит и лог при загрузке бежит. uart в системе определен как ttyS0. В скриптах и настройках Вашего модуля поменял порт, но результата нет. Подскажите как его запустить, хаб я не подключал в связи с его отсутствием. камера с ноутбука припаяна четырьмя проводами к роутеру. Подскажите, мне кажется что встроенный uart нужно переключить в какой то иной режим, так как вроде он логи слать не должен при загрузке если используется системой
volter5000 вне форума   Ответить с цитированием
Старый 04.09.2015, 12:40   #137
sakatgg
Senior Member
 
Регистрация: 15.07.2014
Сообщений: 939
Вес репутации: 989
sakatgg is just really nicesakatgg is just really nicesakatgg is just really nicesakatgg is just really nicesakatgg is just really nice
По умолчанию Re: Модуль "CyberBot-3"

volter5000, Здесь, пропиши в rc.local, перед exit 0

Последний раз редактировалось sakatgg; 04.09.2015 в 12:45.
sakatgg вне форума   Ответить с цитированием
Старый 04.09.2015, 13:08   #138
volter5000
Junior Member
 
Регистрация: 02.09.2015
Сообщений: 5
Вес репутации: 0
volter5000 is an unknown quantity at this point
По умолчанию Re: Модуль "CyberBot-3"

Цитата:
Сообщение от sakatgg Посмотреть сообщение
volter5000, Здесь, пропиши в rc.local, перед exit 0
Спасибо, попробую) А то если честно пол ночи мучался, так ничего и не вышло...

Последний раз редактировалось volter5000; 04.09.2015 в 13:34.
volter5000 вне форума   Ответить с цитированием
Старый 04.09.2015, 15:16   #139
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Модуль "CyberBot-3"

Цитата:
Сообщение от elik745i Посмотреть сообщение
все получилось, пришлось немного повозиться, понять как вы отсылали данные используя библиотеку саибер, так как я использую стандартные ардуино, но все получилось супер!
Если кому понадобится использовать стандартные функции ардуино с нестандартным роботом вот мой код:

Код:
#include <Servo.h>  // Подключаем библиотеку сервоприводов 

// // Подключаем H-Bridge HG7881
#define HG7881_A_IA 10  // D10 --> Motor A Input A --> MOTOR A +
#define HG7881_A_IB 9  // D9 --> Motor A Input B --> MOTOR A -
#define HG7881_B_IA 11 // D11 --> Motor B Input A --> MOTOR B +
#define HG7881_B_IB 12 // D12 --> Motor B Input B --> MOTOR B -
 
// functional connections
#define MOTOR_A_PWM HG7881_A_IA // Motor A PWM Speed
#define MOTOR_A_DIR HG7881_A_IB // Motor A Direction
#define MOTOR_B_PWM HG7881_B_IA // Motor B PWM Speed
#define MOTOR_B_DIR HG7881_B_IB // Motor B Direction
 
#define DIR_DELAY 100 // brief delay for abrupt motor changes

#define tiltServopin 7 //tilt servo attached to pin 7
#define panServopin 8 //pan servo attached to pin 8
#define serialReceive 13 //Serial Receive Message indicator LED
#define moveLed 4 //LED indicating tank movement
#define light 6 //
#define moveDelay 1000
#define moveDelayturn 100

Servo tiltServo;  
Servo panServo; 
int val1 = 90;
const int servoAngle = 20;
const int minAngle = 0;
const int maxAngle = 180;
int lightState=0;

void setup()
{
  Serial.begin( 57600 );
  pinMode(serialReceive,OUTPUT);
  pinMode(moveLed,OUTPUT);
  pinMode( MOTOR_A_DIR, OUTPUT );
  pinMode( MOTOR_A_PWM, OUTPUT );
  digitalWrite( MOTOR_A_DIR, LOW );
  digitalWrite( MOTOR_A_PWM, LOW );
  pinMode( MOTOR_B_DIR, OUTPUT );
  pinMode( MOTOR_B_PWM, OUTPUT );
  digitalWrite( MOTOR_B_DIR, LOW );
  digitalWrite( MOTOR_B_PWM, LOW );
 // delay(40000);  //wait for router to initialise
}
 
void loop()
{
   if (Serial.available()) //Еесли что то пришло  
        { 
    digitalWrite(serialReceive,HIGH);
    byte inByte = Serial.read();
   switch (inByte)  // Смотрим какая команда пришла  
    {  
     case 'x': // Остоновка робота 
        robot_stop();
        break;  
         
      case 'W': // Движение вперед 
        robot_go();         
        break;     
      case 'D': // Поворот вправо
        robot_right();
        break; 

      case 'A': //  Повопорт влево
       robot_left();
        break;  
         
      case 'S': // Движение назад
        robot_back();
        break;  
       
       case 'J': // Серво поднимается
                       if(val1<maxAngle){
                         tiltServo.attach(tiltServopin);               // attaches the servo on pin 2
                         for(int i=0;i<servoAngle;i++){                          
                         tiltServo.write(val1+i);           // sets the servo position according to the scaled value                           
                         delay(servoAngle);                          
                         }                          
                         val1=val1+servoAngle;                          
                         tiltServo.detach();                // detaches the servo on pin 2                          
                         }             
                         break;                       
       case 'U': // Серво опускается                         
                         if(val1>minAngle){
                         tiltServo.attach(tiltServopin);               // attaches the servo on pin 2
                         for(int i=0;i<servoAngle;i++){
                         tiltServo.write(val1-i);           // sets the servo position according to the scaled value 
                         delay(servoAngle);
                         }
                         val1=val1-servoAngle;
                         tiltServo.detach();                // detaches the servo on pin 2
                         }      
        break; 
               
        case 'K': // Серво поворачивается влево
                         panServo.attach(panServopin);               // attaches the servo on pin 2
                         panServo.write(180);           // sets the servo position according to the scaled value 
                         delay(200);
                         panServo.detach();                // detaches the servo on pin 2
       
        break;   
          
        case 'H': // Серво поворачивается вправо 
                         panServo.attach(panServopin);               // attaches the servo on pin 2
                         panServo.write(0);           // sets the servo position according to the scaled value 
                         delay(200);
                         panServo.detach();                // detaches the servo on pin 2
        break;    
          
         case 'B': //  Бластер  
         
        break;  
         
        case 'C': // Клаксон  
 
        break;  

           
       case ']': // запрос состояния аналоговых датчиков  
         sendAnalog();
         
        break; 

        case 'V': // Включить/Выключить фары 
       if (lightState==0){
       digitalWrite(light,HIGH);
      lightState=1;
       }else{
      digitalWrite(light,LOW);
      lightState=0;
       } 
        break;  
          
    }
digitalWrite(serialReceive,LOW);    
  }
 }

void robot_stop() 
{
        digitalWrite( MOTOR_A_DIR, LOW );
        digitalWrite( MOTOR_A_PWM, LOW );
        digitalWrite( MOTOR_B_DIR, LOW );
        digitalWrite( MOTOR_B_PWM, LOW );
        delay( DIR_DELAY );
}


void robot_go(){
  /*
        digitalWrite( MOTOR_A_DIR, LOW );
        digitalWrite( MOTOR_A_PWM, LOW );
        digitalWrite( MOTOR_B_DIR, LOW );
        digitalWrite( MOTOR_B_PWM, LOW );
        delay( DIR_DELAY );
        */
        digitalWrite( MOTOR_A_DIR, LOW ); // direction = forward
        digitalWrite( MOTOR_A_PWM, HIGH );
        digitalWrite( MOTOR_B_DIR, LOW ); // direction = forward
        digitalWrite( MOTOR_B_PWM, HIGH ); // PWM speed = slow
        delay(moveDelay);
}
void robot_back(){
  /*
        digitalWrite( MOTOR_A_DIR, LOW );
        digitalWrite( MOTOR_A_PWM, LOW );
        digitalWrite( MOTOR_B_DIR, LOW );
        digitalWrite( MOTOR_B_PWM, LOW );
        delay( DIR_DELAY );
        */
        // set the motor speed and direction
        digitalWrite( MOTOR_A_DIR, HIGH ); // direction = forward
        digitalWrite( MOTOR_A_PWM, LOW );
        digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward
        digitalWrite( MOTOR_B_PWM, LOW ); // PWM speed = slow
        delay(moveDelay);
}
void robot_left(){
  /*
        digitalWrite( MOTOR_A_DIR, LOW );
        digitalWrite( MOTOR_A_PWM, LOW );
        digitalWrite( MOTOR_B_DIR, LOW );
        digitalWrite( MOTOR_B_PWM, LOW );
        delay( DIR_DELAY );
        */
        // set the motor speed and direction
        digitalWrite( MOTOR_A_DIR, HIGH ); // direction = forward
        digitalWrite( MOTOR_A_PWM, LOW );
        digitalWrite( MOTOR_B_DIR, LOW ); // direction = forward
        digitalWrite( MOTOR_B_PWM, HIGH ); // PWM speed = fast
        delay(moveDelayturn);
}
void robot_right(){
  /*
        digitalWrite( MOTOR_A_DIR, LOW );
        digitalWrite( MOTOR_A_PWM, LOW );
        digitalWrite( MOTOR_B_DIR, LOW );
        digitalWrite( MOTOR_B_PWM, LOW );
        delay( DIR_DELAY );
        */
        // set the motor speed and direction
        digitalWrite( MOTOR_A_DIR, LOW ); // direction = forward
        digitalWrite( MOTOR_A_PWM, HIGH );
        digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward
        digitalWrite( MOTOR_B_PWM, LOW ); // PWM speed = slow
        delay(moveDelayturn); 
}

void sendAnalog(){
  int k = analogRead(A0);
  int f = analogRead(A1);
  Serial.write("{\"dat1\":\"");
  Serial.print(k);
  Serial.write("\",\"dat2\":\"");
  Serial.print(f);
  Serial.write("\"}");  
}
Можно по подробней, как подключали, к какому драйверу и т.д.
Хочу вынести Ваш код в шапку темы
Admin вне форума   Ответить с цитированием
Старый 04.09.2015, 15:18   #140
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Модуль "CyberBot-3"

Цитата:
Сообщение от volter5000 Посмотреть сообщение
Спасибо, попробую) А то если честно пол ночи мучался, так ничего и не вышло...
Еще для Вашего роутера нужно установить утилиту serp
Утилиту Serp можно установить с помощью модуля "Пакеты"
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 24 (пользователей: 0 , гостей: 24)
 

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

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

Быстрый переход


Текущее время: 15:46. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика