Applied robotics инструкция по сборке манипулятора

Введение:

В данном уроке, двигаясь по шагам, мы соберём робот «Манипулятор».

Видео:

Для сборки нам понадобится крепеж:

Наименование Количество, шт.
1 Гайка М3 10
2 Винт М3х6 9
3 Винт М3х8 10
4 Винт М3х10 5
5 Винт М3х12 7
6 Винт М3х20 4

Шаг 1

Список деталей к Шагу 1

Если Вы используете для сборки Микросервопривод MG90S, необходимо отклеить с него наклейки!!! в противном случае он будет очень туго устанавливаться, в результате чего можете поломать крепеж!

Номер позиции Количество Название
1 1 Основание
3 4 М3х20мм винт
4 4 М3 гайка
5 1 Опорная пластина
6 1 Крепление
7 1 Сервопривод
8 2 М3×8мм винт



Шаг 2

Список деталей к Шагу 2

Номер позиции Количество Название
1 2 М3 гайка
2 1 Крепление
3 1 Сервопривод
4 2 М3х8 винт
5 1 Основа левой руки
6 1 Параллельное
крепление
7 1 Рычаг руки
8 1 М3×6мм винт
9 1 Серво рычаг
10 2 М3х12мм винт
11 1 Осевой серверный винт
12 1 Фиксирующий
серверный винт



Шаг 3

Список деталей к Шагу 3

Номер позиции Количество Название
1 2 М3 гайка
2 1 Крепление
3 1 Сервопривод
4 2 М3х8 винт
5 1 Параллельное
крепление
6 1 М3х6мм винт
7 1 Серво рычаг
8 2 М3×6мм винт
9 1 Рычаг правой руки
10 1 Основание правой руки
11 1 Осевой серверный винт
12 1 Фиксирующий серверный винт



Шаг 4

Список деталей к Шагу 4

Номер позиции Количество Название
1 1 Крепление вкладки
левой руки
2 1 М3х6мм винт
3 1 Балка левой руки
4 1 Верхняя крышка
5 1 Двойной серво рычаг
6 2 Фиксирующий
серверный винт.


Шаг 5

Список деталей к Шагу 5

Номер позиции Количество Название
1 2 М3 гайка
2 2 М3х12мм винт
3 1 Траверса основания
манипулятора
4 1 Соединительное ребро
жесткости



Шаг 6

Список деталей к Шагу 6

Номер позиции Количество Название
1 2 М3×6мм винт
2 1 Фиксирующий
серверный винт
3 1 Балка левого запястья


Шаг 7

Список деталей к Шагу 7

Номер позиции Количество Название
1 1 Параллельная балка
2 1 М3х6мм винт
3 1 Коннектор
4 1 Балка правого запястья
5 1 Прокладка
6 2 M3x10 винт

Шаг 8

Список деталей к Шагу 8

Номер позиции Количество Название
1 1 Левый захват
2 1 Правый захват
3 1 Приводной рычаг
4 1 Левое крепление
запястья
5 1 Правое крепление
запястья
6 1 Нижнее крепление
сервопривода
7 1 Верхнее крепление
сервопривода.
8 1 Приводной рычаг
9 1 Осевой серверный
винт.
10 1 Серво рычаг
11 1 Сервопривод
12 4 М3х8мм
13 3 М3х6мм
14 1 Фиксирующий
серверный винт
15 1 М3х12мм винт
16 2 Прокладка


Шаг 9

Список деталей к Шагу 9

Номер позиции Количество Название
1 1 Прокладка
2 3 М3х10мм винт


Вы можете скачать данную инструкцию по ссылке: Сборка робота-манипулятора. Часть 1

В собранном виде:

Наиль Загидуллин

МБОУ СОШ № 2 с. Стерлибашево

Лабораторные работы на Arduino

Робототехника

Оглавление

Лабораторная работа № 1 Светодиод 2

Сборка элементов на плате 4

Лабораторная работа № 2 Управляемый «программно» светодиод 7

Лабораторная работа № 3 Управляемый вручную светодиод 10

Сборка элементов на плате 12

Лабораторная работа № 4.1 Пьезодинамик 13

Сборка элементов на плате 13

Лабораторная работа № 4.2 Управляемый пьезодинамик 15

Сборка элементов на плате 15

Лабораторная работа № 5 Фоторезистор 17

Сборка элементов на плате 19

Лабораторная работа № 6 Кнопка 20

Лабораторная работа № 7 Термистор 22

Лабораторная работа № 8 Синтезатор 24

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором 25

Лабораторная работа № 10 Обмен данными Arduino с ПК 27

Лабораторная работа № 11 Дисплей LCD 12С интерфейс 28

Лабораторная работа № 12 Сервопривод 30

Лабораторная работа № 13 Шаговый двигатель 32

Лабораторная работа № 13 Двигатель постоянного тока 35

Лабораторная работа № 14 ИК-датчик и ИК пульт 37

Лабораторная работа № 15 Bluetooth модуль 40

Лабораторная работа № 16 Дальномер 42

Лабораторная работа № 17 Датчик скорости 44

Приложения 46

Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение. 4

Звездные войны 46

Виртуальный тренажёр на сайте К. Полякова 49

Скетч «Светофор» на тренажёре К. Полякова 1

Скетч «Светофор» на Ардуино 7

Лабораторная работа № 1 Светодиод

Цель: Научиться работать с виртуальным тренажёром Arduino

  1. Зайдите на сайт: https://www.tinkercad.com/joinclass/YXHUNU9GQUEQ1

  2. Авторизуйтесь используя один их ниже представленных аккаунтов

  3. Выберите Цепи Создать цепь

  4. Введите название проекта Проект 1

  5. Перетащите на рабочее поле Arduino Uno 3 и дайте ему имя Ардуино

  6. Перетащите на рабочее поле Малую макетную плату (Breadbord) и дайте ему имя Плата

  7. Перетащите на рабочее поле Светодиод (Led) и дайте ему имя Светодиод

  8. Перетащите на рабочее поле Резистор (Resistor) и дайте ему имя Резистор, 220

    Поворот элемента соединитель

  9. Поверните Резистор, выберите соединитель обычный
    Соедините элементы так, как показано на рисунке:

  1. Нажмите кнопку Код. Из выпадающего списка выберите Текст.

  2. Введите код программы (скетча), можно скопировать и вставить:

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Начать моделирование (светодиод должен моргать)

  2. Нажмите кнопку Остановить моделирование (светодиод перестает моргать)

Пояснение кода:

int led = 8;  //объявление переменной целого типа, содержащей номер порта к которому мы подключили второй провод

void setup()  //обязательная процедура setup, запускаемая в начале программы; объявление процедур начинается словом void

pinMode(led, OUTPUT); //объявление используемого порта, led — номер порта, второй аргумент — тип использования порта — на вход (INPUT) или на выход (OUTPUT)

void loop() //обязательная процедура loop, запускаемая циклично после процедуры setup

digitalWrite(led, HIGH); //эта команда используется для включения или выключения напряжения на цифровом порте; led — номер порта, второй аргумент — включение (HIGH) или выключение (LOW)

delay(1000); //эта команда используется для ожидания между действиями, аргумент — время ожидания в миллисекундах (1 с = 1000 мс)

Дополнительное задание. Запустите модель с новыми параметрами:

Измените частоту мигания светодиода с периодом 2 с; 0, 5 с

Переключите светодиод на пин 7 и отредактируйте код на int led = 7;  

Лабораторная работа № 1.1 Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение.

  1. Запустить на компьютере программу Arduino IDE

  2. Подключите микроконтроллер через USB кабель к компьютеру

  3. Выберите в программе нужную плату и порт. Инструменты – плата –
    Arduino Mega or Mega 2650. Инструментыпорт – СОМ 4 (цифра может быть другой)

Наберите тестовую программу:

int led = 13;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Загрузка. (программа попросит сохранить файл, сохраните, выбрав имя test)
    Компьютер должен быть подключен к Интернет! Разрешить брандмауэру выход программы в Интернет.

  2. После загрузки скетча на плате начнет мигать светодиод

Лабораторная работа № 1.2 Сборка элементов на плате

Оборудование: Макетная плата, 2 провода папа-папа, светодиод, резистор на 220 Ом.

Общие контакты

GND

Pin 8

Сборка элементов на плате производится по схеме:

Верхний провод соединяет свободный конец светодиода и пин под номером 8 на плате

Нижний провод соединяет своболный конец резистора и контакт GDN (минус или земля)

Получается последовательная цепь.

Введите код в программу Arduino IDE
int led = 8;

void setup()

  1. Сохраните программу под именем Lab1.2

  2. Нажмите кнопку Загрузка.

  3. После загрузки скетча светодиод начнет мигать

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

Приложение к ЛР № 1.2

Загрузка

Pin 8

GND

Если светодиод не горит, поменяйте контакты светодиода

Лабораторная работа 1.3 Проект «Светофор» на Ардуино

Код программы

int led_G = 7;

int led_Y = 6;

int led_R = 5;

void setup()

{

pinMode(led_R, OUTPUT);

pinMode(led_Y, OUTPUT);

pinMode(led_G, OUTPUT);

}

void loop()

{

//red

digitalWrite(led_R, HIGH);

delay(3000);

//===red-yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_R, LOW);

digitalWrite(led_Y, LOW);

//===green

digitalWrite(led_G, HIGH);

delay(3000);

digitalWrite(led_G, LOW);

//==yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_Y, LOW);

delay(1000);

}

Лабораторная работа № 2 Управляемый «программно» светодиод

Цель работы: понять принцип работы широтно-импульсной модуляции (ШИМ). Научиться использовать ШИМ в проектах на базе Arduino.

Широтно-импульсная модуляция (ШИМ) — это метод получения изменяющегося аналогового значения посредством цифровых устройств.

Для ШИМ используется функция analogWrite(nun, значение); где пин — номер контакта Arduino, значение — число от О до 255. Например, значение 153 будет соответствовать величине тока в 3 вольта, а 76 — 1,5 вольт. 255 – 5 вольт. 0 – 0 вольт.

Ход работы:

Соберите схему (см. рис). Напишите код скетча.

// ШИН

int led = 6;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

//3 Вольта

analogWrite(led, 153);

delay(1000);

//1,5 Вольта

analogWrite(led, 76);

delay(1000);

//5 Вольт

analogWrite(led, 255);

delay(1000);

}

