Роботизированный автомобиль на 4WD шасси

  • Артикул:
    02020002
  • Доступно:
    Нет в наличии
  • Страна производства:
    Китай
4 000 р.

Состав набора

4 × Мотор-редуктор
4 × Колесо
4 × Фиксатор для моторов
2 × Основание шасси
1 × L298N драйвер двигателя
1 × Плата UNO R3
1 × Плата расширения для датчиков V4
1 × Беспаечная макетная плата 170 точек
1 × Крепление для ультразвукового датчика
1 × Сервопривод SG90
1 × Ультразвуковой датчик приближения
3 × TCRT5000 ИК светоотражающий фотоэлектрический датчик
1 × ИК приемник
1 × ИК пульт управления (без батареи)
1 × Отсек для батарей 6хАА
1 × Отсек для батарей 2хАА
1 × Провода Dupont 40 пин
1 × Набор крепежа

Способы доставки

Самовывоз

Вы можете забрать свой заказ самостоятельно в часы работы (Пн - Пт 10.00-18.00) офиса по адресу Староватутинский проезд д.12/3 (м Бабушкинская).
Обязательно ознакомьтесь со схемой прохода/проезда в разделе Контакты.
Внимание! Въезд на территорию на автомобиле не доступен. Машину можно оставить рядом на бесплатной парковке.
Вход на территорию свободный.
Оплата заказа осуществляется наличными. Возможен перевод на банковскую карту.

Доставка в пункт выдачи СДЭК

Пункты выдачи "СДЭК" в Вашем населённом пункте

Заказ передается в доставку на следующий рабочий день.
Оплата возможна при получении
Cрок доставки зависит от удаленности и рассчитывается автоматически.
После оформления заказа на электронный адрес указанный при оформлении заказа высылается трек-номер для отслеживания
Стоимость доставки рассчитывается автоматически. При заказе от 5000 р – доставка до пункта выдачи бесплатно.

Доставка курьером СДЭК

Курьером "СДЭК" по вашему адресу

Заказ передается в доставку на следующий рабочий день.
Оплата возможна при получении, при этом наложенный платеж взимаемый транспортной компанией указывается при оформлении заказа.
Cрок доставки зависит от удаленности и рассчитывается автоматически.
После оформления заказа на электронный адрес указанный при оформлении высылается трек-номер для отслеживания
Стоимость доставки рассчитывается автоматически

Почтой России – до почтового отделения в Вашем населённом пункте

Заказ передается на Почту в течении 1-2 рабочих дней после 100% оплаты
Cрок доставки зависит от удаленности и рассчитывается автоматически.
После оформления заказа на электронный адрес указанный при оформлении высылается трек-номер для отслеживания
Стоимость доставки рассчитывается автоматически

Способы оплаты

Оплата банковской картой

Оплата заказа может быть произведена с использованием банковской карты VISA, Maestro, MasterCard, МИР и другими. Оплата осуществляется прямо на сайте непосредственно после оформления заказа.
Для оплаты (ввода реквизитов Вашей карты) Вы будете перенаправлены на платежный шлюз АО «Тинькофф Банк». Соединение с платежным шлюзом и передача информации осуществляется в защищенном режиме с использованием протокола шифрования SSL. В случае если Ваш банк поддерживает технологию безопасного проведения интернет-платежей Verified By Visa или MasterCard SecureCode для проведения платежа также может потребоваться ввод специального пароля.
Наш сайт поддерживает 256-битное шифрование. Конфиденциальность сообщаемой персональной информации обеспечивается АО «Тинькофф Банк» в соответствии с требованиями Центрального банка. Введенная информация не будет предоставлена третьим лицам за исключением случаев, предусмотренных законодательством РФ.

Оплата при получении

Заказ можно оплатить наличными, по факту получения товара от Курьера или при получении в пункте выдачи заказов СДЭК.
После оформления заказа наш менеджер при необходимости свяжется с Вами для уточнения деталей.

Безналичный расчет для юридических лиц

Оформление заказа для юридических лиц возможна при заказе от 5000 рублей. 
При оформлении заказа заполните поле Комментарий или вышлите Ваши реквизиты нам на почту [email protected]
Отгрузка товара осуществляется после поступления оплаты
Подробности и основные ответы на вопросы по работе с юридическими лицами в разделе Юридическим лицам

