Автономный сенсорный дозатор для антисептика, жидкого мыла на Arduino. DIY

В разгар коронавирусной инфекции встаёт вопрос, как можно минимизировать прикосновение с домашними предметами по возвращению из магазина или с работы. Чтобы тщательно помыть руки нужно пройти в ванную открыть воду и нажать на дозатор мыла. Как альтернативное решение можно повесить у входной двери санитайзер и при возвращении домой обрабатывать руки. Но прикасаться к санитайзеру будут все, кто возвращается с улицы. А купить автономный санитайзер для антисептика по карману не каждому. Сегодня покажу, как собрал DIY из подручных средств автономный сенсорный дозатор для антисептика, или жидкого мыла, на Arduino. Также, вы можете посмотреть первую версию моего дозатора: «Автоматический дозатор мыла и антисептика своими руками».

Из чего собрать DIY автономный сенсорный дозатор для жидкого мыла на Arduino?

При сборке использовались подручные средства и недорогая электроника с AliExpress. За основу взял «Самодельную каретку для ЧПУ станка». Каретка также собрана из подручных средств, как её собрать читайте на моем втором сайте «ЧПУ технологии», на котором я рассказываю про создание самодельных ЧПУ станков на Arduino.

Каркас дозатора собран из обрезков фанеры, реек и МДФ. Данные обрезки на производстве выбрасывают или сжигают. Поэтому найти их можно бесплатно или за символическую плату.

Из чего собрать DIY автономный сенсорный дозатор для жидкого мыла на Arduino?

Электронная начинка сенсорного дозатора для жидкого мыла на Arduino.

Для управления самодельной кареткой использовал следующую электронику:

Для нашего проекта понадобится все то же самое, но для того, чтобы дозатор мыла на Arduino работал автономно, в качестве источника питания, будем использовать бокс под 6 батареек формата АА. Как показало практическое применение, данных батареек хватит буквально на 2-3 дня работы. Даже не смотря на то, что после нажатия отключаю и драйвер, и шаговый двигатель для экономии энергии. Поэтому лучше использовать блок питания на 12 или 24 В. или литий-ионный аккумулятор (Li-ion).

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

Схема подключения Электроники самодельного дозатора мыла на Arduino.

Схема без использования Модуля для подключения драйверов A4988 и DRV8825 будет выглядеть вот так.

Схема подключения Электроники самодельного дозатора мыла на Arduino.

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

Так как векторного варианта модуля не нашел, а из меня дизайнер ну совсем никакой, схему с использованием модуля сделать не смог. Но могу рассказать, как подключить. Сперва, подключаем все вот по такой схеме.

Схема без использования Модуля для подключения драйверов A4988 и DRV8825

А затем, к 7 пину ардуины подключаем информационный пин датчика препятствия, и питание, как показано на схеме выше. Также не забываем подключить к 10 пину Arduino контакт EN драйвера. На модуле он выделен и подписан "E".

акже не забываем подключить к 10 пину Arduino контакт EN драйвера. На модуле он выделен и подписан.

Сборка DIY: Автономного сенсорного дозатора для антисептика, жидкого мыла на Arduino.

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

верху на подвижную каретку креплю вырезанный кусок фанеры, который будет нажимать на дозатор.

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

Затем устанавливаю всю электронику с задней стороны дозатора.

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

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

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

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

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

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

Все работает отлично.

Сборка DIY: Автономного сенсорного дозатора для антисептика, жидкого мыла на Arduino.

Код для Arduino самодельного дозатора с инфракрасным датчиком препятствия.

За основу возьмем код из урока «Как подключить A4988 (DRV8825) к Arduino. Скетч, библиотека»

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