Светодиод должен мигать с переменной яркостью

Доп. Задание. Измените код так, чтобы

  1. Изменилась скорость мигания светодиода

  2. Изменилась яркость мигания светодиода

Источник: Лабораторная работа №4 «Широтно-импульсная модуляция» — Программирование микроконтроллера Arduino в информационно-управляющих системах (bstudy.net)

Лабораторная работа № 3 Управляемый вручную светодиод

Цель: Знакомство с устройством Потенциометра

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

Оборудование: Малая макетная плата, резистор (220 В), светодиод, потенциометр,

Соединители: удлинитель -1, провода: папа-мама-3, папа-папа -3)

Соберите схему:
Тип провода – Схема. После соединения измените цвет провода.

Земля

// даём имена пинов со светодиодом

// и потенциометром

int led =9

int pot= A0

void setup()

{

// пин со светодиодом — выход

pinMode(led, OUTPUT);

// пин с потенциометром — вход

pinMode(pot, INPUT);

}

void loop()

{

// объявляем переменную x

int x;

// считываем напряжение с потенциометра:

// будет получено число от 0 до 1023

// делим его на 4, получится число в диапазоне

// 0-255 (дробная часть будет отброшена)

x = analogRead(pot) / 4;

// выдаём результат на светодиод

analogWrite(led, x);

}

Код программы:

int led = 9;

int pot = A0;

void setup()

{

pinMode(led, OUTPUT);

pinMode(pot, INPUT);

}

void loop()

{

int x;

x = analogRead(pot)/4;

analogWrite(led, x);

}

Загрузите программу и покрутите ручкой потенциометра – яркость светодиода должна изменятся

Источник:
Arduino для начинающих. Урок 3. Подключение потенциометра | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

  • Если светодиод не горит — поменяйте контакты светодиода

  • Если от потенциометра идёт дым и запах отключите питание. Установите ручку потенциометра в среднее положение и повторите попытку

  • У Потенциометра полярность крайних контактов (+ и -) произвольная

Лабораторная работа № 4.1 Пьезодинамик

Цель: Знакомство с работой пьезоэлемента

Источник:
Arduino для начинающих. Урок 6. Подключение пьезоэлемента | Занимательная робототехника (edurobots.ru)

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

  1. Доп. Информация:
    Приложение: Звездные войны

Сборка элементов на плате

Пояснение кода:

int p = 3; //объявляем переменную с номером пина, на который мы

//подключили пьезоэлемент

void setup() //процедура setup

{

pinMode(p, OUTPUT); //объявляем пин как выход

}

void loop() //процедура loop

{

tone (p, 500); //включаем на 500 Гц

delay(100); //ждем 100 мс

tone(p, 1000); //включаем на 1000 Гц

delay(100); //ждем 100 мс

}

Код программы:

int p = 3;

void setup()

{

pinMode(p, OUTPUT);

}

void loop() //процедура loop

{

tone (p, 500);

delay(100);

tone(p, 1000);

delay(100);

}

Лабораторная работа № 4.2 Управляемый пьезодинамик

Цель: Получение звука переменной частоты с помощью потенциометра.

int buzzer_pin = 3;

int pot_pin = A0;

void setup()

{

pinMode(buzzer_pin, OUTPUT);

}

void loop() //процедура loop

{

int rotation, frequency;

rotation = analogRead(pot_pin);

frequency = map(rotation,0,1023,3500,4500);

tone (buzzer_pin, frequency,20);

}

Сборка элементов на плате

Лабораторная работа № 5 Фоторезистор

Цель: Знакомство работой фоторезистора

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

Оборудование: 6 проводов “папа-папа”, фоторезистор, светодиод, резистор на 220 Ом, резистор на 10 кОм

Схема подключения:

Код программы:

int led = 13; //переменная с номером пина светодиода

int ldr = 0; //и фоторезистора

void setup() //процедура setup

{

pinMode(led, OUTPUT); //указываем, что светодиод — выход

}

void loop() //процедура loop

{

if (analogRead(ldr)

//если показатель освещенности меньше 800, включаем светодиод

else digitalWrite(led, LOW); //иначе выключаем

}

Источник:

Arduino для начинающих. Урок 7. Подключение фоторезистора | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

Лабораторная работа № 6 Кнопка

Цель: управление светодиодом с помощью кнопки

Сегодня подключаем к ардуино кнопку и светодиод (при нажатой кнопке светодиод будет гореть, при отжатой — не гореть)

Код:

int button = 2;

int led = 8;

void setup() {

pinMode(led, OUTPUT);

pinMode(button, INPUT);

}

void loop(){

if (digitalRead(button) == HIGH) {

digitalWrite(led, HIGH);

}

else {

digitalWrite(led, LOW);

}

}

Источник:
Arduino для начинающих. Урок 2. Подключение кнопки | Занимательная робототехника (edurobots.ru)

Лабораторная работа № 7 Термистор

Цель: Изучить работу термистора

Терморезистор (термистор) — полупроводниковый прибор, электрическое сопротивление которого изменяется в зависимости от его температуры.

10 КОм

Код:

#define B 3950 // B-коэффициент

#define SERIAL_R 10000 // сопротивление последовательного резистора, 10 кОм

#define THERMISTOR_R 10000 // номинальное сопротивления термистора, 100 кОм

#define NOMINAL_T 25 // номинальная температура (при которой TR = 100 кОм)

const byte tempPin = A0;

void setup() {

Serial.begin(9600);

pinMode( tempPin, INPUT );

}

Монитор порта

void loop() {

int t = analogRead( tempPin );

float tr = 1023.0 / t — 1;

tr = SERIAL_R / tr;

Serial.print(«R=»);

Serial.print(tr);

Serial.print(«, t=»);

float steinhart;

steinhart = tr / THERMISTOR_R;

steinhart = log(steinhart);

steinhart /= B;

steinhart -= 1.0 / (NOMINAL_T + 273.15);

steinhart = 1.0 / steinhart;

steinhart += 273.15;

Serial.println(abs(steinhart));

Подключение термистора к arduino. — У Павла! (psenyukov.ru)

delay(1000);

}

Лабораторная работа № 8 Синтезатор

Цель: получение звуков с помощью встроенных кнопок

Pin 8

GND

Код:

#define buz_pin 8

#define first_pin 30 // общее количество клавиш

#define button_count 3

void setup()

{

pinMode(buz_pin, OUTPUT);

}

void loop()

{

for (int i = 0; i

{

int buttonPin = i + first_pin;

boolean buttonUp = digitalRead(buttonPin);

if (!buttonUp) {

int frequency = 400 + i * 50;

tone(buz_pin,frequency, 50);

delay(500);

}

}

}

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором

Цель: Знакомство с работой семисегментного индикатора

Код: Обратный отсчёт

/ создать массив для хранения конфигурации выводов индикатора для цифр

int num_array[10][7] = { { 1,1,1,1,1,1,0 }, // 0

{ 0,1,1,0,0,0,0 }, // 1

{ 1,1,0,1,1,0,1 }, // 2

{ 1,1,1,1,0,0,1 }, // 3

{ 0,1,1,0,0,1,1 }, // 4

{ 1,0,1,1,0,1,1 }, // 5

{ 1,0,1,1,1,1,1 }, // 6

{ 1,1,1,0,0,0,0 }, // 7

{ 1,1,1,1,1,1,1 }, // 8

{ 1,1,1,1,0,1,1 }}; // 9

// объявление функции

void Num_Write(int);

void setup()

{

// установить режимы работы выводов

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

}

void loop()

{

// цикл счетчика

for (int counter = 10; counter 0; —counter)

{

delay(1000);

Num_Write(counter-1);

}

delay(3000);

}

// эта функция записывает значения в выводы, подключенные к индикатору

void Num_Write(int number)

{

int pin= 2;

for (int j=0; j 7; j++)

{

digitalWrite(pin, num_array[number][j]);

pin++;

}

}

Источник: Взаимодействие Arduino с семисегментным индикатором (radioprog.ru)

Лабораторная работа № 10 Обмен данными Arduino с ПК

Цель: Изучить механизм обмена данными между ПК и микроконтроллером

Микроконтроллер будет получать через последовательный порт некие команды и отправлять на ПК ответ, что та или иная команда принята.

Код:

void setup() {

  // Инициализация последовательного порта с указанием скорости обмена данными ( по умолчанию лучше использовать 9600 бод)

  Serial.begin(9600);

  // Устанавливаем таймаут (значение по умолчанию слишком велико)

  Serial.setTimeout(100);

}

void loop() {

  // Если поступили данные с ПК

  if (Serial.available() 0) {

    // Считываем полученные данные

    String command = Serial.readString();

    // Формируем ответ

    String response = «Command » + command + » is accepted!»;

    // Отправляем ответ ПК

    Serial.println(response); 

}

}

Источники:

Обмен данными между ПК и Arduino через последовательный порт (с примером на C#) | Стрелец Coder (streletzcoder.ru)

Arduino: Serial Monitor. Общаемся с компьютером (alexanderklimov.ru)

Лабораторная работа № 11 Дисплей LCD 12С интерфейс

Цель: Знакомство работой дисплея

Контакты — цвет проводов

GND – чёрный

5V — красный

SCL — оранжевый

SDA — жёлтый

Для работы понадобится библиотека LiquidCrystal_I2C. Нужно скачать (

https://iarduino.ru/file/134.html

) и распаковать содержимое архива в папку Arduinolibraries.

Код:

#include // библиотека для управления устройствами по I2C

#include // подключаем библиотеку

LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя LCD для дисплея

void setup() {

LCD.init(); // инициализация LCD дисплея

LCD.backlight(); // включение подсветки дисплея

LCD.setCursor(3, 0); // ставим курсор на 1 символ первой строки

LCD.print(«I LOVE»); // печатаем сообщение на первой строке

LCD.setCursor(2, 1); // ставим курсор на 1 символ второй строки

LCD.print(«ARDUINO»); // печатаем сообщение на второй строке

Изменить работу программы так, чтобы она работала как

1)секундомер 2) калькулятор (считывает данные с клавиатуры и выводит на дисплей)

}

void loop() {

}
Источник:

Arduino подключение LCD 1602 I2C (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 12 Сервопривод

Цель: знакомство с работой сервопривода

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

Оборудование: сервопривод PDI-6221MG, блок питания

Подключить сервопривод к пину № 9 с помощью трехжильного шлейфа

Arduino Mega позволяет подключить до 48 сервоприводов.

Код:

#include //используем библиотеку для работы с сервоприводом

Servo servo; //объявляем переменную servo типа Servo

void setup() //процедура setup

{

servo.attach(9); //привязываем привод к порту 10

}

void loop() //процедура loop

{

servo.write(0); //ставим вал под 0

delay(2000); //ждем 2 секунды

servo.write(180); //ставим вал под 180

delay(2000); //ждем 2 секунды

}

Если возникает шум в работе, измените углы от 10 до 170 градусов

Источник:

  1. Arduino для начинающих. Урок 4. Управление сервоприводом | Занимательная робототехника (edurobots.ru)

  2. Что такое сервопривод (сервомотор) и как им управлять — Суперайс (supereyes.ru)

Лабораторная работа № 13 Шаговый двигатель

Цель: знакомство с работой шагового двигателя

Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала.

Оборудование: Шаговый двигатель, драйвер, провода

Код:

// порты для подключения модуля ULN2003 к Arduino

#define in1 7

#define in2 8

#define in3 9

#define in4 10

int dl = 5; // время задержки между импульсами

void setup() {

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

}

void loop() {

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

delay(dl);

digitalWrite(in1, HIGH);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, HIGH);

digitalWrite(in4, HIGH);

delay(dl);

}

Источник:

Arduino шаговый двигатель 28byj-48 (stepper motor) » Ардуино Уроки (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 13 Двигатель постоянного тока

Цель: знакомство с двигателем постоянного тока

Двигатели постоянного работают при большой мощности тока, поэтому для них используется встроенный в микроконтроллер плата расширения – драйвер

Оборудование: DC-мотор (2 шт), источник питания

Прижать в гнёзда зеленого цвета с помощью маленькой отвертки провода двигателя

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

Код:

#define M1_dir 45 //направление вращения 1 двигателя

#define M1_Speed 44 //скорость вращения 1 двигателя

#define M2_dir 47 //направление вращения 2 двигателя

#define M2_Speed 46 //скорость вращения 2 двигателя

void setup() {

pinMode(M1_dir, OUTPUT);

pinMode(M1_Speed, OUTPUT);

pinMode(M2_dir, OUTPUT);

pinMode(M2_Speed, OUTPUT);

}

void loop() {

digitalWrite(M1_dir, LOW);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, LOW);

analogWrite(M2_Speed, 150);

delay(2000);

digitalWrite(M1_dir, HIGH);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, HIGH);

analogWrite(M2_Speed, 150);

delay(2000);

analogWrite(M1_Speed, 0);

analogWrite(M2_Speed, 0);

}

