Программируем mBot в Arduino IDE: управление DC-моторами

Share Button

Сергей Косаченко, учитель Томского физико-технического лицея, протестировал робототехнический конструктор Makeblock mBot Educational Robot Kit и рассказывает об особенностях управления моторами.

Makeblock mBot Educational Robotics Kit

Мне попал в руки на тестирование робототехнический набор Makeblock mBot Educational Robot Kit. Робот уже был собран, поэтому мне интересно было изучить, как он программируется, чтобы прикинуть как с ним можно выстроить учебные занятия по образовательной робототехнике для школьников.

Характеристики Makeblock mBot Educational Robot Kit:

  • Среда программирования: Arduino IDE, mBlock (Mac OS, Windows, Linux*), mBlockly for mBot (iPad).
  • Устройства ввода: датчик света (Light sensor), кнопка (button), инфракрасный приемник (infrared receiver), ультразвоковой дальномер (ultrasonic sensor), датчик линии (line follower).
  • Устройства вывода: пьезопищалка (buzzer), RGB-светодиоды (RGB LED), инфракрасный передатчик (infrared transmitter), 2 порта для моторов (two motor ports).
  • Микроконтроллер: ATmega328, Arduino UNO-совместимый.
  • Питание: 4 AA батарейки по 1,5 Вольт.
  • Беспроводная связь: Bluetooth.
  • Размеры: 17 х 13 х 9 см.
  • Масса: 500 грамм.

Поскольку дома работаю на Ubuntu Linux, то первым делом начал установку mBlock с сайта http://www.mblock.cc/download/ (установочный deb-пакет). Установить среду под Linux получилось, но вот загрузить в робота простую тестовую программу сходу не удалось.

Тестирование mBot MakeBlock

Тестирование mBot MakeBlock

Тестирование mBot MakeBlock

Ну, хорошо, попробуем программировать робота в Arduino IDE. Обзор информации и готовых проектов на ресурсах, посвященных Makeblock, привел к пониманию, что для упрощения программирования требуется специальная библиотека, и такая библиотека на просторах интернета была найдена. Приятно, что Makeblock придерживается философии OpenSource!

Скачал библиотеку по ссылке https://github.com/Makeblock-official/Makeblock-Libraries

Начнем знакомиться с примерами, прилагаемыми к библиотеке. Первым делом разберемся с управлением DC-моторами.

Пример 1. Работа с моторами

Скорость вращения моторами на mBot варьируется в диапазоне от -255 до 255, причем от знака «+» или «-» числового значения скорости зависит направление вращения двигателем.

Вращение двигателем mBot

Если «+» — вращение DC-мотора по часовой стрелке, если смотреть на колесо, прикрепленное к валу двигателя. А если «-», то вращение против часовой стрелки. Учтем это при написании скетча для mBota: двигатели развернуты друг относительно друга на 180 градусов, поэтому, если нам нужно, чтобы робот двигался вперед, то для левого мотора нужно подать отрицательное значение скорости, а для правого — положительное.

Моторы в комплекте mBot без энкодеров, поэтому программировать маневры можно по таймингу (по времени).

Попробуем написать самый простой скетч, исполняя который робот mBot двигался бы по квадрату. Для этого в процедуре loop() нужно, чтобы робот двигался некоторое время вперед, затем поворачивался бы на 90 градусов. Эти два действия робот и будет повторять в цикле loop(). Ниже приведен данный скетч:
/*
Робот mBot движется по квадрату
(c) Sergey Kosachenko
*/
//подключаем библиотеку Makeblock
#include "MeOrion.h"
//определяем двигатели
MeDCMotor motorLeft(M1); //левый двигатель
MeDCMotor motorRight(M2); //правый двигатель
uint8_t motorSpeed = 100;
void setup()
{
}
void loop()
{
//вперед левый мотор
motorLeft.run(-motorSpeed);
//вперед правый мотор
motorRight.run(motorSpeed);
delay(2000); //2 секунды робот едет вперед
//стоп моторы!
motorLeft.stop();
motorRight.stop();
delay(100); // подождем 0,1 секунды пока робот остановится
//поворот налево примерно на 90 градусов на месте
motorLeft.run(motorSpeed); //левый мотор назад
motorRight.run(motorSpeed); //правый мотор вперед
//время для поворота подбирается экспериментально
//и сильно зависит от поверхности, по которой ездит робот
delay(700);
//стоп моторы!
motorLeft.stop();
motorRight.stop();
delay(500); // подождем 0,5 секунды пока робот остановится
}

Чтобы загрузить скетч в контроллер mBot, нужно подключить к нему USB-шнур и включить питание. Затем кликаем по кнопке Загрузить. После загрузки скетча робот сразу же начнет движение, поэтому придерживайте mBot’а на весу. Если у вас робот осуществляет поворот не точно на 90 градусов, то нужно экспериментально подобрать время поворота. Оно сильно зависит от поверхности, по которой ездит робот и заряда батареек.

Кстати, о батарейках! Блок питания на 4 элемента питания формата AA по 1,5 Вольт (в быту их называют «пальчиковыми батарейками») надежно крепится на «липучке» под контроллером, но часто доставать его для замены батареек или зарядки аккумуляторов не очень удобно.

Лайфхак: чтобы батарейки были легкодоступны и не падали, можно закрепить их канцелярской резинкой на крыше робота.

Источник: robotomsk.blogspot.ru.

Share Button

4 комментария к статье “Программируем mBot в Arduino IDE: управление DC-моторами”

  1. Владимир Фаршатов

    09.04.2018

    Резинка, которая держит батарейки тоже входит в набор конструктора? :)

    Ответить на этот комментарий
    • Allegro

      04.06.2018

      В набор входит «липучка» с клейким слоем, одну часть надо приклеить на корпус, вторую — на батарейный отсек. В инструкции все описано. Впрочем, даже если нет самого набора, весь процесс сборки можно посмотреть в 3D (рассматривая робота с любой стороны), установив себе на смартфон приложение «Makeblock App».

      Ответить на этот комментарий
  2. Саша

    14.11.2018

    Можно ли датчики от arduino подключать к mbot?

    Ответить на этот комментарий

Оставить комментарий

© 2014-2024 Занимательная робототехника, Гагарина Д.А., Гагарин А.С., Гагарин А.А. All rights reserved / Все права защищены. Копирование и воспроизведение в любой форме запрещено. Политика конфиденциальности. Соглашение об обработке персональных данных.
Наверх