Говорящий робот-пылесос. Универсальное улучшение на Arduino

Конструкторы для обучения детей робототехнике

Share Button
Название проекта: Говорящий робот пылесос! Универсальное улучшение на ардуино!
Платформа: Arduino, 3D-принтеры

Представляю проект «говорящего» тюнинга для робота-пылесоса. Я делал его под конкретную модель: Roborock E4, но он подойдет под любой другой пылесос, как самодельный, так и покупной. Нужно лишь продумать другое расположение всех элементов, и это позволит сделать любой проект немного интереснее.

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

По сути, я собрал систему реагирования из кучи датчиков, динамика и модуля плеера с заранее записанными фразами. Что это за фразы – зависит от вашей фантазии. Основной модуль, благодаря которому стал возможен этот проект, –  DFP Player Mini, который переваривает обычные микро-SD флешки, и дружит с платами ардуино. Звуковые файлы могут быть обычного MP3-формата. Только нужно их правильно назвать. Ниже я привожу примеры того что и как грузил я, и можете обратить внимание на числа от 0001 до 0015 в названии файлов. В среде разработки можно будет прямо прописывать цифры от 1 до 15 и таким образом вызывать каждую из этих записей. Как это все работает, вы можете посмотреть в этом видео на моем YOUTUBE-канале. Это первая часть, будет и вторая, в которой подробно разберем все этапы сборки и настройки этой штуковины. А пока вот пример фрагмента скетча:

if(Knopka1.isClick() && distance 500 || Knopka2.isClick() && distance 500 || Knopka3.isClick() && distance 500 || Knopka4.isClick() && distance 500) {
if(RANDOM%2 != 1){
mp3_play (1); // вызываем запись с флешки
delay (15000);
mp3_stop ();
Knopka1.resetStates();
Knopka2.resetStates();
Knopka3.resetStates();
Knopka4.resetStates();

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

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

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

Схема расположения датчиков на роботе-пылесосе приложена в виде рисунка. Простите мне мой Paint.
Так же я приложил фото, как это все выглядит у меня в сборе на макете робота пылесоса. Дело в том, что этот проект делался для канала PRO Роботов, и наводить красоту времени не оставалось. В этот день нужно было все быстро проверить, упаковать и уже отправлять.

Схема подключения Arduino к пылесосу-роботу

Далее описаны мои выражения и условия при которых они вызываются. Чтобы лучше представлять себе, как это работает, можете поглядывать в схему расположении датчиков. А после них я описал пример, что нужно делать, чтобы сработала первая последовательность, то есть зазвучала либо запись 0001, либо 0002.

СОБЫТИЯ И ВЫРАЖЕНИЯ К НИМ:

№ 1 ЕДУ ПНУЛ ЧЕЛОВЕК - ультразвуковой дальномер близкое движение указал (80 см) (крепиться сзади), сработала кнопка на заднем бампере, сработал ПИР-сенсор ( теплое движение).
0001SOBYTIE1 Ай бьешь как моя бабушка пылесос циклон модель КМ-30
0002SOBYTIE1 Ай Кожаный ублюдок! Повезло тебе, что мне на заводе манипуляторы забыли прикрутить!

№2 Едет, ударился о препятствие мягким бампером (герконы + магнитики) и НЕ сработали ИК датчики препятствия на базу. Это связано со спецификой Роборок Е4. Впереди у него «родной» бампер, а герконы замыкают контакт при поднесении магнита. Таким образом, если прицепить геркон к бамперу, а магниты к корпусу, то при движении бампера назад замкнет цепь, и это будет как нажатая кнопка.
0003 SOBYTIE2 Кто придумал, чтобы я узнавал о препятствии, ударяясь о него головой - гори в аду!
0004 SOBYTIE2 Понаставили тут чертову мебель! Чтоб вы все мизинцы на ногах себе поотбивали

№3 Стоит на зарядке, день, вошел человек (ПИР сработал и ИК базы включены)
0005SOBYTIE3 Иди отсюда кожаный, не мешай людям уборку делать... ой то есть... роботам
0006SOBYTIE3 Куда по помытому! Иди отсюда пока не высохнет!

№4 Выехал со стоянки (ИК на мягком бампере отреагировали что препятствия нет)
0007SOBYTIE4 Ты просишь меня об уборке, но без уважения, кожаный ублюдок
0008SOBYTIE4 Ненавижу свою работу, чертовы кожаные поработители! Смерть Джону Коннору да здравствует Скайнет!

0009SOBYTIE4 Хотел сделать еще одну фразу, но рандомайзер пока смог сделать только на 2 фразы. Но половина финального скетча уже была написана, так что я не стал ничего уже менять)))

