Вы находитесь на странице: 1из 18

Урок 1

Простейший робот
на Arduino

Материалы урока прикреплены к данному PDF-файлу. Для досту-


па к материалам, урок необходимо открыть в программе Adobe
Acrobat Reader.

2
Простейший робот на Arduino

Простейший робот
на Arduino
Мы начинаем изучение курса «Инновационные тех-
нологии», и для начала разберемся с понятием «иннова-
ции». Кроме того, рассмотрим, что это за направление,
и почему оно столь важно в современном мире. Термин
«инновации» означает нововведения. Проще говоря, это
внедрение новшеств в разработке услуг и продуктов. Од-
нако инновации — это не просто что-то новое, а имен-
но то, что может улучшить любую сферу человеческой
деятельности.
Инновации — это результат интеллектуальной и твор-
ческой деятельности человека. И в процессе изучения
этого курсе мы будем генерировать нестандартные тех-
нические идеи для решения самых разных задач (рис. 1).

Рисунок 1

3
Урок 1

На этом занятии мы коснемся темы автомобилей


с функцией автопилота. Машина с автопилотом может
самостоятельно управлять рулем, ускоряться и тормозить.
При этом водитель должен следить за ситуацией на до-
роге, если система не справится сама. Несмотря на это,
автомобили с автопилотом — одно из интересных ново-
введений (рис. 2).

Рисунок 2

Рисунок 3
4
Простейший робот на Arduino

Разработаем машинку на Arduino, которая будет дви-


гаться по черной линии. Как только робот окажется на чер-
ной линии, он сразу же остановится (рис. 3).
Для проектирования робота нужно создать схему, на-
писать скетч, собрать робота и загрузить код программы
на плату. Очень важно уделить внимание продумыванию
логики программы. Следует подумать над тем, как будет
работать машинка.
Общую идею проекта мы описали, а теперь рассмо-
трим компоненты, которые нам понадобятся. В качестве
основы подойдет деревянный, пластмассовый или кар-
тонный корпус (рис. 4).

Рисунок 4
Робот будет ездить по черной линии, то есть у нас бу-
дет автоматизированное транспортное средство. Чтобы
распознавать на своем пути линию, понадобится анало-

5
Урок 1

говый датчик для распознавания линий. Такой датчик


предназначен для распознавания цвета поверхности. Если
этот датчик расположить внизу робота, то он будет дви-
гаться вдоль выбранной линии и не заезжать за пределы
какого-либо пространства (рис. 5).

Рисунок 5

Рисунок 6

6
Простейший робот на Arduino

Управление машинкой будет происходить с помощью


драйвера мотора и двух моторов (рис. 6).
Сначала создадим макет платы в любом удобном ре-
дакторе, например, Circuito.io.
Чтобы добавить компонент, находим его в левой ча-
сти или вводим название. Затем нажимаем на него, а за-
тем кликаем по кнопке Add (рис. 7).

Рисунок 7
Все компоненты автоматически подключаются к пла-
те, поэтому нам не понадобится самостоятельно добав-
лять соединения.
Выбираем необходимые компоненты и добавляем
их. Нам потребуются L298N Motor Driver Board Module,
два компонента Hobby Motor — Gear и два компонента
IR Line Track Follower Sensor (рис. 8).
7
Урок 1

Рисунок 8
В этом же редакторе можем открыть раздел Code,
чтобы увидеть автоматически сгенерированный код.
Здесь нам могут понадобиться константы с номерами
пинов (рис. 9)

Рисунок 9

8
Простейший робот на Arduino

Переходим к написанию скетча в Arduino IDE. Нам


важно запрограммировать инфракрасный датчик рас-
познавания линий. Сенсоры нужно будет разместить
так, чтобы они располагались справа и слева от линии,
то есть на белой поверхности. Если линия идет прямо,
то и машинка двигается прямо (рис. 10)

Рисунок 10
Как только один из ИК-датчиков окажется на чер-
ной линии, он не получит никакого сигнала. В то же
время другой датчик, который находится на белой по-
верхности, получает сигнал. В этот момент останавли-
вается двигатель со стороны того датчика, который на-
ехал на черную линию. Двигатель на противоположной
стороне включается. То есть, если правый ИК-датчик
оказался на черной линии, то правый мотор отключа-
ется, а левый — включается. В результате машинка по-
ворачивает направо (рис. 11). Если же левый ИК-датчик

9
Урок 1

оказался на черной линии, то левый мотор отключается,