Лабораторная работа № 14 ИК-датчик и ИК пульт

Цель: знакомство с работой ИК-датчика и пульта

Инфракрасный пульт дистанционного управления — один из самых простых способов взаимодействия с электронными приборами. Так, практически в каждом доме есть несколько таких устройств: телевизор, музыкальный центр, видеоплеер, кондиционер. Но самое интересное применение инфракрасного пульта — дистанционное правление роботом.

Скачать и установить библиотеку IRremote

Красный провод — +5V

Оранжевый – GND (земля или минус)

Черный – пин 2

ИК датчик может принимать сигналы и из обычного пульта от телевизора

 С помощью программы будем принимать команды с пульта и выводить их в окно монитора. 

Код:

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

Serial.begin(9600); // выставляем скорость COM порта

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

Serial.println( results.value, HEX ); // печатаем данные

irrecv.resume(); // принимаем следующую команду

}

}

Управление яркостью светодиода (пин 13) с помощью ИК- пульта

Из предыдущей программы определяем коды громкости пульта

20DF40BF и 20DFC03F

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

switch ( results.value ) {

case 0x20DF40BF:

digitalWrite( 13, HIGH );

break;

case 0x20DFC03F:

digitalWrite( 13, LOW );

break;

}

irrecv.resume(); // принимаем следующую команду

}

Источник:

Ардуино: инфракрасный пульт и приемник | Класс робототехники (robotclass.ru)

Лабораторная работа № 15 Bluetooth модуль

Цель: знакомство с работой Bluetooth модуля

Bluetooth модуль HC-05 используется для дистанционного управления ардуино или передачи данных с телефонов и гаджетов на микроконтроллер.

Нужно установить на телефон (Android) приложение Bluetooth терминал

Оборудование: Bluetooth модуль HC-05, источник питания, провода папа-мама 4 шт

При загрузке скэтча нужно отключить от питания Bluetooth модуль

Подключение контактов:

Arduino

Bluetooth

Pin 1 (TX)

RXD

Pin 0 (RX)

TXD

GND

GND

5V

VCC

Напишем программу, которая будет с телефона управлять светодиодом (пин 13)

Код:

int val;

int LED = 13;

void setup()

{

Serial.begin(9600);

pinMode(LED, OUTPUT);

digitalWrite(LED, HIGH);

}

void loop()

{

if (Serial.available())

{

val = Serial.read();

// При символе «1» включаем светодиод

if (val == ‘1’)

{

digitalWrite(LED, HIGH);

}

// При символе «0» выключаем светодиод

if ( val == ‘0’)

{

digitalWrite(LED, LOW);

}

}

}

Подключение терминала:

  1. Включаем Bluetooth на телефоне и ищем новые устройства

  2. Находим в списке расстройств «HC-05» и подключаемся к нему.

  3. Телефон спросит пин-код. необходимо ввести «1234» или «0000»

  4. Запустить терминал

Источник:

Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона. — Описания, примеры, подключение к Arduino (iarduino.ru)

Лабораторная работа № 16 Дальномер

Цель: знакомство с работой дальномера (датчик расстояния)

Ультразвуковой дальномер рассчитан на определение расстояния до объектов в радиусе четырёх метров.

Работа модуля основана на принципе эхолокации. Модуль посылает ультразвуковой сигнал и принимает его отражение от объекта. Измерив время между отправкой и получением импульса, не сложно вычислить расстояние до препятствия.

Оборудование: Дальномер, провода папа-мама 4 шт

Подключение контактов:

Arduino

Дальномер

Pin 11

ECHO

Pin 10

TRIG

GND

GND

5V

VCC

Нужно установить библиотеку NewPing.h

Программа выводит на монитор расстояние до объектов в см

Код:

#include

#define TRIGGER_PIN 10

#define ECHO_PIN 11

#define MAX_DISTANCE 400

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {

Serial.begin(9600);

}

void loop() {

delay(500);

Serial.print(«Ping: «);

Serial.print(sonar.ping_cm());

Serial.println(«cm»);

}

Источник:

Ультразвуковой дальномер HC-SR04: подключение, схема и примеры работы [Амперка / Вики] (amperka.ru)

Лабораторная работа № 17 Датчик скорости

Цель: знакомство с работой датчика скорости

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

Как правило, датчики измеряют величину благодаря регистрации определённых событий, затем количество событий соотносится с периодом времени, за которые они произошли.

Так в данном случае измеряется скорость – под событиями здесь понимаются импульсы, полученные в результате срабатывания оптического датчика во время вращения диска с прорезями. Датчик состоит из светодиода и фототранзистора, который воспринимает наличие или отсутствие излучения светодиода.

Подключение контактов:

Arduino

Датчик

GND

GND

2

OUT

5V

VCC

Код:

int encoder_pin = 2; // импульсные сигналы от модуля

unsigned int rpm; // количество оборотов в минуту

volatile byte pulses; // количество импульсов

unsigned long timeold;

// количество импульсов на оборот

unsigned int pulsesperturn = 12;

void counter()

{

//обновление счета импульсов

pulses++;

}

void setup()

{

Serial.begin(9600);

pinMode(encoder_pin, INPUT);

//Прерывание 0 на цифровой линии 2

//Срабатывание триггера по спаду сигнала

attachInterrupt(0, counter, FALLING);

// Инициализация

pulses = 0;

rpm = 0;

timeold = 0;

}

void loop()

{

if (millis() — timeold = 1000) {

//Не обрабатывать прерывания во время счёта

detachInterrupt(0);

rpm = (60 * 1000 / pulsesperturn )/ (millis() — timeold)* pulses;

timeold = millis();

pulses = 0;

Serial.print(«RPM = «);

Serial.println(rpm,DEC);

//Перезагрузка процесса обработки прерываний

attachInterrupt(0, counter, FALLING);

}

}

Источник:

Arduino и модуль фотоимпульсного датчика скорости вращения двигателя » Digitrode.ru

Приложения

Звездные войны

Подключите к плате Пьезоэлемент (пьезопищалка)

Звук воспроизводится функцией tone()

Синтаксис

tone(pin, frequency, duration)

Параметры

pin: номер порта вход/выхода, на котором будет генерироваться сигнал

frequency: частота сигнала в Герцах

duration: длительность сигнала в миллисекундах

Чтобы остановить звук, используют функцию noTone(pin)

Напишем скетч, который сыграет мелодию из фильма «Звездные войны».

// Звездные войны

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

delay(2000);

tone(led,392,200);

delay(400);

tone(led,392,200);

delay(400);

tone(led,392,300);

delay(400);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(700);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,622,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,369,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(200);

noTone(led);

}

Применение циклов
byte led_R; // случайный бит

const int Pin_tone = 8; // номер порта зуммера

const byte COUNT_NOTES = 39; // Количество нот

int frequences[COUNT_NOTES] = {

392, 392, 392, 311, 466, 392, 311, 466, 392,

587, 587, 587, 622, 466, 369, 311, 466, 392,

784, 392, 392, 784, 739, 698, 659, 622, 659,

415, 554, 523, 493, 466, 440, 466,

311, 369, 311, 466, 392

};

int durations[COUNT_NOTES] = {

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 250, 100, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 750

};

void setup() {

pinMode(13, OUTPUT); // Настраиваем контакт на выход

pinMode(Pin_tone, OUTPUT); // Настраиваем контакт на выход

}

void loop() {

for (int i = 0; i Цикл от 0 до количества нот

tone(Pin_tone, frequences[i], durations[i] * 2); // Включаем звук, определенной частоты

led_R = random(0, 254); // Генерируем случайное число от 0 до 254

analogWrite(13, led_R); // Зажигаем светодиод на случайно сгенерированную яркость

delay(durations[i] * 2); // Пауза для заданной ноты

noTone(Pin_tone); // Останавливаем звук

}

}

