Вендинговый аппарат arduino

Автомат по продаже воды на Arduino Uno

Различные автоматы по продаже каких-либо товаров стали особенно популярны в последнее время – они просты в использовании и не требуют участия человека в процессе продажи. В данной статье мы рассмотрим создание своими руками (DIY) автомата по продаже воды (Automatic Water Vending Machine) на основе платы Arduino Uno, который можно установить в любом публичном месте и продавать с его помощью воду.

Оплату покупки воды можно будет производить с помощью металлических монет. Прием монет будет осуществляться модулем приема монет (Coin Acceptor Module), а для розлива нужного объема воды будут использоваться симистор (TRIAC) и оптопара.

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. Coin Acceptor Module (модуль приема монет) (купить на AliExpress, в точности такого модуля как в статье я на AliExpress на момент ее публикации не нашел, но, возможно, вы такой модуль сможете найти где-нибудь в другом магазине).
  3. Симистор BT136 (купить на AliExpress).
  4. Оптопара MOC3021 (купить на AliExpress).
  5. Светодиод (купить на AliExpress).
  6. Перфорированная плата.
  7. Соединительные провода.
  8. Водяной насос переменного тока 230V.
  9. Трубы и крепеж для них.

Принцип работы автомата по продаже воды

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

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

Принцип работы модуля приема монет

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

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

Устройство приема монет при каждой принятой монете формирует на своем выходном контакте соответствующий импульс. Подсчитав количество этих импульсов мы можем определить какое количество монет было вставлено. Это устройство также имеет три переключателя, с помощью которых мы можем выбрать тип сигнала, который будет формироваться на его выходе. Первый переключатель имеет три позиции – для выбора длины импульса. Второй переключатель используется для установки сигнала в +5 V(NC) или в 0 V(NO) как показано на рисунке ниже. С помощью третьего переключателя можно задать точность работы устройства.

Обучение модуля приема монет

Чтобы обучить модуль на прием конкретных монет, выполните следующую последовательность шагов:

— сначала нажмите кнопку, размещенную сверху устройства и удерживайте ее в течение 4-5 секунд до тех пор пока не зажгется красный светодиод;

— когда горит красный светодиод вставьте в модуль монету, на прием которых вы хотите настроить программу;

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

Принцип работы симистора

Симистор (симметричный триодный тиристор, в англ. TRIAC) представляет собой переключатель переменного тока с тремя выводами, который можно переключить при помощи подачи отпирающего импульса на его управляющий вывод (затвор). Но в отличие от других подобных переключателей, которые проводят ток в одном направлении, симистор может управлять током в обоих направлениях. В нашем проекте мы будем использовать симистор BT136.

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

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

Частота сигнала переменного тока в нашей сети составляет 50 Гц, соответственно, период сигнала равен 1/f =20 миллисекунд. Значит, половина периода будет равна 10 мс. Поэтому мы можем изменять время t1 на приведенном графике для управления яркостью свечения лампы переменного тока в диапазоне от 0 до 10 мс (10000 мкс).

Оптопара

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

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

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

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

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

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

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

Первым делом в программе объявим контакты, которые мы будем использовать. Цифровой контакт 2 используется как контакт входного прерывания, а цифровые контакты 6 и 12 используются для подключения симистора и светодиода соответственно.

Источник

Arduino в кофейном автомате

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

И так. В неком сферическом вакууме есть кофейный автомат. Достаточно старая модель, но очень надёжная. Готовит растворимые кофейные напитки (ореховое, ванильное), разные вариации кофе+сливки+шоколад+сахар, растворимый чай. Автомат в виду своего возраста имеет достаточно мало функций для владельца, оставляя все свои силы только для покупателей. Автомат умеет:
— брать деньги;
— готовить выбранный напиток;
— выдавать сдачу;
— заботиться о себе (кипятить воду, поддерживать её уровень).

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

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

Начну по порядку.

Техническая часть этого решения

Arduino Nano (freeduino nano) + MAX232-адаптер + Serial GSM модем + оптроны + мелочевка
Модемом можно управлять обычными AT-командами через com-порт. В Arduino есть только один com-порт, который используется для программирования (завязан на USB-адаптер). Что бы процесс прошивки был удобным и без лишних движений — не будет трогать этот порт. Решение достаточно простое — Software Serial — это возможность создать порт на любых двух цифровых ногах ардуины. Вместе с переходником на микросхеме MAX232 получается полноценный порт, к которому можно подключать внешние устройства.
Вся схема собрана на макетной плате с обычной спайкой на обратной стороне. Технологии лазерного утюга ещё не применял, так как это первый проект и по ходу менялись назначения ног и выходов.

1. Удаленное оповещение об остановке автомата

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

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

Первая часть — Arduino должна считывать состояния статусных светодиодов автомата. По их значениям отправлять SMS на заданный номер с описанием возникшей проблемы. Помимо этого отправлять SMS о перезагрузке автомата (при пропадании электричества) — так, чтобы быть в курсе.

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

2. статистика продаж каждого напитка

В автомате 11 кнопок на каждый отдельный вариант напитка. Хочется знать какой напиток пользуется популярностью. Ну и сколько мы заработали за сутки :) Собственно последнее очень интересно для владельца автомата :) Не будем брать в расчет налоговую, поэтому учет ведем в простом Excel+формулы.

У каждой кнопки есть светодиодный индикатор. При приготовлении напитка этот индикатор горит в процессе приготовления. На все 11 индикаторов вешаем оптроны и заводим их на входы в Arduino. Помимо этого есть индикатор готовности напитка (пока он горит — напиток готовится и вынимать стаканчик не рекомендуется :). Использовались как аналоговые входы, так и цифровые (достаточно отслеживать появление питания на них). Конечно, можно усложнить схему (сдвиговые регистры), но это наш первый проект.

Как снимается статистика: в любое время звоним на автомат с ранее забитого в прошивку номера. При поступлении звонка, автомат сбрасывает вызов и в ответ присылает смс-ку с количеством продаж каждой кнопки. Длина сообщений дает возможность писать только в виде: 1=10,2=3,3=1. да и для вбивки в историю продаж так удобней чем названиями напитков.

3. бесплатные продажи «для своих»

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

Ещё одна идея — небольшая вариация снятия статистики — при поступлении звонка с определенного номера — включать бесплатную продажу. Но уже не в этой версии…

4. автоматическая промывка

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

5. фишки

Хотелось добавить автомату интерактивности. Например, сигнал о готовности напитка. Пьезо-элемент из стартового набора Ардуинщика отлично подходит для этой идеи — сказано, сделано! Планирую добавить ещё подсветку окна выдачи напитка после готовности.

Первая версия готова!

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

Уже сейчас готовлюсь ко второй версии автомата — а точнее к полной замене стандартных мозгов на Arduino+компьютер — как для больших функций, так и для удобства (онлайн статистика, мониторинг наличности, веб-камера, смс-оплата). Подобная реализация уже проведена на соседнем снековом автомате (чипсы-батончики-кола), буквально через пару дней опубликую описание и этого проекта.

Попутный вопрос читателям — хотели ли бы вы видеть интерактивный автомат, который после готовности напитка спросил бы у вас — «как вам кофе?» и по желанию выкладывал бы фото в фан-клуб вконтакт/facebook/twitter? Реализация простая — голосовое проигрывание звукового файла через компьютер, кнопка «ФОТО» на панели автомата и веб-камера.

Источник

Adblock
detector