Поделюсь опытом создания дешевого робота-пылесоса из подручных средств и всемогущего китайского магазина. Изначально планировал просто изучить среду Arduino, но это изучение переросло в пылесос.
Необходимые детали:
— много плотного картона (бесплатно);
— аналог arduino (210 р);
— маленькая макетка (80 р);
— 2 уз-дальномера (300 р);
— контроллер моторов — H-мост (80 р);
— 2 мотор-редуктора с колесом (600 р);
— блок аккумуляторов на +18v и контроллер заряда;
— пара метров витой пары;
— турбина от пылесоса;
— компьютерный кулер.
Сначала я использовал один из танков игры «Танковый бой». Все равно ими никто не играл из-за «лепешечности» выстрелов — в противника иногда «долетали» пули, выпущенные аж за стенкой.
Первым делом были выброшены все лишние детали, остался только блок моторов и сам корпус. Установлен клон Arduino UNO, драйвер моторов, УЗ-дальномер. Питание — 3 литиевых элемента по 3,7v.
Фотографии, к сожалению, не делал.
Алгоритм простой — ехать вперед, если расстояние до препятствия менее 5 см, стоп, поворот в рандомную сторону на рандомный угол, поехали дальше. Долго подбирал маленькие колеса, так как с большими эта аццкая тележка носилась как сумасшедшая по всему офису и периодически не успевала реагировать на показания дальномера.
Конструкция имела кучу минусов. Основные — колеса находятся позади и при недостаточном сцеплении колес с полом платформа не поворачивается. Буксует, но сдвигает переднюю часть очень незначительно.
Следующий этап — попытка сделать поворотную платформу. Из картона вырезал 2 круга диаметром 18 см. Склеил их волокнами поперек — получил неплохую прочность на изгиб. Блок моторов использовал от того же танка.
В качестве источника питания взял немного модернизированный блок аккумуляторов от уже давно поломанного ручного пылесоса Bork. Там уже встроенный контроллер зарядки, зарядное устройство, индикаторы и прочая лабуда. Выходное напряжение 18 вольт. Логика запитана от LM7805, моторы от понижающего преобразователя. В таком подключении есть возможность регулировать скорость платформы «аппаратно».
![image](https://habrastorage.org/r/w780q1/files/409/f67/24d/409f6724d9894bb18c1b0a222bc3c7fa.jpg)
![image](https://habrastorage.org/r/w780q1/files/997/476/a4f/997476a4f98c4f1e9aa0e3ac35624870.jpg)
Полученный прототип передвигался намного медленнее и адекватнее. Но все равно работа дальномеров не нравилась.
Следующий этап — решил делать на той же основе, но платформу собрать бОльшую, чтоб в нее влез еще пока не собранный пылесос. Диаметр — 30 см. Таким же образом склеил 2 круга.
![image](https://habrastorage.org/r/w780q1/files/b46/ab2/f3b/b46ab2f3bed64ab0bcef0c0f1a3a3a5b.jpg)
![image](https://habrastorage.org/r/w780q1/files/414/ef2/6d9/414ef26d98e149c798cb501c636962ee.jpg)
Основной проблемой было избавиться от дальномеров. В итоге используются очень простые по конструкции контактные бампера.
![image](https://habrastorage.org/r/w780q1/files/dfc/28b/e3e/dfc28be3e55b4345961f24242178a9c2.jpg)
![image](https://habrastorage.org/r/w780q1/files/ffc/ecb/8e0/ffcecb8e086c40caac6bf937c26280bb.jpg)
![image](https://habrastorage.org/r/w780q1/files/b3a/c31/a2b/b3ac31a2b7d54406a6aeddc46955fa54.jpg)
С внутренней стороны бамперов клеим фольгу, подводим к ним +5, на платформе напротив них закрепляем изогнутый проводок от витой пары, подтянув ее к минусу через резистор, так как без резистора будет очень много ложных срабатываний.
![image](https://habrastorage.org/r/w780q1/files/c44/96f/4e4/c4496f4e4b214de995d4caca5cc1b13c.jpg)
Все это хозяйство удачно передвигалось по офису и вело себя намного адекватнее, чем с дальномерами.
![image](https://habrastorage.org/r/w780q1/files/7e6/cef/b18/7e6cefb1801f44edbfa9f9b81009786d.jpg)
Теперь самое веселое — соорудить непосредственно сам пылесборник и пылесос. Я испробовал кучу вариантов, благо картон и скотч позволяют конструировать макеты очень быстро, хоть и с большими допусками. В качестве питания турбины использую чистые +18v с БП. Кулеры, правда, греются, но ничего, работают.
На фото самый первый вариант пылесоса, без фильтров и прочей ерунды:
![image](https://habrastorage.org/r/w780q1/files/393/5bd/0c5/3935bd0c5330436386a4426eebbd5d50.jpg)
Берем кулер от процессора, отламываем все лопасти. На суперклей закрепляем турбину. Сложность заключается в балансировке, поэтому клеить надо точно и сразу проверять на дисбаланс. Сложно, но можно. При 18V входных и с турбиной кулер выдает около 2600 RPM без нагрузки. Тянет воздух хорошо, в общем.
![](https://habrastorage.org/r/w780q1/files/c44/e24/b9a/c44e24b9a9cf49d5aee905734b8e4a5b.jpg)
![image](https://habrastorage.org/r/w780q1/files/873/10e/ca5/87310eca5a9b4ee7a2753eb018013897.jpg)
![image](https://habrastorage.org/r/w780q1/files/9ea/7e4/808/9ea7e480897349219b7d47ebfcf101bf.jpg)
![image](https://habrastorage.org/r/w780q1/files/b76/587/d18/b76587d186e7476ca254254c67ac137d.jpg)
![image](https://habrastorage.org/r/w780q1/files/b05/d4c/f64/b05d4cf64b9946bb93c80e05904c8f31.jpg)
Необходимые детали:
— много плотного картона (бесплатно);
— аналог arduino (210 р);
— маленькая макетка (80 р);
— 2 уз-дальномера (300 р);
— контроллер моторов — H-мост (80 р);
— 2 мотор-редуктора с колесом (600 р);
— блок аккумуляторов на +18v и контроллер заряда;
— пара метров витой пары;
— турбина от пылесоса;
— компьютерный кулер.
Сначала я использовал один из танков игры «Танковый бой». Все равно ими никто не играл из-за «лепешечности» выстрелов — в противника иногда «долетали» пули, выпущенные аж за стенкой.
Первым делом были выброшены все лишние детали, остался только блок моторов и сам корпус. Установлен клон Arduino UNO, драйвер моторов, УЗ-дальномер. Питание — 3 литиевых элемента по 3,7v.
Фотографии, к сожалению, не делал.
Алгоритм простой — ехать вперед, если расстояние до препятствия менее 5 см, стоп, поворот в рандомную сторону на рандомный угол, поехали дальше. Долго подбирал маленькие колеса, так как с большими эта аццкая тележка носилась как сумасшедшая по всему офису и периодически не успевала реагировать на показания дальномера.
Конструкция имела кучу минусов. Основные — колеса находятся позади и при недостаточном сцеплении колес с полом платформа не поворачивается. Буксует, но сдвигает переднюю часть очень незначительно.
Следующий этап — попытка сделать поворотную платформу. Из картона вырезал 2 круга диаметром 18 см. Склеил их волокнами поперек — получил неплохую прочность на изгиб. Блок моторов использовал от того же танка.
В качестве источника питания взял немного модернизированный блок аккумуляторов от уже давно поломанного ручного пылесоса Bork. Там уже встроенный контроллер зарядки, зарядное устройство, индикаторы и прочая лабуда. Выходное напряжение 18 вольт. Логика запитана от LM7805, моторы от понижающего преобразователя. В таком подключении есть возможность регулировать скорость платформы «аппаратно».
![image](https://habrastorage.org/files/409/f67/24d/409f6724d9894bb18c1b0a222bc3c7fa.jpg)
![image](https://habrastorage.org/files/997/476/a4f/997476a4f98c4f1e9aa0e3ac35624870.jpg)
Полученный прототип передвигался намного медленнее и адекватнее. Но все равно работа дальномеров не нравилась.
Следующий этап — решил делать на той же основе, но платформу собрать бОльшую, чтоб в нее влез еще пока не собранный пылесос. Диаметр — 30 см. Таким же образом склеил 2 круга.
![image](https://habrastorage.org/files/b46/ab2/f3b/b46ab2f3bed64ab0bcef0c0f1a3a3a5b.jpg)
![image](https://habrastorage.org/files/414/ef2/6d9/414ef26d98e149c798cb501c636962ee.jpg)
Основной проблемой было избавиться от дальномеров. В итоге используются очень простые по конструкции контактные бампера.
![image](https://habrastorage.org/files/dfc/28b/e3e/dfc28be3e55b4345961f24242178a9c2.jpg)
![image](https://habrastorage.org/files/ffc/ecb/8e0/ffcecb8e086c40caac6bf937c26280bb.jpg)
![image](https://habrastorage.org/files/b3a/c31/a2b/b3ac31a2b7d54406a6aeddc46955fa54.jpg)
С внутренней стороны бамперов клеим фольгу, подводим к ним +5, на платформе напротив них закрепляем изогнутый проводок от витой пары, подтянув ее к минусу через резистор, так как без резистора будет очень много ложных срабатываний.
![image](https://habrastorage.org/files/c44/96f/4e4/c4496f4e4b214de995d4caca5cc1b13c.jpg)
Все это хозяйство удачно передвигалось по офису и вело себя намного адекватнее, чем с дальномерами.
![image](https://habrastorage.org/files/7e6/cef/b18/7e6cefb1801f44edbfa9f9b81009786d.jpg)
Теперь самое веселое — соорудить непосредственно сам пылесборник и пылесос. Я испробовал кучу вариантов, благо картон и скотч позволяют конструировать макеты очень быстро, хоть и с большими допусками. В качестве питания турбины использую чистые +18v с БП. Кулеры, правда, греются, но ничего, работают.
На фото самый первый вариант пылесоса, без фильтров и прочей ерунды:
![image](https://habrastorage.org/files/393/5bd/0c5/3935bd0c5330436386a4426eebbd5d50.jpg)
Берем кулер от процессора, отламываем все лопасти. На суперклей закрепляем турбину. Сложность заключается в балансировке, поэтому клеить надо точно и сразу проверять на дисбаланс. Сложно, но можно. При 18V входных и с турбиной кулер выдает около 2600 RPM без нагрузки. Тянет воздух хорошо, в общем.
![](https://habrastorage.org/files/c44/e24/b9a/c44e24b9a9cf49d5aee905734b8e4a5b.jpg)
![image](https://habrastorage.org/files/873/10e/ca5/87310eca5a9b4ee7a2753eb018013897.jpg)
![image](https://habrastorage.org/files/9ea/7e4/808/9ea7e480897349219b7d47ebfcf101bf.jpg)
![image](https://habrastorage.org/files/b76/587/d18/b76587d186e7476ca254254c67ac137d.jpg)
![image](https://habrastorage.org/files/b05/d4c/f64/b05d4cf64b9946bb93c80e05904c8f31.jpg)
Скетч
// Настраиваем моторы
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