#include <IRremote.h>
/* https://github.com/z3t0/Arduino-IRremote */
#include <Servo.h>
/* Define the pin */
#define Echo A0                           //ECHO pin of obstacle avoidance module
#define Trig A1                           //Trig pin of obstacle avoidance module
#define ENB 5                             //The pin of motor drive
#define IN1 7                             
#define IN2 8                             
#define IN3 9
#define IN4 10
#define ENA 6
#define RECV_PIN 13                       //Infrared receiver pins
#define LineTeacking_Pin_Right  2         //The pins of the trace module
#define LineTeacking_Pin_Middle 1
#define LineTeacking_Pin_Left   4         
#define SERVO 12                          //Servo motor pins

#define FORWARD 2
#define BACK 8
#define LEFT 4
#define RIGHT 6
#define STOP 5
#define MOVE_MODE 10
#define OBSTACLES_MODE 11
#define LINETRACKING_MODE 12
/* Infrared remote control coding  ,Each remote control is different, you need to test the code first */
#define KEY_2 16718055
#define KEY_4 16716015
#define KEY_6 16734885
#define KEY_8 16730805
#define KEY_5 16726215
#define KEY_CH1 16753245
#define KEY_CH2 16736925
#define KEY_CH3 16769565
/* Read the pins of the trace module */
#define LineTeacking_Read_Right   digitalRead(LineTeacking_Pin_Right)
#define LineTeacking_Read_Middle  digitalRead(LineTeacking_Pin_Middle)
#define LineTeacking_Read_Left    digitalRead(LineTeacking_Pin_Left)
int carSpeed = 250;
IRrecv irrecv(RECV_PIN);        
decode_results results;
Servo myservo;
int rightDistance = 0, leftDistance = 0, middleDistance = 0;
int Mode = MOVE_MODE;
int Direction = 5;
unsigned long recvTime;
unsigned long lineTime;
void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(Echo, INPUT);
  pinMode(Trig, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  digitalWrite(ENA, HIGH);
  digitalWrite(ENB, HIGH);
  pinMode(LineTeacking_Pin_Right, INPUT);
  pinMode(LineTeacking_Pin_Middle, INPUT);
  pinMode(LineTeacking_Pin_Left, INPUT);
  myservo.attach(SERVO);
  myservo.write(90);
}

void loop() {
  recvData();
  moveMode();
  obstaclesMode();
  linetrackingMode();
}
void moveMode() {
  if (Mode == MOVE_MODE) {
    carSpeed = 250;
    switch (Direction) {
      case FORWARD: forward(); break;
      case BACK: back(); break;
      case LEFT: left(); break;
      case RIGHT: right(); break;
      case STOP: stop(); break;
      default: break;
    }
    if (millis() - recvTime >= 500) {
      Direction = STOP;
      recvTime = millis();
    }
  }
}
/* Adjust "carSpeed" if it hits the wall frequently  */
void obstaclesMode() {
  if (Mode == OBSTACLES_MODE) {

    carSpeed = 200;
    myservo.write(90);
    delay(500);
    middleDistance = getDistance();
    if (middleDistance <= 40) {
      stop();
      delay(500);
      myservo.write(10);
      delay(1000);
      rightDistance = getDistance();

      delay(500);
      myservo.write(90);
      delay(1000);
      myservo.write(180);
      delay(1000);
      leftDistance = getDistance();

      delay(500);
      myservo.write(90);
      delay(1000);
      if (rightDistance > leftDistance) {
        right();
        delay(360);
      }
      else if (rightDistance < leftDistance) {
        left();
        delay(360);
      }
      else if ((rightDistance <= 40) || (leftDistance <= 40)) {
        back();
        delay(180);
      }
      else {
        forward();
      }
    }
    else {
      forward();
    }
  }
}
int getDistance() {
  digitalWrite(Trig, LOW);
  delayMicroseconds(2);
  digitalWrite(Trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(Trig, LOW);
  return (int)pulseIn(Echo, HIGH) / 58;
}
/*The trace module needs to test whether the low level trigger or the high level trigger.
  It can be adjusted according to the actual situation*/
void linetrackingMode() {
  if (Mode == LINETRACKING_MODE) {
    carSpeed = 150;
    if (LineTeacking_Pin_Middle) {
      forward();
      //Serial.println("forward");
      while (LineTeacking_Pin_Middle);
    }
    if (LineTeacking_Pin_Left) {
      right();
      while (LineTeacking_Pin_Left);
    }
    else if (LineTeacking_Pin_Right) {
      left();
      while (LineTeacking_Pin_Right);
    }
    else if (LineTeacking_Pin_Left && LineTeacking_Pin_Middle) {
      right();
      while (LineTeacking_Pin_Left);
    }
    else if (LineTeacking_Pin_Right && LineTeacking_Pin_Middle) {
      left();
      while (LineTeacking_Pin_Left);
    }
    else {
      forward();
    }
  }
}
void recvData() {
  if (irrecv.decode(&results)) {
    recvTime = millis();
    switch (results.value) {
      case KEY_2:   Direction = FORWARD;  break;
      case KEY_4:   Direction = LEFT;     break;
      case KEY_6:   Direction = RIGHT;     break;
      case KEY_8:   Direction = BACK;    break;
      case KEY_5:   Direction = STOP;     break;
      case KEY_CH1:  Mode = MOVE_MODE; stop(); Serial.println("MOVE_MODE");
        delay(1000); break;
      case KEY_CH2:  Mode = OBSTACLES_MODE; stop(); Serial.println("OBSTACLES_MODE");
        delay(1000); break;
      case KEY_CH3:  Mode = LINETRACKING_MODE; stop(); Serial.println("LINETRACKING_MODE");
        delay(1000); break;
      default: break;
    }
    irrecv.resume();
  }
}
/*  The best thing to do is to input the HIGH and LOW of each pin once, 
    look at the direction of each wheel of execution, and then define this function  */
void forward() {

  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  Serial.println("Forward");  //send message to serial monitor
}

void back() {


  digitalWrite(IN1, LOW);    //set IN1 hight level
  digitalWrite(IN2, HIGH);     //set IN2 low level
  digitalWrite(IN3, HIGH);     //set IN3 low level
  digitalWrite(IN4, LOW);    //set IN4 hight level
  Serial.println("Back");
}

void stop() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
  //Serial.println("stop");
}

