Робот пылесос на arduino


Шаг первый. Создаем поворотную платформу для робота
Для своей первой самоделки автор использовал танк из игры "Танковый бой", из игрушки были выброшены все лишние детали, остался только корпус, а также двигатели и колеса. После этого был установлен Arduino UNO, драйвер двигателей и ультразвуковой дальномер. В качестве источника питания использовались три литиевые батареи по 3.7 В.

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

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


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

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




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

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









Для изготовления турбины берется кулер от компьютера и затем от него отламываются все лопасти. Далее на кулер крепится турбина от пылесоса, ее нужно приклеить суперклеем. Самое главное здесь — приклеить точно, не должно быть дисбаланса. Без нагрузки и питании 18 Вольт кулер выдает порядка 2600 RPM, что создает отличную тягу. В заключении вся конструкция собирается так, как можно увидеть на фото и после этого робота можно испытывать.

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


Шаг первый. Создаем поворотную платформу для робота
Для своей первой самоделки автор использовал танк из игры "Танковый бой", из игрушки были выброшены все лишние детали, остался только корпус, а также двигатели и колеса. После этого был установлен Arduino UNO, драйвер двигателей и ультразвуковой дальномер. В качестве источника питания использовались три литиевые батареи по 3.7 В.

Читайте также  Рейзер фон 2 цена

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

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


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

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




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

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









Для изготовления турбины берется кулер от компьютера и затем от него отламываются все лопасти. Далее на кулер крепится турбина от пылесоса, ее нужно приклеить суперклеем. Самое главное здесь — приклеить точно, не должно быть дисбаланса. Без нагрузки и питании 18 Вольт кулер выдает порядка 2600 RPM, что создает отличную тягу. В заключении вся конструкция собирается так, как можно увидеть на фото и после этого робота можно испытывать.

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

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

Читайте также  Слова символами и знаками

Итак, начнем, пожалуй, с конструкции и принципа работы пылесоса.

Из схемы видно, что пылесос оборудован 6 инфракрасными датчиками. Они срабатывают при приближении пылесоса к препятствию, давая комманду остановиться и развернуться не врезаясь в него. Если же ни один из 6 датчиков не сработал и робот пылесос сталкивается с препятствием, то тогда срабатывает один из 2 выключателей, которые соединяют бампер (в котором находятся ИК датчики) и корпус робота.

Внимательные читатели заметили, что на схеме не показано питание робота. Тут решение вполне стандартное, использованы 4 аккумулятора формата 18650, подключенных последовательно две пары, через контроллер заряда-разряда АКБ. Далее с контроллера через выключатель подсоединены повышающий и понижающий DC-DC преобразователи. + 12 вольт питает моторы колес и моторы передних щеток. +5 вольт питает всю остальную электронику. Турбина питается от 7 — 8 вольт, так что для нее преобразователь не нужен. Выглядит это так:

В итоге список основных компонентов выглядит так:

ардуино про мини
L298N Motor Driver Module
колеса
повышающий конвертер
понижающий конвертер
ИК датчик 6 шт
контроллер заряда-разряда
крыльчатка для турбины (около 200 руб)
ПВХ для изготовления корпуса
АКБ 18650 4 шт.
2 моторчика для щеток (модель не сильно важна)
1 моторчик для турбины
2 выключателя столкновения.
Один из вариантов скетча для хаотичной уборки

#define mot_ena 9 //пин ШИМа левого мотора
#define mot_in1 8 //пин левого мотора
#define mot_in2 7 //пин левого мотора
#define mot_in3 6 //пин правого мотора
#define mot_in4 4 //пин правого мотора
#define mot_enb 10 //пин ШИМа правого мотора

#define ir_1 A0 //пин 1 ИК-датчика
#define ir_2 A1 //пин 2 ИК-датчика
#define ir_3 A2 //пин 3 ИК-датчика
#define ir_4 A3 //пин 4 ИК-датчика
#define ir_5 A4 //пин 5 ИК-датчика
#define ir_6 A5 //пин 6 ИК-датчика

#define lev_vik 11 //пин левого выключателя
#define pra_vik 12 //пин правого выключателя

//для выравнивания скорости колес
byte max_skor_lev = 254;
byte max_skor_prav = 244;
//———————————

byte min_skor = 0;

randomSeed(analogRead(A7));
// пины энкодеров на вход
pinMode(3, INPUT); // пин левого энкодера на вход
pinMode(2, INPUT); // пин правого энкодера на вход
//————————-
// пины для левого и правого моторов на выход
pinMode(mot_ena, OUTPUT);
pinMode(mot_in1, OUTPUT);
pinMode(mot_in2, OUTPUT);
pinMode(mot_in3, OUTPUT);
pinMode(mot_in4, OUTPUT);
pinMode(mot_enb, OUTPUT);
//——————————————-
// пины ИК-датчиков на вход
pinMode(ir_1, INPUT);
pinMode(ir_2, INPUT);
pinMode(ir_3, INPUT);
pinMode(ir_4, INPUT);
pinMode(ir_5, INPUT);
pinMode(ir_6, INPUT);
//————————-
// пины левого и правого выключателей на вход
pinMode(lev_vik, INPUT);
pinMode(pra_vik, INPUT);
//—————————
delay(3000);

