Управление ардуино через андроид

Часы плоттер на ардуино или arduino-робот рисует маркером текущее время в режиме реального времени

Arduino-робот Plotclock рисует рисует последовательность цифр, отображающей текущее время в 24-часовом формате .Собрать такого робота часовщика можно самому

на базе ардуино , 3х сервоприводов и конечно нужны будут детали напечатанные на 3д принтере .

Немецкий дизайнер портала Thingiverse с ником Joo из Нюрнберга (также известен под именем Йоханес) разработал простого робота, который через определенные промежутки времени с помощью простого маркера отображает ход времени на миниатюрной классной доске. Элементы простого шарнирного механизма, в который установлен маркер, выполнены на 3D принтере. «Механические руки» робота стирают устаревшие значения прежде чем нарисовать снова, и каждый раз, когда робот завершает рисовать цифры, они соответствуют реальному времени

Arduino-робот Plotclock рисует рисует последовательность цифр, отображающей текущее время в 24-часовом формате

Основные характеристики:

  • Робот Plotclock, выполненный на платформе Arduino Uno, с помощью маркера в прямом смысле рисует на белой поверхности последовательность цифр, отображающих текущее время в 24-часовом формате;
  • Затем робот стирает с поверхности устаревшее значение, и рисует новые значения часов и минут;
  • Пластиковые элементы механической конструкции робота изготовлены на 3D принтере.

Механическая часть робота состоит из нескольких простых пластиковых элементов и механизмов, соединенных между собой с помощью болтов и гаек размера M3. Управление движениями механической руки осуществляется с помощью платы Arduino Uno и трех серводвигателей

Для управления «механической рукой» робота Plotclock используются три серводвигателя и плата Arduino.

Автор предлагает пошаговую инструкцию по сборке часов, необходимые рисунки и спецификации, а также исходные коды и проектные файлы для 3D печати механических элементов, что позволит пользователям создать свои варианты часов. Проект продолжает развиваться, представленный вариант может считаться лишь первым прототипом устройства. Представленный вариант является последним в линии проектов 21 века по модернизации и реконструкции классических часов.

Код для ардуино можно взять на гитхабе https://github.com/9a/plotclock

Для сборки Plotclock пользователям потебуется:

  • Лазерный резак или 3D принтер (в данном варианте детали были напечатан на 3д принтере )
  • Плата Arduino Uno http://ali.pub/2d3eyq или http://ali.pub/2d3ezi
  • Три серводвигателя 9G http://ali.pub/2d3f2m или http://ali.pub/2d3f3l
  • Маркер для сухостираемых досок http://ali.pub/2d3f4y
  • Небольшая белая пластиковая поверхность
  • Болты и гайки M3, лента для уплотнения резьбовых соединений.
  • Подписывайся на Geek каналы :

    ➤ VK — https://vk.com/denis_geek

    ➤ VK — https://vk.com/club_arduino

    ➤ VK — https://vk.com/chinagreat

    ➤ VK — https://vk.com/solar_pover

    ➤ VK — https://vk.com/my_vedroid

    ➤ VK — https://vk.com/3dprintsumy

    ➤ Youtube — http://www.youtube.com/c/Danterayne

    ★ Моя партнёрка с Aliexpress ★

    http://ali.pub/1j9ks1

    ★ Получай 10.5% скидку с любой покупки на Aliexpress! ★

    http://ali.pub/1lx67o

    ★ Полезное браузерное приложение для кэшбэка ★

В этой статье я опишу процесс подключения к Arduino Mega 2560 платы Motor Shield, управление четырьмя электродвигателями и одним сервоприводом MG995.

В предыдущей статье я описал процесс сборки мотоплатформы для будущего Arduino робота и поделился планами на будущее.

Основная задача на сегодня — заставить Ведроид-мобиль двигаться и управлять сервоприводом.

Подключение Motor Shield к Arduino Mega 2560

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

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

Сразу закрепим сервопривод MG995 и аккуратно уложим провода внутри мотоплатформы, чтобы они не цеплялись за колеса и нам больше не пришлось снимать её верхнюю часть.

Затем устанавливаем корпус для элементов питания и закрепляем его. У меня пока есть блок на 4 элемента.

Если у вас есть тумблер и ненужный разъем, через который будет осуществляться зарядка аккумуляторов, то установите их сейчас. К сожалению, у меня под рукой их не оказалось.

