Урок 01Новичок15 минOʻZ · РУ · ENЕсть в симуляторе

Что такое робот? Чувствует, думает, действует

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

Видеона YouTube

Главное

  • Робот снова и снова повторяет три шага: чувствовать, думать, действовать.
  • В робот-машине чувствует HC-SR04, думает Arduino Uno, а действуют L298N и два мотора TT.
  • Микроконтроллер — это маленький компьютер в одной микросхеме; у Uno это ATmega328P.
  • Батарея питает моторы через L298N, а выход 5 В драйвера L298N питает Uno.
  • Симулятор компилирует ваш настоящий скетч и выполняет его на эмулированном ATmega328P.

Робот — это машина, которая снова и снова делает три вещи. Он чувствует, что происходит вокруг. Он думает, то есть решает, что делать. Затем он действует: движется или что-то меняет. А после этого снова чувствует, потому что мир вокруг уже изменился. Инженеры-робототехники называют это циклом «чувствовать — думать — действовать».

У игрушечной машинки на пульте управления есть моторы и батарейка. Но чувствует и думает за неё человек. Дайте машинке датчик и маленький компьютер — и она сможет сама принимать решения. Это и есть шаг от машины к роботу.

Робот-машина: кто чувствует, кто думает, кто действует

1 Чувствовать: HC-SR04 измеряет расстояние. 2 Думать: Arduino Uno выполняет скетч. 3 Действовать: L298N крутит моторы.

Все роботы на этом сайте устроены одинаково: это робот-машина CoreEngine. У каждой её детали одна главная задача.

Деталь Задача Что делает в робот-машине
Ультразвуковой датчик HC-SR04 Чувствовать Измеряет расстояние до ближайшего предмета впереди, примерно от 2 см до 4 м
Arduino Uno Думать Выполняет ваш скетч: читает показания датчика, принимает решения, посылает сигналы
Драйвер моторов L298N Действовать Превращает слабые сигналы Uno в сильный ток для моторов
Два мотор-редуктора TT с колёсами 65 мм Действовать Двигают робота; разная скорость колёс с двух сторон заставляет его поворачивать
Батарейный отсек на четыре батарейки AA Питание Около 6 В для моторов, а через L298N — для Uno и датчика
Две акриловые пластины (яруса) и шаровая опора Корпус Держат всё вместе; шаровая опора катится спереди

Чувствовать

HC-SR04 посылает короткий ультразвуковой сигнал — такой высокий, что человек его не слышит. Затем датчик ждёт и слушает эхо. Чем дольше эхо идёт обратно, тем дальше предмет. Датчик не знает, что это за предмет. Он знает только, как далеко тот находится.

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

Думать

Arduino Uno читает показания датчика и выполняет ваш скетч — программу, которую вы написали. В скетче записаны правила робота, например: «Если что-то ближе 25 см, сверни в сторону». Uno проверяет эти правила много раз в секунду.

Действовать

Пины Uno выдают только слабые сигналы — около 20 мА каждый. Мотору TT нужно около 0,3 А, когда он везёт робота, и примерно до 1 А, когда он заблокирован. Поэтому Uno посылает свои сигналы драйверу моторов L298N. А L298N подаёт ток батареи на моторы так, чтобы они крутились вперёд или назад, быстро или медленно.

У робота нет руля. Он поворачивает с помощью двух ведущих колёс:

  • Оба колеса крутятся вперёд с одинаковой скоростью — робот едет прямо.
  • Одно колесо крутится быстрее другого — робот едет по дуге.
  • Одно колесо крутится вперёд, а другое назад — робот разворачивается на месте.

Питание

Без энергии ничего не работает. Четыре батарейки AA дают около 6 В. Моторы получают это питание через L298N. Кроме того, у L298N есть небольшой стабилизатор на 5 В. Его выход 5 В питает Uno и датчик.

Один проход цикла

Как работает этот цикл, хорошо видно на роботе, объезжающем препятствия. В его скетче такие числа:

  1. Чувствовать: измерять расстояние каждые 60 мс, то есть примерно 16 раз в секунду.
  2. Думать: предмет ближе 25 см?
  3. Действовать: если нет, ехать вперёд со скоростью 190 (шкала — от 0 до 255). Если ближе, 300 мс ехать назад со скоростью 160, 380 мс разворачиваться вправо со скоростью 170, а затем снова ехать вперёд.

Потом цикл начинается заново, с нового измерения. Робот ни на миг не перестаёт чувствовать — даже когда едет назад и поворачивает. Как скетч этого добивается, показывает урок Программы, которые никогда не ждут.

Что такое микроконтроллер?

Микроконтроллер — это целый маленький компьютер в одной микросхеме. В нём есть процессор, память для программы, память для данных и пины, которые связывают его с внешним миром. Микроконтроллеры есть во многих вещах вокруг вас: в стиральной машине, в микроволновой печи, в пульте от телевизора, в автомобиле.

Микроконтроллер платы Uno — ATmega328P:

Характеристика ATmega328P на Uno
Тактовая частота 16 МГц: 16 миллионов тактов в секунду
Флеш-память 32 КБ: хранит ваш скетч, даже когда питание выключено
Оперативная память (RAM) 2 КБ: хранит ваши переменные, пока работает скетч
EEPROM 1 КБ: сохраняет небольшие значения, например настройки, когда питание выключено
Пины D0–D13 (цифровые) и A0–A5 (аналоговые входы)

