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

Необходимые детали:
— много плотного картона (бесплатно);
аналог arduino (210 р);
— маленькая макетка (80 р);
— 2 уз-дальномера (300 р);
— контроллер моторов — H-мост (80 р);
2 мотор-редуктора с колесом (600 р);
— блок аккумуляторов на +18v и контроллер заряда;
— пара метров витой пары;
— турбина от пылесоса;
— компьютерный кулер.

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

Первым делом были выброшены все лишние детали, остался только блок моторов и сам корпус. Установлен клон Arduino UNO, драйвер моторов, УЗ-дальномер. Питание — 3 литиевых элемента по 3,7v.
Фотографии, к сожалению, не делал.

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

Конструкция имела кучу минусов. Основные — колеса находятся позади и при недостаточном сцеплении колес с полом платформа не поворачивается. Буксует, но сдвигает переднюю часть очень незначительно.

Следующий этап — попытка сделать поворотную платформу. Из картона вырезал 2 круга диаметром 18 см. Склеил их волокнами поперек — получил неплохую прочность на изгиб. Блок моторов использовал от того же танка.

В качестве источника питания взял немного модернизированный блок аккумуляторов от уже давно поломанного ручного пылесоса Bork. Там уже встроенный контроллер зарядки, зарядное устройство, индикаторы и прочая лабуда. Выходное напряжение 18 вольт. Логика запитана от LM7805, моторы от понижающего преобразователя. В таком подключении есть возможность регулировать скорость платформы «аппаратно».

image

image

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

Следующий этап — решил делать на той же основе, но платформу собрать бОльшую, чтоб в нее влез еще пока не собранный пылесос. Диаметр — 30 см. Таким же образом склеил 2 круга.

image

image

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

image

image

image

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

image

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

image

Теперь самое веселое — соорудить непосредственно сам пылесборник и пылесос. Я испробовал кучу вариантов, благо картон и скотч позволяют конструировать макеты очень быстро, хоть и с большими допусками. В качестве питания турбины использую чистые +18v с БП. Кулеры, правда, греются, но ничего, работают.

На фото самый первый вариант пылесоса, без фильтров и прочей ерунды:

image

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



image

image

image

image

