ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO Бинокли

Время на прочтение

Предыстория

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

Общее описание робота

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

Поэтому после некоторых обдумываний я несколько изменил идею и решил делать робота-«охотника». На старте он поворачивается вокруг своей оси, выбирая поблизости цель (человека). Если «жертва» обнаружена, «охотник» включает мигалку и сирену, и начинает ехать на нее. Когда человек отходит/отбегает, робот выбирает новую цель и преследует ее, и так далее. Такому роботу не нужен ограниченный круг, и он может работать на открытой территории.


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

Для начала были куплены 3 сервомотора Tower pro 9g (160 руб. каждый) и доска бальзы (из неё вроде делают модели самолетов). Не берите бальзу для такого! Я, конечно, этого не знал, поэтому пытался сделать что-то из нее, благо материал был мягкий и легко резался канцелярским ножом. Но обработка бальзы это ад, мягкость это и плюс, и огромный минус. Намучившись с этим материалом (знатоки не ругайтесь, бальза хороша для других задач), было принято решение печатать детали на 3D принтере (можно было резать и оргстекло, но очень хотелось попробовать 3D печать). Детали моделились в SketchUp, и экспортировались в .stl с помощью расширения.


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

В итоге получилось следующее:


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

Печать вышла в 902 руб. Кстати, поскольку до этого не приходилось делать модель для печати, я накосячил с размерами отверстий, и из-за этого у манипулятора появилось мнооого люфтов (кидайте тапками).


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

В качестве прообраза был взят проект uArm и meArm. В первом использовались сервы u-servo us-d150a, а второй я увидел, когда уже смоделил свои детали, поэтому вышел некий гибрид .


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

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

UPD. Часть 2!!!


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

p.s. баянометр ругается на господина и лигу инженеров

1) Робот-черепашка v3


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

Программируемый многофункциональный робот от Keyestudio V3.0 для Arduino. Умеет выполнять множество команд. Комплект для сборки отлично подойдет начинающим любителям робототехники и программирования. Ссылка на источник.

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

3) Робот с клешней

Набор для сборки умного робота с ‘рукой’. Умеет выполнять различные команды, брать/класть предметы и тд. Ссылка

4) Механический робот

Еще одна версия робота с ‘клешней’ для самостоятельной сборки и программирования. Ссылка на источник

Комплект для сборки собственного робота-танка на гусеницах. Умеет выполнять множество команд. ссылка

6) 4WD Mecanum

Робот с интересными колесами, которые могут двигаться в любом направлении. Робот сборный, программирование на Microbit V2. ссылка

7) Самобалансирующийся робот

Электронный комплект «сделай сам» — робот балансир для взрослых и детей. Ссылка на источник

8) Робот с камерой

Робот-машинка Pi 4B для сборки и программирования. Имеет камеру и функцию слежения/наблюдения, а также множество других возможностей. Ссылка


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

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

Забавный робот с ковшом и умеющим рисовать. ссылка

11) Игровая приставка

Геймпад Keyestudio ATMEGA32U4 с OLED-экраном, стартовый набор для Arduino. Ссылка

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


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

Веселый робот-лягушка с сервоприводами для сборки. ссылка


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

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

15) Поливочная машина

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


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

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

Умная собака-робот для сборки и программирования. Ссылка


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

Роботизированный паук с пультом управления. Ссылка


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

Робот-вездеход ELEGOO Conqueror с UNO R3. ссылка


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

Самый серьезный аппарат в нашей сегодняшней подборке. R OSMASTER X1 — это обучающий робот с приводом на 4 колеса, разработанный на основе операционной системы ROS robot. Он использует плату серии Jetson и Raspberry Pi 4B в качестве основного контроллера и оснащен высокопроизводительной аппаратной конфигурацией, такой как лидар и камера глубины, которые могут осуществлять управление роботом, дистанционную связь, картографирование и навигацию, отслеживание обхода препятствий, автопилот, распознавание особенностей человеческого тела и другие функции. Ссылка на источник.

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