void right() {

  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  Serial.println("right");
}

void left() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);

  Serial.println("left");
}
 
Сборка колес, моторов и датчиков линии
Вначале мы припаиваем красный и черный провода к моторам
После пайки соедините крепежную прокладку с мотором с помощью длинных винтов и гаек.
Обратите внимание, что моторы должны быть установлены в правильном управлении и закреплены винтами.
Установите колеса на моторы
Далее установите 3 модуля линии перед автомобилем.
Для каждого датчика требуется одна короткая медная проставка и две пластиковые проставки.
Это должно сократить расстояние между датчиком и поверхностью, полученные данные будут более точными.
Два конца медной проставки закрепляются винтами.
Вот что должно получиться

Установка модуля управления моторами

Модуль управления моторами должен быть установлен на противоположной стороне акриловой платы на которую устанавливали моторы.
Найдите два отверстия, используйте две пластиковые проставки под акриловой платой, а затем закрепите их винтами и гайками.
Вот что должно получиться
Установка механизма ультразвукового датчика и платы UNO

Установите поворотную плату на рулевой механизм, затем закрепите его на черном кронштейне и затяните 5 маленькими винтами.
Поверните рукой качалку сервопривода так, чтобы положение на 90° по отношению к переду автомобиля, затем зафиксируйте.

Установите кронштейны с левой и правой сторон сервопривода, выровняйте сервопривод и используйте два винта, чтобы закрепить боковые стороны кронштейна.
Прикрепите ультразвуковой датчик к сервоприводу с помощью двух стяжек.
Прикрепите основание к передней части верхней акриловой платы с помощью тонких длинных винтов и гаек
Установите Arduino и плату расширения.
Установите модуль приемника инфракрасного пульта рядом с сервоприводом.
receiver module
Соединение

Схема подключения модуля привода моторов и питания

Подключение контактов
  Ультразвуковой датчик   ECHO   A0
  TRIG   A1
  GND   GND
  VCC   5V
  Servo   Оранжевый провод   D12
  Красный провод   5V
  Коричневый провод   GND
 ИК приемник   G   GND
  R   5V
  Y   D13
 Модуль привода моторов   ENA   D6
  IN1   D7
  IN2   D8
  IN3   D9
  IN4   D10
  ENB   D5
  Датчик линии   G   GND
  V+   5V
  S-First   D4
  S-Second   D1
  S-Third   D2