- Требуемый компонент:
- Сборка робота-уборщика пола:
- Электропроводка и подключения:
- Объяснение программирования:
В автоматических очистителях пола нет ничего нового, но у всех есть общая проблема. Все они слишком дороги для того, чем занимаются. Сегодня мы создадим автоматического домашнего робота-уборщика, который будет стоить лишь небольшую часть имеющихся на рынке. Этот робот может обнаруживать препятствия и объекты перед ним и может продолжать движение, избегая препятствий, пока не будет убрана вся комната. К нему прикреплена небольшая щетка для мытья пола.
Также проверьте наш умный робот-пылесос с использованием Arduino.
Требуемый компонент:
- Arduino UNO R3.
- Ультразвуковой датчик.
- Щиток драйвера двигателя Arduino.
- Шасси полноприводного робота.
- Компьютер для программирования Arduino.
- Аккумулятор для моторов.
- Power Bank для питания Arduino
- Щетка для обуви.
- Подушечки для чистки Scotch Brite Scrub Pad.
Примечание: вместо батареек вы также можете использовать длинный 4-жильный провод, как мы. Хотя это не очень элегантное или практичное решение, но вы можете сделать это, если не планируете использовать его в реальном мире каждый день. Убедитесь, что длина кабеля достаточна.
Прежде чем вдаваться в подробности, давайте сначала поговорим об Ультразвуке.
Ультразвуковой датчик HC-SR04:
Ультразвуковой датчик используется для измерения расстояния с высокой точностью и стабильными показаниями. Он может измерять расстояние от 2 см до 400 см или от 1 дюйма до 13 футов. Он излучает в воздухе ультразвуковую волну с частотой 40 кГц, и если объект встанет у него на пути, он отразится обратно на датчик. Используя время, необходимое для того, чтобы ударить объект и вернуться назад, вы можете рассчитать расстояние.
В ультразвуковом датчике используется технология, называемая «ECHO». «ЭХО» - это просто отраженная звуковая волна. У вас будет ЭХО, когда звук будет отражаться в тупике.
Модуль HCSR04 генерирует звуковую вибрацию в ультразвуковом диапазоне, когда мы делаем вывод «Trigger» высоким примерно на 10 мкс, который отправит 8-тактный звуковой импульс со скоростью звука, и после удара по объекту он будет принят контактом Echo. В зависимости от времени, затрачиваемого звуковой вибрацией на возврат, он обеспечивает соответствующий импульсный выход. Если объект находится далеко, то потребуется больше времени, чтобы услышать ECHO, и ширина выходного импульса будет большой. А если препятствие близко, то ECHO будет слышен быстрее, а ширина выходного импульса будет меньше.
Мы можем рассчитать расстояние до объекта на основе времени, которое требуется ультразвуковой волне, чтобы вернуться обратно к датчику. Поскольку время и скорость звука известны, мы можем рассчитать расстояние по следующим формулам.
Расстояние = (Время x скорость звука в воздухе (343 м / с)) / 2.
Значение делится на два, поскольку волна распространяется вперед и назад, преодолевая одинаковое расстояние. Таким образом, время на преодоление препятствия составляет лишь половину от общего времени, затрачиваемого на преодоление препятствия.
Итак, расстояние в сантиметрах = 17150 * T.
Ранее мы сделали много полезных проектов, используя этот ультразвуковой датчик и Arduino, проверьте их ниже:
- Измерение расстояний на базе Arduino с помощью ультразвукового датчика
- Дверная сигнализация с использованием Arduino и ультразвукового датчика
- Мониторинг мусорных контейнеров на основе IOT с использованием Arduino
Сборка робота-уборщика пола:
Установите Arduino на шасси. Убедитесь, что вы ничего не закоротили, если корпус сделан из металла. Хорошая идея - получить коробку для Arduino и платы контроллера мотора. Закрепите моторы с колесами и шасси винтами. У вашего шасси должны быть опции для этого на заводе, но если их нет, вы можете импровизировать другое решение. Эпоксидная смола - неплохая идея. Установите щетку для обуви на переднюю часть шасси. Для этого мы использовали комбинацию эпоксидной смолы M-Seal и просверленные винты, хотя вы можете использовать любое другое решение, которое может быть проще для вас. Установите чистящую салфетку Scotch Brite за щеткой. Мы использовали вал, проходящий через шасси, который удерживает его в рабочем состоянии, хотя это тоже импровизировано. Для этого можно использовать подпружиненный вал. Установите батареи (или кабели на задней части корпуса).Эпоксидная смола или батарейный отсек - хорошие способы сделать это. Горячий клей тоже неплох.
Электропроводка и подключения:
Схема этого автоматического домашнего робота-уборщика очень проста. Подключите ультразвуковой датчик к Arduino, как указано ниже, и поместите экран драйвера двигателя на Arduino, как любой другой щит.
Триггерный вывод Ultrasonic подключен к 12-му выводу на Arduino, вывод Echo подсоединен к 13-му выводу, вывод напряжения - к выводу 5 В, а вывод заземления - к выводу заземления. Выводы Echo и Trig позволяют Arduino взаимодействовать с датчиком. Питание подается на датчик через контакты напряжения и заземления, а контакты Trig и Echo позволяют ему отправлять и получать данные с помощью Arduino. Узнайте больше о взаимодействии ультразвукового датчика с Arduino здесь.
Щит двигателя должен иметь как минимум 2 выхода, и они должны быть подключены к вашим 2 моторам. Обычно эти выходы обозначаются «M1» и «M2» или «Motor 1» и «Motor 2». Подключите батареи и блок питания к моторному щиту и Arduino соответственно. Не соединяйте их перекрестно. Ваш моторный щит должен иметь входной канал. Если вы используете провода, подключите их к адаптерам переменного тока.
Объяснение программирования:
Откройте IDE Arduino. Вставьте полный код Arduino, приведенный в конце этого руководства, в среду IDE. Подключите ваш Arduino к компьютеру. Выберите порт в Инструменты / Порт. Щелкните кнопку загрузки.
Протестируйте робота. Если он поворачивается слишком мало или слишком сильно, поэкспериментируйте с задержками до идеального результата.
Перед тем как перейти к коду, нам нужно установить библиотеку Adafruit Motor Shield для управления двигателями постоянного тока. Поскольку мы используем щит драйвера двигателя L293D, нам необходимо загрузить библиотеку AFmotor отсюда. Затем добавьте его в папку библиотеки Arduino IDE. Убедитесь, что вы переименовали его в AFMotor . Узнайте больше об установке этой библиотеки.
Код прост и понятен, но здесь мы объяснили несколько его частей:
Код ниже настраивает робота. Сначала мы включили библиотеку Adafruit для управления двигателями с помощью Motor driver Shield. После этого мы определили триггерный вывод и эхо-вывод. Он также настраивает моторы. Он устанавливает вывод Trig на выход, а вывод Echo - на ввод.
#include #define trigPin 12 #define echoPin 13 AF_DCMotor motor1 (1, MOTOR12_64KHZ); AF_DCMotor motor2 (2, MOTOR12_8KHZ); пустая настройка () {pinMode (trigPin, OUTPUT); pinMode (echoPin, ВХОД); }
Код ниже сообщает Arduino, что нужно выполнить следующие команды. После этого он использует датчик для передачи и приема ультразвуковых звуков. Он вычисляет расстояние до объекта после отражения ультразвуковых волн, после того как замечает, что объект находится в пределах установленного расстояния, и сообщает Arduino, чтобы он соответствующим образом вращал двигатели.
void loop () {длительность, расстояние; digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); duration = pulseIn (echoPin, HIGH); расстояние = (продолжительность / 2) / 29,1; если (расстояние <20) {motor1.setSpeed (255); motor2.setSpeed (0); motor1.run (НАЗАД); motor2.run (НАЗАД); задержка (2000); // ИЗМЕНИТЬ ЭТО В СООТВЕТСТВИИ С ПОВОРОТОМ РОБОТА.
Это заставляет робота вращаться, вращая один двигатель и удерживая другой в неподвижном состоянии.
Приведенный ниже код заставляет робота вращать оба двигателя в одном направлении, чтобы заставить его двигаться вперед, пока он не обнаружит объект на вышеупомянутой границе.
иначе {motor1.setSpeed (160); // ИЗМЕНИТЬ ЭТО В СООТВЕТСТВИИ С НАСКОЛЬКО БЫСТРОЙ ДЕЙСТВИЯ РОБОТА. motor2.setSpeed (160); // ИЗМЕНИТЕ ЭТО НА ТО ЖЕ ЗНАЧЕНИЕ, КАК ВЫ УКАЗАНО ВЫШЕ. motor1.run (ВПЕРЕД); motor2.run (ВПЕРЕД); }