Скетч
// Настраиваем моторы
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)


  1. eta4ever
    13.05.2015 18:51
    +38

    Картонный. Робот. Пылесос. Это. ЭПИЧНО!
    Я бы добавил тег «из спичек и желудей».

    Кстати, могу предложить идею. Подберите подходящий по размеру маленький тазик или пластиковый контейнер. Они достаточно жесткие, если что, можно дополнительные ребра влепить. В гиперах а-ля «Ашан» обычно бывает много пластиковых штук полезных и дешевых.


    1. WorksIsGone
      13.05.2015 19:16
      +3

      и оптический датчик ступенек
      и уф лампу
      и тряпочку


      1. eta4ever
        13.05.2015 19:22
        +5

        Парогенератор еще.


        1. Oxyd
          14.05.2015 18:08
          +1

          Неонку забыли! И всенепременно внутрь!


  1. Mulin
    13.05.2015 19:27
    +7

    Шутки шутками, но в отличии от большинства роботов-пылесосов, это тру робот-пылесос. Ибо в практически везде на самом деле не более чем электровеники.


    1. MaxFactor
      13.05.2015 19:39

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


      1. BubaVV
        13.05.2015 20:29
        +4

        Парогенератор со спиртовкой! Как в Перельмане:
        image


    1. iliasam
      13.05.2015 20:13
      +4

      Насколько я знаю, и в Roomba, и в Neato, кроме вращающейся щетки, турбина тоже есть.


      1. olartamonov
        13.05.2015 23:53
        +1

        Она только в Neato имеет значимую мощность. В остальных турбина в основном затем, чтобы мелкую пыль, поднятую щёткой, подхватывать и не давать обратно вылетать, а укладывать в пылесборник. Без щётки эти пылесосы ничего не соберут.


        1. MichaelBorisov
          14.05.2015 16:37
          +2

          Ну так ведь это неспроста. Если будет мощная турбина — то аккумулятора надолго не хватит. А если принцип электровеника позволяет убирать грязь — то почему нет?


          1. kumbr_87
            14.05.2015 18:18
            +1

            Если поставить такой импеллер например EDF55 то для пылесоса он 5А максимум наверное будет есть, но при этом сосать будет не хуже Саши Грей, в итоге нормальной батареи на 10А*ч хватит на долго, правда ресурс у него наверняка небольшой плюс шумит как хороший мощный пылесос, надо что то с бОльшим диаметром чтоб работало с меньшими оборотами что определенно и ресурс продлит и, возможно, шум снизит.


            1. Meklon
              14.05.2015 21:28
              +1

              Я аж задумался, сколько атмосфер она выдаёт))


              1. Shultc
                15.05.2015 00:56
                +2

                Саша, или турбина?


                1. Meklon
                  15.05.2015 08:58
                  +1

                  Wolfram|Alpha про мощность Саши не в курсе, к сожалению.


    1. SelenIT2
      13.05.2015 21:43
      +2

      По-моему, совсем без вакуумного насоса только самые экстремально дешевые «варианты», до 50 баксов за штуку в родном Китае. Даже вот в таком варианте уже тру вакуумная «сосалка» (как раз у этой модели, наоборот, нет цилиндрической щетки, и это удерживает меня от ее покупки:), не говоря уже о мало-мальски солидных вариантах от 100 и выше…


      1. revector
        14.05.2015 11:05
        +1

        Вот чел разбирает Neato по винтикам с объяснениями


        1. SelenIT2
          14.05.2015 12:00

          Я периодически разбираю (для прочистки) вот такого. На всос яблочных семечек турбинки хватает:). Румбе, ЕМНИП, тоже.

          Правда, у моего за годы использования одна лопасть турбинки отломалась, отчего он стал сильнее шуметь и чуть слабее тянуть. Вот присматриваюсь к возможным заменам…


          1. datacompboy
            14.05.2015 12:03
            +4

            … а тут как раз отличный картонный вариант появился


    1. Exabiche
      14.05.2015 14:28

      Neato Botvac засасывает довольно ощутимо.


  1. Shultc
    13.05.2015 19:34
    +15

    Картонный робот-пылесос может стать ещё и уничтожителем мусора! Если он, пока никого нет дома, загребёт в себя слишком много пыли, начнёт перегреваться, загорится от перегрева, тихонечко отъедет в уголок и там сгорит полностью, вместе с собранным мусором…


    1. IDMan
      14.05.2015 10:05
      +4

      >> и там сгорит полностью, вместе с собранным хозяевами мусором…


      1. vvzvlad
        14.05.2015 14:02
        +3

        >> и там сгорит полностью, вместе с собранным мусором, хозяевами…


        1. mgremlin
          14.05.2015 17:27
          +3

          … и квартирой


          1. fshp
            20.05.2015 16:08

            … и соседями


  1. abrakada
    13.05.2015 19:54
    +6

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


    1. roversochi Автор
      13.05.2015 22:40
      +1

      Тоже об этом думал, Скорее всего следующего сделаю как раз таким и задарю кому-нибудь.
      Этому же роботу уже делаю корпус из фанеры — попрочнее будет. Двое детей, как никак :)


  1. Meklon
    13.05.2015 20:25
    +5

    Прекрасно)) Картон и скотч восхитительны. Можно попробовать 3D-печать


    1. datacompboy
      14.05.2015 12:00
      +4

      3D печать картоном или скотчем?


      1. Spegulo
        14.05.2015 12:08

        3d печать картоном… пора патентовать


        1. Tutanhomon
          14.05.2015 12:17

          Уже )
          www.gamer.ru/system/attached_images/images/000/041/596/original/dog_1.jpg


          1. Spegulo
            14.05.2015 13:37
            +1

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


            1. Oxyd
              14.05.2015 18:12

              Вот так, приходишь домой, а у тебя посередь комнаты эйфелева башня… или… image



  1. Hellitron
    13.05.2015 21:16

    Круто! Безусловно полезная вещь, если действительно хорошо пыль засасывает. Тут есть вот какая штука:
    roboforum.ru/forum10/topic12095.html
    Возможно вам в вашем роботе пригодится. Там человек сканирующий лазерный дальномер собирает и ставит на робота пылесоса. С помощью дальномера он строит карту помещения. Это конечно сложно, но может вы все же сможете сделать объезд помещения по этой карте. Тогда вообще цены не будет пылесосу (вернее цена будет большая, а себестоимость маленькая) :)
    P.S.
    Кстати Дайсон свои пылесосы сначала тоже из картона делал. Что у него вышло все знают. Так что удачи!


    1. Rumlin
      13.05.2015 22:26
      +1

      если бы он бы 3Д карты выгружал, то был бы ценен как сканер.


    1. roversochi Автор
      13.05.2015 22:52
      +1

      Идея про сканирование пространства — интересная, спасибо за наводку и за пожелания. Я и сам подумывал, как оптимизировать перемещения платформы по помещениям, но пока простого и одновременно бюджетного решения не нашел. Хотя и искал не сильно — основная задача была заставить платформу кататься и собирать мусор. Вот на этой базе уже можно и экспериментировать с позиционированием.


      1. MichaelBorisov
        14.05.2015 16:42

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


        1. eta4ever
          14.05.2015 16:56
          +1

          Вывод напрашивается сам собой: обход помещения по плану со случайными вкраплениями. Например, «тут прямо, потом змейкой, а этот квадрат по спирали».

          Или второй вариант — помечать на карте плохо пропылесошенные места, чтобы робот к ним отнесся в следующий раз с повышенным энтузиазмом.


          1. MichaelBorisov
            14.05.2015 18:17

            Это конгениально!

            Без шуток, попробуйте получить патент. Идея простая в реализации, но потенциально может принести большую пользу.


            1. eta4ever
              14.05.2015 18:39

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


              1. vicnaum
                18.05.2015 10:23

                Нужно просто «пьяный режим» включать, а на карте помечать посещённые места. В конце анализировать и двигаться уже к наименее посещённым точкам.


  1. thunderspb
    13.05.2015 21:22
    +8

    Все хорошо, тру гик пылесос, скотч и картон это правда круто! Не хватает самой главной вещи — синей изоленты :)

    Поддержу оратора выше на счет оргстекла.


  1. iliasam
    13.05.2015 22:42
    +1

    На робофоруме уже упоминался робот-пылесос из картона, еще проще: roboforum.ru/forum88/topic5733.html


  1. megaweber
    14.05.2015 00:49

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

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

    Чистоту в каждый дом!


  1. raid
    14.05.2015 02:27
    +1

    Чудесно!
    Ещё есть такая штука — широтно-импульсная модуляция (ШИМ, PWM). Она позволит управлять скоростью двигателей программно. Даже колёса по размеру подбирать не придётся.
    Но за картон отдельный респект!


    1. abrakada
      14.05.2015 06:44

      Поддерживаю, на такую мощность можно поставить DCDC, например MC34063, с цифровым потенциометром обратной связи.


    1. roversochi Автор
      14.05.2015 20:16

      Ещё есть такая штука — широтно-импульсная модуляция (ШИМ, PWM).

      Я пытался заюзать ардуиновский ШИМ, подключал моторы через Н-мост, подавая туда ШИМ сигнал. Изначально так и подключал. Все равно у меня не получилось добиться хорошего крутящего момента на небольшой скорости. На ковер платформа с трудом заезжала. ИМХО тут нужны редукторы с другим передаточным.
      Пока что моторы подключены через DC-DC понижающий конвертер. Чем больше напругу на нем накручу, тем быстрее и мощнее моторы :)


  1. SelenIT2
    14.05.2015 10:09
    +1

    Направить выдуваемый воздух под платформу (чтобы воздух циркулировал и сдувал пыль в приемное отверстие);

    Ух ты! Интересно, почему никто из «больших» производителей до такого пока не додумался?..


    1. Rumlin
      14.05.2015 10:18

      Часть потока будет отражаться в противоположном направлении.


      1. kumbr_87
        14.05.2015 14:03
        +1

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


  1. Tutanhomon
    14.05.2015 10:28

    Класс! Я в детстве, когда только постигал электронику и не знал ничего о существовании микроконтроллеров, горел идеей сделать R2D2 управляемый вращающимся непроводящим диском с отверстиями (как перфокарта, только круглая). Ну это я так, ностальгнул )
    Вообще хотел предложить приписать алгоритм возврата в определенную точку для подзарядки, когда батарея садится до определенного уровня. Точку можно как-то пометить, ИК маяком например.
    А еще не понял почему фанера — она куда тяжелее пластика, а значит энергии роботу будет вхатать на меньшее время.


    1. roversochi Автор
      14.05.2015 19:39

      Вообще хотел предложить приписать алгоритм возврата в определенную точку для подзарядки, когда батарея садится до определенного уровня. Точку можно как-то пометить, ИК маяком например.

      Я об этом тоже думал. В дальнейшем, если не отложу эту поделку в долгий ящик, обязательно попробую сделать сделаю док-станцию с подзарядкой.

      А еще не понял почему фанера

      Все просто — у меня в наличии есть электролобзик и фанера :)
      А пластика пока нет.


  1. casuss
    14.05.2015 13:06

    На ГикТаймсе уже был подобный — geektimes.ru/post/244209