Сразу выводим все провода через отверстия наверх.

Теперь закрепляем снаружи на верхней части платформы Arduino Mega 2560 и вставляем в нее наш Motor Drive Shield 2x L293D. Устанавливаем верхнюю часть платформы на место и закрепляем её болтами.

Теперь пришло время подключить двигатели к Motor Shield.

Передние двигатели я подключил к клемам M3 и M4. M4 — передний правый двигатель, M3 — передний левый. Arduino при креплении к верхней крышке стала наоборот, поэтому получился такой сдвиг.

M2 — задний правый двигатель. M1 — задний левый, Соблюдайте полярность подключения электродвигателей

Подключаем сервопривод MG995.

Провод питания сервопривода пришлось откусить потому, что встроенный в Arduino стабилизатор напряжения не выдавал достаточный ток для его работы. В результате появился глюк в работе.

Проблему решил путем подключения питающего провода сервопривода напрямую к источнику питания.

Подключаем провода питания к контактам на Motor Shield. На плюсовую клемму также подключаем провод от сервопривода

Прошу вас сразу обратить внимание на перемычку. Если ее убрать, то питание на контроллер Arduino придется подавать отдельно. На рисунке приведена схема, поясняющая электрические соединения шин питания контроллера Arduino и модуля Motor Shield.

Любуемся нашим шедевром.

На этом с аппаратной частью на сегодня мы заканчиваем и переходим к написанию тестового скетча для робота.

Пример скетча для работы Arduino с Motor Shield реализующий управление четырьмя двигателями и одним сервоприводом

Основная задача — разобраться с управлением четырьмя двигателями и вращением одного сервопривода.

Сразу давайте обсудим первоначальный функционал нашего тестового скетча.

Предлагаю реализовать такой алгоритм:

  • Движение вперед в течении 5 секунд с поворотом сервы на угол 90 градусов
  • Поворот вправо в течении 2 секунд с поворотом сервы на угол 180 градусов
  • Движение назад в течении 5 секунд с поворотом сервы на угол 90 градусов
  • Поворот влево в течении 2 секунд с поворотом сервы на угол 0 градусов
  • Остановка двигателей на 3 секунды с поворотом сервы на угол 90 градусов

Задача поставлена — можно приступать.

Для начала нам необходимо установить библиотеку AFMotor.

afmotor.rar (9,2 KiB, 2 789 hits)

Скачайте архив и распакуйте его содержимое в \arduino-1.XX\libraries\

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

#include <AFMotor.h> // Подключаем библиотеку для управления двигателями
#include <Servo.h> // Подключаем библиотеку для сервоприводом

//Создаем объекты для двигателей
AF_DCMotor motor1(1); //канал М1 на Motor Shield — задний левый
AF_DCMotor motor2(2); //канал М2 на Motor Shield — задний правый
AF_DCMotor motor3(3); //канал М3 на Motor Shield — передний левый
AF_DCMotor motor4(4); //канал М4 на 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);
motor3.setSpeed(255);
motor4.setSpeed(255);

// Задаем направление движение
// FORWARD — вперед
// BACKWARD — назад
// RELEASE — стоп

// Движение вперед в течении 5 секунд с поворотом сервы на угол 90 градусов
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
myservo.write(90); // Поворот сервы на угол 90 градусов
delay(5000);

// Поворот вправо в течении 2 секунд с поворотом сервы на угол 180 градусов

motor1.run(FORWARD);
motor2.run(BACKWARD);
motor3.run(FORWARD);
motor4.run(BACKWARD);
myservo.write(180); // Поворот сервы на угол 180 градусов
delay(2000);

// Движение назад в течении 5 секунд с поворотом сервы на угол 90 градусов
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
myservo.write(90); // Поворот сервы на угол 90 градусов
delay(5000);

//Поворот влево в течении 2 секунд с поворотом сервы на угол 0 градусов

motor1.run(BACKWARD);
motor2.run(FORWARD);
motor3.run(BACKWARD);
motor4.run(FORWARD);

myservo.write(0); // Поворот сервы на угол 0 градусов
delay(2000);

// Остановка двигателей на 3 секунды с поворотом сервы на угол 90 градусов
motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
myservo.write(90); // Поворот сервы на угол 90 градусов
delay(3000);
}

>Демонстрация работы