- РОБОТ на базе: android, arduino, bluetooth. Рефлексный. Часть 2
- Оглавление
- Постановка задачи
- Немного теории
- Краткая информация по используемым деталям и модулям
- Сборка робота и подключение всех модулей
- Скетч для Arduino ШАГ 1 – Удаленное управление роботом
- Android приложение ШАГ 1 – Удаленное управление роботом
- Скетч для Arduino ШАГ 2 – Режим автономного управления роботом
- Android приложение ШАГ 2 – Режим автономного управления роботом
- 7 роботов-пылесосов с приложением и управлением с телефона
- Roborock S7
- Dreame Bot L10
- Viomi S9
- GENIO Laser L800
- Lydsto R1
- Yeedi 2 Hybrid
- Xiaomi Mijia 1С
РОБОТ на базе: android, arduino, bluetooth. Рефлексный. Часть 2
Оглавление
Статья 1. РОБОТ на базе: android, arduino, bluetooth. Начало
Статья 2. РОБОТ на базе: android, arduino, bluetooth. Рефлексный. Часть 2.
Предполагается, что человек читающий статью уже имеет представление о:
-Базовых понятиях электроники
-Предыдущей статье
Постановка задачи
Создать робота который выполняет следующий функционал:
-Имеет удаленное управление при помощи смартфона (передвижение вперед, назад, налево, направо)
-Передает на смартфон данные о расстоянии до объекта находящегося перед ним(на базе ультра звукового датчика)
-Имеет режим автономного управления: непрерывно перемещается по помещению, при встрече препятствий меняет направление своего движения, тем самым объезжая препятствие.
Немного теории
Наш мир является сложнейшей системой, в которой взаимодействуют между собой огромное количество объектов, подчиненных определенным законам физики, поэтому создание робота функционирующего в рамках этой системы, является очень трудоемкой задачей. Для упрощения процесса создания первого робота воспользуемся понятием абстрагирования среды(в которую помещен робот) и действий робота. В дальнейших статьях будем усложнять среду и соответственно действия робота.
Абстрагирование среды
Среда где будет обитать наш первый робот будет представлять собой двухмерный мир и обладать следующими характеристиками:
1) Полностью наблюдаемая, т.е. датчики робота предоставляют доступ к полной информации о состоянии среды в каждый момент времени. Полностью наблюдаемые варианты среды являются удобными, поскольку роботу не требуется поддерживать какое-либо внутреннее состояние для того, чтобы быть в курсе всего происходящего в этом мире.
2) Детерминированная. Если следующее состояние среды полностью определяется текущим состоянием и действием, выполненным роботом, то такая среда называется детерминированной; в противном случае она является стохастической.
3) Эпизодическая. В эпизодической проблемной среде опыт робота состоит из неразрывных эпизодов. Каждый эпизод включает в себя восприятие среды роботом, а затем выполнение одного действия. При этом крайне важно то, что следующий эпизод не зависит от действий, предпринятых в предыдущих эпизодах. В эпизодических вариантах среды выбор действия в каждом эпизоде зависит только от самого эпизода.
4) Статическая. Если среда может измениться в ходе того, как робот выбирает очередное действие, то такая среда называется динамической для данного робота; в противном случае она является статической.
5) Непрерывная — Различие между дискретными и непрерывными вариантами среды может относиться к состоянию среды, способу учета времени, а также восприятием и действиям агента. В нашем случае считается что состояние среды меняется непрерывно. К примеру игра в шахматы является дискретной, так как имеет конечное количество различных состояний.
6) Одноагентная это среда в которой находится один объект(робот), и другие объекты на него не влияют и не конкурируют с ним.
Абстрагирование действий робота
1) Движение – робот может передвигаться в двух направлениях(взад, вперед) и разворачиваться на месте(налево, направо)
2) Датчики робота (ультразвуковой сенсор), позволяет определить расстояние до объекта. Расстояние может быть определено от 0,02 метра до 4 метров.
Таким образом, определим, что создаваемый в этой статье робот является простым рефлексным роботом. Подобные роботы выбирают действия на основе текущего акта восприятия, игнорируя всю остальную историю актов восприятия.
Краткая информация по используемым деталям и модулям
Драйвер двигателей HG7881. Для управления двигателями робота необходимо устройство, которое бы преобразовывало управляющие сигналы малой мощности в токи, достаточные для управления моторами. Такое устройство называют драйвером двигателей.
HG7881 – это двухканальный драйвер двигателей, питание возможно от источника 2,5 – 12 В. Описание выходов драйвера:
Таблица 1
Вывод | Описание |
B-IA | Двигатель B Вход A (IA) |
B-IB | Двигатель B Вход B (IB) |
GND | Земля (Минус) |
VCC | Рабочее напряжение 2.5-12V (Плюс) |
A-IA | Двигатель A Вход A (IA) |
A-IB | Двигатель A Вход B (IB) |
Для того чтобы заставить двигатели работать нужным нам образом на выводы (B-IA, B-IB, A-IA, A-IB) необходимо подавать логические сигналы (HIGH,LOW). Таблица истинности двигателей:
Таблица 2
IA | IB | Состояние двигателя |
L | L | Off |
H | L | Forward |
L | H | Reverse |
H | H | Off |
Ультразвуковой сенсор измерения расстояния HC-SR04. Определяет расстояние до объекта, измеряя время отражения звуковой волны от объекта.
Сенсор излучает короткий ультразвуковой импульс (в момент времени 0), который отражается от объекта и принимается сенсором. Расстояние рассчитывается исходя из времени до получения эха и скорости звука в воздухе.
На вывод (Trig) подаётся импульс длительностью 10 мкс, ультразвуковой модуль излучает 8 пачек ультразвукового сигнала с частотой 40кГц и обнаруживает их эхо. Измеренное расстояние до объекта пропорционально ширине эха (Echo) и может быть рассчитано по формуле:
Ширина импульса/58 = расстояние в см.
Сборка робота и подключение всех модулей
Собираем платформу (рис.2).
Рисунок 2
Подключаем двигатели к драйверу (рис. 3). По два двигателя на один разъем драйвера, т.е. двигатели левой стороны платформы к разъему “Motor B”, двигатели правой стороны — “Motor A”. Управление платформой будет произведено аналогично гусеничной. При движении вперед и назад все двигатели работают синхронно в одном направлении, при повороте направо двигатели правой стороны платформы останавливаются, а левой двигаются синхронно, при повороте налево двигатели левой стороны останавливаются, а правой двигаются синхронно.
Рисунок 3
Прикручиваем верхнюю часть платформы. Соединяем драйвер двигателей, ардуино, аккумуляторы, БТ модуль и ультразвуковой сенсор к макетной плате (рис.4)
Рисунок 4
Схема подключения представлена на (рис.5). Питание ардуино, ультразвукового сенсора и драйвера двигателей (следовательно и самих двигателей) обеспечивают 4 подключенных последовательно аккумулятора (1,2 В., 2700 мА/ч), на БТ модуль питание подается от выхода ардуино 3,3 В.
Рисунок 5
Робот собран, необходимо его заставить выполнять команды, отправленные с андроида.
Скетч для Arduino ШАГ 1 – Удаленное управление роботом
Объявляем переменные: R_A_IA, R_A_IB – определяют номера выводов управляющих двигателем А (двигатели правой стороны), L_B_IA, L_B_IB — выводы управляющие двигателем B(двигатели левой стороны. Инициируем последовательное соединение и задаем скорость передачи данных в бит/c (бод) – 38400. Устанавливаем режим работы выводов управляющих двигателями – OUTPUT (выходы). Подаем на все выходы значение HIGH, что означает — двигатели отключены(таблица 2).
Определяем функции: go_forward(), go_back(), go_right(), go_left(), stop_robot(), которые запускают двигатели в прямом или обратном направлении вращения, тем самым приводя робота в движение – вперед, назад, направо, налево, стоп, соответственно.
В основном цикле программы происходит считывание и обработка данных полученных в последовательный порт от БТ модуля. В зависимости от полученной команды выполняется та или иная функция и по последовательному порту передается текст об ее выполнении.
Android приложение ШАГ 1 – Удаленное управление роботом
Вот так будет выглядеть основное activity:
Текстовое поле «txtrobot», будет отображать всю необходимую нам информацию. Кнопки b0, b1, b2, b3, b4 будут отправлять команды в arduino (0, 1, 2, 3, 4)
Переходим в src/../MainActivity.java здесь и будет располагаться наш основной код.
В предыдущей статье на шаге 4, был представлен код позволяющий передавать и принимать данные по БТ. За основу возьмем этот код.
В состояния активити onPause() и onResume() добавим условие проверки существования БТ у андроида и определения включен ли он. В предыдущей статье это условие отсутствовало в связи, с чем при запуске приложения, если был отключен БТ, оно завершалось с ошибкой и только после этого предлагало включить БТ.
Объявим переменные для хранения кнопок:
Находим их по ID:
Напишем обработчики нажатия этих кнопок, для отправки команд:
Полный код приложения:
Данное приложение, позволяет управлять роботом при помощи андроида, отправляя команды по БТ на ардуино, и принимая текстовые ответы от него. Первая часть поставленной задачи выполнена.
Скетч для Arduino ШАГ 2 – Режим автономного управления роботом
Для работы с ультразвуковым сенсором, воспользуемся готовой библиотекой
ultrasonic-HC-SR04.zip
Распаковываем файлы и помещаем в каталог где расположен скетч
Подключаем библиотеку
Конструктор Ultrasonic принимает два параметра — номера выводов к которым подключены Trig и Echo, соответственно:
Получаем данные о расстоянии до объекта в сантиметрах:
Передаем данные на последовательный порт, для последующей передачи их через БТ модуль.
Символы «*» и «#» означают начало и конец передаваемого блока информации о расстоянии до объекта. Это необходимо для того чтобы четко отделять необходимые данные друг от друга, так как при их передачи часть теряется либо приходит с запозданием.
Полный скетч для загрузки в ардуино:
Android приложение ШАГ 2 – Режим автономного управления роботом
Таким образом, основное activity примет вид:
Объявим переменную b5:
И флаг позволяющий определить включен режим автоуправления или нет:
Находим ее по ID:
Создадим обработчик ее нажатия:
А также внесем изменения в обработчик кнопки «b0»(Стоп)
Осталось создать алгоритм позволяющий роботу самостоятельно перемещаться по помещению и объезжать препятствия.
Обработаем полученные данные о расстоянии до объекта отправленные ардуино. Если расстояние до объекта менее 50 см. то поворачиваем направо в противном случае едим прямо:
Ниже приведен полный код Activity:
Созданное приложение для андроида в связке с представленным скетчем ардуино, позволяет, как удаленно самостоятельно управлять роботом, так и включать режим автономного управление, при котором робот передвигается в прямом направлении и если требуется, объезжает препятствия.
Результатом проделанной работы является простейший рефлексный робот. Дальнейшее применение более сложных алгоритмов на базе приведенных шаблонных приложений и скетчей позволит создавать роботов основанных на модели, на цели, на полезности, обучающихся роботов и др.
К следующей статье я сделал заказ всего одного модуля:
Наименование | Ссылка | Цена y.e | Цена руб | Кол-во | Сумма |
Wifi модуль | dx.com/p/hi-link-hlk-rm04-serial-port-ethernet-wi-fi-adapter-module-blue-black-214540#.UutHKD1_sd0 | 14,99 | 524,65 | 1 | 524,65 |
ИТОГ: 524,65
В комментариях к предыдущей статье, хабра пользователь commanderxo порекомендовал не изобретать велосипед, а воспользоваться стандартным протоколом Firmata (протокол для обмена данными между ардуино и сервером). К сожалению работоспособной библиотеки, для андроида в связке с БТ, я не нашел. Написать свою библиотеку у меня не хватает времени и сил, поэтому в данной статье я продолжаю изобретать велосипед. Если кто из Хабра пользователей обладает информацией о такой библиотеке просьба поделиться.
Источник
7 роботов-пылесосов с приложением и управлением с телефона
Телефон всегда под рукой, а пульт нужно искать, особенно если в доме большая семья, и каждый норовит нажать заветную кнопочку. Я уже молчу про роботов с управлением на корпусе – их сначала нужно найти, потом догнать, и уже тогда начать управлять. Поэтому любой уважающий себя современный робот поддерживает управление со смартфона: там и карта отображается, и управлять можно из любой комнаты, есть напоминания и уведомления, настройка графика и много других полезных функций. Если такой пылесос ещё и с уборкой хорошо справляется, то цены ему нет! Хотя на самом деле есть. И заплатить за такого красавца придётся от 13 до 50 тысяч. Подробнее о вариантах с разным ценником и характеристиками – далее в статье.
Roborock S7
Новый флагман компании Roborock с инновационным функционалом и расширенными опциями управления. Сухая уборка выполняется при помощи силиконовых щёток и мотора с силой всасывания в 2500 Па, а влажная – с помощью виброшбвары, которую Roborock S7 может поднимать на коврах. В мобильном приложении можно менять границы комнат, переключать мощность, регулировать смачивание, скорость вибрации и количество проходов (до 3-х) для каждой зоны. Также на карте отображается положение ковров. Из дополнительных опций в наличии повышение тяги на коврах, объезд мягких покрытий, планирование работы по дням недели, защита от детей. О смене рабочих состояний Roborock S7 сообщает на русском языке. В максимальном режиме пылесос может работать до 1,5 часов без подзарядки. По качеству влажной уборки Roborock S7 не уступает профессиональным полотёрам, а во время сухой уборки он может чистить ковры со средним ворсом.
Dreame Bot L10
Необычный робот-пылесос с лидаром для картографии и фронтальной камерой для распознавания предметов на полу. Dreame Bot L10 проверяет очертания препятствий по базе данных, поэтому объезжает провода, носки и другие опасные вещи. Торцевая щётка классическая, трехлучевая, но турбощётка современная, разборная, с направляющими для волос. На ковре обороты турбины автоматически возрастают до 4000 Па, забрасывая в пылесборник крошки, волосы и песок. Для комнат с зеркалами до пола и полированной мебелью можно выбрать режим бесконтактной уборки. Остальные функции приложения классические: редактор комнат и зонирование, регулировка мощности и смачивания. Бак объёмом 270 мл размещается внутри швабры. Большая микрофибра обеспечивает плотное прилегание к полу и неплохо справляется с присохшими следами.
Viomi S9
Премиальная модель со станцией самоочистки. Станция оборудована дисплеем, на который выводится информация о состояния пылесоса и заполненности мешка для мусора. Рабочий модуль Viomi S9 совмещённого типа (небольшой пылесборник и бак на 250 мл), поэтому робот может в любой момент работать в одном из трёх режимов: сухая, влажная или комплексная уборка. Благодаря лидару и гироскопу Viomi S9 чётко позиционирует себя в пространстве и строит точную карту. За сбор мусора отвечает классическая торцевая метёлка, лепестково-щетинистая щётка и двигатель на 2700 Па. Переключать режимы можно в мобильном приложении. Там же есть интерактивная карта с целевыми и запретными зонами, делением квартиры на комнаты и выбором карты нужного этажа. Есть много других полезных опций: уборка с двойным проходом, регулировка силы всасывания в 4-х позициях, отключение контрольного проезда вдоль стен.
GENIO Laser L800
Робот-трансформер, идеально приспособленный для уборки разных покрытий: для линолеума и плитки у него в наличии силиконовый валик, для ковра – мягкая турбощётка. Также есть отдельные модули для разного типа уборки: пылесборник на 500 мл и совмещённый контейнер с баком и отсеком для мусора. Поэтому менять конфигурацию Laser L800 можно в зависимости от поставленных задач. Во время сухой уборки робот качественно чистит ковры, а во время влажной – легко справляется со следами обуви. Управлять Laser L800 можно с помощью пульта или со смартфона. В приложении есть редактор карты с разбивкой по комнатам и зонированием, есть планирования заданий на наделю, переключение силы всасывания (максимум 2700 Па) и регулировка смачивания (если установлен модуль для комплексной уборки). Для сильно загрязнённых помещений есть обработка помещения с двойным проходом.
Lydsto R1
Робот среднего класса с самоочисткой. Мощность станции составляет 1000 Па, поэтому контейнер и фильтры очищаются качественно, а частоту откачивания мусора можно настроить в фирменном приложении. Там же доступен редактор комнат с выбором очерёдности уборки и настройкой параметров работы, таких как сила всасывания (2700 Па), количество жидкости и проходов на одном участке. Если нужно сделать капитальную уборку, можно отключить повышение мощности на коврах, но тогда аккумулятор (5200 мАч) разрядится быстрее. Lydsto R1 оснащён контейнером с отсеком для воды и пыли, поэтому может одновременно пылесосить и вытирать полы. Участки вдоль стен робот обрабатывает торцевой щёткой, а ковры вычёсывает турбощёткой. Для удобства обслуживания она разбирается. Влажная салфетка справляется с поверхностной пылью, но пятна не оттирает.
Yeedi 2 Hybrid
Функциональный робот-пылесос с визуальной навигацией. Карту можно делить на комнаты и подписывать их названия. Индивидуальных параметров уборки для каждой зоны не предусмотрено, зато можно выбирать количество проходов (1 или 2). Сила всасывания регулируется в 3-х позициях (максимум 2500 Па). Есть режим возобновления работы с контрольной точки. Эта функция пригодится для домов площадью более 100 кв. м., т. к. в турборежиме Yeedi 2 Hybrid аккумулятора ёмкостью 5200 мАч хватает на 110 минут. Из других особенностей управления можно выделить программирование времени запуска в выбранной области, а также установку очерёдности работы в разных зонах. Для сухой уборки Yeedi 2 Hybrid использует центральную и торцевые щётки, для влажной – независимый баки и съёмную швабру. В наличии русский голосовой пакет, поэтому расшифровывать сообщения робота не потребуется.
Xiaomi Mijia 1С
Самый доступный робот с камерой на рынке. Mijia 1С укомплектован полным набором инструментов для комплексной уборки: торцевая щётка для работы в углах, плавающая турбощётка и вакуумный мотор с силой всасывания в 2500 Па. Для влажной уборки используется съёмная швабра со встроенным бачком. Интенсивность подачи воды можно выбирать в мобильном приложении. Управление происходит через фирменное приложение MiHome. После того как робот запомнит карту, на ней можно рисовать целевые и запретные прямоугольники, а также ставить виртуальные стены. Другие опции управления тоже классические: выбор режима всасывания и смачивания, оценка износа аксессуаров, программирование отложенного старта. О смене рабочих состояний Mijia 1С сообщает на русском языке. Батареи ёмкостью 2400 мАч хватает на 1,5 часа.
Об авторе
Группа в ВК — vk.com/bestrobotinfo — пишите, бесплатно помогаю с выбором роботов пылесосов, консультирую.
О себе: 8 лет работал промоутером Mvideo. Большую часть времени представлял бренд Bork. Работал и с другими брендами. Интересуюсь техникой, в данный момент погрузился с головой в нишу роботов пылесосов, умного дома и все что с этим связано. Пишу обзоры, помогаю людям с выбором. Тестировал лично с десяток моделей роботов. Пишите, если есть вопросы по выбору робота пылесоса, умных розеток. Разбираюсь и в других гаджетах, но не так плотно.
Источник