Необходимые детали:
— много плотного картона (бесплатно);
— аналог arduino (210 р);
— маленькая макетка (80 р);
— 2 уз-дальномера (300 р);
— контроллер моторов — H-мост (80 р);
— 2 мотор-редуктора с колесом (600 р);
— блок аккумуляторов на +18v и контроллер заряда;
— пара метров витой пары;
— турбина от пылесоса;
— компьютерный кулер.
Сначала я использовал один из танков игры «Танковый бой». Все равно ими никто не играл из-за «лепешечности» выстрелов — в противника иногда «долетали» пули, выпущенные аж за стенкой.
Первым делом были выброшены все лишние детали, остался только блок моторов и сам корпус. Установлен клон Arduino UNO, драйвер моторов, УЗ-дальномер. Питание — 3 литиевых элемента по 3,7v.
Фотографии, к сожалению, не делал.
Алгоритм простой — ехать вперед, если расстояние до препятствия менее 5 см, стоп, поворот в рандомную сторону на рандомный угол, поехали дальше. Долго подбирал маленькие колеса, так как с большими эта аццкая тележка носилась как сумасшедшая по всему офису и периодически не успевала реагировать на показания дальномера.
Конструкция имела кучу минусов. Основные — колеса находятся позади и при недостаточном сцеплении колес с полом платформа не поворачивается. Буксует, но сдвигает переднюю часть очень незначительно.
Следующий этап — попытка сделать поворотную платформу. Из картона вырезал 2 круга диаметром 18 см. Склеил их волокнами поперек — получил неплохую прочность на изгиб. Блок моторов использовал от того же танка.
В качестве источника питания взял немного модернизированный блок аккумуляторов от уже давно поломанного ручного пылесоса Bork. Там уже встроенный контроллер зарядки, зарядное устройство, индикаторы и прочая лабуда. Выходное напряжение 18 вольт. Логика запитана от LM7805, моторы от понижающего преобразователя. В таком подключении есть возможность регулировать скорость платформы «аппаратно».
Полученный прототип передвигался намного медленнее и адекватнее. Но все равно работа дальномеров не нравилась.
Следующий этап — решил делать на той же основе, но платформу собрать бОльшую, чтоб в нее влез еще пока не собранный пылесос. Диаметр — 30 см. Таким же образом склеил 2 круга.
Основной проблемой было избавиться от дальномеров. В итоге используются очень простые по конструкции контактные бампера.
С внутренней стороны бамперов клеим фольгу, подводим к ним +5, на платформе напротив них закрепляем изогнутый проводок от витой пары, подтянув ее к минусу через резистор, так как без резистора будет очень много ложных срабатываний.
Все это хозяйство удачно передвигалось по офису и вело себя намного адекватнее, чем с дальномерами.
Теперь самое веселое — соорудить непосредственно сам пылесборник и пылесос. Я испробовал кучу вариантов, благо картон и скотч позволяют конструировать макеты очень быстро, хоть и с большими допусками. В качестве питания турбины использую чистые +18v с БП. Кулеры, правда, греются, но ничего, работают.
На фото самый первый вариант пылесоса, без фильтров и прочей ерунды:
Берем кулер от процессора, отламываем все лопасти. На суперклей закрепляем турбину. Сложность заключается в балансировке, поэтому клеить надо точно и сразу проверять на дисбаланс. Сложно, но можно. При 18V входных и с турбиной кулер выдает около 2600 RPM без нагрузки. Тянет воздух хорошо, в общем.
// Настраиваем моторы
int L2motor = 4;
int L1motor = 5; // вперед
int R1motor = 6; // вперед
int R2motor = 7;
// бампера
int Rsensor = 10; // правый
int Lsensor = 11;
void setup() {
pinMode(13, OUTPUT);
// моторы
pinMode(L1motor, OUTPUT);
pinMode(L2motor, OUTPUT);
pinMode(R1motor, OUTPUT);
pinMode(R2motor, OUTPUT);
pinMode(Rsensor, INPUT);
pinMode(Lsensor, INPUT);
// стартовые значения
digitalWrite(L1motor, LOW);
digitalWrite(R1motor, LOW);
digitalWrite(L2motor, LOW);
digitalWrite(R2motor, LOW);
digitalWrite(13, LOW);
delay(2000);
}
void loop() {
// натыкаемся на препятствие обоими бамперами
if ( (digitalRead(Rsensor) == HIGH) & (digitalRead(Lsensor) == HIGH))
{
stop();
delay(50);
stepBack(10);
delay(500);
stepLeft(rnd());
stop();
delay(500);
}
else if (digitalRead(Rsensor) == HIGH)
{
stop();
delay(50);
stepBack(2);
delay(100);
stepLeft(rnd());
stop();
delay(100);
}
else if (digitalRead(Lsensor) == HIGH)
{
stop();
delay(50);
stepBack(2);
delay(100);
stepRight(rnd());
stop();
delay(100);
}
else {
stepForward(1);
}
}
int rnd()
{
int x = random(10) + 5;
return x;
}
void stepForward(int steps)
{
for (int i = 0; i < steps; i++)
{
digitalWrite(L1motor, HIGH);
digitalWrite(R1motor, HIGH);
digitalWrite(13, HIGH);
delay(100);
}
digitalWrite(13, LOW);
}
void stepBack(int steps)
{
for (int i = 0; i < steps; i++)
{
digitalWrite(L2motor, HIGH);
digitalWrite(R2motor, HIGH);
digitalWrite(13, HIGH);
delay(100);
}
stop();
digitalWrite(13, LOW);
}
void stepLeft(int steps)
{
for (int i = 0; i < steps; i++)
{
digitalWrite(L2motor, HIGH);
digitalWrite(R1motor, HIGH);
digitalWrite(13, HIGH);
delay(100);
}
digitalWrite(13, LOW);
}
void stepRight(int steps)
{
for (int i = 0; i < steps; i++)
{
digitalWrite(R2motor, HIGH);
digitalWrite(L1motor, HIGH);
digitalWrite(13, HIGH);
delay(100);
}
digitalWrite(13, LOW);
}
void stop() {
digitalWrite(L1motor, LOW);
digitalWrite(R1motor, LOW);
digitalWrite(L2motor, LOW);
digitalWrite(R2motor, LOW);
digitalWrite(13, LOW);
}
Планы на будущее
- Собрать платформу из фанеры;
- Перекомпоновать все модули и разводку проводов;
- Перекомпоновать блок с аккумуляторами и контроллером заряда;
- Прикупить-таки нормальные мотор-редукторы с оборотами в районе 40-80rpm;
- Установить 2 вращающиеся щетки спереди;
- Направить выдуваемый воздух под платформу (чтобы воздух циркулировал и сдувал пыль в приемное отверстие);
- Поменять Arduino UNO на маленький аналог — Arduino mini
Комментарии (53)
Mulin
13.05.2015 19:27+7Шутки шутками, но в отличии от большинства роботов-пылесосов, это тру робот-пылесос. Ибо в практически везде на самом деле не более чем электровеники.
iliasam
13.05.2015 20:13+4Насколько я знаю, и в Roomba, и в Neato, кроме вращающейся щетки, турбина тоже есть.
olartamonov
13.05.2015 23:53+1Она только в Neato имеет значимую мощность. В остальных турбина в основном затем, чтобы мелкую пыль, поднятую щёткой, подхватывать и не давать обратно вылетать, а укладывать в пылесборник. Без щётки эти пылесосы ничего не соберут.
MichaelBorisov
14.05.2015 16:37+2Ну так ведь это неспроста. Если будет мощная турбина — то аккумулятора надолго не хватит. А если принцип электровеника позволяет убирать грязь — то почему нет?
kumbr_87
14.05.2015 18:18+1Если поставить такой импеллер например EDF55 то для пылесоса он 5А максимум наверное будет есть, но при этом сосать будет не хуже Саши Грей, в итоге нормальной батареи на 10А*ч хватит на долго, правда ресурс у него наверняка небольшой плюс шумит как хороший мощный пылесос, надо что то с бОльшим диаметром чтоб работало с меньшими оборотами что определенно и ресурс продлит и, возможно, шум снизит.
SelenIT2
13.05.2015 21:43+2По-моему, совсем без вакуумного насоса только самые экстремально дешевые «варианты», до 50 баксов за штуку в родном Китае. Даже вот в таком варианте уже тру вакуумная «сосалка» (как раз у этой модели, наоборот, нет цилиндрической щетки, и это удерживает меня от ее покупки:), не говоря уже о мало-мальски солидных вариантах от 100 и выше…
revector
14.05.2015 11:05+1Вот чел разбирает Neato по винтикам с объяснениями
SelenIT2
14.05.2015 12:00Я периодически разбираю (для прочистки) вот такого. На всос яблочных семечек турбинки хватает:). Румбе, ЕМНИП, тоже.
Правда, у моего за годы использования одна лопасть турбинки отломалась, отчего он стал сильнее шуметь и чуть слабее тянуть. Вот присматриваюсь к возможным заменам…
Shultc
13.05.2015 19:34+15Картонный робот-пылесос может стать ещё и уничтожителем мусора! Если он, пока никого нет дома, загребёт в себя слишком много пыли, начнёт перегреваться, загорится от перегрева, тихонечко отъедет в уголок и там сгорит полностью, вместе с собранным мусором…
abrakada
13.05.2015 19:54+6Красиво, я бы корпус из прозрачного оргстекла резал, начинку будет видно — полный хайтек.
roversochi Автор
13.05.2015 22:40+1Тоже об этом думал, Скорее всего следующего сделаю как раз таким и задарю кому-нибудь.
Этому же роботу уже делаю корпус из фанеры — попрочнее будет. Двое детей, как никак :)
Meklon
13.05.2015 20:25+5Прекрасно)) Картон и скотч восхитительны. Можно попробовать 3D-печать
datacompboy
14.05.2015 12:00+43D печать картоном или скотчем?
Spegulo
14.05.2015 12:083d печать картоном… пора патентовать
Tutanhomon
14.05.2015 12:17Уже )
www.gamer.ru/system/attached_images/images/000/041/596/original/dog_1.jpg
Hellitron
13.05.2015 21:16Круто! Безусловно полезная вещь, если действительно хорошо пыль засасывает. Тут есть вот какая штука:
roboforum.ru/forum10/topic12095.html
Возможно вам в вашем роботе пригодится. Там человек сканирующий лазерный дальномер собирает и ставит на робота пылесоса. С помощью дальномера он строит карту помещения. Это конечно сложно, но может вы все же сможете сделать объезд помещения по этой карте. Тогда вообще цены не будет пылесосу (вернее цена будет большая, а себестоимость маленькая) :)
P.S.
Кстати Дайсон свои пылесосы сначала тоже из картона делал. Что у него вышло все знают. Так что удачи!roversochi Автор
13.05.2015 22:52+1Идея про сканирование пространства — интересная, спасибо за наводку и за пожелания. Я и сам подумывал, как оптимизировать перемещения платформы по помещениям, но пока простого и одновременно бюджетного решения не нашел. Хотя и искал не сильно — основная задача была заставить платформу кататься и собирать мусор. Вот на этой базе уже можно и экспериментировать с позиционированием.
MichaelBorisov
14.05.2015 16:42Я читал статью, в которой показывается, что роботы-пылесосы со случайным перемещением («эргодические») подчас действуют эффективнее тех, которые пытаются объезжать помещение по плану. Дело в том, что при объезде помещения по плану неизбежно появляются зоны, в которых очистка будет хуже, и эти зоны находятся в одних и тех же местах при каждой уборке. В результате в помещении образуются стабильные зоны с повышенным загрязнением, тогда как в «эргодических» пылесосах эти зоны меняются от уборки к уборке, поэтому в среднем по помещению уровень чистоты равномерен.
eta4ever
14.05.2015 16:56+1Вывод напрашивается сам собой: обход помещения по плану со случайными вкраплениями. Например, «тут прямо, потом змейкой, а этот квадрат по спирали».
Или второй вариант — помечать на карте плохо пропылесошенные места, чтобы робот к ним отнесся в следующий раз с повышенным энтузиазмом.MichaelBorisov
14.05.2015 18:17Это
конгениально!
Без шуток, попробуйте получить патент. Идея простая в реализации, но потенциально может принести большую пользу.eta4ever
14.05.2015 18:39Идея у меня эта давно, и
есликогда буду делать свой пылесос, обязательно буду копать в этом направлении. С другой стороны, это просто идея. А программная реализация будет довольно зубодробительна, я до этого пока не дорос. Но в принципе, алгоритм можно попробовать смоделировать.vicnaum
18.05.2015 10:23Нужно просто «пьяный режим» включать, а на карте помечать посещённые места. В конце анализировать и двигаться уже к наименее посещённым точкам.
thunderspb
13.05.2015 21:22+8Все хорошо, тру гик пылесос, скотч и картон это правда круто! Не хватает самой главной вещи — синей изоленты :)
Поддержу оратора выше на счет оргстекла.
iliasam
13.05.2015 22:42+1На робофоруме уже упоминался робот-пылесос из картона, еще проще: roboforum.ru/forum88/topic5733.html
megaweber
14.05.2015 00:49Плохо соображаю в робототехнике и программировании, но купив топовый робот-пылесос понял, что пока его не сделают опенсорсным и бесплатным для доступа — нормально квартиру я не пропылесошу. Причем стартуя из одной точки он умудряется застрять в разных, хотя условия критично не меняются :)
Готов пожертвовать на краудсорсинг туда, где возьмутся сделать его идеальным в рамках одного этажа, используя данные со всех остальных пылесосов в сети, причем с тем условием, что каждый сможет скачать и распечатать на принтере подобное устройство и собрать себе, с покупкой минимальных комплектующих.
Чистоту в каждый дом!
raid
14.05.2015 02:27+1Чудесно!
Ещё есть такая штука — широтно-импульсная модуляция (ШИМ, PWM). Она позволит управлять скоростью двигателей программно. Даже колёса по размеру подбирать не придётся.
Но за картон отдельный респект!abrakada
14.05.2015 06:44Поддерживаю, на такую мощность можно поставить DCDC, например MC34063, с цифровым потенциометром обратной связи.
roversochi Автор
14.05.2015 20:16Ещё есть такая штука — широтно-импульсная модуляция (ШИМ, PWM).
Я пытался заюзать ардуиновский ШИМ, подключал моторы через Н-мост, подавая туда ШИМ сигнал. Изначально так и подключал. Все равно у меня не получилось добиться хорошего крутящего момента на небольшой скорости. На ковер платформа с трудом заезжала. ИМХО тут нужны редукторы с другим передаточным.
Пока что моторы подключены через DC-DC понижающий конвертер. Чем больше напругу на нем накручу, тем быстрее и мощнее моторы :)
SelenIT2
14.05.2015 10:09+1Направить выдуваемый воздух под платформу (чтобы воздух циркулировал и сдувал пыль в приемное отверстие);
Ух ты! Интересно, почему никто из «больших» производителей до такого пока не додумался?..Rumlin
14.05.2015 10:18Часть потока будет отражаться в противоположном направлении.
kumbr_87
14.05.2015 14:03+1Теоретически если направить под хорошим углом, близким к касательной например то воздух отражаться не будет и даже наоборот, получится использовать эффект Коанда и воздух от турбины будет увлекать за собой еще и воздух с границ пылесоса что еще больше повысит эффективность.
Tutanhomon
14.05.2015 10:28Класс! Я в детстве, когда только постигал электронику и не знал ничего о существовании микроконтроллеров, горел идеей сделать R2D2 управляемый вращающимся непроводящим диском с отверстиями (как перфокарта, только круглая). Ну это я так, ностальгнул )
Вообще хотел предложить приписать алгоритм возврата в определенную точку для подзарядки, когда батарея садится до определенного уровня. Точку можно как-то пометить, ИК маяком например.
А еще не понял почему фанера — она куда тяжелее пластика, а значит энергии роботу будет вхатать на меньшее время.roversochi Автор
14.05.2015 19:39Вообще хотел предложить приписать алгоритм возврата в определенную точку для подзарядки, когда батарея садится до определенного уровня. Точку можно как-то пометить, ИК маяком например.
Я об этом тоже думал. В дальнейшем, если не отложу эту поделку в долгий ящик, обязательнопопробую сделатьсделаю док-станцию с подзарядкой.
А еще не понял почему фанера
Все просто — у меня в наличии есть электролобзик и фанера :)
А пластика пока нет.
eta4ever
Картонный. Робот. Пылесос. Это. ЭПИЧНО!
Я бы добавил тег «из спичек и желудей».
Кстати, могу предложить идею. Подберите подходящий по размеру маленький тазик или пластиковый контейнер. Они достаточно жесткие, если что, можно дополнительные ребра влепить. В гиперах а-ля «Ашан» обычно бывает много пластиковых штук полезных и дешевых.
WorksIsGone
и оптический датчик ступенек
и уф лампу
и тряпочку
eta4ever
Парогенератор еще.
Oxyd
Неонку забыли! И всенепременно внутрь!