Astapro.ru

33 квадратных метра
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Создание маленького робота пылесоса на ардуино

Собираем робот-пылесос на Arduino


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

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

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


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

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




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

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









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

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

Робот пылесос на ардуино

Показано, как делать робот-пылесос. Он автоматически объезжает препятствия и пылесосит, при этом собирает бумажки, крошки различного происхождения.

Нужен стандартный набор для arduino машинки. Берём одну arduino uno, драйвер двигателя l298n, датчик приближенности, старый вентилятор и системного блока компьютера. Сначала взял толстую гофрокартон, вырвали снимок кружок, установил вентилятор, размер. Начал вырезать. Размер восьмиугольника должен быть несколько меньше вентилятора. Затем взял вентилятор и попробовал вставить туда в отверстие. Думал, что контур немного растянется. Но так не случилось. Немного подрезал и только после этого получилось установить вентилятор. Высота вентилятора над столом должно получиться небольшой, около 0,5 см. Только при этом он будет хорошо всасывать пыль. Затем установил двигатели и приклеил всё с помощью термоклея. В том числе и вентилятор. Его нужно клеить после того, как установлены моторы, чтобы видеть необходимо высоту. Практика показала, что хорошо будет всасываться мусор, если высота над столом от 0,5 до 1 см. Затем занялся установкой еще одного колеса, чтобы это система стояла на трех колесах. Третье колесо вращается не будет.
Все элементы пылесоса присоединяется с помощью термоклея. Для подобного устройства такой прочности предостаточно.

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

Кнопка установил сбоку, но практика показала, что это не совсем правильное решение, потому что робот сам себя несколько раз отключал. Он ударился о стену именно этой кнопкой. В принципе, это не совсем классический пылесос, потому что обычно используется коробка. А здесь стоит прямо на всасывание. Но это не ухудшает характеристик. Обратите внимание, что мастер взял обычный вентилятор, не предназначен для того, чтобы сосать были. Он просто дует воздух. Поэтому, если вы хотите создать пылесос, который будет сосать не только бумагу, то нужно установить двигатель помощнее. И придать лопастями необходимую для пылесоса конфигурацию. Весь процесс создания робота занял около 3 часов. Как видите, ничего сложного нет. Самое сложное в этом деле, это программирование. В этом случае мастер программируют лишь немного. Он взял свою машину, который объезжает препятствия, и чуть-чуть изменил, чтобы ограничить скорость передвижения робота. Для этого применил шим выводы на arduino и подключил их соответствующим выводом на драйвере двигателя. Кстати, он не такой и маленький расчёт радиатора. Но у него есть большой плюс по сравнению с другими драйверами двигателей. А именно, вывод на 50. Им очень удобно, сервоприводы а также arduino. Если вам не нравится большой размер этого драйвера, то можно просто взять и убрать оттуда радиатор. Дело в том, что при использовании этих двух двигателей, он греется не сильно. Температура не поднимается выше 40 градусов. Схема получает питание с аккумулятора с через выключатель и nano драйвер двигателя. Сюда же подключен и вентилятор.

Читать еще:  Линейно функциональная организационная структура управления предприятием

DIY: Несложный робот пылесос под Arduino своими руками. Пошаговая инструкция по изготовлению

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

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

Материалы и компоненты:

Для создания робота-уборщика необходимы:

  • плата Arduino;
  • плата контроля электромоторов Arduino motor shield;
  • два двигателя с коробкой передач (3 вольта, приблизительно 100 оборотов в минуту);
  • два колеса или две алюминиевые банки;
  • турбина-кулер компьютерного охлаждения (5 В или 12 Вольт);
  • аккумулятор для питания 5 вольт;
  • пластина для сбора радиоэлементов и провода;
  • большой круглый пластиковый контейнер — для корпуса;
  • небольшой пластиковый контейнер — для мусоросборника;
  • картон;
  • термоклей;
  • магниты.

Шаг 1: Программный код и скетч:

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

Скетч для работы робота-пылесоса загружается на плату с помощью программы Arduino IDE. Ниже программный код.

/*
Program for controlling a robot with two motors.
The robot turns when motors changes their speed and direction.
Front bumpers on left and right sides detect obstacles.
Ultrasonic sonars can be connected to analog inputs (tested on LV-MaxSonar-EZ1):
— put pins in array sonarPins in following order: left, right, front, others..
Examples:
1. only left and right sonars connected to pins 2 and 3: sonarPins[] = <2,3>
2. left, right and front sonars connected to pins 2, 3 and 5: sonarPins[] = <2,3,5>
3. only front sonar connected to pin 5: sonarPins[] = <-1,-1,5>
4. only left sonar connected to pin 2: sonarPins[] = <2>
5. only right sonar connected to pins 3: sonarPins[] = <-1,3>
6. 5 sonars connected to pins 1,2,3,4,5: sonarPins[] = <1,2,3,4,5>
Motor shield is used to run motors.
*/
const int Baud = 9600; //UART port speed