Спешу поделиться впечатлениями — мне кажется эта затея достойна популяризации!


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

Можно купить готовый набор для сборки (продаются как в РФ, так и на Али), можно самостоятельно распечатать пластиковые детали и купить отдельно электронику.

Помимо корпуса минимально желательно:

— 4 сервомашинки SG90;

— ардуинка (есть модели корпуса под разные варианты, я использовал Arduino Nano);

— подходящий шилд для сервомашинок;

— ультразвуковой датчик HC-SR04;

— с десяток коротеньких проводов dupont connector;

— аккумулятор для питания ардуинки;

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

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


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

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

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

Весьма недурственная среда блочного программирования, вполне доступная и привычная современным детям — тоже даром. (можно программироать и напрямую через Arduino SDK при желании, естественно)


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

Приложение для прямого управления роботом (через Bluetooth) удобное, надёжное. Куча всяких движений, эмоций. Особенно детям нравится как робот «умирает».


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

С точки зрения собственного вклада ребёнка, даже мелкого, тут офигенные возможности по моддингу робота. Можно печатать на принтере всякие дополнительные детали для украшения (есть готовые модели), можно из бумаги делать «костюмы» (тоже есть готовые выкройки для начала). Робот кубический, бумажный костюм садится на него просто и аккуратно, а дальше на нём можно хоть рисовать, хоть приклеивать чё хошь.


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

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

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

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

Мат. модель

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

где R — радиус колеса; I = 1/2*M*R^2 — момент инерции колеса; b1 — трение в оси колеса; b2 — трение качения.

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

Свободная модель без управления

Модель со стабилизацией по положению

Структура робота

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


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

«Мозги» робота — плата arduino uno

; была в заказанном из Китая наборе. Для наших целей ее вполне хватает (ориентируемся на количество используемых пинов). Из этого же набора мы взяли готовое шасси
, на которое крепятся два ведущих колеса ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO и одно заднее (свободно вращающееся)
. Также в наборе был готовый батарейный отсек

. Спереди у робота стоит ультразвуковой датчик (HC-SR04)

, сзади — драйвер двигателей (L298N)

, по центру — светодиод-мигалка

, и чуть в стороне — пищалка

.

На этапе компоновки мы смотрим:

— чтобы все влезло
— чтобы было сбалансировано
— чтобы было рационально размещено

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

Опыт создания первого робота на Ардуино (робот-«охотник»)

В данной статье я хочу описать процесс сборки своего первого робота на ардуино. Материал будет полезен другим таким же новичкам, как и я, которые захотят изготовить какую-нибудь «самобеглую тележку». Статья представляет собой описание этапов работы с моими дополнениями по различным нюансам. Ссылка на итоговый код (скорее всего, не самый идеальный) дана в конце статьи.


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

По мере возможности я привлекал к участию своего сына (8 лет). Что именно с ним получалось, а что нет — на это я выделил часть статьи, возможно, кому-то пригодится.

Нюансы педагогики

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

Работа по инструкции

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

Порядок работы («от частного к общему»)

Сверление, резьбы, винты, гайки, пайка и запах канифоли — куда же без этого. Ребенок получил базовый скилл «Работа с паяльником» — удалось спаять несколько соединений (я чуть-чуть помогал, не скрою). Не забывайте про объяснение техники безопасности.

Работа на компьютере

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

Первое: английский. В школе его только-только начали, поэтому мы «со скрипом» разбирали, что такое pishalka, migalka, yarkost и прочий транслит. Поняли хотя бы это. Я осознанно не стал использовать родные английские слова, так как до этого уровня мы еще не дошли.

Второе: эффективная работа. Учили горячие комбинации клавиш, как быстро выполнять типовые операции. Периодически, когда писали программу, мы менялись с сыном местами, и я говорил, что нужно сделать (замену, поиск и т.д.). Приходилось повторять снова и снова: «выдели двойным кликом», «зажми Shift», «зажми Ctrl» и так далее. Процесс обучения здесь не быстрый, но, я думаю, навыки постепенно отложатся «в подкорку».

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