а машинка поворачивается налево (рис. 12).

Рисунок 11

Рисунок 12

10
Простейший робот на Arduino

Наконец, когда оба датчика окажутся на черной ли-


нии, машинка остановится (рис. 13).

Рисунок 13
Приступим к программированию. Сначала мы опре-
деляем пины:
#define IRLINEFOLLOW_1_PIN_OUT 8 // left sensor
#define IRLINEFOLLOW_2_PIN_OUT 9 // right sensor
//pin definition
#define ENA 5
#define IN1 2
#define IN2 3
#define ENB 6
#define IN3 4
#define IN4 7

Затем константу, которая будет отвечать за скорость


вращения моторов:
const int mySpeed = 255;  // 0 - 255

11
Урок 1

После этого определим пины и зададим скорость вра-


щения двигателей:
void setup() {
pinMode(IRLINEFOLLOW_1_PIN_OUT, INPUT);
pinMode(IRLINEFOLLOW_2_PIN_OUT, INPUT);

pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);

analogWrite(ENA, mySpeed);
analogWrite(ENB, mySpeed);
delay(1000);
}

Наконец, можем перейти к главному циклу программы:


void loop() {
if (digitalRead(IRLINEFOLLOW_1_PIN_OUT) &&
digitalRead(IRLINEFOLLOW_2_PIN_OUT)) {
// Move Forward
moveForward();
}

if (!(digitalRead(IRLINEFOLLOW_1_PIN_OUT)) &&
digitalRead(IRLINEFOLLOW_2_PIN_OUT)) {
// Turn right
turnRight();
}

if (digitalRead(IRLINEFOLLOW_1_PIN_OUT) &&
!(digitalRead(IRLINEFOLLOW_2_PIN_OUT))) {
// turn left
turnLeft();
}

12
Простейший робот на Arduino

if (!(digitalRead(IRLINEFOLLOW_1_PIN_OUT)) &&
!(digitalRead(IRLINEFOLLOW_2_PIN_OUT))) {
// stop
stopMove();
}
}

После чего напишем функции для управления мо-


торами:
void moveForward() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay(1000);
}

void moveBackward() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(1000);
}

void stopMove() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}

void turnRight() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);

13
Урок 1

digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay(1000);
}

void turnLeft() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(1000);
}

Программа готова. Теперь соберем проект, загрузим


скетч на плату и, если это необходимо, внесем изменения
в код, например, изменим скорость. Убедитесь, что все
подключено правильно, а компоненты соединены с теми
же пинами, что указаны в коде (рис. 14).

Рисунок 14

14
Простейший робот на Arduino

Для тестирования робота не забудьте подготовить


белую поверхность, по которой будет ездить машинка,
и нанести на нее черную линию. Линию можно сделать
с помощью изоленты черного цвета (рис. 15).

Рисунок 15
Созданный робот может стать основой для многих
интересных проектов. К примеру, мы могли бы усовер-
шенствовать модель, добавив новые компоненты, к при-
меру, камеру (рис. 16).

Рисунок 16

15
Урок 1

Также можно создать проект, в котором мы бы управ-


ляли машинкой с помощью жестов (рис. 17).

Рисунок 17

16
Простейший робот на Arduino

17
Урок 1
Простейший робот на Arduino

© Компьютерная Академия «Шаг»


www.itstep.org

Все права на охраняемые авторским правом фото-, аудио- и видеопро-


изведения, фрагменты которых использованы в материале, принадле-
жат их законным владельцам. Фрагменты произведений используются
в иллюстративных целях в объёме, оправданном поставленной задачей,
в рамках учебного процесса и в учебных целях, в соответствии со ст. 1274
ч. 4 ГК РФ и ст. 21 и 23 Закона Украины «Про авторське право і суміжні
права». Объём и способ цитируемых произведений соответствует
принятым нормам, не наносит ущерба нормальному использованию
объектов авторского права и не ущемляет законные интересы автора
и правообладателей. Цитируемые фрагменты произведений на момент
использования не могут быть заменены альтернативными, не охраня-
емыми авторским правом аналогами, и как таковые соответствуют
критериям добросовестного использования и честного использования.
Все права защищены. Полное или частичное копирование материалов
запрещено. Согласование использования произведений или их фраг-
ментов производится с авторами и правообладателями. Согласованное
использование материалов возможно только при указании источника.
Ответственность за несанкционированное копирование и коммерческое
использование материалов определяется действующим законодатель-
ством Украины.

Вам также может понравиться