Источник:
Урок 14. Музыка Star Wars на Arduino и RGB цветомузыка? Работа с tone(); — Описания, примеры, подключение к Arduino (iarduino.ru)

Виртуальный тренажёр на сайте К. Полякова

Откройте веб-страницу http://kpolyakov.spb.ru/school/robotics/arduino/arduino.htm

Удалите программу из окна слева и скопируйте в это окно новую программу:

//Звездные войны

пока 1

{

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(700)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,622)

ждать(250)

звук(15,466)

ждать(100)

звук(15,369)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(200)

нетЗвука(15)

ждать(2000)

}

Щёлкнув по кнопке запустить программу, выполните её

Скетч «Светофор» на тренажёре К. Полякова

//1 секунду: горит только красный светодиод;

//0,5 секунды: горят красный и жёлтый светодиоды;

//1 секунду: горит только зелёный светодиод;

//0,5 секунды: горит только жёлтый светодиод.

пока 1

{

пин[0] = HIGH

ждать(3000)

пин[1] = HIGH

ждать(2000)

пин[0] = LOW

пин[1] = LOW

пин[2] = HIGH

ждать(3000)

пин[2] = LOW

пин[1] = HIGH

ждать(2000)

пин[1] = LOW

}

Ресурсы:

  1. https://appliedrobotics.ru/?page_id=670 — pdf версии методичек

  2. https://youtu.be/PqqvmoaAzfU — Обзор модуля и интерфейса программы TrackingCam

  3. http://arduino.ru/Guide/Windows — arduino справочник на русском

  4. https://amperka.ru/page/arduino-ide — Arduino IDE Arduino IDE 1.8.16 (стабильная версия релиз от 06.09.2021)

  5. https://kpolyakov.spb.ru/school/robotics/arduino.htm — Сайт К. Полякова. Раздел Робототехника

  6. https://youtu.be/nrczO8tWJNg — Arduino с #0

  7. https://youtu.be/bO_jN0Lpz3Q?list=PLfDmj22jP9S759DT250VVzfZs_4VnJqLa — Arduino с #0

  8. http://edurobots.ru/kurs-arduino-dlya-nachinayushhix — Arduino уроки

  9. https://wokwi.com/arduino/new?template=arduino-uno — виртуальный симулятор Arduino

  10. https://www.tinkercad.com/things/e2gKm6XCRUK-brave-tumelo/editel?tenant=circuits — Тинкеркад (Tinkercad Circuits Arduino) – бесплатный, простой и одновременно мощный эмулятор Arduino

1 YXHUNU9GQUEQ – это код, который отправляет учащимся учителем. Учитель заранее на сайте регистрируется, выбрав роль преподавателя и создает класс, формирует код.

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

Манипулятор в сборе

Манипулятор в сборе

1. Подготовка деталей

Листовое оргстекло продается с защитными пленками, наклеенными на обе стороны поверхности. При лазерной резке эти пленки обычно оставляют, чтобы окалина образовывалась только на них. Перед использованием вырезанных деталей нужно при помощи канцелярского ножа снять эти пленки (с двух сторон!).
В нашем манипуляторе используются детали из листа толщиной 3мм
01-Assemble
…и 5мм
02-Assemble

2. Установка правого сервопривода

Для сборки вам потребуются пластиковые детали и следующий крепеж:

  1. Сервопривод MG995 — 1шт
  2. Диск серводвигателя — 1шт
  3. М4х12 винт с головой под в/ш — 4шт.
  4. М3х14 винт с головой под в/ш — 4шт.
  5. М4 гайка — 4шт.
  6. М3 шайба — 4шт.
  7. М3 шайба гроверная — 4шт

03-Assemble
Для начала установите и прикрутите сам сервопривод. Посадочное место для него симметричное, поэтому следите, чтобы привод был установлен именно так, как на фотографии:
04-Assemble
Затем соедините алюминиевый диск для вала сервопривода с качалкой.
05-Assemble
Установите качалку на вал в произвольное положение и установите сервопривод в среднее положение. Затем снимите качалку и установите ее таком же положении, как на фотографии:
06-Assemble
Проверьте чтобы из положения, изображенного на фотографии, качалка могла двигаться на +/- 90 градусов. Это очень важно! Иначе рука не сможет двигаться.
Прикрутить качалку к валу сервопривода винтом можно, но совершенно не обязательно. Конструкция отлично держится и без этого.

3. Установка левого сервопривода

Второй привод необходимо установить пока без качалки. Крепеж:

  1. Сервопривод MG995 — 1шт
  2. М4х12 винт с головой под в/ш — 4шт.
  3. М4 гайка — 4шт.

08-Assemble
Прикрученный, он должен выглядеть точно так, как на фото:
07-Assemble

4. Сборка основания

Для сборки поворотного основания подготовьте следующие комплектующие и крепеж:

  1. Сервопривод MG995 — 1шт
  2. Диск сервопривода — 1шт
  3. Подшипник 30х55х13 — 1шт
  4. М4х12 винт с головой под в/ш — 4шт.
  5. М3х25 винт с потайной головкой — 3шт.
  6. М3х15 стойка шестигранная латунная мама-мама — 4шт
  7. М3х14 винт с головой под в/ш — 4шт.
  8. М3х10 винт с головой под в/ш — 9шт.
  9. М4 гайка — 4шт.
  10. М3 гайка — 3шт.
  11. М3 гайка квадратная — 1шт.
  12. М3 шайба — 19шт.
  13. М3 шайба гроверная — 7шт.

09-Assemble
Квадратное основание придется доработать. Отверстия на 3мм нужно рассверлить зенкером так, чтобы они скрывали головку винта М3, как на фото:
10-Assemble
Установите опорное кольцо для подшипника и прикрутите диск сервопривода к верхнему диску подшипника. На этом же этапе можно прикрутить сервопривод к прямоугольной площадке (следите за его положением!).
11-Assemble
На следующем этапе сначала установите подшипник и прижмите его сверху. Закрутите три гайки на винты с потайными головками. После этого внешнее кольцо подшипника должно свободно вращаться.
Одновременно сложите три наружных кольца и скрутите их вместе стойками. Обратите внимание, что замкнутые кольца должны быть на наружных частях. Допуски размеров деталей зависят от конкретных условий производства и может выйти так, что они будут налазить на подшипник с большим усилием. Можно немного обработать эти кольца канцелярским ножом, чтобы упростить надевание.
12-Assemble
Перед тем как надевать внешнее кольцо, вставьте в паз квадратную гайку и закрутите в нее винт. Позже она поможет зафиксировать это кольцо.
13-Assemble
Теперь можно прикрутить прямоугольную поворотную площадку. Подберите глубину установки кольца подшипника такой, чтобы вал сервопривода максимально вошел в диск. Для этого сервопривода можно не подбирать среднее положение. После прикручивания проверьте, что двигатель свободно вращается и зажмите прижимной винт подшипника.
14-Assemble

5. Сборка плеча

Крепеж для сборки:

  1. Диск сервопривода — 1шт
  2. М3х15 стойка шестигранная латунная мама-мама — 2шт
  3. М3х14 винт с головой под в/ш — 4шт
  4. М3х10 винт с головой под в/ш — 4шт
  5. М3 шайба — 12шт
  6. М3 шайба гроверная — 8шт

15-Assemble
Для начала нужно прикрутить металлический диск сервопривода и стойки. Детали симметричные, главное, чтобы круглые вставки из оргстекла не оказались на наружной части руки.
16-Assemble
После этого можно прикручивать верхнюю часть:
17-Assemble

6. Сборка локтевой тяги

Эта тяга передает усилие сервопривода на локоть. Для ее сборки потребуются:

  1. Подшипник 3х8х3 — 1шт
  2. Штифт d6мм, длиной 30мм — 1шт
  3. М3х15 стойка шестигранная латунная мама-мама — 1шт
  4. М3х14 винт с головой под в/ш — 4шт
  5. М3 шайба узкая — 2шт
  6. М3 шайба — 2шт
  7. М3 шайба гроверная — 1шт

18-Assemble
Эта первая деталь с маленьким подшипником. Между подшипниками и деталями руки обязательно должны стоять узкие шайбы М3, которые не блокируют внешнее кольцо. Шайбы из оргстекла тоже обязательно устанавливать, чтобы деталь не соскочила с подшипника. Для начала вставьте и подшипник и вставьте в шайбу из оргстекла винт с узкой шайбой:
19-Assemble
Далее вставьте винт в подшипник и накиньте вторую зауженную шайбу на подшипник:
20-Assemble
Теперь можно прикрутить планку, использовав для этого латунную стойку. После затяжки винта проверьте, что детали могут свободно двигаться относительно друг друга.
21-Assemble
Теперь эту тягу можно установить на плечо.
Сначала плечо нужно установить на сервопривод. Установите вал двигателя в среднее положение!. Для этого сначала наденьте плечо в произвольном положении, на глаз, двигая плечо, определите крайние положения вала, затем установите его в среднее положение и снимите плечо. Далее плечо нужно установить так, как показано на фото:
22-Assemble
Теперь возьмите штифт диаметром 6мм и проденьте его в отверстие через плечо и локтевую тягу:
24-Assemble
Теперь можно приступить к крупноузловой сборке.

7. Сборка узлов

Потребуется следующий крепеж:

  1. М3х10 винт с головой под в/ш — 1шт
  2. М3х12 винт с головой под в/ш — 6шт
  3. М3 шайба — 7шт
  4. М3 шайба гроверная — 7шт
  5. М3 гайка квадратная — 6шт

И вот эти, ранее собранные, узлы:
25-Assemble
Для начала нужно их просто все собрать вместе при помощи пазов.
26-Assemble
Сразу прикрутите качалчку сервопривода локтя к тяге.
27-Assemble
Следующая операция требует определенной сноровки. Удобнее всего подкладывать квадратные гайки в пазы пинцетом и закручивать в них винты. С каждой стороны по три штуки.
28-Assemble
После того, как вы стяните детали шестью винтами, собранная конструкция будет выглядеть вот так:
29-Assemble

8. Сборка локтя

Для сборки локтя вам потребуются детали из оргстекла и следующий крепеж:

  1. М3х15 стойка шестигранная латунная мама-мама — 2шт
  2. М3х10 винт с головой под в/ш — 4шт
  3. М3 шайба — 4шт
  4. М3 шайба гроверная — 4шт