У ноутбука памяти в миллионы раз больше. Но плате Uno столько и не нужно: у неё нет ни экрана, ни клавиатуры, ни операционной системы. Она выполняет одну программу — ваш скетч — сразу, как только получает питание.

Программу для платы Arduino называют скетчем. Вы пишете его на C++ в Arduino IDE. Когда вы нажимаете «Загрузить», IDE компилирует скетч в машинный код и записывает его во флеш-память.

Пины связывают скетч с внешним миром. Пин, работающий как выход, выдаёт около 5 В (HIGH) или 0 В (LOW) — например, чтобы включать и выключать светодиод. Пин, работающий как вход, сообщает скетчу, высокое на нём напряжение или низкое. Так скетч получает, например, сигнал от датчика. Подробно о пинах рассказывает урок Arduino Uno: пины и ваша первая программа.

Что делает симулятор

CoreEngine — это симулятор роботов для Windows. В нём вы собираете робота из тех же деталей, из которых состоит настоящая робот-машина, и испытываете его, прежде чем собрать по-настоящему.

  • Сборка. Вы делаете корпус из фигур и ставите на него модели настоящих деталей: Arduino Uno, L298N, HC-SR04, моторы TT, батарейный отсек, шаровую опору, сервопривод SG90 и модуль светодиода.
  • Подключение. Вы соединяете детали пин к пину, как на настоящем роботе.
  • Проверка. Симулятор проверяет ваше подключение. Например, он сообщает, если нет батареи, если у драйвера моторов нет питания, если нет общей земли (GND) или если батарея подключена к пину 5V платы Uno. Последняя ошибка сжигает настоящую плату.
  • Код. Вы пишете скетч во встроенной Arduino IDE с кнопками «Проверить» и «Загрузить».
  • Запуск. Ваш скетч компилируется с помощью arduino-cli — у него тот же компилятор, что и у Arduino IDE. Затем машинный код выполняется на эмулированном ATmega328P, то есть на программе, которая ведёт себя как настоящий чип. Выполняется та самая программа, которую выполняла бы настоящая Uno, а не упрощённая копия.
  • Испытание. Робот ездит по арене с физикой. Вы видите в реальном времени показания расстояния, моторов и батареи, монитор порта (Serial Monitor) с сообщениями вашего скетча и журнал событий.

На столе в Гараже Uno работает от USB ноутбука, и светодиоды загораются. Поэтому проекты со светодиодами можно пробовать без батареи.

Симулятор не заменяет настоящие детали. Он помогает быстро проверять идеи и находить ошибки раньше, чем из-за них испортится деталь.

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

Шаг Что вы делаете
1. Учитесь Прочитайте урок или проект. В каждом уроке есть главные мысли, вопросы и небольшое задание.
2. Симулируйте Соберите робота со страницы в CoreEngine: на странице есть его детали, подключение и скетч. Запустите его, измените код и посмотрите, что получится.
3. Найдите детали В каждом проекте есть список деталей со ссылками на магазины. Маркет показывает, где купить такие же детали.
4. Соберите Соберите настоящего робота по той же таблице подключения и загрузите тот же скетч.
5. Поделитесь Покажите другим своего робота, свои изменения в скетче и то, чему вы научились.

Эти шаги можно повторять сколько угодно. Каждая новая идея снова начинается с шага 1 или шага 2.

Попробуйте прямо сейчас

Откройте робота, объезжающего препятствия, и посмотрите, как он чувствует, думает и действует.

Что вы увидите:

  • Робот едет прямо вперёд.
  • Когда стена приближается, расстояние на панели показаний в реальном времени уменьшается.
  • Когда расстояние становится меньше 25 см, робот ненадолго отъезжает назад, разворачивается вправо и едет дальше.
  • Монитор порта выводит новое расстояние примерно каждые 60 мс, даже пока робот поворачивает.

Что дальше

  1. Arduino Uno: пины и ваша первая программа, затем проект Blink.
  2. Моторы и драйвер L298N, затем проект «Первый заезд».
  3. Измеряем расстояние с помощью HC-SR04.
  4. Программы, которые никогда не ждут: millis() и состояния, затем робот, объезжающий препятствия.
  5. Робот, который держит дистанцию и едет за вашей рукой.

Проверьте себя

1Какая деталь робот-машины чувствует, какая думает, а какие действуют?

HC-SR04 чувствует, измеряя расстояние, а Arduino Uno думает, выполняя ваш скетч. Действуют драйвер моторов L298N и два мотора TT.

2Зачем между Uno и моторами стоит драйвер моторов?

Пин Uno может безопасно отдать только около 20 мА, а мотору TT нужно примерно до 1 А. L298N переключает на моторы ток батареи.

3Что происходит с вашим скетчем, когда вы нажимаете «Загрузить» в симуляторе?

Он компилируется в машинный код, как для настоящей платы. Затем этот машинный код выполняется на эмулированном ATmega328P внутри робота в симуляторе.

Задание

Соберите в симуляторе робота, объезжающего препятствия (как это сделать, показано на странице проекта), и запустите его на арене. Следите за расстоянием на панели показаний в реальном времени и заметьте, на каком расстоянии робот начинает ехать назад. Затем измените STOP_CM с 25 на 40, загрузите скетч и снова запустите робота. Сравните, где робот поворачивает теперь.

Подсказка

STOP_CM — одна из настроек в начале скетча.