Схема

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


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

Сложности реализации

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

Оценим требуемую частоту импульсов на шаг. Пусть максимальная скорость — 1 оборот в секунду (при колесе от роликов диаметром 72мм, ~22 см/с), двигатель настроен в режиме 1/8 шага, 1600 импульсов на оборот, значит, как минимум процесс, отправляющий импульсы на шаг должен работать с частотой 1.6kHz, причем время должно выдерживаться точно, значит, нужно использовать прерывания по таймеру. Но достаточно ли этого?


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

Аппроксимация скорости шаговым мотором

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

Второй процесс — рассчет задержки между шагами, в идеальном случае, если робот движется с ускорением, то после каждого шага нужно пересчитать задержку до следующего шага, т.е. это было бы правильно делать прямо в обработчике прерывания таймера, но формула содержит деление ticks_per_pulse = round(2.0 * pi * frequency / (velocity * PULSES_PER_REVOLUTION)), и обработчик может не успеть закончить работу до наступления след. прерывания. Поэтому задержка пересчитывается в основном цикле как можно чаще.

Несколько советов, как ускорить программу:

Код проекта доступен здесь.

Постановка задачи

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

Цена компонентов: ~75$

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

Программа управления

Расписывать детально код я смысла не вижу, кому нужно — ссылка в конце статьи, там всё достаточно читабельно. А вот общую структуру было бы неплохо объяснить.

Первое, что пришлось осмыслить: робот — это устройство реального времени. Точнее, вспомнить, потому что и раньше, и сейчас все равно занимаюсь электроникой. Значит, сразу забываем про вызов delay(), который очень любят использовать в скетчах-примерах, и который просто «замораживает» программу на указанный промежуток времени. Вместо этого, как советуют опытные люди, вводим таймеры на каждый блок. Прошел требуемый промежуток — выполнили действие (увеличили яркость светодиода, включили двигатель и так далее).

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

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

Дальнейшее развитие

И в конце, собственно, герои этой статьи (видео по клику):


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

Спасибо за внимание!

Алгоритм стабилизации

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


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

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

Управление скоростью

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

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

Отдельные блоки

Теперь пройдусь по блокам и расскажу персонально про каждый.

Понятно, что робот должен иметь хороший источник энергии. Варианты могут быть разные, я выбрал вариант с 4 аккумуляторами АА. В сумме они дают примерно 5 В, и такое напряжение можно прямо подать на пин 5V платы arduino (минуя стабилизатор).

Некоторая настороженность, конечно, у меня была, но это решение вполне работоспособно.

Так как питание нужно везде, то для удобства я сделал по центру робота два разъема: один «раздает» землю (справа), а второй — 5 В (слева).


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

Двигатели и драйвер

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


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

Для управления двигателями, как я писал выше, используется драйвер L298N. По документации у него три пина на каждый двигатель: один для изменения скорости и пара пинов для направления вращения. Тут есть один важный момент. Оказывается, если напряжение питания 5 В, то регулировка скорости просто не работает! То есть либо совсем не крутит, либо крутит по максимуму. Вот такая особенность, из-за которой я «убил» пару вечеров. В конце концов, нашел упоминание где-то на одном из форумов.

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

Еще здесь добавлю, что после каждого преследования робот выбирает случайное направление нового поворота (по или против часовой стрелки).


ОТКРЫТЫЙ ИНТЕРАКТИВНЫЙ ПРОЕКТ РОБОТА ДЛЯ ДЕТЕЙ НА ARDUINO

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

После всей обработки у нас получается расстояние до ближайшего объекта. Если оно меньше некоторой пороговой величины — тогда мы включаем сигнализацию и едем прямо на «нарушителя».

Мигалка и сирена

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

Результат

Т.к. в BLE-Nano встроен Bluetooth, и не надо писать дополнительный код, легко добавить управление. Я переделал SerialTerminal под Android и сделал из него пульт управления.

План дальнейшего развития:

Буду рад, если кто-то захочет присоединиться.

Оцените статью
ТелеМикроскопы