30-Assemble
Собирается локоть также как и плечо. Перепутать что-то будет сложно, так как детали симметричны. На локте мы нанесли логотип нашего блога. Если вы выгравировали и его тоже, то нам будет приятно если он будет виден на наружной части локтя.
31-Assemble

9. Установка локтя

На этом этапе нужно будет прикрутить локоть к основной части руки, собранной ранее. На этом же этапе устанавливается треугольник, удерживающий клешню в фиксированном положении. Для этой трудоемкой операции потребуется очень немного крепежа:

  1. Подшипник 3х8х3 — 2шт
  2. М3х18 винт с головой под в/ш — 1шт
  3. М3х14 винт с головой под в/ш — 1шт
  4. М3 гайка — 2шт
  5. М3 шайба — 10шт
  6. М3 шайба узкая — 4шт
  7. М3 шайба гроверная — 2шт

32-Assemble
Для начала нужно прикрутить левую сторону (на фотографии) с подшипником. Обратите внимание, что подбором количества шайб необходимо сделать так, чтобы во внутренней части руки винт как можно меньше выступал над гайкой.
33-Assemble
Теперь установите два подшипника на треугольник. Один внутрь самого треугольника, а второй для плеча. Обратите внимание на ориентацию длинной и короткой стороны треугольника.
34-Assemble
Теперь установите треугольник на его место. Длинная сторона треугольника должна быть ближе к основанию, короткая к кисти.
35-Assemble
Накрутите гайку на винт по внутренней части руки.
36-Assemble

10. Установка локтевой тяги

Это самый простой этап. Для него потребуются только две шайбы из оргстекла, подшипник и следующий крепеж:

  1. Подшипник 3х8х3 — 1шт
  2. М3х18 винт с головой под в/ш — 1шт
  3. М3 гайка — 1шт
  4. М3 шайба — 2шт
  5. М3 шайба узкая — 2шт
  6. М3 шайба гроверная — 1шт

37-Assemble
Самое главное — следить чтобы тяга локтя была максимально параллельно плечу во всех плоскостях. Просто прикрутите тягу, которая раньше просто болталась к верхней части сервопривода:
38-Assemble
Если все операции проделаны верно, то на этом этапе рука будет выглядеть так:
39-Assemble
Вы даже можете проверить, что три основных двигателя двигаются свободно и все движения ограничены только деталями конструкции, а не внутренними ограничителями углов сервоприводов.

11. Установка первой кистевой тяги

Вам понадобится сама тяга и следующий крепеж:

  1. Подшипник 3х8х3 — 2шт
  2. М3х14 винт с головой под в/ш — 2шт
  3. М3 гайка — 2шт
  4. М3 шайба — 4шт
  5. М3 шайба узкая — 4шт
  6. М3 шайба гроверная — 2шт

40-Assemble
Эта тяга удерживает треугольник в стационарном положении относительно земли.
Сначала прикрутите одну сторону тяги к ушку на основании руки.
41-Assemble
С наружной стороны, как обычно, нужно установить шайбу из оргстекла.
42-Assemble
Теперь можно прикрутить вторую сторону тяги к треугольнику. Для этого потребуется установить дополнительную шайбу, чтобы тяга была максимальная параллельно с плечом.
43-Assemble
Головка винта обязательно должна быть с внутренней стороны, иначе она будет цепляться за локоть.
44-Assemble

12. Установка второй тяги руки

Для установки этой тяги потребуются:

  1. Подшипник 3х8х3 — 1шт
  2. М3х14 винт с головой под в/ш — 1шт
  3. М3 гайка — 1шт
  4. М3 шайба — 2шт
  5. М3 шайба узкая — 2шт
  6. М3 шайба гроверная — 1шт

45-Assemble
Вся сборка сводится к тому, что нужно прикрутить эту тягу к треугольнику:
46-Assemble
Теперь можно приступать к сборке ксити.

13. Сборка кисти

Для сборки захвата понадобятся детали из оргстекла и следующие комплектующие:

  1. Сервопривод MG90S — 2шт
  2. М2х10 винт — 4шт
  3. М2 гайка — 4шт
  4. М3х10 винт с головой под в/ш — 2шт
  5. М3х18 винт с головой под в/ш — 2шт
  6. М3х25 винт с головой под в/ш — 1шт
  7. М3 шайба — 8шт
  8. М3 шайба гроверная — 7шт
  9. М3 гайка — 3шт

47-Assemble
Для прикручивания качалок сервоприводов можно использовать крепеж из комплекта, но мы предпочитаем использовать обычные винты М2. Если вы хотите сделать также, то отверстия надо рассверлить (а крепеж докупить).
Также одну из качалок надо подрезать.
48-Assemble
Для начала винтами на М2 прикрутите сервоприводы. Следите внимательно, чтобы на деталях они были установлены также, как на фото:
49-Assemble
Затем установите треугольные детали кисти и свободный «палец» захвата. Захват устанавливается с прокладкой из трех шайб. Закрутить его надо очень слабо при помощи гайки с нейлоновой вставкой. Он должен двигаться с одной стороны максимально свободно и, с другой стороны, с минимальным люфтом. Специальная гайка во время движения предотвратит самоотвинчивание крепления.
50-Assemble

51-Assemble
Далее прикрутите винтами качалки сервоприводов. На фото видно, для чего мы укорачивали одну из качалок.
52-Assemble
Теперь можно прикрутить качалки к сервоприводам. Прежде чем сделать это — установите сервоприводы в среднее положение. Затем установите качалки именно так, как показано на фото. Обратите внимание, что нужно совместить соответствующие зубцы клешни. После установки закрутите винты и убедитесь, что все валы вращаются свободно, а клешня закрывается и открывается
53-Assemble
Теперь осталось только объединить эти две части. Сделайте это так, как показано на фото
55-Assemble
Клешня собрана.
54-Assemble

14. Установка кисти

Для установки кисти на манипулятор потребуются четыре шайбы из оргстекла и перечисленный ниже крепеж:

  1. Подшипник 3х8х3 — 2шт
  2. М3х14 винт с головой под в/ш — 3шт
  3. М3 шайба — 6шт
  4. М3 шайба узкая — 6шт
  5. М3 шайба гроверная — 3шт
  6. М3 гайка — 3шт

56-Assemble
Шарнирные соединения собираются как обычно. Обратить внимание стоит только на дополнительную шайбу с внутренней стороны кисти.
57-Assemble

58-Assemble
После того, как нижние два соединения собраны можно накинуть верхнюю тягу.
59-Assemble
На этом этапе вся механическая часть руки собрана:
60-Assemble

15. Установка и подключение электроники

Наша рука собрана на основе платы EduBoard и специального коммутационного шилда для подключения сервоприводов. Сама плата прикручена к основанию манипулятора при помощи фторопластовых стоек и винтов.
61-Assemble
Сверху на эту плату устанавливается шилд с разъемами для сервопривоодов:
62-Assemble
Чтобы подключить сервоприводы кисти потребуются дополнительные удлинительные провода. Обмотайте их вокруг манипулятора так, чтобы они не могли передавиться.
63-Assemble
Все. Манипулятор полностью собран:
64-Assemble

16. Изменение установки клешни

Захват манипулятора может быть установлен как перпендикулярно рабочей поверхности, так и параллельно ей. То или иное положение удобно в разных конкретных случаях.
Для этого не потребуется никакого дополнительного крепежа. Для начала нужно просто снять клешню с шарниров:
66-Assemble
А затем установить обратно, изменив направление:
67-Assemble
Теперь манипулятор может легко ухватить, к примеру, стакан:
68-Assemble

69-Assemble

Вместо заключения

Остальные статьи цикла статей здесь:
Робо-рука. Часть 1. Описание (все ссылки на фалы для скачивания здесь)
Робо-рука. Часть 3. Электроника и программирование

Мы будем очень рады, если вы поддержите наш ресурс и посетите магазин наших товаров shop.customelectronics.ru.

Содержание

  • 1 Установка ПО
    • 1.1 Загрузка и установка окружения
    • 1.2 Скачивание необходимых пакетов
  • 2 Описание кинематики манипулятора
    • 2.1 Описание манипулятора
  • 3 Структура системы управления
    • 3.1 Модуль управления рукой манипулятора
    • 3.2 Модуль управления схватом манипулятора
    • 3.3 Модуль управления приводами манипулятора
  • 4 Модель для симуляции
    • 4.1 Структура пакета
    • 4.2 Запуск модели в симуляции
    • 4.3 Система топиков, нод и сервисов

Установка ПО

Загрузка и установка окружения

Для работы с пакетами управления манипулятором в среде ROS необходимо создать окружение. Для этого можно использовать виртуальную машину, порядок установки которой изложен по следующей ссылке. В случае, когда на персональном компьютере уже установлена Linux-система, то для корректной работы с пакетами управления манипулятором необходимо иметь систему Ubuntu 18.04 и ROS Melodic.

Скачивание необходимых пакетов

Для работы с манипулятором в системе ROS необходимо скачать специальные пакеты управления, позволяющие работать как с моделью для симуляции, так и с реальным роботом. Пакеты располагаются на GitHub. Скачать их можно либо через инструменты git (команда git clone {ссылка на скачиваемые файлы}) либо непосредственно с сайта.

Снимок.png

В результате скачивания любым из представленных способов получены две папки (workspace). Одна из папок содержит пакеты для управления реальной моделью, вторая для работы с симуляцией. Полученные папки требуется расположить в следующем формате:

Папки.png

В данном случае папка robotic_arms_ws содержит пакеты для работы с реальным роботом, папка robotic_arms_ws_simulation — пакеты для работы с моделью для симуляции.

Описание кинематики манипулятора

Описание манипулятора

В качестве объекта управления используется манипулятор с угловой кинематикой компании Aplied Robotics.

Large Угловой РТК 8.png

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

Кинмод.png

На данной схеме изображены обобщенные координаты подвижностей манипулятора q1 — q5, звенья руки с индексами 0 — 4, а также схват 5. Под номером 0 обозначено условно неподвижное звено (стойка), которое является базовым. Все координаты, связанные с этим звеном, называются базовыми. За счет наличия пяти степеней подвижности, звенья манипулятора от 2 до 5 совершают плоское движение. Обобщенная координата q1 осуществляет вращения этой плоскости вокруг звена 1. Схват представляет из себя устройство, состоящее из сервомотора, двух пальцев, направляющей движения пальцев и дополнительных соединительных деталей.

Структура системы управления