// Подключаем библиотеку AccelStepper
#include <AccelStepper.h>
// переменные
int sensPin = 7;     // пин сенсора
int sensState = 0; // переменная для хранения состояния сенсора
// Устанавливаем выводы
const int dirPin = 2;
const int stepPin = 3;
const int stepEN = 10;
// Определение тип интерфейса двигателя
#define motorInterfaceType 1
// Создаем экземпляр
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);
void setup() {
  pinMode(sensPin, INPUT); // Инициализируем цифровой вход/выход в режиме входа.
  // Устанавливаем коэффициент ускорения,
  // начальную скорость
  myStepper.setAcceleration(1000);
  myStepper.setSpeed(3600);
  pinMode(stepEN, OUTPUT); // пин подключение к EN
  digitalWrite(stepEN, HIGH); // Отключаем драйвер и ШД для экономии энергии
}
void loop() {
  sensState = digitalRead(sensPin);// считываем значения с входа сенсора
  if (sensState == LOW) {
    digitalWrite(stepEN, LOW);
    myStepper.moveTo(2000);
    myStepper.runToPosition();  // Ждем пока двигатель не встанет в заданную позицию
    delay(300);  // Ждем
    myStepper.moveTo(0);
    myStepper.runToPosition();  // Ждем пока двигатель не встанет в заданную позицию
  }
  if (myStepper.distanceToGo() == 0)
  {
    delay(50);  // Ждем
    digitalWrite(stepEN, HIGH);
  }
}

Разберем код подробнее.

Подключаем библиотеку AccelStepper.

// Подключаем библиотеку AccelStepper
#include <AccelStepper.h>

Дальше, определяем выводы Arduino, к которым подключаются выводы STEP и DIR A4988. Мы также устанавливаем motorInterfaceType на 1. (1- означает внешний шаговый драйвер с выводами Step и Direction). И добавим пин подключения stepEN, который нужен для включения и отключения драйвера шагового двигателя, что позволит снизить потребление энергии в режиме ожидания.

// Устанавливаем выводы
const int dirPin = 2;
const int stepPin = 3;
const int stepEN = 10;
// Определение тип интерфейса двигателя
#define motorInterfaceType 1

Затем, мы создаем экземпляр библиотеки под названием myStepper.

// Создаем экземпляр
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

В функции настройки мы, сначала, устанавливаем коэффициент ускорения для двигателя, чтобы добавить ускорение и замедление к движениям шагового двигателя. Дальше устанавливаем обычную скорость 3600.

// Устанавливаем коэффициент ускорения,
  // начальную скорость
  myStepper.setAcceleration(1000);
  myStepper.setSpeed(3600);

Также нам нужно инициализировать пин подключения сенсора как вход INPUT. И пин подключения управления работы драйвера stepEN как выход OUTPUT. И сразу отключить драйвер для экономии заряда батареек.

 pinMode(sensPin, INPUT); // Инициализируем цифровой вход/выход в режиме входа.
 pinMode(stepEN, OUTPUT); // пин подключение к EN
 digitalWrite(stepEN, HIGH); // Отключаем драйвер и ШД для экономии энергии

В основном цикле loop() считываем значения с сенсора и получаем сигнал, в моем случае это LOW, ваш сенсор может, при срабатывании, на выходе выдавать HIGH. Это зависит от вашего датчика препятствия.

sensState = digitalRead(sensPin);// считываем значения с входа сенсора

Затем, мы проверяем, если датчик сработал, то включаем драйвер.

  if (sensState == LOW) {
    digitalWrite(stepEN, LOW);

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

 myStepper.moveTo(2000);
    myStepper.runToPosition();  // Ждем пока двигатель не встанет в заданную позицию
    delay(300);  // Ждем
    myStepper.moveTo(0);
    myStepper.runToPosition();  // Ждем пока двигатель не встанет в заданную позицию

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

 if (myStepper.distanceToGo() == 0)
  {
    delay(50);  // Ждем
    digitalWrite(stepEN, HIGH);
  }

Замена флакона с жидким мылом или антисептиком.

Для замены флакона с антисептиком достаточно открутить 2 самореза, которые фиксирую прижимную фанерку.

Замена флакона с жидким мылом или антисептиком.

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

Минусы дозатора для жидкого мыла на Arduino.

Все работает отлично, но первые 2-3 дня. В дальнейшем батарейки начитают разряжаться, и шаговому двигателю не хватает мощности. Начинаются пропуски шагов двигателя, и нажатие становится все меньше и меньше. Поэтому лучше использовать внешний источник питания или Литий-ионный аккумулятор (Li-ion). Также, можно снизить скорость вращения шагового двигателя, что увеличит время работы от батареек, но дозировка будет происходить медленнее, и при использовании жидкого мыла дозировка может быть меньше.

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

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Код для Arduino самодельного дозатора Код для Arduino самодельного дозатора.ino2 Kb 73 Скачать

Комментарии

Ваше Имя*