//Sonar properties
int sonarPins[] = <1, 2>;//Analog Pin Nums to sonar sensor Pin AN
const long MinLeftDistance = 20; //Minimum allowed left distance
const long MinRightDistance = 20; //Minimum allowed right distance
const long MinFrontDistance = 15; //Minimum allowed front distance
const int SamplesAmount = 15;//more samples — smoother measurement and bigger lag
const int SonarDisplayFrequency = 10; //display only one of these lines — not all
int sonarDisplayFrequencyCount = 0;
const long Factor = 2.54 / 2;
long samples[sizeof(sonarPins)][SamplesAmount];
int sampleIndex[sizeof(sonarPins)];

//right side
const int pinRightMotorDirection = 4; //this can be marked on motor shield as «DIR A»
const int pinRightMotorSpeed = 3; //this can be marked on motor shield as «PWM A»
const int pinRightBumper = 2; //where the right bumper is connected

//left side
const int pinLeftMotorDirection = 7; //this can be marked on motor shield as «DIR B»
const int pinLeftMotorSpeed = 6; //this can be marked on motor shield as «PWM B»
const int pinLeftBumper = 8; //where the right bumper is connected

//uncomment next 2 lines if Motor Shield has breaks
//const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; //this can be marked on motor shield as «BREAKE A»
//const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; //this can be marked on motor shield as «BREAKE B»

//fields
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
//set in counter how long a motor is running back: N/10 (in milliseconds)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;

//Initialization
void setup() <
Serial.begin(Baud);
initPins();

//uncomment next 4 lines if Motor Shield has breaks
// pinMode(pinLeftMotorBreak, OUTPUT);
// pinMode(pinRightMotorBreak, OUTPUT);
// digitalWrite(pinLeftMotorBreak, LOW); //turn off breaks
// digitalWrite(pinRightMotorBreak, LOW); //turn off breaks

runRightMotorForward();
runLeftMotorForward();
startMotors();
>

//Main loop
void loop() <

delay(10);//repeat every 10 milliseconds
>

//—————————————————
void initPins() <
pinMode(pinRightMotorDirection, OUTPUT);
pinMode(pinRightMotorSpeed, OUTPUT);
pinMode(pinRightBumper, INPUT);
pinMode(pinLeftMotorDirection, OUTPUT);
pinMode(pinLeftMotorSpeed, OUTPUT);
pinMode(pinLeftBumper, INPUT);
for(int i = 0; i MinRightDistance //checks if the minimum allowed right distance is not reached
&& measureDistance(2, ‘F’) > MinFrontDistance)//checks if the minimum allowed front distance is not reached
return;
if(checkCounterIsNotSet(countDownWhileMovingToRight))//if the counter is not yet counting down
runRightMotorBackward();//run the right motor backward
countDownWhileMovingToRight = turnRightTimeout;//set the counter to maximum value to start it counting down
>

Читать еще:  Открытие пельменного цеха пошаговая инструкция

void verifyAndSetLeftSide() <
if(checkBumperIsNotPressed(pinLeftBumper) //checks if left bumper has NOT been pressed
&& measureDistance(0, ‘L’) > MinLeftDistance //checks if the minimum allowed left distance is not reached
&& measureDistance(2, ‘F’) > MinFrontDistance)//checks if the minimum allowed front distance is not reached
return;
if(checkCounterIsNotSet(countDownWhileMovingToLeft))//if the counter is not yet counting down
runLeftMotorBackward();//run the right motor backward
countDownWhileMovingToLeft = turnLeftTimeout;//set the counter to maximum value to start it counting down
>

bool checkCounterIsNotSet(int counter) <
return counter = sizeof(sonarPins) — 1 || sonarPins[pinIndex] = SamplesAmount)
sampleIndex[pinIndex] = 0;
samples[pinIndex][sampleIndex[pinIndex]] = value;
return true;
>

long calculateAvarageDistance(int pinIndex) <
long average = 0;
for(int i = 0; i

Шаг 2: Монтирование деталей:

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

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

В передней части монтируются металлические пластины (функция подвижного бампера), при замыкании которых сигнал поступает в плату управления электродвигателями Arduino motor shield, после чего сервоприводы начинают вращаться в другую сторону, изменяя направление движения робота.


Шаг 3: Установка корпуса:

При установке аккумуляторной батареи и подключении всех элементов конструкции с помощью проводов, необходимо обеспечить устройство прочным корпусом. Как раз таки для этого используется большой круглый контейнер. Для действия контактов, предотвращающих столкновение и застревание, делаем в контейнере специальные надрезы. Чтобы корпус был легкосъемным и прочно держался на механической части, используем восемь магнитов (при желании можно больше), по четыре приклеенных на самом контейнере и на внутренней части пылесоса соответственно.

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

Мир микроконтроллеров

Навигация по записям

Вакуумный чистящий робот (пылесос) на Arduino

В данной статье мы рассмотрим создание на основе платы Arduino вакуумного пылесоса, который сможет объезжать препятствия и одновременно при этом пылесосить пол.

За идею для данного проекта был взят чистящий робот-пылесос Roomba, который показан на следующем рисунке.

Необходимые компоненты

Для создания задуманного нами автоматического вакуумного робота-пылесоса мы должны определиться со следующими вещами:

  • тип микроконтроллера;
  • необходимые датчики;
  • необходимые двигатели;
  • материалы для шасси робота;
  • батарейка.

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

Тип микроконтроллера

Выбор микроконтроллера является весьма важной задачей, поскольку микроконтроллер будет «мозгами» робота. Большинство проектов из разряда «сделай сам» (DIY projects) в настоящее время делается на основе плат Arduino и Raspberry Pi. Но они не всегда будут наилучшими конкретно для вашего проекта.

При выборе микроконтроллера для своего проекта следует принимать во внимание следующие вещи:

  1. В первую очередь необходимо учесть требования к количеству необходимых контактов ввода/вывода, объема флэш памяти, числу/типам коммуникационных протоколов и другим специальным требованиям.
  2. На следующем этапе необходимо произвести селекцию микроконтроллеров согласно их требуемым техническим характеристикам.
  3. На этом этапе необходимо произвести заключительный отбор микроконтроллеров основываясь на их стоимости и доступности.

Но в этом проекте мы не тратили много времени на эти изыскания и просто выбрали Arduino. Также на нашем сайте вы можете посмотреть примеры других роботов на основе платы Arduino:

Необходимые датчики

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

Ультразвуковой датчик состоит из двух круглых «глаз», один из которых используется для передачи ультразвуковых сигналов, а другой – для их приема. Ультразвуковые сигналы излучаются, отражаются от препятствия и возвращаются обратно к ультразвуковому датчику. Поскольку время между передачей и приемом сигналов, а также скорость распространения звука известны, то расстояние до препятствия можно рассчитать по следующей формуле:

Distance = Time x Speed of Sound / 2

Делить на 2 необходимо потому что лучи распространяются до препятствия и обратно, то есть одну и ту же дистанцию проходят два раза. Более подробно обо всех этих процессах можно прочитать в статье про определение расстояний с помощью Arduino.

Читать еще:  Плотницкая черта Чертеж плотницкой черты

Необходимые двигатели

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

Материалы для шасси робота

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

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

Емкость батареи

Выбор емкости батареи для робота необходимо производить на заключительном этапе поскольку она будет зависеть от выбранных шасси и двигателей. Вакуумный пылесос будет потреблять ток 3-5A и еще необходимо запитывать 4 электродвигателя, поэтому потребуется достаточно тяжелая батарея. Мы для нашего проекта выбрали батарею 12V 20Ah SLAB (Sealed lead acid battery – запаянная свинцово-кислотная батарея).

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

  • лист дерева в качестве шасси робота;
  • инфракрасный и ультразвуковой датчики;
  • вакуумный пылесос, работающий от постоянного тока;
  • плата Arduino Uno;
  • батарея 12V 20Ah;
  • микросхема драйвера моторов L293D;
  • соединительные провода.

Вакуумный пылесос, работающий от постоянного тока

Поскольку мы используем батарею 12V 20Ah, то и наш вакуумный пылесос должен работать от 12V. Возможный вариант подобного пылесоса показан на ниже приведенном рисунке. Я думаю, подобный пылесос можно без проблем приобрести на Aliexpress или Amazon.

Драйвер мотора L293D

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

Микросхема драйвера мотора L293D способна обеспечивать на своих выводах ток до 1A, что вполне достаточно для управления электродвигателями в нашем проекте.

Конструирование робота

Вакуумный пылесос – это наиболее сложный компонент (из используемых нами) для размещения на шасси робота. Его нужно установить под определенным углом на шасси (как показано на рисунке) чтобы он корректно функционировал. Вакуумный пылесос не будет управляться с платы Arduino, его будет необходимо включать и выключать вручную.

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

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

void setup()
<
Serial.begin(9600);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
>
void loop()
<
delay(1000);
Serial.print(«forward»);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
delay(500);
Serial.print(«backward»);
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
digitalWrite(12,HIGH);
>

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

Также вы можете установить на робота и дополнительные компоненты (щетки по бокам) как показано на следующих рисунках.

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

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

Схема устройства и исходный код программы

Схема устройства представлена на следующем рисунке.

Все необходимые соединения, я думаю, интуитивно понятны.

Далее приведен полный текст программы с комментариями.

// инициализация необходимых контактов
#define trigPin 12
#define echoPin 13
#define ir1 7
#define ir2 6
void setup()
<
Serial.begin(9600); // инициализация последовательного порта на скорость 9600 бод/с
// задание режима работы (на ввод или вывод) для используемых контактов
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ir1, INPUT);
pinMode(ir2,INPUT);
>
void loop()
<
int duration, distance;
int flag,val1,val2;
val1=digitalRead(ir1);
val2=digitalRead(ir2);
Serial.println(val1);
Serial.println(val2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1; // расчет дистанции до препятствия
if (distance >= 200 || distance =20)
<
delay(100);
Serial.println(«forward»);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
delay(150);
Serial.println(«STOP»);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
>
if (distance

Видео, демонстрирующее работу схемы

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