Для структурирования системы управления удобно ее разделить на три основных модуля: модуль управления приводами, модуль управления рукой манипулятора, модуль управления схватом. Взаимосвязи между ними изображены на следующей схеме:

Сис урп.png

Модуль управления рукой манипулятора

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

Модуль управления схватом манипулятора

Модуль управления схватом манипулятора позволяет задавать команды по сжатию и отпусканию объектов, при этом реализуя обратную связь с информацией о том, находится ли деталь в схвате.

Модуль управления приводами манипулятора

Данный модуль реализован с помощью готовых библиотек по работе с сервомоторами Dynamixel. Он позволяет получать данные энкодеров, настраивать параметры ПИД регуляторов, получать значения с датчиков температур и тока сервомоторов, используя USB порт компьютера. Подключение манипулятора (цепи сервомоторов) к USB — порту ПК производится с помощью адаптера USB — DXL — AR и SMPS2Dynamixel, позволяющего обеспечить для сервомоторов отдельное 12V питание

Свисток.png

Модель для симуляции

Структура пакета

Структура пакета управления моделью в симуляции имеет следующий вид:

Диаграмма.png

Представленная структурная схема описывает подход к расположению различных модулей системы управления. Данная схема одинаков как для реального робота, так и для модели в симуляции за исключением пакета управления сервомоторами, который отсутствует для симуляции. В данной схеме выделены три основных блока: pc_image — пакет визуализации движения робота, nanopi_image — пакет управления роботом, arms_control_pkg — пакет запуска системы управления и визуализации.

Запуск модели в симуляции

Перед работой с пакетами управления необходимо произвести сборку проекта. Для этого, находясь в папке workspace требуется выполнить команду catkin_make.
Запуск модели в симуляции производится с помощью набора команд:
source devel/setup.bash
roslaunch arms_control_pkg angle_arm_control.launch

В результате выполнения команды запустится визуализация робота в среде RVIZ.

Модель.png

Для формирования задания манипулятору используются сервисы. Для задания команды необходимо открыть новый терминал в той же директории, из которой запускалась модель симуляции и выполнить команду source devel/setup.bash. Команда для задания желаемой точки и ориентации имеет следующий вид:

rosservice call /cmd_point “point: ‘{x} {y} {z} {pitch} {roll}’”

/cmd_point – имя сервиса для задания координаты рабочего инструмента в формате “{x} {y} {z} {pitch} {roll}”, где pitch – угол наклона схвата к горизонтали (вертикально вниз -1.57, вверх 0.70), roll – угол поворота схвата вокруг своей оси.

Для примера предложен набор достижимых точек: 350 0 350 0 0, -350 0 300 0 0, 250 0 110 -1 0, 150 150 150 -1 0, 150 150 100 -1.57 0 (в миллиметрах и радианах)

В качестве ответа сервис возвращает true, если все хорошо, false – если обратная задача кинематики не решается.
Для управления схватом манипулятора так же, как и в случае управления рукой, необходимо открыть новый терминал в той же директории и выполнить команду source devel/setup.bash. С помощью следующей команды производится вызов сервиса:
rosservice call /grippe_cmd “point: ‘расстояние между губками’”
Например ‘0.2’ – полностью открыт, ‘0’ – закрыт. Схват открывается и закрывается моментально.
Пример работы симуляции при следующем наборе управляющих точек: 240 150 300 0 0; -240 -150 200 -1 -1; 350 0 200 -0.5 1; 150 150 200 -0.5 1

  • 240 150 300 0 0

  • -240 -150 200 -1 -1

  • 350 0 200 -0.5 1

  • 150 150 200 -0.5 1

Система топиков, нод и сервисов

В пакете симуляции управления манипулятором при его запуске доступны следующие топики

Топики.png

На рисунке представлен список всех топиков, работающих в системе ROS при запуске пакетов управления. Из них только топик /angle_robot/joint_states содержит полезную информацию, а именно текущие обобщенные координаты сочленений манипулятора.
Далее на рисунке представлен список нод, работающих в системе ROS при запуске модели для симуляции.

Ноды.png

На рисунке изображены ноды /rosout и /rviz, которые являются системными. Далее нода /angle_robot/robot_state_publisher3 производит перемещение визуальной модели манипулятора, нода /main_to_point_control принимает поступающие команды, решает обратную задачу кинематики и отправляет полученные требуемые обобщенные координаты ноде /convert_and_publish,нода /convert_and_publish производит кинематическое моделирование движения робота.

Граф.png

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

Описание

В собранном виде набор представляет собой роботизированную платформу для учебной и соревновательной деятельности.

Чему научится ребенок

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

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

Способ работы

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

Работа с набором объединяет в себе задачи по механической сборке корпусных элементов и электрических схем, программированию, а также изучению взаимодействия между различными устройствами посредством проводных и беспроводных протоколов передачи данных.

Программное обеспечение

Программное обеспечение включает в себя: интегрированную среду разработки; примеры программного кода работы с различными типами исполнительных механизмов, входящих в состав набора.

Интегрированная среда разработки функционирует на устройствах под управлением операционной системы семейства Windows, MacOS, а также операционной системы семейства Linux.

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

Методическое сопровождение (в рамках приказа 804 поставляется отдельным пунктом в составе «Образовательный модуль для изучения основ манипуляторной робототехники»)

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

Методическое пособие содержит базовые принципы работы с управляющим блоком манипулятора и его внешними устройствами. Методическое пособие познакомит обучаемого с программной средой и редактором для создания программного кода на языке С, его отладкой и последующей загрузкой этого кода в управляющий блок для исполнения.

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

Важно: Товар внесен в реестр промышленной продукции, произведенной на территории Российской Федерации 218872022. Входит в перечень учебного оборудования для оснащения школ-новостроек (Приказ №804 Минпросвещения РФ от 06.09.2022 г.)

Технические характеристики

Состав  Arduino-совместимая платформа
 Блок питания
 Мотор
 Сервомотор
 Кабель-удлинитель для сервомотора
 Комплект конструктивных элементов
 Программное обеспечение
Учебная дисциплина Робототехника
Рекомендуемый возраст от 13 лет
Система хранения Лоток
Материал Пластик
Страна производитель Россия

Добрались, наконец, до первого серьёзного (без кавычек) проекта в группе Ардуино (продолжающие). Делаем роборуку или робота-манипулятора

Поставили себе с учениками задачу – конструируем робота. Робот должен уметь хватать объекты-мишени на плоскости. Зона обслуживания – сектор в 180 градусов.

Определять координаты мишени можно будет сначала прямым указанием (создадим программу на компьютере в среде Processing, где мышкой можно будет указать точку в рабочей зоне), ну а следующий шаг – подключим веб-камеру и будем обрабатывать изображение с помощью цветового фильтра, который позволит выделить мишень характерного цвета для определения её координат.

Начнем с кинематической схемы и конструкции робота

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

Нижнюю опору с пяткой решили сделать с настоящим металлическим подшипником (будет служить дополнительной опорой и не даст нагрузке срезать валик на нижнем серводвигателе), все остальные детали будем печатать на 3D-принтере

Введение

Работая программистом и будучи отцом двух мальчиков неминуемо задумываешься над тем, как будут твои дети жить в технологическом мире и как будут им пользоваться. И, как любой айтишник, я конечно же хочу, чтобы дети чувствовали себя уверенно. А ещё лучше, чтобы стали профессионалами. Современные технологии дают огромный простор для самоопределения, и моя задача — рассказать как можно больше и как можно интереснее. Там уж сами решат, чего им хочется. 

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

Однако задача показать и рассказать относительно легко решается, когда ребенку 7 или 10 лет, а вот когда ему 14, всё становится не так просто. Больше его внимания обращено на соцсети и игры, и всё меньше времени тратится на полезные дела (по мнению родителей, по крайней мере). Энциклопедии по технике уже прочитаны, какие-то штучки вроде Scratch и Lego Mindstorms опробованы и заброшены. Наверное, это самый сложный возраст для поддержания в ребенке интереса к тому, чем увлекаешься сам. С младшим, которому 10, такой проблемы не замечено, он все еще очень открыт новым знаниям)

Пробовал показывать старшему сыну более более взрослые языки программирования из тех, что использую сам — С++ и Python. У старшего неплохо получается, но простые примеры, не имеющие отношения к жизни — не особо интересны, а для решения реальных задач нет пока мотивации. Так и пришел я к мысли, что было бы неплохо эту мотивацию сформировать. Сразу оговорюсь — да, старший сын — “технарь” по складу ума. И это не мое предвзятое мнение, а более-менее объективная оценка других людей. Ему 14, уже стало понятно. Младшему 10, техника ему интересна, но мне кажется по нему однозначно судить рано.

Когда я рос, компьютеров дома не стояло и по смартфону у каждого в кармане не лежало. Чтобы увлечь компьютером его достаточно было показать. Сейчас это изменилось. Вся техника стала нормой жизни, дети просто не понимают, как это — не было ютуба, инстаграма и тик-тока…ах да, интернета не было тоже :-)

Примерно такой компьютер был на работе у отца. DOS и NortonCommander, 16 цветов в играх…(картинка из интернета)

Примерно такой компьютер был на работе у отца. DOS и NortonCommander, 16 цветов в играх…(картинка из интернета)

Чего не хватает многим программистам? Возможности пощупать руками то, что они сделали. Ну не можешь ты потрогать руками например бэк-энд, крутящийся на удаленном сервере. Или базу данных. И у сына я вижу ту же проблему. Тут я и увидел возможность для формирования мотивации — нужен ощутимый измеримый наглядный результат. Что может с этим помочь? Что позволяет совместить физическое и электронное? Конечно, это робот!

Итак, попробуем хоть как-то сформулировать задачу: поддержание интереса к миру ИТ в целом и программированию в частности, закрепить и развить навыки программирования, напомнить, что  “работать руками и головой” этот человек умеет неплохо, вытащить немного из соцсетей и телефона. Дополнительно — познакомиться с новым для нас разделом мира ИТ — робототехникой. Вообще было бы хорошо и младшего привлечь.

Возможный способ решения: какой-то вариант из мира учебной робототехники.

И вот тут я завис…причем, надолго. Привычка системного подхода к решению задач может и навредить. Ничего, зато теперь я почти “диванный эксперт” по детской робототехнике. Стоит также оговориться, что я не робототехник. И не схемотехник. Я программист, это своя специфика.

