Робот на Arduino для автоматической дезинфекции помещений с помощью ультрафиолетовых лучей

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

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

Также вы можете посмотреть похожие проекты на нашем сайте на основе платы Arduino: робот, объезжающий препятствия и самобалансирующийся робот.

Дисклеймер: этот проект сделан исключительно в образовательных целях, для понимания принципов работы роботов для стерилизации/дезинфекции помещений, и мы не даем никаких гарантий относительно того, что рассматриваемый в данном проекте робот сможет эффективно уничтожать коронавирус Covid-19

Каким образом ультрафиолетовые лучи могут убивать вирусы и болезнетворные микроорганизмы (патогены)

Основная цель рассматриваемого в данном проекте робота – это дезинфекции помещений с помощью бактерицидного ультрафиолетового облучения (лучей). Робот в нашем проекте будет содержать ультрафиолетовые светодиоды, которые будут ответственны за уничтожение вируса. Известно, что такие био-организмы как вирусы и бактерии могут быть дезактивированы при воздействии на них ультрафиолетовых лучей. Ультрафиолетовый свет разрушает генетический материал в болезнетворных микроорганизмах (патогенах) – DNA (deoxyribonucleic acid – дезоксирибонуклеиновая кислота) в бактериях и RNA (ribonucleic acid – рибонуклеиновая кислота) в вирусах, таким образом, предотвращая их размножение (воспроизводство).

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

Принцип работы робота для автоматической дезинфекции помещений с помощью ультрафиолетовых лучей

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

  • большая дальность обнаружения препятствий;
  • отсутствие влияния солнечной засветки на работу устройства.

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

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

Ультразвуковой датчик для определения расстояний HC-SR04 имеет 4 контакта: VCC, Trigger, Echo и Ground. Он содержит в своем составе ультразвуковой передатчик и приемник. Принцип его работы достаточно прост. Сначала датчик излучает ультразвуковую волну, которая распространяется по воздуху, отражается от препятствия и принимается приемником в составе датчика. Для расчета расстояния до препятствия необходимо время распространения волны до препятствия умножить на скорость распространения звука в воздухе – это достаточно просто сделать с помощью любого современного микроконтроллера (в нашем случае для этой цели мы используем плату Arduino).

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

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

Принцип определения расстояния с помощью ультразвукового датчика

При подаче питания на робота ультрафиолетовые светодиоды в его составе будут автоматически включаться. Робот содержит 10 ультрафиолетовых светодиодов (по два на каждой стороне + два на днище), поэтому он обеспечивают стерилизацию/дезинфекцию в диапазоне 360° + пол помещения. Робот полностью автономен и безопасен, самостоятельно объезжает препятствия и может двигаться в любом направлении.

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

  1. Плата Arduino Pro Mini (купить на AliExpress).
  2. Ультразвуковой датчик HC-SR04 – 3 шт. (купить на AliExpress).
  3. Драйвер двигателя L293D (купить на AliExpress - но его можно купить и в виде отдельной микросхемы).
  4. Двигатели N20 на 5 В и монтажные кронштейны для них – 2 шт. (купить на AliExpress - смог найти только на 6 В, на 5 В почему то не удалось найти).
  5. Колеса для двигателей N20 – 2 шт.
  6. Ультрафиолетовые светодиоды (UV LEDs) – 8 шт. (купить на AliExpress).
  7. Регулятор напряжения 7805 (купить на AliExpress).
  8. Литий-ионная батарея 7.4V (купить на AliExpress).
  9. Резистор 330 Ом (купить на AliExpress).
  10. Точечная плата.
  11. Foam Board или MDF (если требуется).
  12. Ролик (опорное колесо).

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

Внешний вид компонентов, необходимых для сборки робота

Схема проекта

Схема робота на Arduino для автоматической дезинфекции помещений с помощью ультрафиолетовых лучей представлена на следующем рисунке.

Схема робота на Arduino для автоматической дезинфекции помещений с помощью ультрафиолетовых лучей

Три ультразвуковых датчика в схеме используются для обнаружения препятствий. Их контакты GND и VCC подключены к аналогичным контактам платы Arduino. Контакты trigger и echo датчиков подключены к ШИМ (PWM) контактам платы Arduino. Для управления двигателями мы используем одну из самых популярных микросхем драйвера двигателей - L293D, ее контакты enable подключены к 5V, также ее контакты питания подключены к 5V поскольку мы будем использовать электродвигатели, работающие от 5V.

Все ультрафиолетовые светодиоды в схеме мы соединили параллельно и подключили их к питающему напряжению с помощью токоограничивающего резистора 330 Ом. Все основные компоненты схемы (плата Arduino, ультразвуковые датчики, драйвер двигателя, двигатели) работают от напряжения 5 Вольт, поэтому для преобразования напряжения 7,4 В с выхода литий-ионной батареи в 5 В мы использовали регулятор напряжения 7805.

