Пошаговое руководство по созданию многофункционального робота.
Будем делать пушку на Ардуино.
Свою бешеную популярность Arduino приобрела благодаря простоте и дружелюбности.
Даже полный ноль в программировании и схемотехнике может освоить основы работы с Arduino за пару часов. Этому поспособствуют тысячи публикаций, учебников, заметок в интернете и видеоуроков по Arduino.
(Как раз для меня, из института помню только - какие-то дырочки на перфокартах пробивали.)
Будем использовать электронику как для квадрокоптера, по ним много видеоуроков, ну и пушка не сложнее квадрокоптера.
Надо четыре бесколлекторных мотора, для них четыре регулятора (ESC), два сервопривода, Arduino Nano, переменные резисторы на 10 кОм - 5 шт., макетная плата с проводками (за все под 60$ на Али). Еще блок питания от ПК (5 и 12 вольт).
Про корпус: в сети много есть разных конструкций, есть готовые 3D модели для печати на 3D-принтере, на любой вкус, бери и печатай.
У меня был корпус от RoboPong 1040, я только новый ствол напечатал. Мои 3D модели в архиве, ссылка в конце.
Поехали!
1 шаг. Управляем БК мотором с помощью Arduino и переменного резистора. В программе надо написать всего 5 строк. Через две косые // комментарии (что бы самому не запутаться).
// Подключаем библиотеку Servo
1. #include <Servo.h>
2. Servo Motor; // Объявляем объект серво "Motor"
void setup() {
3. Motor.attach(9); } // Подключаем объект серво "Motor" к 9 выводу
void loop() {
// присваиваем переменной "zadanie_speed" маштабированное значение входа A1
// аналоговый вход выдает от 0 до 1023, а ESC надо от 1060 до 1860
4. int zadanie_speed = map(analogRead(A1), 0, 1023, 1060, 1860);
5. Motor.writeMicroseconds(zadanie_speed); } // посылаем команду на ESC
Далее я не буду писать текст программ, пост будет большой. В архиве есть все программы, к каждому шагу.
Расширение в формате *.ino, можно открывать блокнотом, в шапке описание.
Файл в архиве: 1_ESC.ino.
2 шаг. Управляем БК мотором и сервоприводом с помощью Arduino и переменных резисторов.
Почти все то же самое. Для сервопривода команда немного другая - Servo.write(ugol) (0-180).
Файл в архиве: 2_ESC_Servo.ino.
3 шаг. Подключаем все моторы и сервоприводы. Тут моторы с реверсом. В прошивке ESC Blheli режим "Bi-directional". Статья Мясищева Хмельницкий университет про Blheli:
https://sites.google.com/site/webstm32/blhelisuiteМожно настроить под себя параметры: Damped Light, Startup Power, Startup Acceleration - как резко будут меняться обороты, - больше броски тока. При резком останове мотор работает как генератор, не всякий импульсный БП выдержит. Нужен дампер, гасит обратные броски тока. Схема в архиве.
Файл в архиве: 3_ESC_Servo.ino.
4 шаг. Подключаем две кнопки "Старт" и "Стоп".
Программно включаем-выключаем моторы, а не из розетки выдергиваем.
Файл в архиве: 4_ESC_Servo_Knopki.ino.
5 шаг. Будем считать вылетевшие мячи. Добавляем пару инфракрасных диодов: ИК-излучатель и ИК-приемник. В зависимости от счетчика посылать разные команды на ESC и сервоприводы. Как подключено - в шапке файла, и пример на 4 разных мяча.
Файл в архиве: 5_ESC_Servo_Knopki_IKdiod.ino.
6 шаг. Добрались до 1-го рабочего варианта. Добавляем кнопки для сохранения параметров мяча.
По нажатию кнопки будем сохранять значения с переменных резисторов. Каждая кнопка соответствует своему мячу. Например, добавим 5 кнопок, можно будет до 5 разных мячей гонять по кругу.
Можно сохранять в энергонезависимую память (EPROM), можно добавить поворот на случайный угол какой-нибудь кнопке. Частоту подачи мячей можно не программировать, оставить с резистора. Пока свежий, можно прибавить, устал - убавил немного.
Этот вариант хорош быстротой настройки. Например, поставили пушку на 3 метра от стола, хотим подрезку влево и топспин вправо из дальней зоны. Повернули резисторы на подрезку влево, нажали кнопку 1, повернули на топспин вправо, нажали кнопку 2, все настройка закончена.
Но варианту не хватает гибкости. Например, 5-ой кнопке добавили случайный поворот на угол в пол стола, а на 3 метрах от стола это уже угол в полтора стола. Будут некоторые мячи мимо улетать. Все кнопки и резисторы можно вынести на пульт, и цеплять его сбоку от стола.
Вариант очень похож на "BUTTERFLY AMICUS START".
Что бы не тянуть пучок проводов к пульту, можно в пульт добавить еще одну Nano, а связь по RS485.
Так связь в 8-ом шаге.
Пример на три кнопки в архиве.
Файл в архиве: 6_ESC_Servo_Mnogo_Knopki_IKdiod.ino.
7 шаг. Второй рабочий вариант.
Здесь будем управлять роботом с Веб-страницы.
Убираем все кнопки и переменные резисторы.
Вместо Arduino Nano возьмем ESP32. Это двуядерный процессор с встроенным Wi-Fi (около 6$ на Али).
Создаем Веб-страницу, подключаемся к ней с смартфона или планшета, главное что бы браузер был не древний. Ни какого приложения под Андроид или МакОС не надо. Я бы их не потянул.
В видео я подключался с ПК, телефоном видео записывал. Как выглядит страница на смартфоне в моем другом видео:
https://youtu.be/GoIfM7HPWHEФайл в архиве: 7_ESP32_ESC.ino.
8 шаг. Мой вариант.
Пульт с сенсорным экраном 2.4 дюйма (около 4$ на Али). Ну и резисторы, куда без них.
15 программа это случайный поворот, в видео забыл, назвал нерабочей.
Файлы в архиве: 8_Pong_Pult.ino и 8_Pong_Robot.ino.
Ссылка на архив:
https://yadi.sk/d/zIuhpJlfpFefKwСсылка на видео про все шаги:
https://youtu.be/ZBbeEgnnW6I