Обзор рынка образовательной робототехники

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

  1. готовые решения на своих контроллерах — Lego Mindstorms EV3, VEX, наш Трик.

    Плюсы: работает из коробки, есть инструкции, можно собирать разных роботов. Наиболее известные решения, с ними все относительно просто.

    Минусы: цена. И это основной минус. Лего теперь почти не купить. Отдавать под 100 тысяч за набор я на данном этапе не готов, т.к. он может быть банально заброшен.

    Купить можно много где, например https://robotbaza.ru/ 

  2. проекты на Arduino

    О, тут целое море. Океан. Это целый мир DIY, но влезть в него для меня не так и просто. Дело в том, что я никогда не был силен в электрических схемах. Посидев немного и поизучав вопрос, решил для себя, что тут нужно либо найти человека, который все это растолкует, либо разбираться самому, на что нужно время. 

    Надо сказать, что хороших готовых проектов в продаже удалось найти совсем немного.

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

    Искал такой проект, чтобы нормально собиралось и было не слишком сложным. Есть вроде интересные, но за них и ценник подбирается к 20 тысячам, и это на ардуинке и без камер, на “малинке” еще дороже…Неплохим вариантом видится что-то на ардуинке с Алиэкспресса. Цены более вменяемые и выбор очень велик. Но! Ни инструкций по сборке, ни понимания, как это программировать. Пожалуй, лучшее, что видел — это роботы китайской компании HiWonder https://www.hiwonder.hk/. Понравились, думал что остановлюсь на них. Дороговаты и сейчас пропали с Алиэкспресса.

    Из того, что можно купить в России надо отметить наборы Keyestudio — их можно, например, на Озоне купить. На вид привлекательны, по факту это просто китайские наборы и на АлиЭкспресс стоят почти вдвое дешевле.

    Также понравилось решение RoboRobo Robokit. Вроде, ардуинка, но можно собирать разных роботов, что редкость. Есть целая линейка по наборам деталей — от простых до весьма навороченных наборов. Опять же, интересные по комплектации наборы дороговаты сейчас более 100 тысяч. Но рассматривал базовый к покупке, хоть и дорого.

  3. Raspberry Pi и аналоги, либо Nvidia Jetson Nano +ROSi.

    Очень интересная группа, например https://www.hiwonder.hk/collections/jetson/products/hiwonder-jetmax-jetson-nano-robot-arm-ros-open-source-vision-recognition-program-robot .

    Возможности уже намного шире, есть распознавание видеопотока, управление большим количеством устройств и очень много очень разных проектов. Здесь уже как правило вполне стабильные в плане работы и конструкций роботы, возможность серьезно программировать. ROSi вообще очень перспективная среда, много чего интересного можно было бы сделать. Только есть два недостатка: Raspberry Pi и аналоги — это по факту полноценные одноплатники, что не может не сказаться на их цене. Второй — порог входа в плане необходимых знаний здесь значительно выше, это область с которой я никогда не сталкивался. А значит и время, которое потребуется для погружения в тему — в разы больше. Очень интересно, но я пока не потяну, да и не уверен, что на данном этапе есть смысл.

  4. специальные учебные роботы “высокого уровня”. Естественно, забугорной сборки. Например, есть очень классные решения:

    Ufactory

    Dobot

    Applied Robotics

    Тут уже все серьезно. В том числе и по деньгам. 100-200-400-800 тысяч. Опять же толком нет руководств на русском, но понятно, что там уже ROS со всеми вытекающими.

  5. что-то сделанное в России. Ну, тут вообще грустно. Вариантов совсем немного. Это конструкторы:

    • Трик — выглядят неплохо, написана своя оболочка, но почему так дорого? Базовый набор — больше 50 тысяч, а так, чтобы что-то интересное собрать, это опять 100 тысяч. Не проходит по моему бюджету.

    • Ларт — мне не понравились и дорого

    • Зарница — очень много всего! реально интересно, есть небольшая тележка, стоит правда почти 25 тысяч — выглядит интересно, на борту все та же Arduino Uro R3, но вроде обещают комплект учебных материалов.

    • Эвольвектор — больше на электрику ориентированы, наборы с роботами дорогие и все та же ардуинка в качестве основы.

    • Отдельно стоит решение Роббо. Интересное. Вроде, тот же ардуинка, но распаянная по своему. И тут хотя бы должны быть уроки в комплекте. Минусы — соотношение цены и малой гибкости робота — доработать его не получится. Что-то изменить — тоже. У тебя просто колесная платформа, можно довесить датчики. И цена — 62 000 на момент сочинения этой статьи!

      Ну и ..все, кажется? Если что-то пропустил, дополните, пожалуйста. Т.к. более-менее актуального обзора этого рынка я просто не нашел.

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

В результате остановился на ардуинке, особых альтернатив вроде нет, и решал, что же выбрать. Собирался брать в Суперайс. Мне кажется, в России лучше, чем у них выбора роботов на Ардуино и Малинке я не видел.

И вот, раздумывая и перекапывая в очередной раз Алиэкспресс в муках выбора я наткнулся на такой проект.

И вроде бы закрыл, чего там, подобные манипуляторы уже видел и цена на них была ниже. А потом вернулся. Сознание зацепилось за одну из картинок — коробочки все подписаны по-русски и в комплекте инструкция. Ладно, думаю, видели и не такое, работают китайцы. 

Модель промышленного робота-манипулятора Робоинтеллект

Читаем описание. И вот тут становится интересно. Оно написано по-русски. Именно не переводчиком, а по-русски. Так. Ладно, сначала реклама, потом…ага, подключение к компьютеру по usb…стоп. Тут нет ардуинки. Как так? А вот так. Подключаем к компу и работает? Сомнительно. Но интересно. Я ведь не хотел ардуинку. Смотрим описание магазина на Али — его нет. Что ж, интернет большой. Ищем просто поиском и, что удивительно, находим. Оказывается, такие же роботы есть и на Озоне и на Вайлдберриз. Ищем дальше и находим (!) сайт производителя. В России. Удивили, но фирма “Робоинтеллект” действительно наша сайт проекта.

В модельном ряду аж сразу 2 манипулятора, правда отличаются они только цветом, серый и желтенький. Зато на сайте есть дополнительные фото, можно чуть внимательнее посмотреть. Описание на сайте не информативное, из него ничего не понятно. Позиционируются как “модель промышленного робота манипулятора”. Смотрим дальше, из интереса идем в раздел “скачать” и находим вполне подробное руководство по работе с роботом. Вот с этого и надо было начинать, большой кнопкой на главной странице!!

Что имеем по факту: 

  • цена — выше аналогичных решений с АлиЭкспресса, но поменьше более качественных аналогов. На момент написания цена на Али 7 416 рублей.

  • робот с 4-мя степенями свободы, сделан из пластика

  • это не колесная платформа, ездить не будет, увы

  • в нагруженных узлах сделаны редукторы — обычно в таких проектах все сидит прямо на сервах и работает не очень

  • подключается напрямую к компьютеру через usb

  • сервы какие стоят не понятно (но на фото корпуса темные. по другим проектам это похоже на MG90, предполагаем хотя бы металлические шестеренки)

  • интересная конструкция клешни — спорное решение, обычно делают проще

  • есть программка для управления с компьютера

  • есть пособие по программированию на Python

Но на Алиэкспрессе обещали еще C, C++, Golang и PHP. Пишу в техподдержку и…они отвечают! Неужели там есть живые люди? Обычно в ответ тишина, а тут адекватный ответ. Суть ответа в следующем — программные оболочки они сейчас активно разрабатывают. Представляете? У нас в России кто-то что-то делает путевое. Они сделали свое SDK для робота! Да, вот к этому маленькому роботу…не представляю, сколько они с этим сидели. Дали ссылку на раздел документации Документация к библиотеке управления робототехникой RISDK с примерами для всех языков программирования и на оболочку для упрощенного программирования на блочном языке Blockly RISDK.

Ну, раз так, решился заказать. Интересно — наборы на Али и Озоне стоят одинаково, а на Вайлдберриз значительно дороже. Непосредственно на сайте заказать нельзя, странно. Заказывал с Озона. Приехало за пять дней. Нашел один обзор на конструктор на ютубе и на сайте есть ссылка на аж полуторачасовое видео полной сборки робота, так что в целом был готов) Что как выглядело и как собиралось расскажу только в общих чертах, подробнее смотрите на сайте.

Упаковка:

Упаковано хорошо, обычная вроде коробка, но все подписано. Внутри целая россыпь всякой всячины. Отдельно стоит отметить печатную инструкцию. Она черно-белая и ооочень подробная. Цветной вариант есть на сайте, там лучше видно. Мы собирали по печатной. В комплекте деревянные кубики и интересное поле с нанесенной сеткой углов и позициями под кубики. Удобно, так придумывать задания намного легче. Т.е. получаем продуманное решение, где многое уже сделали за меня. Просто мечта)

Комплект поставки - все коробочки, инструкция, поле и кубики

Комплект поставки — все коробочки, инструкция, поле и кубики

Все почти как на фото на сайте, не обманули. А я сомневался, что все это будет, у китайцев такое есть только у HiWonder, но там и ценник за робота с полем совсем другой.

Куча всего упаковано по коробочкам, основные конструктивные элементы уложены пластинами и сделаны, похоже, из акрила. Элементы нужно выдавливать из подложки, напомнило конструкторы из фанеры, принцип тот же. Вся сборка на винтики и гаечки. Собирать отдал старшему сыну, для младшего инструкция слишком сложная, хотя он крутился рядом и ему было интересно. В отзывах на озоне есть, что собирал 9-ти летний ребенок сам. Ну что ж, все разные)

Отмечу основные моменты сборки.
Плюсы:

  • хороший пластик, никаких заусенцев и порезанных пальцев

  • большие листы комплектации, ориентированные на детей, помогают разобраться в конструкторе

  • на сервах уже стоят шестеренки, правда закреплены странно

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

  • сервы, к слову, все же MG90 с металлическими шестернями, надеюсь, выживут

  • сборка на винты, где нужно — гайки с нейлоном, чтобы не откручивались

  • в комплекте аж 3 разных отвертки, собирали все одной, маленькая пригодилась только провода прикрутить

  • блок питания в комплекте

  • наличие фторопластовых шайб — это значительно улучшает подвижность

