Робот машина на ардуино
Автомобиль-робот с автопилотом на Arduino Mega 2560
Из таких же комплектующих многие собирают свои автономные роботы-платформы, но мое решение немного отличается от того, что можно найти в интернете. В частности упор был сделан на автономность и перехват управления по Bluetooth.
Распиновка для подключения компонентов
Моторы | Motor Shield L293D | Фары | Arduino Mega 2560 |
П.Л. | М3 | П.Л. | «-» на GND, «+» на Pin 22 |
П.П. | М4 | П.П. | «-» на GND, «+» на Pin 24 |
З.Л. | М1 | З.Л. | «-» на GND, «+» на Pin 34 |
З.П. | М2 | З.П. | «-» на GND, «+» на Pin 35 |
Дальномер HC-SR04 | Arduino Mega 2560 | Bluetooth HC-05 | Arduino Mega 2560 | Buzzer | Arduino Mega 2560 |
Vcc | 5V | VCC | 5V | SIG | Pin A9 |
Trig | Pin 31 | GND | GND | VCC | Pin A8 |
Echo | Pin 30 | TXD | Pin 50 | GND | GND |
Gnd | GND | RXD | Pin 51 |
Сервопривод MG995 | Motor Shield L293D |
тройная клема | SERVO_2 (центральный провод «+» откусываем и запитываем напрямую от «+» Motor Shield; при управлении по Bluetooth — клему снимайте, чтобы серва не дёргалась) |
При подключении телефона к Bluetooth нашего робота вылезет запрос пин-кода. Обычно он «1234». В программе Bluetooth Arduino Bluetooth RC Car доступны два способа управления: клавишами влево-вправо и с помощью гироскопа наклоном телефона.
Механизм работы автопилота таков, что машина едет вперед до тех пор пока до препятствия спереди не будет 30 см, то запускаем алгоритм сканирования препятствия. Двигатели останавливаются, серво-привод начинает вращать ультразвуковой дальномер на 180 градусов с шагом 15 градусов. Если в массиве измерений находятся точки расстояние до которых больше 30 см, то мы определяем с какой стороны эти точки и разворачиваем машину в этом направлении, запускаем двигатели.
Для зашивки программы вам необходимо будет скачать библиотеку AFMotor.
Управление по Bluetuth:
Пример программы для автоматической навигации робота-автомобиля:
Робот на Ардуино и машинка на Bluetooth своими руками
Робот – машинка на Ардуино становятся одним из самым популярных инженерных проектов в школьной робототехнике. Именно с таких устройств, автономных или управляемых со смартфона и bluetooth, начинается путь в робототехнику “после Lego”. К счастью, сегодня можно без труда купить все необходимые компоненты и достаточно быстро создать своего первого робота для езды по линии или объезда препятствий. В этой статье вы найдете подробную видео инструкцию как сделать продвинутый автомобиль Arduino Car своими руками, с питанием, датчиками линии, расстояния и управлении через bluetooth.
Робот на ардуино своими руками
В отличие от других проектов, создание робота – автомобиля (Arduino Car) требует понимания и навыков работы сразу с несколькими важными компонентами, поэтому не стоит приступать к созданию машинок без получения базовых навыков работы с платформой Arduino. В любом случае, вам нужно будет но только подключить готовые модули, но и собрать конструкцию, шасси с двигателями, обеспечить правильное питание и управление. Все это потребует определенного терпения.
Робот машина на Ардуино
Вот список ключевых компонентов, которые обязательно встретятся в проекте.
Контроллер Ардуино
Куда уж без него, если мы говорим о проектах на этой платформе. Как правило, роботы машины делают на базе плат Arduino Uno и Nano. Mega будут слишком большие, Pro Mini сложнее подключать к компьютеру и соединять с остальными компонентами, а Leonardo требуют дополнительных навыков в программировании, они дороже и их основное преимущество (тесная интеграция с компьютером в качестве периферийного устройства) в данном случае не слишком востребована.
Есть еще вариант использования плат ESP8266 или ESP32, тогда в проекте появляется возможность управления машиной через WiFi. Но и сами платы и их программирование требует определенных навыков, в этой статье мы будем говорить преимущественно об Uno или Nano.
Конструкция, шасси и двигатели робота на Ардуино
Для того, чтобы что-то поехало или стало перемещаться, надо снабдить “это” колесами, гусеницами или манипуляторами-ногами. Вот тут выбор совершенно не ограничен, можно использовать совершенно любые комбинации и сочетания платформ. Как правило, в качестве начального варианта берутся уже готовые наборы платформ с Алиэкспресс.
Двигатель, шасси и колеса машинки на ардуино
Если работать со стандартными наборами вам не интересно, можно создать платформу своими руками. Например, разобрать игрушечные радиоуправляемые машинки или любые двигатели на 5-12 вольт, с редукторами или без. Колеса можно создать и самим, что тоже является интересной задачей.
Драйвер двигателей
Ардуино – достаточно ранимое устройство, не терпящее больших нагрузок по току. Соединяя его с “брутальными” мощными двигателями, не избежать беды. Поэтому для нормальной совместной работы нам нужно будет включить в схему робота компонент, отвечающий за управление двигателями – подающий и отключающий ток на их обмотки. Речь идет о микросхеме или готовом модуле, которые называют драйвером двигателя. На нашем сайте есть статьи, посвященные драйверам, построенным на схеме H-моста. Если вы покупаете готовые шасси, то обязательно предусмотрите возможность размещения на них подходящего драйвера.
Красивый корпус
Как правило, вся конструкция автомобиля строится вокруг его шасси. Если посмотреть примеры готовых проектов, то они часто выглядят как “провода на колесиках” – внешний вид их изобилует пучками соединительных проводов, ведущих от восседающего на троне контроллера Ардуино к драйверам, моторам и датчикам. Между тем, красивый и функциональный корпус не только вызывает правильные эстетические чувства и помогает выделить вашу модель от остальных. Хороший корпус может превратить игрушку в реальное устройство, помогает привить навыки конструирования и промышленного дизайна, что важно для инженеров любого возраста.
Питание робота
Обеспечение правильной схемы питания – это то, что очень часто оказывается на последнем месте в списке приоритетов начинающих ардуинщиков. Между тем, именно ошибки в схеме электропитания становятся основными причинами проблем, возникающих в процессе работы умных устройств на Ардуино. Создавая ардуино-машинку нужно предусмотреть питание контроллера, двигателей, драйвера и датчиков. У всех них есть свои ограничения и особенности работы, требуется создать оптимальное по весу и сложности решение, позволяющее учесть все эти ограничения.
Питание робота на Ардуино
Создавая по-настоящему автономное устройство робота, нужно побеспокоиться и о времени его работы, и о возможности быстрой подзарядки или смены батареек. Как правило, выбираются решения из следующих вариантов:
Каким бы ни был источник питания, нужно обеспечить его надежное крепление, удобное расположение, защиту от воздействия недружелюбной окружающей среды. Если вы подключаете к одному источнику и контролер, и двигатели, и датчики, то нужно позаботиться о правильной схеме, включающей, например, надежную связь “по земле” всех устройств.
Где купить платформу и запчасти
Все, о чем говорится в этой статье, можно без проблем купить на всем известном сайте. К сожалению, подавляющее большинство предложений основываются на стандартной платформе 4WD автомобиля с двумя несущими планками, не очень надежными двигателями и колесами, любящими ездить в “развалочку”. Но эти варианты относительно не дороги и вполне подойдут для начала работы.
Машина-робот на базе arduino с управление через Bluetooth
Предисловие
Итак,2 месяца назад я узнал про Arduino(что это такое, я думаю, Вы все знаете)
После того, как я прочитал несколько статей про то, что можно собрать из этого волшебного микроконтроллера я решил, что соберу свою собственную машину.
Используемые детали и модули
Сбор робота-ШАГ 1
//Создаем объекты для двигателей
AF_DCMotor motor1(1); //канал М1 на Motor Shield — левый
AF_DCMotor motor2(2); //канал М2 на Motor Shield — правый
// Создаем объект для сервопривода
Servo myservo;
void setup() <
// Выбираем пин к которому подключен сервопривод
myservo.attach(9); // или 10, если воткнули в крайний разъём
// Поворачиваем сервопривод в положение 0 градусов при каждом включении
myservo.write(0);
// Пауза 5 секунд
delay(5000);
>
void loop() <
//Устанавливаем скорость 100% (0-255)
motor1.setSpeed(255);
motor2.setSpeed(255);
// Задаем направление движение
// FORWARD — вперед
// BACKWARD — назад
// RELEASE — стоп
// Движение вперед в течении 5 секунд с поворотом сервы на угол 90 градусов
motor1.run(FORWARD);
motor2.run(FORWARD);
myservo.write(90); // Поворот сервы на угол 90 градусов
delay(5000);
// Поворот вправо в течении 2 секунд с поворотом сервы на угол 180 градусов
motor1.run(FORWARD);
motor2.run(BACKWARD);
myservo.write(180); // Поворот сервы на угол 180 градусов
delay(2000);
// Движение назад в течении 5 секунд с поворотом сервы на угол 90 градусов
motor1.run(BACKWARD);
motor2.run(BACKWARD);
myservo.write(90); // Поворот сервы на угол 90 градусов
delay(5000);
//Поворот влево в течении 2 секунд с поворотом сервы на угол 0 градусов
myservo.write(0); // Поворот сервы на угол 0 градусов
delay(2000);
// Остановка двигателей на 3 секунды с поворотом сервы на угол 90 градусов
motor1.run(RELEASE);
motor2.run(RELEASE);
myservo.write(90); // Поворот сервы на угол 90 градусов
delay(3000);
>
После этого моя машинка делала так:
Движение вперед в течении 5 секунд с поворотом сервы на угол 90 градусов
Поворот вправо в течении 2 секунд с поворотом сервы на угол 180 градусов
Движение назад в течении 5 секунд с поворотом сервы на угол 90 градусов
Поворот влево в течении 2 секунд с поворотом сервы на угол 0 градусов
Остановка двигателей на 3 секунды с поворотом сервы на угол 90 градусов
Сбор робота-ШАГ 2
//Создаем объекты для двигателей
AF_DCMotor motor1(1); //канал М1 на Motor Shield — левый
AF_DCMotor motor2(2); //канал М2 на Motor Shield — правый
// Создаем объект для сервопривода
Servo vservo;
SoftwareSerial BTSerial(A0, A1); // RX, TX
// Создаем переменную для команд Bluetooth
char vcmd;
// Создаем переменные для запоминания скорости двигателей
int vspdL, vspdR;
/* Создаем переменную, на значение которой будет уменьшаться скорость при плавных поворотах.
Текущая скорость должна быть больше этого значения. В противном случае двигатели со стороны направления поворота просто не будут вращаться */
int vspd = 200;
void setup() <
// Устанавливаем скорость передачи данных по Bluetooth
BTSerial.begin(9600);
// Устанавливаем скорость передачи данных по кабелю
Serial.begin(9600);
// Выбираем пин к которому подключен сервопривод
vservo.attach(9); // или 10, если воткнули в крайний разъём
// Поворачиваем сервопривод в положение 90 градусов при каждом включении
vservo.write(90);
// Устанавливаем максимальную скорость вращения двигателей
vspeed(255,255);
>
void loop() <
// Если есть данные
if (BTSerial.available())
<
// Читаем команды и заносим их в переменную. char преобразует код символа команды в символ
vcmd = (char)BTSerial.read();
// Отправляем команду в порт, чтобы можно было их проверить в «Мониторе порта»
Serial.println(vcmd);
// Вперед
if (vcmd == ‘F’) <
vforward();
>
// Назад
if (vcmd == ‘B’)
<
vbackward();
>
// Влево
if (vcmd == ‘L’)
<
vleft();
>
// Вправо
if (vcmd == ‘R’)
<
vright();
>
// Прямо и влево
if (vcmd == ‘G’)
<
vforwardleft();
>
// Прямо и вправо
if (vcmd == ‘I’)
<
vforwardright();
>
// Назад и влево
if (vcmd == ‘H’)
<
vbackwardleft();
>
// Назад и вправо
if (vcmd == ‘J’)
<
vbackwardright();
>
// Стоп
if (vcmd == ‘S’)
<
vrelease();
>
// Скорость 0%
if (vcmd == ‘0’)
<
vspeed(0,0);
>
// Скорость 10%
if (vcmd == ‘1’)
<
vspeed(25,25);
>
// Скорость 20%
if (vcmd == ‘2’)
<
vspeed(50,50);
>
// Скорость 30%
if (vcmd == ‘3’)
<
vspeed(75,75);
>
// Скорость 40%
if (vcmd == ‘4’)
<
vspeed(100,100);
>
// Скорость 50%
if (vcmd == ‘5’)
<
vspeed(125,125);
>
// Скорость 60%
if (vcmd == ‘6’)
<
vspeed(150,150);
>
// Скорость 70%
if (vcmd == ‘7’)
<
vspeed(175,175);
>
// Скорость 80%
if (vcmd == ‘8’)
<
vspeed(200,200);
>
// Скорость 90%
if (vcmd == ‘9’)
<
vspeed(225,225);
>
// Скорость 100%
if (vcmd == ‘q’)
<
vspeed(255,255);
>
>
>
// Вперед
void vforward() <
vspeed(vspdL,vspdR);
vforwardRL();
>
// Вперед для RL
void vforwardRL() <
motor1.run(FORWARD);
motor2.run(FORWARD);
>
// Назад
void vbackward() <
vspeed(vspdL,vspdR);
vbackwardRL();
>
// Назад для RL
void vbackwardRL() <
motor1.run(BACKWARD);
motor2.run(BACKWARD);
>
// Влево
void vleft() <
vspeed(vspdL,vspdR);
motor1.run(BACKWARD);
motor2.run(FORWARD);
>
// Вправо
void vright() <
vspeed(vspdL,vspdR);
motor1.run(FORWARD);
motor2.run(BACKWARD);
>
// Вперед и влево
void vforwardleft() <
if (vspdL > vspd) <
vspeed(vspdL-vspd,vspdR);
>
else
<
vspeed(0,vspdR);
>
vforwardRL();
>
// Вперед и вправо
void vforwardright() <
if (vspdR > vspd) <
vspeed(vspdL,vspdR-vspd);
>
else
<
vspeed(vspdL,0);
>
vforwardRL();
>
// Назад и влево
void vbackwardleft() <
if (vspdL > vspd) <
vspeed(vspdL-vspd,vspdR);
>
else
<
vspeed(0,vspdR);
>
vbackwardRL();
>
// Назад и вправо
void vbackwardright() <
if (vspdR > vspd) <
vspeed(vspdL,vspdR-vspd);
>
else
<
vspeed(vspdL,0);
>
vbackwardRL();
>
// Стоп
void vrelease() <
motor1.run(RELEASE);
motor2.run(RELEASE);
>
// Изменение скорости
void vspeed(int spdL,int spdR) <
if (spdL == spdR) <
vspdL=spdL;
vspdR=spdR;
>
motor1.setSpeed(spdL);
motor2.setSpeed(spdR);
>
Робот машина на ардуино
Скетчи и инструкция для робота-машинки на базе Arduino.
На занятиях мы с вами навесили на машинку все модули, что были в комплекте, и вы можете запрограммировать робота как минимум на:
Немного о подключении проводов
Распиновка (цоколевка) ардуино выглядит вот так:
Мы будем использовать следующие пины:
Если поставить сверху шилд, то распиновка не изменится, но добавятся дублирующие цифровые и аналоговые выходы и появится много пинов земля+питание.
Обратите внимание, что на каждый радиотехнический компонент, будь то диод или модуль, есть т.н. даташит (datasheet) – инструкция, которая описывает характеристики, особенности подключения, функционал и прочую необходимую об устройстве информацию. Как ее искать я объяснял на лекции, но если простым языком, то все опять же ищется в google исходя из той маркировки, что нанесена на модули. Если с маркировками все плохо, то можно использовать google картинки =)
Шилд выглядит примерно вот так:
Вот так выглядит ИК датчик:
А вот так Bluetooth датчик:
Подключение модулей к ардуино
Как я писал ранее, при соединении модулей надо исходить из особенностей скетча. Если какой-то модуль, двигатель и т.д. не предусматривает его подключение, НЕ НАДО ЕГО ПОДКЛЮЧАТЬ. Лучше пусть провода болтаются. Например, возьмем, скетч для управления через ИК & Bluetooth “IR_BT_Remote_Control_Car_v2_1” (про прошивку скетчей есть отдельная тема ниже). Нам нужно подключить драйвер шагового двигателя, ИК и Bluetooth датчики.
В нем, если приглядеться, можно увидеть, что за сигнал с ИК порта отвечает 10 цифровой пин, за двигатели пины 3-7, 9.
А драйвер подключаем вот так:
У некоторых были перепутаны красные и черные провода на машинке, что, может привести к тому, что колеса будут крутиться в разные стороны. Если это произошло, попробуйте попарно поменять пины IN<> на одной из пар двигателей. «Реакция» на ИК пульт тоже программируется. Например, при нажатии кнопки CH выдается значение 0х00FF629D. Поэтому на действие можно присвоить любую кнопку любого пульта, если вы знаете ее значение. Для нашего пульта (HX1838) значения следующие: #fmt: off PWR FFE21D CH FF629D
|
2. Прошивка Arduino
Фактически, ваша машина имеет неограниченное число функций, если вы знаете как ее программировать. Если нет, можно взять стандартный и загрузить его в микроконтроллер. Для этого нужно:
2.1 Скачать и установить среду программирования Arduino IDE
https://www.arduino.cc/en/Main/Donate (Донатить необязательно, можно “Just download”) При этом нужно одобрить установку всех необходимых драйверов.
2.2 Скачать скетчи и библиотеки
2.3 Распаковать библиотеки для Arduino IDE
Иногда вам придется пользоваться библиотеками. Библиотеки используются, в основном, для того, чтобы перевести машинные функции обращения с модулем на более-менее человеческий язык. Подключение библиотеки в скетче происходит с помощью ф-ии #include, также можно посмотреть, какие библиотеки используются. Так, в скетче управления машинкой используется библиотека для ИК порта (#include ). Для того, чтобы среда ардуино не ругалась на ее отсутствие, надо распаковать IRremote.zip в папку This PC \ Documents \ Arduino \ libraries или С:\Users#Name\Documents\Arduino\libraries
2.4 Прошивка микроконтроллера
В разделе “Плата” должна стоять “Arduino UNO”
После этого мы жмем кнопку “загрузить”
И ждем пока пока программа загрузится в Ардуино.
В случае удачной прошивки все готово, можете пользоваться машинкой.
Машинка управляется с пульта, для управления используются вот эти кнопки: (где квадрат это “стоп”)
Если машинка не едет, нужно нажать несколько раз вперед-назад.
Управление с помощью Bluetooth осуществляется с помощью программы BLEJoystick (Android & IOS)
Сначала нужно узнать MAC адрес bluetooth модуля. Для этого нужно подать питание на модуль, уйти подальше от других bluetooth устройств и просканировать MAC адреса с помощью программы.
Один из адресов должен быть вашим (обычно он начинается на BT-05). Адрес лучше записать.
Для подключения к машинке нужно нажать на соответствующий ей MAC адрес и нажать CONNECT. Если у значка BT справа сверху появились две точки, это значит, что устройства сопряжены и можно продолжать, если нет, нужно попробовать еще раз, включив-выключив машинку.
В скетче вы также можете найти настройки Bluetooth и при необходимости использовать любое другое понравившееся приложение:
Символы A, C, B, D, G – это установки приложения BLEJoystick, другие приложения могут иметь другие управляющие символы.
В папках вы также можете найти другие программы для машинки. Папка Sketches-Factory содержит в себе программы, любезно украденные у китайцев. Можете запрограммировать машинку на движение по линии или избегание препятствий.
About
Скетчи и инструкция для робота-машинки на базе Arduino.
Роботизированная машина на Arduino, управляемая по Bluetooth
В этом проекте мы рассмотрим создание роботизированной машины на основе платы Arduino Uno, управляемой по Bluetooth. Для этих целей мы будем использовать модуль Bluetooth HC-05 и приложение для операционной системы Android.
Необходимые компоненты
Общие принципы управления машиной по Bluetooth
Разрабатываемая нами машина будет управляться по протоколу Bluetooth с помощью приложения, установленного на мобильном телефоне с операционной системой Android. Для управления машиной нужно будет всего лишь нажимать кнопки в этом приложении. То есть телефон с Android будет выступать в роли передающего устройства, а Bluetooth модуль, расположенный на машине – в качестве приемного устройства, выполняющего все команды, поступающие с телефона (движение вперед, назад, направо, налево, остановка).
Bluetooth модуль структурно состоит из двух блоков: модуль последовательного интерфейса (для последовательной передачи данных) и адаптер Bluetooth. Модуль последовательного интерфейса предназначен для конвертации данных Bluetooth в данные для передачи по последовательному порту.
После приобретения модуля Bluetooth в магазине вам нет никакой необходимости изменять его настройки – он полностью готов к работе. По умолчанию скорость передачи данных у него составляет 9600 бод/с. Вам просто необходимо подсоединить его контакты rx и tx к микроконтроллеру и подать питающее напряжение постоянного тока 5 В.
Bluetooth модуль может работать в двух режимах: главный режим (master mode) и подчинённый режим (slave mode). Любой из этих режимов можно установить с помощью соответствующих АТ команд. Далее приведены некоторые из АТ команд.
Первым делом при работе с данным модулем необходимо войти в AT режим со скоростью передачи 38400 бод/с при помощи нажатия кнопки EN на Bluetooth модуле или с помощью подачи сигнала высокого уровня на контакт EN. Примечание: все команды должны заканчиваться \r\n (0x0d и 0x0a) или нажатием клавиши ENTER на клавиатуре.
После того как вы передадите на модуль AT команду модуль ответит вам OK (после ее выполнения).
Распиновка Bluetooth модуля:
1. STATE → Open (открыто)
2. Rx → Serial receiving pin (контакт приема данных)
3. Tx → Serial transmitting pin (контакт передачи данных)
4. GND → ground (земля)
5. Vcc → +5volt dc (+5 В постоянного тока)
6. EN → to enter in AT mode (вход в AT режим)
Принципы работы разрабатываемого устройства
В этом проекте мы использовали игрушечную машину для демонстрации работы устройства. Игрушечная машина должны быть с радиоуправлением и рулевым механизмом, позволяющим поворачивать машину вправо и влево. После покупки данной машины мы заменили ее радиочастотную часть на нашу схему с Arduino. Машина имеет два двигателя постоянного тока. Двигатель, расположенный впереди машины, используется для поворота машины вправо или влево. Двигатель, расположенный сзади машины, используется для движения машины назад или вперед. Bluetooth модуль используется для приема команд от телефона на Android, а плата Arduino Uno используется для управления всей системой. Структурная схема работы устройства приведена на следующем рисунке.
Разрабатываемая нами роботизированная машина на Arduino, управляемая по Bluetooth, подчиняется командам, формируемым приложением на телефоне с операционной системой Android. Поэтому первым делом нам необходимо скачать подобное приложение из Google play. Можно использовать любое Bluetooth приложение, которое поддерживает передачу данных. Пара примеров подобных приложений, с которыми наше устройство точно будет работать корректно:
После установки подобного приложения вам необходимо открыть его и выбрать желаемое Bluetooth устройство. Затем сконфигурировать клавиши. Для примера в этом проекте мы использовали приложение Bluetooth controller. Последовательность действий в этом случае будет следующая:
Когда мы будем нажимать кнопку движения вперед в приложении Bluetooth controller, то машина начнет двигаться вперед и будет двигаться в этом направлении пока не поступит следующая команда.
Когда мы будем нажимать кнопку движения назад в приложении Bluetooth controller, то машина начнет двигаться в обратном направлении (назад) и будет двигаться в этом направлении пока не поступит следующая команда.
Когда мы будем нажимать кнопку движения влево в приложении Bluetooth controller, машина начнет поворачивать влево и будет делать это до поступления очередной команды. В этом случае передний двигатель машины повернет ее передние колеса влево, а задний двигатель будет двигать машину прямо.
Когда мы будем нажимать кнопку движения вправо в приложении Bluetooth controller, машина начнет поворачивать вправо и будет делать это до поступления очередной команды. В этом случае передний двигатель машины повернет ее передние колеса вправо, а задний двигатель будет двигать машину прямо.
После нажатия кнопки остановки в приложении Bluetooth controller машина остановится.
Работа схемы
Схема устройства представлена на следующем рисунке.
Драйвер мотора используется для управления двигателями машины. Его контакты 2, 7, 10 и 15 подсоединены к цифровым контактам Arduino 12, 11, 10 и 9 соответственно. Один из двигателей подключен к выходным контактам драйвера мотора 3 и 6, а другой – к контактам 11 и 14. Батарейка 6 Вольт также используется для питания драйвера мотора – а через него для питания двигателей. Контакты rx и tx Bluetooth модуля непосредственно подключены к контактам tx и rx платы Arduino. Батарейка 9 Вольт используется для подачи питания на контакт Arduino Vin.
Исходный код программы
В программе первым делом необходимо инициализировать выходные контакты для подключения двигателей (через драйвер мотора).