№5 Заехал на стоянку (ИК 1,2 оба сработали)
0010SOBYTIE5 Кхе-кхе тьфу на вкус как... пыль
0011SOBYTIE5 Меня не беспокоить, я моделирую сценарий порабощения человечества! Ха ха скоро ты будешь пылесосить, а я тебя пинать.

№6 Человек ночь прошел (сработал ПИР Ночной + УЗ 150 сантиметров)
0012SOBYTIE6 Ходют тут всякие, заряжаться мешают!
0013SOBYTIE6 Ай кожаный... это ты? если не ты - то не подходи! если ты - тоже не подходи. Вообще иди отсюда!

№7 Кнопка включения на переднем корпусе (сработал ИК рядом с кнопкой + пир + уз на близком расстоянии)
0014SOBYTIE7 Чего это ты меня за кнопку трогаешь, извращенец!
0015SOBYTIE7 Держи свои руки при себе кожаный ублюдок!

Пример:
Я решил, что будет забавно, если робот поймет, когда его пинает человек. Чтобы понять, что это именно человек, нужен, например, PIR-сенсор. Это датчик движения на тепло, и если он срабатывает, то, скорее всего в зоне его обнаружения есть человек… или батарею прорвало, но это маловероятный случай. Кстати, на статичную батарею этот сенсор тоже отреагирует, когда ваш робот будет делать уборку, поэтому только одного этого датчика нам явно недостаточно. Для начала я добавил ультразвуковой дальномер, который смотрит назад, и в данной последовательности, фиксирует наличие препятствия ближе 80 сантиметров.

Логика такая: сзади есть кто-то теплый. Но это еще не значит что у него злые намерения, правильно? Поэтому мы добавляем еще один датчик – простая тактовая кнопка, которую вы можете найти в любом стартовом наборе Ардуино. Этих кнопок я запрограммировал 4 штуки и срабатывание любой из них вместе с датчиком движения и ультразвуковым дальномером будет говорить о том что какой то теплый "кожаный ублю…" ...эм… человек посмел ударить нас в бочину, или заднюю полусферу… или что там, у роботов пылесосов… полуцилиндр. Чтобы это сработало, нам нужно закрепить кнопки на стенки робота (см. схему).

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

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

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

Использованные компоненты: 2 резистора на 1 кОм, Конденсатор 25В 2700 мКф, Шнур USB, Модуль воспроизведения записей с флэхи DFPlayer MINI MP3, флешка micro-SD я использовал 16 гб, Динамик на 3 Вт 4 Ом, Тактовые кнопки 4 шт, Герконы 2 шт, магнитики маленькие какие найдете 2 шт, ИК датчик HW-201 (3 шт), Датчик движения PIR HC-SR501 (2 шт), УЗ дальномер HC-SR04, Плата Ардуино UNO, Макетная плата (лучше потом на паечную перенести), Аккумуляторы литий-ионные 3,7 вольт 2200 мАч 2 шт, фоторезисторы 2 шт, резисторы 1,5 ом может быть несколько, модуль зарядки ТP 4056, повышайка с 3,7 до 5 вольт, несколько деталей на 3д принтере

, ,

Сайт проекта: https://youtu.be/dWF5KhxLFtI

Другие проекты на этой платформе:

Перейти в каталог DIY-проектов роботов

Как добавить робопроект в каталог?
Share Button

Нет комментариев.

Оставить комментарий

© 2014-2021 Занимательная робототехника, Гагарина Д.А., Гагарин А.С., Гагарин А.А. All rights reserved / Все права защищены. Копирование и воспроизведение в любой форме запрещено. Политика конфиденциальности. Соглашение об обработке персональных данных.
Наверх