В целом сборка не очень сложная, но долгая. Я почти не участвовал, только в паре моментов, например сын перепутал губы на клешне. И не поставил некоторые шайбы — пересобирали эти места. Сборка заняла около 3,5 часов. Электронная часть довольно простая, удалось собрать с первого раза по схеме и не накосячить. В двух местах не выставили шестерни как нужно, будьте внимательнее.

Что не понравилось:

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

  • часть акрила затянута в пленку, а часть в бумагу. бумага снимается значительно хуже и на это уходит время

  • наименование деталей в инструкции — сразу видно, наши делали)) очень быстро теряешься во всех буквах и цифрах

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

  • детали скомпонованы на подложках по непонятному признаку, найти их сложновато

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

Видео готового робота сразу после сборки:

Кстати, раз уж техподдержка ответила первый раз, то я им и про детальки написал. Ответили, сказали, что подумают). Это интересно — принимать участие в улучшении чего-то.

Что ж, робот готов, можно бы уже его включать. Подключаем к питанию, подключаем к компьютеру. Ничего не происходит. Ах да, надо установить на компьютер программу — пульт управления. Качаем с сайта, ставим, запускаем. И… все работает! Удивительно, но факт. Можно с компьютера напрямую управлять роботом. Пришлось все же немного почитать про электронную часть, надо же детям объяснить. Стало понятно, как это сделано. Ребята запилили поддержку USB-i2c программатора непосредственно сразу в проге пульта, в результате избавились от Ардуинки. Вот такого я не видел. С одной стороны мы теряем автономность — программа запускается только с компьютера, с другой — оно же работает и даже не глючит. А нужна ли она, автономность для такого робота? Кроме того, если робот подключен к компьютеру и запущена программа пульта, то можно управлять со смартфона, если комп и телефон подключены к одной сети. Как-то сложно звучит, но мне удалось все это поднять довольно легко. И даже приложение устанавливать не надо, все через Хром работает, удивительно, но факт. Похоже приложение пульта на компьютере поднимает какой-то сервер, к которому смартфон стучится по IP и номеру порта, заданному при установке (главное его не забыть теперь).

Старший попробовал, его не очень зацепило просто управлять. А вот младший с удовольствием игрался долго, переставляя кубики. Думаю, джойстик все таки нужно купить. Каждому возрасту свое.

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

“Шагаем” как экскаватор
“Шагаем” как экскаватор

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

Вот такой немного “топорный” интерфейс управления

Вот такой немного “топорный” интерфейс управления

Ну ладно. Руками поработали, поиграли и будет. А дальше что? Вроде бы все затевалось не ради этого. Начинаем использовать голову. Первое, с чего начнем — это блочное программирование в он-лайн оболочке http://blockly.robointellect.ru/ . Blockly это вроде бы иностранный сервис, но тут его перепилили и сделали под себя. Точнее, под робота. Стоит отметить, что по словам техподдержки сервис работает в тестовом режиме и потому ссылки на него пока нет на сайте. Если кто-то будет гонять сервис и найдет ошибки, пишите разработчикам, может, пофиксят.

Внешний вид оболочки для блочного программирования робота 

Внешний вид оболочки для блочного программирования робота 

В целом, оболочка напоминает Scratch. Похожее расположение панелей и рабочих зон, похожие блоки. Набор блоков явно ограничен, наверное, чтобы лишнего не напрограммировать. Что есть интересного: во первых, есть возможность управлять удаленным роботом, стоящим у разработчика. Приятно, что они сами тестируют и дают возможность возможность другим. Интересный момент — в продаже робот с 4 степенями свободы — у него не поворачивается клешня. Как в дальнейшем выяснилось, это сильно ограничивает возможные действия. А вот на тестовой площадке клешня поворотная. Жаль, в продаже их пока нет (или я не нашел). Это было бы интереснее.

Отдельно надо сказать, что раскидать кубики удаленным роботом довольно просто, а вот навести порядок — никак) пока кто-нибудь живой не придет и это не сделает, все так в хаосе и лежит)

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

Фото робота на поле. Снято на работе, носил позабавить коллег

Фото робота на поле. Снято на работе, носил позабавить коллег

Есть тестовые примеры — прячутся под кнопкой “Демо”, их сразу можно погонять на роботе. Есть раздел видеоуроков, их десяток. Уроки похоже по какой-то старой версии оболочки, на момент написания статьи она опять обновилась, теперь это версия 1.0.0.310 от 01.06.2022, до этого была какая-то майская сборка.

В целом все понятно, за исключением блока инициализации — туда нужно запихнуть подключение к usb-i2c — адаптеру и задать, куда подключены сервы. Если бы не тестовые примеры, не догадался бы.

Программировать начинали со старшим сыном, младший посмотрел, сказал что про Scratch он и так знает и оставил нас в покое. Спойлер: сейчас, после пары недель он тоже начал разбираться, как бы погонять робота через блоки.

Немного о Блокли — интересный проект. Кажется, у нас недостаточно про него знают. Из Википедии:

Блокли (англ. Blockly) — библиотека для создания среды визуального программирования, которая может быть встроена в произвольное веб-приложение. Блокли включает в себя графический редактор, позволяющий составлять программы из блоков, и генераторы кода для подготовки исполнения программы в среде веб-приложения. Разрабатывается и поддерживается компанией Google с 2012 года. Свободно распространяется вместе c исходным кодом по лицензии Apache 2.0. Целевой аудиторией проекта являются программисты, разрабатывающие веб-приложения, включающие Блокли, в основном для учебных целей. Для создания программ пользователь должен перемещать графические блоки, не прибегая к набору текстов, за исключением ввода значений констант. Визуальное программирование на Блокли освобождает пользователя от контроля за правильностью синтаксиса программы, что является большим подспорьем на стадии начального обучения пользователя программированию.

Первый вечер был потрачен на освоение оболочки и блоков. Например, долго искали, как использовать инициализированный сервопривод, оказалось что они молча добавляются во вкладку “Созданные устройства” и это не очевидно. За первый вечер смогли сделать функцию выставления робота в положение, которое решили сделать стартовым — клешня открыта и в верхнем положении, башня посередине. Тут пригодилась возможность импорта — экспорта программы. Можно переименовать в “сохранить-загрузить”, будет логичнее. Формат файла свой, .risdk, внутри похоже на xml-ку, по идее можно прям в ней править, но только зачем).

Дальше случись несколько дней напряженной работы и я не мог заниматься с сыном. А он выделил пару вечеров, сам, по своей инициативе гонял робота. А после этого показал мне программку, которая вполне уверенно собирала кубики по полю и ставила в 2 башни. Комплектных кубиков ему не хватило, он нашел еще 2 подходящих в игрушках и переставлял их тоже. В итоге робот обходил позиции с 3 по 12, на всех пытался что-нибудь взять и составить в позициях 1 и 2. Не знаю, как бы это выглядело с 10 кубиками, но с 6 вполне работает, есть 2 башни по 3 кубика. Считаю это хорошим результатом)

Из того, что еще можно делать — управлять светодиодом. Он rgb, можно использовать для какой-то системы сигналов о выполнении. Сын сам нашел, как это делать. Расположен диод не очень удачно, его не особо видно.

Очень не хватает роботу хоть каких-нибудь датчиков — нужно чем-то определять, есть ли кубик на поле или нет. Это может сильно расширить варианты заданий. А если еще датчик цвета к этому добавить…А еще лучше камеру. Все равно робот подключен к компьютеру, в теории может программироваться на Питоне — так почему бы камеру не поставить? Вот и отработка распознавания образов была бы. Правда, наверное, это уже другой ценник (((

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

Плюсы:

  • продуманный набор, который хорошо собирается по инструкции на русском и даже всего хватает

  • детальки сделаны из акрила. это все же не фанера и не мдф, более живучий материал.

  • после сборки все реально работает, подключается как надо и не глючит

  • разные способы управления и программирования робота, ориентированные на разный уровень пользователя и разный возраст

  • техподдержка на русском и даже отвечает, что редкость

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

Минусы:

  • нет пульта в комплекте

  • нигде нет информации, как подключить телефон к роботу, а на картинках нарисовано

  • неприятный звук работы сервомоторчиков — я так понял, они стандартные, но хотелось бы их получше

  • странно, но у фирмы есть свой контроллер, на одной плате там собрано все — и подключение по usb, и питание и подключение сервомоторчиков, а в комплекте все отдельными стандартными модулями

  • люфт в шестернях — есть, но вроде не критичный

  • кубиков в комплекте должно быть больше

  • очень не хватает датчиков ультразвука, цвета, еще чего-нибудь. если ставить самому, но нет поддержки в оболочке блочного программирования и остальных библиотеках. вроде обещают постепенно добавлять.

Что дальше? А дальше есть куча документации, как все это на Питоне и С++ программировать. 

И тут даже мне нужно немного времени, чтобы сначала научиться самому, а потом уже это все объяснять другим. Руководство неплохое, с примерами на разных языках (там еще Golang и неожиданно PHP). Но оно явно уже рассчитано на людей погруженных, сходу тут не подступишься, мануала по основам языка тут нет. Если все получится и будет интересный опыт, возможно, напишу еще отдельную статью об этом, как-то зацепило меня попрограммировать физический объект, который шевелится.

Этот робот — удачное решение для той задачи, которую я ставил изначально. Привлекает внимание детей и, честно говоря, взрослых. Дает интересную возможность программировать на разных языках. Если через него получится увлечь детей мейкерством и всякими электронными устройствами я останусь очень доволен) ну, или программированием, что тоже неплохо.

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

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

Надеюсь, что получится со старшим сыном перейти на более сложное программирование — С++ или Python и соотнести это с блочными программами. С младшим не вижу никаких особых проблем программировать на блоках, эта концепция ему вполне знакома и понятна. И с роботом это интереснее, чем гонять котика по экрану (вы поняли, о чем я). 

Хотелось бы пожелать разработчикам успеха, если не забросят и допилят оболочку, может, переделают пульт, поставят другие сервы и обратят внимание на описанные здесь моменты — будет здорово.

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

Сайт производителя 

Озон 

Wildberries  

AliExpress

П.С. И все-таки жаль, что он не ездит :-)

Понравилась статья? Поделить с друзьями:
  • Gisflor инструкция по применению на русском языке
  • Велсон инструкция по применению отзывы пациентов принимавших препарат
  • Фарингосепт цена в тамбове инструкция по применению
  • Протравитель петкус ст 5 25 инструкция
  • Фенибут инструкция по применению для детей 6 лет отзывы родителей