top of page

Elegoo Smart Robot Car Kit V2.0

  • Сычевский Виталий
  • 26 авг. 2017 г.
  • 3 мин. чтения

На 7й день рождения я подарил сыну первого робота Elegoo Smart Robot Car Kit V2.0 на базе Arduino.

Возможности робота:

1. Движение по линии.

2. Движение в лабиринте с помощью ультразвукового датчика.

3. Управление по инфракрасному каналу.

4. Управление по радиоканалу Blue Tooth.

Продукт поставляется в индивидуальном кейсе с компакт диском без двух Li-Ion 18650 батарей. Продавец с Алиэкспресс кейс завернул в несколько метров пупырчатой пленки, так, что он Почтой России был доставлен в целости и сохранности! Сетевой провод для зарядки оказался с китайской вилкой без переходника. Да и сама зарядка годится только в топку (нормальная зарядка это Liitokala lii300).

Естественно, т.к. сыну 7 лет, то собирали вместе. С установкой ультразвукового датчика возникла проблема потребовавшая использования дрели для рассверливания отверстий кронштейна, т.к. отверстия были просверлены до гибки детали и естественно деформировались при гибке. Плюс пришлось увеличить отверстие под шляпку шурупа крепящего к оси сервы. Серва рукой не прокручивалась, а приложив чуть усилие лопнула шестеренка в механизме. Хорошо, что была старая точно такая же серва, которая легко крутится рукой, её и поставил. Правда закручивание толстых шурупов в качалку сервы с малыми дырочкам дело тоже не тривиальное. Далее в описании криво описано подключение моторов к блоку, пришлось потом уже опытным путем произвести правильное подключение, также пришлось разобраться с назначением пинов сервомодуля скаченной с сайта elegoo.com программы, т.к. пины прописанные в программе не совпадают с инструкцией. Пришлось менять пины в программе. Под платы нет стоек или проставок, и их пришлось изобретать самому. Инфракрасный пульт тоже пошел в топку, т.к. выдает фиг знает какой код при нажатии кнопок стрелок. Пройдя п. 1 - 3 я дошел до п.4, но уже с использование системы от Remote XY, в данном случае я использовал почти полностью оригинальный код автора, за исключением адаптации кода под мою машину. Управление получилось продвинутым: как с помощью "джойстика", так и с помощью гиросенсора планшета/телефона.

Вид экрана следующий

Код программы (библиотеку RemoteXY.h можно взять у автора http://remotexy.com)

/* определение режима соединения и подключение библиотеки RemoteXY */ #define REMOTEXY_MODE__HARDSERIAL #include <RemoteXY.h> /* настройки соединения */ #define REMOTEXY_SERIAL Serial #define REMOTEXY_SERIAL_SPEED 9600 /* конфигурация интерфейса */ uint8_t RemoteXY_CONF[] = { 255,2,0,0,0,14,0,6,0,2, 5,47,26,5,50,50,9,23,51,51, 2 }; /* структура определяет все переменные вашего интерфейса управления */ struct { /* input variable */ signed char joystick_1_x; /* =-100..100 координата x положения джойстика */ signed char joystick_1_y; /* =-100..100 координата y положения джойстика */ unsigned char switch_1; /* =1 если переключатель включен и =0 если отключен */ /* other variable */ unsigned char connect_flag; /* =1 if wire connected, else =0 */ } RemoteXY; ///////////////////////////////////////////// // END RemoteXY include // ///////////////////////////////////////////// /* определяем пины управления правым мотором */ #define PIN_MOTOR_RIGHT_UP 8 #define PIN_MOTOR_RIGHT_DN 9 #define PIN_MOTOR_RIGHT_SPEED 11 /* определяем пины управления левым мотором */ #define PIN_MOTOR_LEFT_UP 6 #define PIN_MOTOR_LEFT_DN 7 #define PIN_MOTOR_LEFT_SPEED 5 /* определяем пин управления светодиодом */ #define PIN_LED 13 /* определяем два массива с перечислением пинов для каждого мотора */ unsigned char RightMotor[3] = {PIN_MOTOR_RIGHT_UP, PIN_MOTOR_RIGHT_DN, PIN_MOTOR_RIGHT_SPEED}; unsigned char LeftMotor[3] = {PIN_MOTOR_LEFT_UP, PIN_MOTOR_LEFT_DN, PIN_MOTOR_LEFT_SPEED}; /* управление скоростью мотора motor - ссылка на массив пинов v - скорость мотора, может принимать значения от -100 до 100 */ void Wheel (unsigned char * motor, int v) { if (v>100) v=100; if (v<-100) v=-100; if (v>0) { digitalWrite(motor[0], HIGH); digitalWrite(motor[1], LOW); analogWrite(motor[2], v*2.55); } else if (v<0) { digitalWrite(motor[0], LOW); digitalWrite(motor[1], HIGH); analogWrite(motor[2], (-v)*2.55); } else { digitalWrite(motor[0], LOW); digitalWrite(motor[1], LOW); analogWrite(motor[2], 0); } } void setup() { /* инициализация пинов */ pinMode (PIN_MOTOR_RIGHT_UP, OUTPUT); pinMode (PIN_MOTOR_RIGHT_DN, OUTPUT); pinMode (PIN_MOTOR_LEFT_UP, OUTPUT); pinMode (PIN_MOTOR_LEFT_DN, OUTPUT); pinMode (PIN_LED, OUTPUT); /* инициализация модуля RemoteXY */ RemoteXY_Init (); } void loop() { /* обработчик событий модуля RemoteXY */ RemoteXY_Handler (); /* управляем пином светодиода */ digitalWrite (PIN_LED, (RemoteXY.switch_1==0)?LOW:HIGH); /* управляем правым мотором */ Wheel (RightMotor, RemoteXY.joystick_1_x - RemoteXY.joystick_1_y); /* управляем левым мотором */ Wheel (LeftMotor, RemoteXY.joystick_1_x + RemoteXY.joystick_1_y); }

 
 
 

Comentarios


Избранные записи
Новые записи
Поиск по ключевым словам
Обращайтесь
  • Иконка Google+ с длинной тенью
  • Иконка Facebook с длинной тенью
  • Иконка LinkedIn с длинной тенью
  • Иконка Twitter с длинной тенью

Как со мной связаться

vita_run@mail.ru

  • Google+ Social Icon
  • Facebook Social Icon
  • LinkedIn Social Icon
  • Twitter Social Icon

© 2016  Виталий Сычевский. Сайт создан на Wix.com

Отлично! Сообщение получено.

bottom of page