Сборка конструкции робота

Поскольку мы собираем передвигающегося в пространстве робота, то желательно, чтобы его электронная "начинка" занимала как можно меньше места. Поэтому чтобы минимизировать размеры конструкции мы использовали точечную плату, на которую и припаивали компоненты схемы. При сборке конструкции робота желательно использовать провода с контактами типа "мама" (female header pin) для подключения платы Arduino pro mini и электродвигателей. После сборки у нас получилась конструкция следующего вида:

Конструкция электронной части робота

Сборка корпуса робота

В корпусе робота мы должны разместить 3 ультразвуковых датчика и остальные электронные компоненты схемы. Мы решили изготовить корпуса робота самостоятельно, используя для этого подручные средства: лист пенопласта, лист пенопласта, картон и т.п. В качестве основы корпуса робота мы использовали лист пенопласта. Поэтому первым делом при сборке корпуса робота мы вырезали в лист пенопласта необходимые блоки и отверстия. Внешний вид получившегося у нас листа пенопласта показан на рисунке ниже. Самое большое отверстие в пенопласте будет использоваться для установки опорного колеса (ролика) робота, а в остальные два будут устанавливаться ультрафиолетовые светодиоды.

Изготоволение нижней части робота

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

Внешний вид внутренней части робота

На заключительном этапе мы разместили внутри робота литий-ионную батарею. Более подробно процесс сборки корпуса робота показан на видео, приведенном в конце статьи.

Заключительный этап сборки робота

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

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

Поэтому в программе мы должны объявить (дать осмысленные имена) контакты платам Arduino, к которым подключены контакты Trigger Pin и Echo Pin ультразвукового датчика. В этом проекте у нас три Trigger Pin и Echo Pin. В обозначении этих контактов 1 будет обозначать левый датчик, 2 – передний датчик и 3 – правый датчик.

Далее мы объявим в программе необходимые переменные – для хранения расстояния мы будем использовать переменные типа int, а для хранения длительности – переменные типа long.

В функции setup мы зададим режимы работы используемых контактов с помощью функции pinMode() – на ввод (input) или вывод (output) данных. Также мы инициализируем последовательную связь со скоростью 9600 бод для целей отладки.

Для контактов, с которых осуществляется управление двигателями, задается режим работы на вывод данных.

В основном цикле программы (loop) у нас есть три фрагмента кода для трех датчиков. Все эти фрагменты кода работают одинаково, но каждый работает со своим датчиком. В каждом из этих фрагментов мы определяем расстояние до препятствия от каждого датчика и сохраняем ее в переменной типа integer. Для определения расстояния до препятствия мы сначала убеждаемся что trigger pins свободны, для мы подаем на trigger pin датчика уровень LOW на 2 микросекунды. После этого для излучения датчиком ультразвуковой волны необходимо подать на trigger pin датчика уровень HIGH на 10 микросекунд. После этого датчик излучит в пространство ультразвуковую волну. Затем с помощью функции pulseIn() мы измеряем время распространения этой волны до препятствия и обратно. Измеренное время мы сохраняем в переменной “duration”. Функция pulseIn() имеет два параметра – первый это имя контакта echo pin, а в качестве второго параметра можно указать HIGH или LOW. HIGH будет указывать на то, что функция pulseIn() будет ждать до тех пор, пока состояние контакта не станет HIGH – в этот момент она начнет отсчет. А когда состояние контакта станет LOW – она закончит отсчет. Таким образом, в этом случае функция pulseIn() измерит длительность импульса (в микросекундах) с состоянием HIGH. Для расчета расстояния до препятствия мы будем умножать измеренную длительность на 0.034 (этот коэффициент рассчитан исходя из скорости звука в воздухе равную 340 м/с) и делить на 2 (поскольку волна распространялась до препятствия и обратно). Наконец, мы сохраняем рассчитанные расстояния до препятствия от каждого датчика в соответствующих переменных типа integer.

После определения расстояния до препятствия от каждого датчика мы можем управлять движениями двигателей с помощью операторов if. В качестве минимального допустимого расстояния до препятствия мы выбрали расстояние 15 см (вы можете изменить это значение по своему желанию). К примеру, когда у нас препятствие будет слева робота (расстояние до него меньше или равно 15 см), а у двух других датчиков не будет вблизи их препятствия, мы будем давать команду на поворот робота вправо. Условие для проверки этого факта будет выглядеть следующим образом:

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

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

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

Внешний вид робота в работе показан на следующем рисунке. Более подробно этот процесс вы можете посмотреть на видео, приведенном в конце статьи.

Внешний вид робота в работе

Исходный код программы (скетча)

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

(Проголосуй первым!)
Загрузка...
102 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *