RSS блога
Подписка
Создание прототипа робота пылесоса на базе Arduino Uno
- Цена: $5.80
- Перейти в магазин
Arduino — это открытая платформа, которая позволяет собирать всевозможные электронные устройства. Arduino будет интересен креативщикам, дизайнерам, программистам …., и желающим собрать собственный гэджет. Устройства могут работать как автономно, так и в связке с компьютером. Всё зависит от идеи.
Платформа состоит из аппаратной и программной частей. Для программирования используется упрощённая версия C++. Разработку можно вести как с использованием бесплатной среды Arduino IDE, так и с помощью произвольного C/C++ инструментария.
Для программирования и общения с компьютером понадобится USB-кабель.
Для постройки прототипа робота — пылесоса заказал плату Arduino Uno. Вместе c Uno заказал: Драйвер двигателей, для управления двигателями, Ик датчики «органы чувств» робота пылесоса, Ну и проводочки, куда без них? Преобразователь DC-DC и аккумуляторы заказывал в других онлайн магазинах.
Составляющие моего устройства:
— Arduino -центральный контроллер
— Драйвер двигателей — устройство, которое преобразовывает управляющие сигналы малой мощности в токи, достаточные для управления моторами
— ИК датчики — датчики препятствий расстояние обнаружения препятствия 3-80см
— ИК датчики — датчики препятствий расстояние обнаружения препятствия 2-20см
— Электродвигатель турбины
— Электродвигатель боковых щеток
— Электродвигатель центральной щетки
— Электродвигатель перемещения
— Аккумуляторы литиевые
Вот, что получилось.
Фотки не все, загружаю, какие остались.
Спасибо моему другу Витале, за помощь в написании программы.
P.S. Диплом защитил на отлично!
Платформа состоит из аппаратной и программной частей. Для программирования используется упрощённая версия C++. Разработку можно вести как с использованием бесплатной среды Arduino IDE, так и с помощью произвольного C/C++ инструментария.
Для программирования и общения с компьютером понадобится USB-кабель.
Технические характеристики Arduino Uno
Микроконтроллер: ATmega168
Рабочее напряжение 5 В
Входное напряжение (рекомендуемое) 7-12 В
Входное напряжение (предельное) 6-20 В
Цифровые Входы/Выходы 14 (6 из которых могут использоваться как выходы ШИМ)
Аналоговые входы 6
Постоянный ток через вход/выход 40 мА
Постоянный ток для вывода 3.3 В 50 мА
Флеш-память 16 Кб (ATmega168) или 32 Кб (ATmega328) при этом 2 Кб используются для загрузчика
ОЗУ 1 Кб (ATmega168) или 2 Кб (ATmega328)
EEPROM 512 байт (ATmega168) или 1 Кб (ATmega328)
Тактовая частота 16 МГц
Рабочее напряжение 5 В
Входное напряжение (рекомендуемое) 7-12 В
Входное напряжение (предельное) 6-20 В
Цифровые Входы/Выходы 14 (6 из которых могут использоваться как выходы ШИМ)
Аналоговые входы 6
Постоянный ток через вход/выход 40 мА
Постоянный ток для вывода 3.3 В 50 мА
Флеш-память 16 Кб (ATmega168) или 32 Кб (ATmega328) при этом 2 Кб используются для загрузчика
ОЗУ 1 Кб (ATmega168) или 2 Кб (ATmega328)
EEPROM 512 байт (ATmega168) или 1 Кб (ATmega328)
Тактовая частота 16 МГц
Для постройки прототипа робота — пылесоса заказал плату Arduino Uno. Вместе c Uno заказал: Драйвер двигателей, для управления двигателями, Ик датчики «органы чувств» робота пылесоса, Ну и проводочки, куда без них? Преобразователь DC-DC и аккумуляторы заказывал в других онлайн магазинах.
Составляющие моего устройства:
— Arduino -центральный контроллер
— Драйвер двигателей — устройство, которое преобразовывает управляющие сигналы малой мощности в токи, достаточные для управления моторами
— ИК датчики — датчики препятствий расстояние обнаружения препятствия 3-80см
— ИК датчики — датчики препятствий расстояние обнаружения препятствия 2-20см
— Электродвигатель турбины
— Электродвигатель боковых щеток
— Электродвигатель центральной щетки
— Электродвигатель перемещения
— Аккумуляторы литиевые
Вот, что получилось.
Фотки не все, загружаю, какие остались.
Разработка и сборка фото и видео
Компоненты устройства:
Вид снизу:
Вид сверху:
Вид сбоку:
Перед первым пуском:
Первый пуск)) без корпуса
Настроенная программа, оставалось 2 дня до защиты диплома)
Вид снизу:
Вид сверху:
Вид сбоку:
Перед первым пуском:
Первый пуск)) без корпуса
Настроенная программа, оставалось 2 дня до защиты диплома)
скетч
#define DriveVector1 2
#define DriveSpeed1 3
#define DriveVector2 4
#define DriveSpeed2 5
#define InSensor1 12
#define InSensor2 11
#define LedLamp 13
int sensorStatus1, sensorStatus2;
int HIGHValue, LOWValue;
void setup()
{
// put your setup code here, to run once:
pinMode(DriveVector1, OUTPUT);
pinMode(DriveVector2, OUTPUT);
pinMode(DriveSpeed1, OUTPUT);
pinMode(DriveSpeed2, OUTPUT);
pinMode(LedLamp, OUTPUT);
pinMode(InSensor1, INPUT);
pinMode(InSensor2, INPUT);
HIGHValue = HIGH div 2;
LOWValue = LOW;
}
void loop()
{
sensorStatus1 = digitalRead (InSensor1);
sensorStatus2 = digitalRead (InSensor2);
if (sensorStatus1 == 1 && sensorStatus2 == 1)
{
digitalWrite(LedLamp, HIGH);
delay(100);
BodyForward();
// BodyStop();
}
else
{
digitalWrite(LedLamp, HIGH);
delay(200);
digitalWrite(LedLamp, LOW);
delay(200);
BodyRight();
}
}
void BodyForward()
{
digitalWrite(DriveVector1, LOWValue);
digitalWrite(DriveSpeed1, HIGHValue);
digitalWrite(DriveVector2, LOWValue);
digitalWrite(DriveSpeed2, HIGHValue);
}
void BodyBackward()
{
digitalWrite(DriveVector1, HIGHValue);
digitalWrite(DriveSpeed1, LOWValue);
digitalWrite(DriveVector2, HIGHValue);
digitalWrite(DriveSpeed2, LOWValue);
}
void BodyRight()
{
digitalWrite(DriveVector1, HIGHValue);
digitalWrite(DriveSpeed1, LOWValue);
digitalWrite(DriveVector2, LOWValue);
digitalWrite(DriveSpeed2, HIGHValue);
}
void BodyStop()
{
digitalWrite(DriveVector1, 0);
digitalWrite(DriveSpeed1, 0);
digitalWrite(DriveVector2, 0);
digitalWrite(DriveSpeed2, 0);
}
#define DriveSpeed1 3
#define DriveVector2 4
#define DriveSpeed2 5
#define InSensor1 12
#define InSensor2 11
#define LedLamp 13
int sensorStatus1, sensorStatus2;
int HIGHValue, LOWValue;
void setup()
{
// put your setup code here, to run once:
pinMode(DriveVector1, OUTPUT);
pinMode(DriveVector2, OUTPUT);
pinMode(DriveSpeed1, OUTPUT);
pinMode(DriveSpeed2, OUTPUT);
pinMode(LedLamp, OUTPUT);
pinMode(InSensor1, INPUT);
pinMode(InSensor2, INPUT);
HIGHValue = HIGH div 2;
LOWValue = LOW;
}
void loop()
{
sensorStatus1 = digitalRead (InSensor1);
sensorStatus2 = digitalRead (InSensor2);
if (sensorStatus1 == 1 && sensorStatus2 == 1)
{
digitalWrite(LedLamp, HIGH);
delay(100);
BodyForward();
// BodyStop();
}
else
{
digitalWrite(LedLamp, HIGH);
delay(200);
digitalWrite(LedLamp, LOW);
delay(200);
BodyRight();
}
}
void BodyForward()
{
digitalWrite(DriveVector1, LOWValue);
digitalWrite(DriveSpeed1, HIGHValue);
digitalWrite(DriveVector2, LOWValue);
digitalWrite(DriveSpeed2, HIGHValue);
}
void BodyBackward()
{
digitalWrite(DriveVector1, HIGHValue);
digitalWrite(DriveSpeed1, LOWValue);
digitalWrite(DriveVector2, HIGHValue);
digitalWrite(DriveSpeed2, LOWValue);
}
void BodyRight()
{
digitalWrite(DriveVector1, HIGHValue);
digitalWrite(DriveSpeed1, LOWValue);
digitalWrite(DriveVector2, LOWValue);
digitalWrite(DriveSpeed2, HIGHValue);
}
void BodyStop()
{
digitalWrite(DriveVector1, 0);
digitalWrite(DriveSpeed1, 0);
digitalWrite(DriveVector2, 0);
digitalWrite(DriveSpeed2, 0);
}
Спасибо моему другу Витале, за помощь в написании программы.
P.S. Диплом защитил на отлично!
Самые обсуждаемые обзоры
+73 |
3675
145
|
+53 |
3845
69
|
+34 |
2925
55
|
сначала находим/пишем/изобретаем/исследуем/замеряем, потом публикуем обзор.
Думаю, тонкости, если кто заинтересуется можно и в личке спросить, да и здесь, в комментариях…
потому как постройка самого пылесоса — это банальное изобретение колеса. и в данном случае видно, что пылесос не работает толком. не работает 1. потому что убогая конструкция 2. алгоритм ужасен.
стоило бы, имхо, взять самый дешевый китайский пылесос и использовать его как донора. с системой сбора мусора и движения. При этом внедрив ардуину со своим алгоритмом и обработкой сигналов от датчиков.
а это — рукоблудство какое-то от скуки.
Сделали что-то — молодец. Только сайт то не про это.
полностью заряженных аккумуляторов?
3 я думаю, что если добавить в название статьи слово «прототип/проект робота-пылесоса» или «попытка построить робот-пылесос», то это сразу снимет многие вопросы.
как настоящий!!! Молодец.
А сама конструкция и правда на любителя: фанерка, термоклей… не хватает скотча и кусков медной проволоки)
Уровень, максимум ПТУ. Деградация высшего образования налицо!
На FEL CVUT у перваков традиционный первый же курсач — разработать робота, который должен вылезти из нарисованного на полу лабиринта, притом во второй раз тыкаться робот не имеет права, а должен самообучиться за первый запуск.
Первак не обладает навыками кодинга, потому еще допускаются Ардуины и Лего, но потом работать с МК на уровне домохозяйки запрещают.
там видимо в никуда выпускают студентов, у самих преподов научной работы нет никакой, соответственно лень придумывать чем занять дипломников
Не, рукоблудство — это плюс, но е-мае, неужели нельзя было сделать не так страшно? Такое впечатление, что у Вас была всего три дня на создание этого чуда, даже в хозмаг некогда было сбегать за болтиками-хомутами…
Если не секрет, а какая у Вас специальность по диплому?
Потому что в остальном — это обычный робот-машинка на ардуине, который объезжает препятствия. Таких готовых проектов в сети миллион.
Когда я был маленьким, меня при попытках собрать что-то дёшево и по-быстрому «только для попробовать — получится или нет» из палок и изоленты старшие товарищи поучали — не надо так делать. Вероятнее всего не заработает, но причину будет не узнать — из-за изначально неправильной идеи или её реализации.
По-моему это смарт-электровеник.
Результат зачетный, достойный похвалы, но как обзор — хрень полная, выглядит как «посмотрите на объект защиты моего диплома».
Мне еще очень давно в комментах к одному из моих обзоров написали —
А теперь зайдите в сам обзор и сравните количество материала у Вас и там.
У Вас написано —
Для меня много фото это 70-100 и больше, а не четыре фотографии, так что все относительно.
Опишите все этапы разработки, что использовали, как делали, это будет интересно.
А так соглашусь с выше высказавшимися, обзор ниочем, пока ниочем, увы…
но поставил + за смышленную голову, не уехала еще вся толковая молодежь :-)
Только наверное надо изменить настройки, а то что-ж за пылесос такой, который не доезжает до препятствий?