// если срабатывает левый выключатель на бампере
if (digitalRead(lev_vik) == LOW)
<
ROB_STOP();
delay(200);
ROB_NAZAD();
delay(150);
ROB_STOP();
delay(200);
ROB_PRAV();
delay(random(400, 1500));
ROB_STOP();
delay(200);
ROB_VPERED();
>
//————————————————
// если срабатывает правый выключатель на бампере
if (digitalRead(pra_vik) == LOW)
<
ROB_STOP();
delay(200);
ROB_NAZAD();
delay(150);
ROB_STOP();
delay(200);
ROB_LEV();
delay(random(400, 1500));
ROB_STOP();
delay(200);
ROB_VPERED();
>
//————————————————
// если срабатывает 2 ИК-датчик
if (digitalRead(ir_2) == LOW)
<
ROB_STOP();
delay(200);
ROB_PRAV();
delay(random(200, 1100));
ROB_STOP();
delay(200);
ROB_VPERED();
>
//————————————————
// если срабатывает 3 ИК-датчик
if (digitalRead(ir_3) == LOW)
<
ROB_STOP();
delay(200);
ROB_PRAV();
delay(random(200, 1100));
ROB_STOP();
delay(200);
ROB_VPERED();
>
//————————————————
// если срабатывает 4 ИК-датчик
if (digitalRead(ir_4) == LOW)
<
ROB_STOP();
delay(200);
ROB_LEV();
delay(random(200, 1100));
ROB_STOP();
delay(200);
ROB_VPERED();
>
//————————————————
// если срабатывает 5 ИК-датчик
if (digitalRead(ir_5) == LOW)
<
ROB_STOP();
delay(200);
ROB_LEV();
delay(random(200, 1100));
ROB_STOP();
delay(200);
ROB_VPERED();
>
//————————————————
// если срабатывает 1 ИК-датчик
if (digitalRead(ir_1) == LOW)
<
ROB_PRAV();
delay(10);
ROB_VPERED();
>
//————————————————
// если срабатывает 6 ИК-датчик
if (digitalRead(ir_6) == LOW)
<
ROB_LEV();
delay(10);
ROB_VPERED();
>
//————————————————

Читайте также  Программа для настройки wifi роутера

// поворот направо на месте
void ROB_PRAV()
<
// левый мотор вперед
digitalWrite(mot_in1, LOW);
digitalWrite(mot_in2, HIGH);
analogWrite(mot_ena, max_skor_lev);
// правый мотор назад
digitalWrite(mot_in3, LOW);
digitalWrite(mot_in4, HIGH);
analogWrite(mot_enb, max_skor_prav);
>
//——————
// поворот налево на месте
void ROB_LEV()
<
// правый мотор вперед
digitalWrite(mot_in3, HIGH);
digitalWrite(mot_in4, LOW);
analogWrite(mot_enb, max_skor_prav);
// левый мотор назад
digitalWrite(mot_in1, HIGH);
digitalWrite(mot_in2, LOW);
analogWrite(mot_ena, max_skor_lev);
>
//———————
// езда вперед
void ROB_VPERED()
<
// левый мотор вперед
digitalWrite(mot_in1, LOW);
digitalWrite(mot_in2, HIGH);
analogWrite(mot_ena, max_skor_lev);
// правый мотор вперед
digitalWrite(mot_in3, HIGH);
digitalWrite(mot_in4, LOW);
analogWrite(mot_enb, max_skor_prav);
>
//————————————-
// езда назад
void ROB_NAZAD()
<
// левый мотор назад
digitalWrite(mot_in1, HIGH);
digitalWrite(mot_in2, LOW);
analogWrite(mot_ena, max_skor_lev);
// правый мотор назад
digitalWrite(mot_in3, LOW);
digitalWrite(mot_in4, HIGH);
analogWrite(mot_enb, max_skor_prav);
>
//————————————
// стоп
void ROB_STOP()
<
// левый мотор стоп
digitalWrite(mot_in1, LOW);
digitalWrite(mot_in2, LOW);
analogWrite(mot_ena, min_skor);
// правый мотор стоп
digitalWrite(mot_in3, LOW);
digitalWrite(mot_in4, LOW);
analogWrite(mot_enb, min_skor);
>
//———————————

Ну и небольшое интервью с автором этого проекта. Автора зовут Дмитрий Иванов, живет в г. Сочи.

— Дмитрий, как пришла идея сделать робот-пылесос?

— Увидел на ютубе видео, где робот-пылесос делал уборку, захотел себе купить такой, но когда посмотрел цену, то подумал и решил делать сам. Сначала сделал первую версию робота, у него были слабые моторы на колесах, несъемный контейнер для мусора и пыли, мало датчиков препятствия и я сделал вторую версию, лишенную этих недостатков.

— Сколько в итоге денег и времени ушло на его изготовление?

«Примерно 5000 тыс. руб. плюс два месяца работы»

— Что было самым сложным в процессе постройки?

Самое сложное сделать корпус и турбину, подогнать все детали.

— Есть планы продолжать совершенствование робота?

В планах покрасить корпус, сделать несколько режимов уборки, подключить блютус модуль и написать программу для телефона на андроиде (управление режимами, ручное управление, отображение заряда АКБ). Ну и сделать под пылесосом синюю подсветку для красоты.

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

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

Ссылка на основную публикацию
Adblock
detector